Areas of past experience and professional interest include requirements analysis and specification, method definition and guidance, finite state machine and protocol design, real time embedded systems, and general software process improvement.
Statestep, a specification and modeling tool, embodies some further interests, including: formal methods; algorithms; automated checking; user interface design. Part of Statestep's design goal, for example, is to make it possible - even easy - for humans to consider large combinatorial spaces in a systematic and efficient way. You can find out more at the Statestep website.
Documents and notes
Statecharts: Some Critical Observations
A "Statecharts considered harmful" article.
On Abstraction in Finite State Machine Models
A short reflection on a cognitive issue relevant to finite state machine design generally.
Experience of using a lightweight formal specification method
for a commercial embedded system product line
Requirements Engineering Journal 10 (2). Copyright 2005 Springer-Verlag. Author version. The original publication is available at springerlink.com. Describes the specification technique supported by Statestep.
Other Statestep-related documents can be found on the Statestep website.
A Note on Formal User Modelling in User Interface Design.
Notes on m4. Tutorial introduction to m4 (an interesting macro language).
Indenting Python Pythonically. Because PEP8 doesn't.
Eskimo locking (Python). A little nugget of code as an alternative to creating a dynamic pool of locks for threaded code.
Rational Java Indentation and Style. Coding standard including motivation based on cognitive and practical arguments.
The IJ bash environment is some script code (mostly shell functions), with functionality including automatic recording of and easy navigation to previous working directories.
Notes on Yapps 2. Yapps is a clever, lightweight parser generator for Python.