Skip to content

Writing

Things I wrote

And what the fix actually was. Mostly Laravel, TypeScript and the tooling around them.

Coolify dashboard running on a Hetzner cloud server, beside a Hetzner price adjustment table showing the June 2026 increases

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

AI made writing code cheap. Review is still expensive

Teams merged 98% more PRs this year and review time went up 91%. The bottleneck moved from writing code to approving it, and most teams haven't noticed.

2 Aug 2026 · AI · 7 min read

I replaced Spotlight with Raycast, then replaced Raycast with look

I moved from Spotlight to Raycast to fix app launching, then moved to look because Raycast's file search kept getting in my way. Here is the honest trade.

31 Jul 2026 · Tools · 9 min read

Homebrew 6.0 tap trust: what breaks and how to fix it

Homebrew 6.0 stops running third-party tap code until you trust it. Here is what actually fails, the commands that fix it, and the two changes nobody is talking about.

29 Jul 2026 · Tools · 6 min read

Dataview vs Datacore vs Bases: what I actually use in 2026

A year after the hype, here's how Dataview, Datacore, and Obsidian Bases actually compare, and how I use Bases to run my whole vault.

19 Jul 2026 · obsidian · 7 min read

The jscrambler npm hack drops a stealer that hunts your AI tool keys

jscrambler 8.14.0 shipped a preinstall hook that runs a Rust infostealer during npm install. It goes after AWS, wallets, and your Claude/Cursor/MCP config. What to do.

12 Jul 2026 · Javascript · 8 min read

C# REPL: an interactive shell for .NET, like Node and Python

C# REPL gives you a real interactive shell for C# with autocomplete, NuGet support, and instant results. Test snippets without spinning up a project.

12 Jul 2026 · C# · 5 min read

Claude Code permission modes: approval, auto-accept, and plan mode

The three ways Claude Code handles permission (approval, auto-accept, plan mode), how to cycle them with Shift+Tab, and when to use each.

11 Jul 2026 · Claude Code · 4 min read

Dia is my main browser on Mac. Now I just want Windows

I use Dia as my daily browser on my MacBook. Here's what the new Reports feature actually does, and why I'm stuck waiting for the Windows version.

10 Jul 2026 · AI · 5 min read

MinIO is archived: the self-hosted S3 alternatives worth using

MinIO's community repo is read-only as of April 2026. Here's an honest look at RustFS, SeaweedFS, and Garage, and which one fits your setup.

6 Jul 2026 · hosting · 4 min read

Is "dumb HTML" really killing React? The honest case for HTMX

HTMX is 16KB that lets HTML talk to the server and swap in the reply. One company cut 67% of their React code with it. Here's when it wins and when it burns you.

6 Jul 2026 · HTML · 6 min read

The HTTP QUERY method is real now (RFC 10008), and it fixes the GET vs POST mess

RFC 10008 gives HTTP a real QUERY method. Safe and idempotent like GET, body-carried like POST. Here's how it works, with curl, fetch, Laravel, and .NET examples.

5 Jul 2026 · 7 min read

You probably don't need a database per tenant

Database-per-tenant is the default people reach for in multitenancy, and it's usually the wrong one. Here's the full spectrum from separate instances down to a discriminator column, what each one costs you per tenant forever, and why Postgres plus row-level security is enough for most apps.

1 Jul 2026 · Laravel · 9 min read

One email when the next one lands

No sequence, no course, no webinar. Leave from any email.