Hi! I'm Alan Johnson.

I live in Portland, Oregon with my wife and three kids. I'm CTO and employee #4 at Treehouse.


Current Projects


I work with Ryan Carson and the rest of the Treehouse team to rework how people learn about and find jobs in technology. Our goal is to make it possible for anyone who needs a great technology education to get one without the burden of paying for a university education or the friction of having to fit their learning to a specific schedule. We know that teaching people to build with technology will help them change the world for the better.

Learn More →


A Ruby library for rendering invoices to PDFs. I've had to render invoices in almost every web app I've worked on, and finally got fed up at rewriting the code and just wrote a library to do it.

Learn More →


A calculator for your command line! I end up crunching numbers a lot, and I've never been super happy with the Mac system calculator or the calculator in Alfred, mainly becuase they make doing several calculations in a row pretty painful. Maths tries to solve that problem, and a few others. Maths is highly inspired by Soulver.

Learn More →


A JavaScript library for adding features to HTML elements. Featurette keeps you from writing hooks after the page loads for every script you write, and also maps really well to sprucing up parts of pages with reusable code.

Learn More →

Past Projects

Hopefully Sunny

The idea behind Hopefully Sunny was to get a really simple formatted email with exactly the weather information you want each morning. It used UTF characters to show you a small picture of the forecast, and we made sure the messages were really scannable on your home screen each morning so you didn't even have to open the email. My brother-in-law, Ethan Mullis, and I built this project together.

I turned off Hopefully Sunny in December of 2013, here are some articles from the initial launch.


A Ruby testing console. The idea was basically that your Rails environment load is slow, so apps could preload in TConsole and then commands can be issued as needed to run tests. It also had some fun ideas like test ids (so that tests could be re-run with shorthand) and commands for identifying slowest tests. You can see TConsole in action in this quick video intro:

Since launching TConsole I lost the drive to keep working on it and handed things over to Graham Ashton.

Learn More →


Handlebars.js is a JavaScript templating language that I worked on with Yehuda Katz back in 2010. Our goal was to improve upon Mustache by implementing a few additional features, like backtracking up object trees and adding a block helpers syntax.

I'm no longer helping out on Handlebars.js, but it was a really fun project to contribute to.

Learn More →


I love to cook. I don't post recipes to my site very often, but hopefully that'll become more frequent as I create more of my own recipes.

Where I hang out

Get in touch

Feel free to email me any time: alan.johnson@gmail.com