I build startups from the first commit.
Startup CTO and founding engineer. I've been CTO twice and stayed hands-on in the code both times. 15 years writing software, much of it distributed systems in Elixir, and lately production AI infrastructure.
Tell me what you're buildingI also take on advisory work, fixed-scope projects, and fractional CTO roles. How consulting works.
-
An AI-native platform for US warehouses and delivery fleets, on LLMs we host, fine-tune, and evaluate ourselves
-
A B2C logistics startup with next-day doorstep pickups, built as CTO from the first commit to millions of events a day
-
-
An SEO analytics platform on Elixir, Go, and Rust microservices, with rotating-proxy crawlers and billions of rows in ClickHouse
-
A peer-to-peer calling and texting platform for political campaigns, on clustered Elixir, handling millions of calls and texts a day through a US election
-
The core backend for a video conferencing product, on distributed Elixir and Phoenix with Amazon Chime for media
-
Production and GPU training infrastructure for a synthetic data startup's GAN models, with custom JDBC drivers bridging Erlang and the JVM
-
Consulting for startups around the world, mostly in Elixir, Rails, and Go
-
Event-sourced Elixir apps with CQRS
-
An IoT platform for a fleet of Wi-Fi routers, built as RabbitMQ microservices behind device APIs
-
A consultancy I co-founded as CTO and grew to about 50 people
-
First web apps, in Ruby on Rails and PHP
Writing on til.codes
- When the Nix eval cache serves a ghost derivation nix
- 76x faster by moving one WHERE clause postgres
- Adding --into to jjui to pick where jj absorb lands jj
- Bridging git worktrees and jj workspaces for agentic workflows jj
- LiveView already knows when your server crashed elixir
- Debugging a silent Langfuse integration in production tracing
- Flaky Playwright tests are a distributed systems problem elixir
- How CUDA graphs leaked memory in production inference
- When the KV cache eats your GPU inference
- Why tensor parallelism made our inference slower inference
- When quantizing a 70B model broke everything inference