For a lot of problems, software acts as a clerk. Clerks can be useful, but analysts are better. Why aren't there more?
A principle for managing complexity: isolate the most complex requirements into their own system instead of letting them dictate the design of everything.
An explanation and interactive demonstration of the Paxos consensus algorithm for distributed systems.
Why the fear of imperfect performance metrics shouldn't stop us from gathering data about the software development process.
An introduction to the consensus problem in distributed systems, why it's hard, and pointers to Paxos and Raft.
A test post and an attempt at making this blog look a bit more loved.
Why docco and JSDoc aren't the answer, and the tension between developer-oriented code comments and consumer-oriented API docs.
Introducing Batman.js, Shopify's open source CoffeeScript framework for building single page applications.
A metaheuristic optimization algorithm inspired by jazz musicians, applied to solving Sudoku puzzles.
Regexes and a simple spy implementation for converting a test suite from Jasmine to QUnit.
An explanation and demonstration of Craig Reynolds' boids flocking algorithm, where simple local rules produce complex emergent behavior.
Why our current web development tool chains are inadequate, and where we should be going to fix it.