Atom feed.


  • The traditional soft deletion pattern using deleted_at columns leaks into code, curbs the usefulness of foreign keys, and makes data removal difficult. Luckily, there’s an alternative.



  • Databases shed important RDMS features as they get big. Examining why this tends to be the case, and some ideas for preventing it.





  • A lightweight and technology agnostic operational technique for easy and near realtime visibility and live querying into production systems.

  • Service Limits November 8, 2016

    Why and how to put limits and rate limits on your web services. Introducing redis-cell.

  • Error handling and fragility; or why a worker pool belongs in Go’s standard library.

  • The basics of Postgres development: how to build the project, run the test suite, and format a patch for submission.

  • AWS Islands June 15, 2016

    The case for a concerted effort to build a powerful, but streamlined, platformon AWS.

  • Building a static site on AWS with a global CDN, free HTTPS with automatic certificate renewal, and a CI-based deployment process powered by GitHub pull requests.

  • Notes on Go March 31, 2016

    Notes on the language after spending a few weeks building a large project in it.

  • Getting a certificate that most browsers would accept used to be difficult and expensive, but that’s changing as we enter a relative golden age of web encryption. Read this for options for getting certificates issued for free.



  • Small, Sharp Tools December 12, 2014

    A few words on the Unix philosophy of building small programs that do one thing well, and compose for comprehensive functionality.

  • Dotfile Secrets and GPG November 10, 2014

    Learn how to start encrypting dotfile secrets with GPG, and some techniques for getting those encrypted files integrated with your toolchain.

  • Package Management in Go October 19, 2014

    Understanding the benefits of Golang’s restrictive (but simple) import and package management system.

  • Command Exit Status September 27, 2014

    An exercise of discovery around how to extend the shell’s API.

  • The Humble Data Warehouse September 5, 2014

    Data warehouses aren’t just for the enterprise! Let’s examine a few of their basic characteristics, and build some examples with Go/Ruby and Postgres.

  • If you find that the price tag for a Fuji-official adapter ring for the X100S is a little hard to swallow, this 5-minute hack will save you 90%.

  • A quick tour through some of the fundamentals of JSON Schema and Hyper-schema, and how they can be applied to building APIs.

  • Stubbing distributed services with Sinatra-based services stubs and enabling stronger constraints with JSON Schema.

  • Microservices April 1, 2014

    Useful distinction or new buzzword? Comments on 200-500 line services.

  • The Mediator Pattern March 11, 2014

    Interactors by a different name.

  • Healthy Anti-patterns February 6, 2014

    When the use of an anti-pattern is considered beneficial.

  • When building an app against a web API, do you pull in their SDK or just make raw HTTP calls? Here are a few reasons that I avoid SDKs when I can.

  • BreakTime Classic February 2, 2014

    In search of an alternative to BreakTime. The discovery of a very classical solution.

  • How the page almost transitioned successfully to the digital world, but is in decline in new media. The lessons that we can learn from this age-old design element, and why we should hope for its re-emergence.


  • logfmt October 28, 2013

    A logging format used inside companies such as Heroku and Stripe which is optimal for easy development, consistency, and good legibility for humans and computers.

  • Developer Accessible APIs September 1, 2013

    A set of patterns to make APIs more accessible to developers; lowering the barrier of entry for new users, and easing the maintenance of consuming applications.

  • Scoping and OAuth 2 July 23, 2013

    Designing scope for Heroku OAuth, and a brief tour of other implementations on the web.

  • SOA and Service Stubs June 3, 2013

    How we build minimal, platform deployable, Rack service stubs to take the pain out of developing applications that depend on an extensive service-oriented architecture.

  • Tracing Request IDs June 2, 2013

    A simple pattern for tracing requests across a service-oriented architecture by injecting a UUID into the events that they produce.

Most of my older work can be found on Mutelight.