timoch.com

Technical writing, browser toys, and a simulation in progress.

The integrated site root now carries the shared shell while the blog archive, toys, and Hephaestus routes migrate into their canonical sections.

Migration status

Featured posts below now come from the canonical migrated blog manifest. Later slices can build category pages, tag pages, and the public feed on top of the same source.

Latest writing

August 2013

Annoyed with INotifyPropertyChanged?

Have you ever been annoyed with having to implement the cumbersome plumbing required for INotifyPropertyChanged ? Well, I have. So I tried to find a way to make authoring bindable objects better. The typical example:

June 2013

Unit testing model validation with MVC’s DataAnnotations

In a previous post, I mentioned that model validation should be tested separately from controller logic. I will demonstrate a way of unit testing the validation of models implemented with System.ComponentModel.DataAnnotations. It is actually quire easy to unit test model validation. Models are inherently easy to test separately due to their POD (Plain Old Data) nature.

June 2013

Unit test equality is not domain equality

I came across a question on stackoverflow concerning comparing object for equality in unit test. The poster basically wants to get rid of series of assertions like this:

Current work

Beyond the archive

The root stays blog-first, but the site also needs direct paths into interactive work and active game development. These routes keep their own implementation slices and runtime boundaries.

Toys

Interactive browser experiments, starting with Game of Life under the integrated shell.

Hephaestus

Overview, playable client entry points, and runtime status routes for the settlement simulation.