// About
I started coding in 1999. Somehow, I'm still having fun.
I was ten years old when I started making websites. The internet was a very different place back then. We had dial-up, questionable design decisions, and a whole lot of animated GIFs.
Somewhere between then and now, I turned a childhood curiosity into a career building software, working with startups, contributing to open source, and teaching hundreds of thousands of people to code.
// 01 — My story
Twenty-seven years, give or take a few semicolons.
-
1999
First lines of code
Learning to build websites at age ten.
-
Early 2000s
Discovering the web
Gaming websites, browser experiments, early dynamic pages, and plenty of independent projects.
-
Teenage years
First paid development work
Turning a hobby into real projects for real people.
-
2012
Teaching begins
Launching my first web development courses and finding out I love helping people learn.
-
2013 onward
Business and startups
Building products, co-founding ventures, and learning the lessons technology alone doesn't teach.
-
Later career
Python, Django, and Wagtail
Specializing in the Django ecosystem, creating LearnWagtail, and joining the Wagtail core team.
-
Professional
Organizations and teams
Agency, open-source, and established engineering environments, including Torchbox, Mozilla, and NASA.
-
2020s
Modern application engineering
Full-stack platforms, React Native, Expo, Shopify, distributed applications, APIs, and AI-powered systems.
-
2025
Muck Rack
Working with the amazing Muck Rack team to solve big PR challenges.
-
Today
Still learning
Combining established engineering principles with evolving tools and practical AI.
// 02 — How I think about software
Great software should make someone's life easier.
Otherwise, what are we building it for?
I start with the business problem, because users make businesses possible and healthy businesses make room for good engineering. The framework comes after.
I care a lot about the second year of a codebase. Shipping is the easy part. Keeping software understandable for the next person, who is often me, is where the real cost lives.
I'm pragmatic about tools. A complicated solution isn't automatically a better one, and sometimes the best AI feature is a well-written SQL query.
// 03 — Things experience has taught me
- 01 The best solution is not always the most complicated one.
- 02 Communication is an engineering skill.
- 03 Startups teach lessons you cannot learn exclusively from code.
- 04 Understanding why something matters changes how you build it.
- 05 Teaching someone else is a great way to discover what you don't fully understand.