The first service
2017.074Picking the first piece to cut from a Perl monolith, rewriting it in Go, and switching over before you lose your nerve.
Picking the first piece to cut from a Perl monolith, rewriting it in Go, and switching over before you lose your nerve.
Migrating a payment processing API from Node.js to Go -- what changed, what improved, and what we gave up.
What a codebase looks like when two people build everything -- 350 commits, and a todo list with two items.
Why a graph database was the only sane choice for a social feed where the interesting question isn't what your friends posted, but what your friends' friends are doing this Saturday.
Adding businesses to a social platform built on Neo4j -- and realizing both sides of the marketplace use the same graph patterns.
Two people, one Express app, and eight middleware functions between the request and the response.
Turning months of git commits into an animated video with Gource and ffmpeg -- then opening the weekly sharing session with it.
Leaving the salary to try building something -- a platform where the unit isn't opinion or memory, but a plan.
Adrian Hands contributed a GNOME patch using Morse code typed with his knees. His commit message was three words and an exclamation.
A text-poster on a meeting-room wall, doing more work than a poster should.
Running a custom Node.js blog engine on a Raspberry Pi at home -- from a 45-day wait and a dead board to DuckDNS, ISP port blocking, and the first external request.
A birthday, a public oath, and one line I want to keep.
Two days after the speech. I went looking for the numbers.
He carried a list. That's the part that broke me.
Route handlers don't need to be nested callbacks -- Express middleware chains turn them into a flat, readable sequence.
Phabricator changed what code review means to me. A note from a few months in.
A bash deploy script and a Node.js process monitor -- SSH, pull, touch a file, the cluster reloads. No CI, no dashboard. The terminal.
A composable predicate function for sorting arrays of objects by multiple fields -- with reverse, primers, and short-circuit evaluation.
Upstart, clustering, zero-downtime deploys, heartbeat monitoring, and an embedded REPL -- what it takes to keep Node.js running in production in 2013.
Using bind mounts to move MySQL data, config, and logs to an XFS volume without changing a single MySQL setting.