Development
My stack and tools
The technologies I lean on to build, and the hardware and software I use every day. The stack first, then the tools.
The tech stack
Not a wall of logos. The tools I actually reach for, grouped by layer, each with an honest reason. I pick boring where boring is safer and reach for the sharp tools where they earn it.
Languages
PHP 8.5
The web runs on it and modern PHP is fast and strict. Typed properties, enums, readonly, fibers. Most of my client work lives here.
Rust
For the hot paths and anything where a guarantee matters more than a deadline. Memory safety without a garbage collector, and a type system that catches whole classes of bug.
TypeScript
JavaScript with a seatbelt. I would rather find the mistake at build time than in production.
Frameworks
Laravel
Batteries included without being a black box. Queues, migrations, and an ecosystem that lets me ship a real app quickly and maintain it for years.
Symfony
When a project needs the components more than the conventions. Solid, predictable, long-term.
Pulsar
My own PHP 8.5 and Rust framework. Compiled dependency injection, hexagonal layers, formal verification on the critical modules. It exists to push the architecture further than a general framework will.
Data and infrastructure
PostgreSQL
The default I trust. Correct, fast, and honest about what it is doing under load. MySQL and MariaDB when the project already lives there.
Redis
Cache and queue. The thing that absorbs a traffic spike so the database does not have to.
AWS, HTTP/3, Nginx
EC2, S3, SES, Route 53. HTTP/3 and a tuned Nginx in front. I have migrated several employers off shared hosting onto this and slept better for it.
Quality and tooling
PHPStan, Psalm
Static analysis at the strict end. The compiler I wish PHP had, run on every commit.
PHPUnit, Infection
Tests, and mutation testing to check the tests are worth keeping. An MSI target keeps them honest.
Docker, GitHub Actions
Same environment everywhere, and a pipeline that will not let a red build reach production.
depth / Where my hours have gone
The daily tools
What is actually on my machine and desk, in the /uses tradition. No affiliate links. If something is here it is because I reach for it daily, not because someone paid for the slot.
Editor and terminal
- NeovimThe main editor. Years of muscle memory and a config I actually understand. LSP for PHP, Rust and TypeScript.
- JetBrains MonoEditor and terminal typeface. Tall x-height, clear at small sizes, the ligatures stay out of the way.
- tmux + zshOne terminal, many panes, sessions that survive a disconnect. Where most of the work happens.
Hardware
- Linux workstationUbuntu on a desktop I built. The development environment matches production, which removes a whole category of surprise.
- Mechanical keyboardTactile switches, ortholinear-ish layout. Quiet enough for a call, sharp enough to feel.
- Dual monitorsCode on one, the running site and logs on the other. The control-room layout, scaled to a desk.
Desk and capture
- Sony α7 IIIThe camera that also earns its keep on the photography side. Doubles as a clean webcam for client calls.
- Wired audioA real interface and headphones. Latency and clarity matter more than convenience on a long call.
Services
- GitHub + ActionsSource of truth and the CI pipeline. Self-hosted runners for the heavier Rust builds.
- PlausiblePrivacy-friendly analytics where a client needs numbers, with no cookie banner to apologise for.