A collection of writing from earlier in my career. Preserved for historical context.
Types in Elm: Decomposition and Ad Hoc Polymorphism 2018-11-19
Two Elm type composition techniques: nesting union types to factor the update function, and approximating ad hoc polymorphism without type classes.
Privacy and Exposure, Gatekeepers and Privileged Consumers 2018-01-03
Using Ruby's singleton classes and refinements to build controlled access patterns between objects, applied to a practical mediator layer for ActiveRecord.
On Maintainability: Gold Plating the Game of Life in Elm 2017-06-18
A study of Elm maintainability through deliberate gold plating, revealing how the language's architecture keeps new features additive.
Common Table Expressions in ActiveRecord: A Case Study of Quantiles 2017-06-05
An exploration of PostgreSQL common table expressions for quantile calculation, from raw SQL through ActiveRecord integration to an AREL abstraction.
Revisiting the Game of Life in Elm 2017-05-22
A return to Conway's Game of Life in Elm, tracing how the language's shift from signals to commands and subscriptions changed application structure.
Using Defined Properties for Better AngularJS Directives 2015-01-21
Applying JavaScript's Object.defineProperty to AngularJS directives, hiding business logic in custom getters and setters to reduce controller boilerplate.
Barebones Architecture in Elm 2014-12-23
A reduction of Elm application architecture to its essential components, using a simple example to expose the underlying pattern clearly.
Writing Game of Life in Elm 2014-05-05
An implementation of Conway's Game of Life in Elm, introducing signals and functional reactive programming through a sequence of progressively complete examples.
Lazy Ruby 2014-04-05
An exploration of Ruby's lazy enumerator for building infinite sequences, demonstrated through Fibonacci with a memoization layer to offset the cost of naive recursion.
Hooks in AngularJS Controllers 2014-02-05
A practical hook mechanism for passing data from nested AngularJS controllers back to a parent, with guidance on when to use it over events or services.