11:00 PM? – Aloft over the Atlantic, I’m en route to Delhi via Amsterdam. A 20 hour flight doesn’t make a good story, so I’ll spare you the details. There are crying babies. There is fitful and infrequent sleep. There is excessively dry air. It is exactly what a 20 hour flight should be. I occupy myself with books, games, and the aforementioned fitful and infrequent sleep. I hope that a long bout of drowsiness will set in and I will catch some shuteye before landing in Amsterdam.
Tall tales of India are not in short supply. Herodotus tells a unrolls a fantastic yarn about ants bigger than foxes who dig up gold as a by product of their burrowing. Skilled camel riders, calculating the appropriate time to do so, storm into the desert when the heat is the highest and the ants are in their burrows to snatch this gold up. They must time this precisely, or the ants, who in addition to their absurd size can run faster than a camel, will give chase.
In a tall tale from the even further east, Journey to the West was a 16th century travel adventure in which a monk is sent Westward from his home in China to the far off and exotic land of India to retrieve the sutras. Under the protection of several monsters (the most notable of which is a Monkey named “Aware of Vacuity”), The monk encounters a series of strange impediments, including avery angry personification of a river, but reaches his destination of Vulture Peak, and brings back the sutras to his homeland.
Even modern folks have tall tales to tell. The Indian culture center is one of the oldest in the world, and there are some (who many call crazy) that think that India may have already experienced a modern age, complete with manned flight, journeys into space, and submarines. The proof they say, is in India’s own Ancient literature, the Vimanas, and that the knowledge of these things was lost to men for tens of thousands of years. There is an old crack that everything ultimately comes from either Greece or China, but this claim certainly has them beat.
In my own journey to the Indian Subcontinent (why do they call it that anyway), I find myself at once prepared for the peculiarities of the place and apprehensive; will the reality, along with the influence of the West in the last few centuries diminish the other-worldly-ness of the experience? We’ll see, but I’m still going to keep my head on a swivel for giant ants, raging rivers, and ancient rocket ships, just in case.
This is the beginning of a travelogue of India. Posts tagged with JTTE (Short for Journey to the East), are entries in this log. Feel free to follow along.
It seems like there is a time-boxed challenge for everything out there on the internet. For writers there is NaNoWriMo, for moustache growers there is Movember. Game programmers have Dream.Build.Play. If you do it, there is a challenge for it, and if there isn’t, you can create one. I’ve always wanted to get involved with one of these little challenges, but find myself unwilling (or unable) to commit the time. It’s either work, running, or remodeling a kitchen that gets in the way. When Tim Alexander asked me to play drums for a few tracks on the RPM Challenge this February, I jumped at the chance.
After that I asked him what the RPM challenge was, and what kind of music he was writing.
The RPM Challenge
The RPM Challenge gives the recording artist a month (in this case the shortest month) to record an entire album start to finish. 10 Songs or 30 minutes. Go. No recording before February 1, recordings must be submitted February 28. Or 29 in a leap year I guess.They Might Be Giants are considered pop. The songs are catchy and original, and the subject matter is usually off the wall. This is Tim’s second year with the RPM Challenge, he successfully recorded Backstage Stories in 2010.
The music sounded like a lot of fun, but I had a secret motive for wanting to get involved. Besides the desire to get into one of these creative challenges for the first time, I hadn’t played my drums in damn near a year. I had let my brand new Peavey Radial Pro 1000’s languish due to life’s little setbacks for months. This was the motivation I needed to get my new kit record-ready and my butt back behind the set. I slapped some new heads on the kit, rearranged things a bit, and by the end of January I was miced up and ready to go.
The challenge was a breeze, but of course, I was only committed to playing a few songs. Tim would put the files I needed in a shared Dropbox folder, I would load them up in my DAW of choice, bang out a couple of takes, then send the wavs back to Tim for inclusion in his mixes. Toward the end we had worked out a system that involved me providing a stereo reference mix plus all the unmixed tracks that Tim could use to really dial in the sound he was looking for. It went great, and I got the chance to live a creative challenge vicariously through Tim. Not to mention play my new drums. You can hear the results on the Letter Seventeen Bandcamp site.
Embrace Creative Constraints
I see a lot of potential in these time-boxed challenges. First, they absolutely require focus. I know in my daily routine I bounce back and forth between working, coding, writing, training, reading, and in general not focusing on any one thing day in and day out. For people like me, these challenges are the creative constraint we need to force us to focus on one thing for a short period of time, whether it be a day, a week or a month, and let the other stuff wait for a while. This allows the unfocused among us to continue “unfocusing” most of the time, then really apply our energies at intervals in a concentrated effort to finish just one thing. To borrow an analogy, “Reading is the inhale, writing is the exhale”. The same can be said of listening and writing music. If I consider all of my unfocused time as inhaling, gathering information, listening and really forming ideas, I can focus all the data I’ve gathered into one concentrated exhale. Then maybe breathe normally for a while. It’s a bit like Agile software development, you set yourself up to sprint for a very short period of time, concentrate on that and that alone, and come out the other end with something complete.
These challenges also force you to organize your brainstorms into something finished. Sure, with some of the challenges like NaNoWriMo there is a premium on getting as many words on the page as possible, but at the end of the day those words have to mean something for them to be worthwhile to you. You could go all month, typing a dictionary into your word processor, or stringing together 500 disparate riffs into 10 songs and calling it a finished piece, but you wouldn’t really be doing yourself justice. The point is to have a finished work that you can show off at the end. You’ll be proud for having finished, but you’ll be prouder for having finished something worthwhile.
Lastly, there is an emphasis on “shipping” with these challenges. I’m reminded of a quote attributed to Steve Job’s, “Real artists ship”, and these challenges have a built-in way of separating the “real artists” from the twiddlers: a deadline. Much has been said about artificial deadlines, but the presence of a community around you, working toward the same goal, in many ways competing with one another to be “real artists” creates some kind of unique motivational magic. From Tim’s RPM page:
I wrote 5 songs in 25 years. Thanks to RPM 2010, I wrote 13 more in 15 days and used 11 of them for my album. My wife had heard me sing maybe 3 times in 17 years. Then I released an album. So I basically went from zero to 60 in a month.
You can check out the fruits of Tim’s labors, Snowbound, at the Letter Seventeen Bancamp site.
I use Launchy hundreds of times in a day. The Alt and Spacebar keys are usually the first to show significant wear and tear on any new computer I work with. It’s the first thing I install, and it’s how I keep my hands on the keyboard and off the mouse. I also use a web service called Toodledo for task, todo, and personal project management. Toodledo sounds like a lame children’s toy, but it is extremely good at what it does: being an ugly but efficient task management system.
Toodledo works via the web and iPhone, but what I really wanted was something that would allow me to add tasks via the Launchy window as I thought of them; in meetings, on phone calls, while writing, etc. This just needed to be a rapid fire todo creator: hit Alt+Spacebar for the Launchy window, then todo, tab, and my task. You would think that someone would have written a very simple windows native client to quickly add todo’s to the Toodledo service, but when I went looking the closest thing I found was a ruby client. Not exactly native. I pulled together a few projects that already existed out there and created my own little command line todo client that I could run from Launchy.
This was of course many months ago.
I’ve become a regular user of git and github lately. For open source projects, code snippets, and in general sharing text based files, github has been by far the most mature attempt I have had the pleasure of using. I figured if I was going to share this little snippet of code with the world at large, I may as well explore the git and github paradigm.
First, there is git as version control system. That’s simple enough: setup a repository and check in some code. Modify it locally, commit it, push it. Nothing special here. I created a repo for my little todo client, which I’m calling todo-cl, and checked in my code here.
To check out the merge features I created another local source tree and mucked with the code, then pulled it back into my original branch. No surprises here either. Let’s create a branch.
I think I created and switched between 3 or 4 branches, testing modifications and merges, in less than 5 minutes. In a command line window. Not in an IDE. This is really freaking cool. In most of the version control systems I’ve used, branching is by far the most problematic feature to work with. It usually means creating different directories with different versions of the source tree, taking up disk space, forcing me to navigate around and make sure that I’m making my changes in the right directory. It’s a pain in the ass. With git, I get to work in the same directory if I want, the amount of time it takes to switch branches is the time it takes to run a simple command, and I can create several branches without doubling and tripling the amount of disk space in use. Sure, hard drives are cheap, but you can’t put a price on time, and branching in git is a huge time saver.
From a version control standpoint, git is simple as hell, with a few powerful features that set it apart. This is where github takes over. Obviously github is a git server. It stores your repository, displays it via the web, and allows others to search is and see what you’ve done. Very cool.
But what else can github do?
For starters I can fork any public repository. I’ve already done this with the RWMidi project. If I decide that I want to make some changes to the Rails framework, the Linux kernel , or Apache’s HTTP server, I can do that. I can choose to go off on my own and continue working on my little fork, or I can issue a pull request and let the folks maintaining the main releases know that I’ve made a swanky fix that others might be interested in. This isn’t all that new, github has just made it extremely easy. Github has also made it personal. If someone wants to use my version of the Linux kernel instead of say, Linus Torvald’s version, they can. Really though…keep using official Linux kernel. My todo-cl repo can be forked too.
What are pages?
You can create a branch on any repository called gh-pages, load it up with a complete html website, and github will serve the contents. This can become the main page for the software hosted on that repository. Indeed, github has taken this a step further, and allowed custom domains for these pages, so that github can become the replacement for your shared hosting. Wanna keep going? Create a repository for your personal blog, load it up with html pages, and github will gladly serve that as well, custom domain and all. I created a page for todo-cl here.
But wait, there’s more.
There is Jekyll. Jekyll is a bit like a WordPress for github, a framework that allows you to create something like a blog in a repository. Throw some posts in a folder, and with a little presentation magic github serves it up. I doubt I’ll be switching to it anytime soon, but I find the concept intriguing and plan on keeping my eye on it.
So github is a bit like Facebook for hackers, without all the Mafia Wars and Farmville requests. Exploring the world of code waiting out there ready to be “forked with” is a little overwhelming, but to know there are so many folks out there making so many things with software is comforting. Coming from a guy who sees making machines do things as an end in an of itself, there is a lot of ends to explore here.
So check out todo-cl if you want to use enter todo’s from the command line or Launchy. Check out github if you want play with code.
With just a little trepidation I have checked in the code for all of my free software goodies into GitHub. I was getting several requests to provide access to the source for several of my old projects, so rather than emailing code around on a case by case basis, I have simply checked everything in to GitHub for posterity. Who knows, maybe someone will jump in there and fix all the bugs.
I have written some other tools for my personal use that I will likely check in there as well, so check back if you’re interested in that kind of thing.