Notes on Legible Code, for both humans and AI
Short set of notes on how code should be written, so it is habitable by humans and legible to AI. It is drawn from practitioners, but based on what I've come to want in my projects. It is written as a guide for humans to read, and as a skill for AI coding agents to use.
An invitation to ReasonML
Poorly designed data models spread special cases throughout a codebase. ReasonML offers a way to make the shape and flow of data explicit, replacing the fragility of dynamic languages with stronger guarantees.
The evolution of view templating in 9 easy steps
Web templates began by separating content from code, then slowly reinvented programming languages as web apps demanded loops, conditions, and abstractions. For programmatically constructed views, code and components are the more natural medium.
On React
React turns the view into ordinary programmable code: components encapsulate view logic, compose like functions, and map directly to the interface. The same component boundaries can also organize CSS and make a front-end easier to explore.
Review: Growing Rails Applications in Practice
Long-lived Rails monoliths do not have to collapse into fat models, callback-heavy controllers, and tangled CSS. This book assembles a practical toolbox for keeping them well-structured as both the codebase and team grow.
Tracking time
We spend less of the day doing focused work than we think. Tracking time exposes the gap, and the running timer behind Pomodoro can itself change how we work.
Software estimation for great fun and profit
A reliable estimate is not a number pulled from intuition; it emerges from a concrete plan. Planning work into actionable steps surfaces assumptions, improves feedback, and makes the eventual implementation calmer and more predictable.
Getting started with AngularJS in Rails
For a rich internal Rails app, AngularJS works best when the client owns the interface instead of straddling server- and client-rendered pages. The article turns that choice into practical guidance for routing, serialization, forms, directives, and debugging.
15 Things for a Ruby Beginner
Learning Ruby is less about memorizing a checklist than developing its habits: use the ecosystem, think in objects, embrace blocks and immutability, and prefer readable code. The concepts settle through practice, pairing, and reading good code.
B-Trees, large volumes of data and branching factor
A B-tree stays fast only while its branching factor and upper levels fit the machine's memory hierarchy; once more lookups spill to disk, performance falls sharply. Sharding and cache-oblivious structures address that limit in different ways.