Things I've written down.
Ruby, Rails, performance, security and applied machine learning. Updated when something feels finished.
Interactive without a single-page app
Turbo gets you most of what a client-side framework does, with the state still on the server where it is easier to reason about.
Feature flags you can build in an afternoon
The value is decoupling deploy from release. That does not require a platform, and the platform is not the hard part.
Ruby pattern matching, in code you'd actually ship
It is not a switch statement. It destructures and validates shape in one expression, which is exactly what parsing external data needs.
Your RAG chatbot doesn't have a model problem
It has a measurement problem. Why swapping the model is the last thing to try, what to instrument first, and how an aggregate score hides the failure that matters.
The garbage you never had to create
Ruby's collector is fast. The cheapest object is still the one you didn't allocate, and in hot paths that difference is measurable.
Your average response time is lying to you
The mean hides the requests that make people leave. Percentiles, and the arithmetic of how often a user meets your worst case.
I served ResNet-50 on a CPU and stopped paying for GPUs
Latency budgets, ONNX Runtime, and the arithmetic showing most inference workloads were never GPU problems in the first place.
Exceptions that tell you what to do
Rescuing broadly turns a specific failure into a mystery. The useful distinction is between what you expected and what you didn't.
Changing an API without breaking anyone
You cannot make clients upgrade. Every change has to work for consumers who will never read your changelog.