Notes
23 notes on software, teams and the decisions that connect them, written since 2012. Newest first.
What is a fractional CTO, and when does a company need one?
A part-time CTO with real decision authority: what the role covers, what it gets confused with, and four signs a company has outgrown not having one.
Migrating a live SaaS from Linode to AWS — without stopping school
210+ institutions log in every morning expecting attendance, fees and grades to just work. Here's how we moved the entire platform underneath them, and what I'd do differently.
Scaling an EdTech platform to 200,000 users on a startup budget
EdTech traffic is brutally spiky — result day can be 50× a normal Tuesday. The architecture decisions that let a small team survive it, and the ones that almost didn't.
CI/CD for small teams: ship daily, sleep nightly
You don't need a platform team to have great pipelines. The pragmatic CI/CD setup we run, and the SOPs that keep deploys boring.
Pairing with AI: how LLMs changed the way I build
I watched juniors paste our codebase into a chat window and thought quality was dying. Two years on, I use an assistant daily — here's what actually changed.
TypeScript: the gradual conversion
We put off TypeScript for years waiting for 'the next project.' What worked was converting the codebase we actually live in — one flag, one file at a time.
Security basics every SaaS founder ignores
We hold data about children, so I have no patience for security theater. Nobody gets breached through the fancy stuff — it's always the basics.
Hiring engineers: notes from a hundred interviews
I've hired whiteboard stars who flamed out and fumblers who became the backbone of the team. After a hundred interviews, these are the signals I actually trust.
Postgres is enough
A small team, a straightforward product, and an architecture diagram with four databases on it. My consulting advice keeps getting shorter.
Observability: from tail -f to Grafana
One morning I couldn't answer a simple question: is the platform slow right now, or does it just feel slow? That question cost us forty minutes on result day.
Kubernetes at a startup: what we needed, what we didn't
We adopted Kubernetes later than fashionable — and that timing was exactly right. An honest scorecard: what it fixed, what it cost, and when it would have been madness.
Technical debt is a loan you already took
Everyone talks about the principal — the messy module. Almost nobody tracks the interest: the twenty minutes every engineer pays every day working around it.
Running an engineering team from a hundred living rooms
We didn't choose remote; 2020 chose it for us — while every school we serve went remote too. What broke, what replaced it, and what we're keeping forever.
Infrastructure as code: learning to love CloudFormation
Six months after migrating to AWS, our infrastructure was a crime scene with no witnesses. Templates in git turned it back into engineering.
Redis and the art of caching
Reporting queries were melting the database and the hardware quote made my eyes water. The fix: cache keys, TTLs, and the fastest query being the one you don't run.
Docker finally clicked — works on my machine, everywhere
Our onboarding doc was four pages of PHP versions and MySQL collations, and every new hire lost two days to it. Then setup became one command and a coffee.
Going full-stack JavaScript: notes from a MERN build
One language from the database to the DOM. What delivered (async/await, shared validation), and what needs adult supervision (nine hundred dependencies, 'schemaless' Mongo).
Choosing boring technology for a brand-new startup
The school platform I've been circling since 2012 is finally a real product. Which makes the stack decision a bet with other people's money — so we bet boring.
React: rethinking the frontend
I saw JSX and closed the tab. Then I looked honestly at three thousand lines of jQuery where changing a dropdown broke a table two screens away.
The Lean Startup, read twice
Once fast, nodding along. Once slowly, with a notebook — because Eric Ries was describing every polished, feature-complete side project of mine that nobody ever used.
Laravel 4, and the day PHP grew up
I've defended Yii in every forum argument for two years. Then I shipped my first Laravel 4 project, and I owe myself some honesty: PHP just grew up, fast.
Git, finally: life after FINAL_v3.zip
My version control was a folder of zip files — until I overwrote three days of work with a stale copy. So: git, properly this time, command line only.
Getting things done with Yii 1.1
One developer, six weeks, a student records system — and a bet on a framework instead of a folder of raw PHP files. Also: every school I visit runs on paper registers. Someone should fix that.