I’ve been working on an internal web app for the past few weeks.
I’m not a “real” programmer, so as usual I just figure things out as I go along and make lots of mistakes, but I always learn new stuff. This is how I learned programming in the first place, got my first gigs building websites, then ended up at OpenPlans, Code for America and now USV. My favorite thing about the web is how it makes it possible to just pick a direction and learn as you go. It’s amazing, really.
My background is that I’m good with front-end development (html/css/js) and decent with PHP (have built a ton of wordpress websites, plugins, themes), but I quickly trail off from there. So I’m very comfortable in some places, and not so much in others (linux admin, deploying python apps, etc).
But for this project, I decided to try something new. I’m using tornado (a python web framework), paired with mongodb. The app is hosted at Heroku and my mongo database is running in the cloud at Mongolab. I’m using twitter auth for log-ins, and I’m also using the hackpad API to embed editable documents in the app.
What’s so cool about this is that pretty much everything is a cloud-hosted service, wired together in a really light way to make the app. There is a tiny amount of application-specific code. If we had used Brubeck instead of Tornado, there’d be even less.
It’s been a joy to develop in this environment. I like programming in python, and mongodb is a breath of fresh air. And being able to simply wire in things like hackpad (with some really great help from Igor) has been amazing. Deploying updates is as simple as git
push heroku master and heroku does all the heavy lifting.
Much of the starter code for this came from Zach, our hacker-in-residence at USV, who’s been working on an update for USV.com. I don’t think I’d have been able to do it without his starting point — but looking at the Brubeck docs, which are quite good (kudos, James), perhaps that’s not true.
All of this reminds me of a post my friend Ian Bicking wrote a few years ago about What PHP Deployment Gets Right. For those who don’t know Ian, he is a rockstar python developer who understands the low level stuff better than anyone I’ve been around — among other things he wrote pip and virtualenv, which are primary tools for anyone developing in python. Anyway, the point of Ian’s post is that PHP deployment is, and always has been, so easy that it’s possible for people (like me, until recently) who are afraid of going deeper than the file system, to program and deploy apps.
Ian’s post is 5 years old now, and a lot has changed. It’s pretty sweet how the hurdles for developing web apps keep getting lower and lower.