██╗ ██████╗ ██████╗ ██████╗ ██║ ██╔═══██╗██╔══██╗██╔══██╗ ██║ ██║ ██║██████╔╝██║ ██║ ██║ ██║ ██║██╔══██╗██║ ██║ ███████╗╚██████╔╝██║ ██║██████╔╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝
Building software, for the love of it.
Architect, developer, or consultant — whatever the work calls for. My toolkit evolves; right now that's mostly Cloudflare's Developer Platform, which I've written a book about.
## recent_writing see_all →
-
aiAI is making the nice version worth building
There is a particular kind of software improvement that lives forever in the backlog. Everyone agrees it would be better. Nobody can quite justify doing it.
-
aiLimiting AI news would hide what is happening to software
There is an Ask HN thread on the front page today asking whether Hacker News can “please limit the AI news flood”. To be fair to its author,…
-
cloudflareCloudflare doesn't have AI psychosis. It has a thesis.
“I am not blaming the innovation. I am blaming the chaos of innovation. Everything feels DISJOINTED.” That’s the author of “Cloudflare’s AI psychosis”, on Hacker News this weekend,…
## ~/projects all_142 →
-
TypeScriptNode.jsSQLiteSMTPIMAP4rev2DKIM/SPF/DMARC
-
cutibrowser — a from-scratch desktop browser for the document web, with zero runtime dependencies 2026TypeScriptNode.js FFImacOS frameworks
-
RADAR — an air-traffic-control scope over live ADS-B data 2026Node.jsSQLitevanilla JSHTML CanvasADS-B Exchange
-
What's that flight? — the aircraft overhead right now, as a map of your sky 2026TypeScriptCloudflare Workersvanilla JSADS-B Exchange
-
world — an infinite, procedurally generated natural world to walk and fly through 2026TypeScriptThree.jsWebGPUViteWeb Workers
## ~/work full_timeline →
- 2023 →CDS UK — Solution Architect · now
- 2021 – 2023HeadClear — Chief Technology Officer (co-founder)
- 2020 – 2021Advanced — Principal Software Engineer
- 2019 – 2020Mitrefinch — Developer → Delivery Team Lead
- 2016 – 2019IFS — Software Engineer → Senior
If you spotted a mistake or want to reply, send me an email.
138 posts · 142 projects · archive since 2013
— jl