The difficulty with any new programming language is the steep learning curve, all the drudgery and banging your forehead against the keyboard. There was no Codecademy or Stack Overflow at that time. We bought books from O’Reilly and No Starch Press, among others. I bought Learn Python and skimmed the first few chapters, but I had no project to motivate me. Without something to obsess over you, you will never learn to program.
I didn’t have much time either. Running a restaurant kitchen is an all-consuming, life-sucking business. After another year I suffered a burnout. I gathered all the money I had, bought a plane ticket and left to lose myself in Asia. Hey, it worked for the Beatles. Kind of.
One day I decided I needed more music from the great jazz guitarist Django Reinhardt. I went to the internet cafe below my guest house in Bangkok to look for it. The problem was that the keyboard was of course Thai. I was able to change the layout in the Windows settings, but the symbols on the keys were still Thai. I thought ‘Django’ was a name so distinctive that it was all I needed. (This was before the Tarantino movie existed.) I typed it in and sure enough, Reinhardt was there in the first few results.
But what caught my attention was a website for something called ‘ Django, “the web framework for perfectionists with deadlines.” I had no deadlines, but a perfectionist? I can’t tell you how many times I’ve messed with tabs and spaces to make sure my handwritten HTML was indented properly when you viewed the source code. Could there possibly be a web framework for people like me? Tell me more.
It turned out that Django was a Python framework. If this had been a movie, there would have been a poorly animated scene where Aaron’s face cut through a cloud of Southeast Asian traveler haze and said: Learn Python. Learn Python. Six months later, back in Los Angeles, a friend asked me to build a website for a cycling charity, Wheels4Life. I agreed to do it, provided I use Django. I had a project.
That website turned out well. It led to another. And another. I ended up running a small business building Django-based websites. It took a few years, but I wrapped my head around Python and got to the point where, given a problem, I could figure out a way to solve it.
But here’s what surprised me: I never went deeper. Never wanted to. Python falls about halfway down the stack, but is unique in its ability to move in both directions. You can work at the highest level of abstraction and spit out HTML websites (Django’s specialty), but you can also get closer to the machine via an API that lets you import C modules. Working in Python allowed me to build everything I ever wanted to build. At some point I realized I wasn’t even thinking about the pile anymore. I just thought about the possibilities.
I went to the first Django conference, where I was ostensibly covering WIRED, but I was also there to meet the founders and learn from the community. What I found was a welcoming group of fellow nerds and programmers all working together to solve problems and build cool things. It was all very concrete. Tangible. Even if it came from abstractions.
To say that we live in an age of abstraction can be pejorative. The word implies an excessive distance from the fundamental truth of things, and we tend to view it – often rightly – with suspicion. But it seems to me now that the quest to de-abstract everything, to get to the bottom of the pile, is an urge born of a bygone era. The bare metal can be anywhere you are, in your language of choice, in your community. That’s where you build your world.