Starting over
2013.036Ditching WordPress for a custom Node.js blog engine powered by libgit2 -- git as the content store, markdown as the writing format, npm for everything else.
Ditching WordPress for a custom Node.js blog engine powered by libgit2 -- git as the content store, markdown as the writing format, npm for everything else.
Replacing an e-commerce frontend without turning off the old one -- carving over layer by layer while the store takes orders.
Some paths proxy to another host. It went down, came back -- and nginx kept failing until I reloaded it.
A basement, a barcode scanner, and the moment the dispatch desk stopped waiting.
In-memory rate limiting as Express middleware. No Redis, no external service. Fifty lines, one file.
The Node.js MySQL driver doesn't pool connections. Under load, you run out. Fifty lines with generic-pool fixes it.
Loading every product, category, and brand URL into a Redis hash at startup, and a middleware that rewrites requests before Express sees them.
Building catalog search with flattened MongoDB documents and application-side scoring when the proper tools don't exist yet.
Reading the parent frame's URL throws in Firefox and returns undefined in WebKit. The defensive catch I wrote never fired.
Three months into the startup. From the outside, chaos. From the inside, flight.
Dylan, and the artists who orbit him.
Decibel made Indian rock that sounds Indian. That shouldn't be rare, but it is.
Chandigarh was beautiful. I couldn't feel it. I don't know why.
An arrival note. The cold, the office, the exhale that took five days.
A late-night conversation about why Lord Shiva might be the original rock star -- and what the third eye might actually mean.
New Year. Half-packed boxes. The city I'm leaving is the city I learned to be free in.
Old photos of a city I've lived in for two and a half years and mostly walked past.
An 800-line poem that proves English pronunciation has worse consistency than most legacy codebases.
Tracy Chapman wrote the only song about leaving that gets it exactly right.
Everything else was tuned. The wall was the one function I never wrote -- malloc. A dtrace one-liner showed the paths in.