Articles

Longer form articles that aim to explore topics in more depth, but which are published less frequently. Also available as an Atom feed.

2023

2022

  • 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.

2021

2020

2019

2018

2017

2016

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

  • Service Limits Nov 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 Jun 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 Mar 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.

2015

2014

  • Small, Sharp Tools Dec 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 Nov 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 Oct 20, 2014

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

  • Command Exit Status Sep 28, 2014

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

  • 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 Apr 1, 2014

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

  • The Mediator Pattern Mar 11, 2014

    Interactors by a different name.

  • Healthy Anti-patterns Feb 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 Feb 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.

2013

  • logfmt Oct 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.

  • 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 Jul 23, 2013

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

  • SOA and Service Stubs Jun 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 Jun 2, 2013

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