Writing
Things I wrote
And what the fix actually was. Mostly Laravel, TypeScript and the tooling around them.
Featured
Moving from Vercel to Hetzner with Coolify: the guides are quoting dead prices
Almost every "move from Vercel to Hetzner with Coolify" guide was written in 2025. Hetzner raised cloud prices twice in 2026, and the exact server those guides name now costs 144% more. Here are the real numbers and the plan to pick instead.
6 Aug 2026 · Docker · 10 min read
Filter by topic 61
Someone built a mini Claude Code in an afternoon. Here is what to steal from it
A developer built a read-only AI code reviewer from scratch in minutes. The real lesson is the harness: model, context, guardrails, tools. Here is why you should build your own.
Composer update is now a security risk. Here is the safer workflow
A Laravel package got hijacked through git tags and stole credentials at autoload time. Here is the Composer workflow I run on every project to shrink the blast radius.
GitHub Models is being retired: what it means and where to go
GitHub is retiring GitHub Models and new customers are already locked out. Who it hits, what to migrate to, and how to dodge vendor lock-in.
My Neovim Setup: A Kickstart Config I Actually Understand
A walkthrough of my real Neovim config: 31 plugins on a Kickstart base, set up for C#/.NET, web dev, and writing. What I run and why.
VPS prices are rising everywhere in 2026: Hetzner, OVHcloud, Hostinger
Hetzner, OVHcloud and Hostinger all raised VPS prices in 2026, driven by the same RAM and storage crunch. Here's what changed at each, why, and how to not overpay.
I redesigned my portfolio from tech dashboard to editorial
Why I dropped the cyan-and-cards look every dev portfolio has, and rebuilt mine as a warm editorial site with one accent, magazine rows, and a flash-free theme toggle.
The C iceberg: surprising facts every C beginner should know
A beginner-friendly tour of C's weirdest corners: pointers, array decay, the stack and heap, struct padding, octal literals, and why a byte isn't always 8 bits.
openapi-typescript: stop hand-writing your API types
Hand-written API types drift from the real API and ship bugs. openapi-typescript generates them from your OpenAPI schema so the compiler catches mismatches.
Smoke testing: the 30-second check that saves your deploys
A smoke test is a tiny set of checks that confirm your app still boots and the core flows work. Here's how to write one, where it sits in CI, and the tools I use.
Is markdown dead? Why I keep asking AI for HTML notes instead
Markdown isn't dead, but for AI notes I read once I now ask for a self-contained HTML file that opens in the browser already styled. Here's when I switch, and when I stay on markdown.
CSS can now animate between pages
Cross-document view transitions let plain links fade, slide, and morph between separate HTML pages, no JavaScript framework needed. Here is how to set them up and what to watch for before you ship.
Where do we actually use data structures and algorithms?
Forget the interview trivia. Here's where data structures and algorithms show up in real projects, with code, real apps, and bugs they fixed for me.
One email when the next one lands
No sequence, no course, no webinar. Leave from any email.