Thursday, January 1, 2009

Brett Cannon

When Steve asked me to do an entry for On Your Desktop, I instantly wondered if I should wait a couple of months to do it when I am back home in Vancouver, BC. At the moment I am in the lucky position of doing an internship at Google with the App Engine team under the auspices of Guido. But Steve said to do what I wanted, so I decided I would share my working environment here in San Francisco now instead of possibly being as delinquent as Barry in getting Steve a post for the blog if I waited until I returned home.

If you were going to be as delinquent as Barry you'd have to wait until after you'd finished next year's internship ... but it's nice to get a response so quickly. Thanks!

Let's start with my desk at work and go from small to large in terms of details. When I code anything other than Java, which thank god is never for my internship, I use Vim. I have been using the editor since my undergrad days and I have been generally happy with it. I do occasionally try out other editors (e.g. TextMate, Eclipse), but I always come back to Vim thanks to the muscle memory I have built up for it along with its wide support of languages (I am a language whore so I sometimes code in some obscure languages that most editors have no support for). I recently switched to GVim and that has also helped me enjoy my Vim usage more. I currently don't use any plug-ins for Vim or crazy macros.

In terms of my other daily applications beyond Vim, it's just Firefox and a terminal. Working at Google means pretty much everything is a web app, so I don't need much beyond my a code editor and a browser to get my work done.

Ah, the simple life. At least we aren't getting a repeat of the Alex Martelli black screen :-)

In terms of OS and what everything is running on, it's the standard issue Linux desktop at Google. The screen is q 30" LCD and I have to say it's rather nice. I have done the dual 24" LCDs during my last two internships at Google, and the continuity of a single screen for that much screen real estate is great; having that split in the middle of my workspace always bugged me.

Pulling back from the software, for input devices I have a Kinesis Advantage keyboard and a Kensington Expert Mouse (which is a trackball, making the name a complete misnomer in my eyes). I have been a trackball user since back in high school when my PC was kept in such a small space that a regular mouse just didn't make much sense. And the Kinesis I have used since my RSI came into existence.

Sorry to hear about the RSI. Interesting to discover that you too are a trackball fan. I really will get one now, just as soon as I've tidied the office ...

Pulling back to the physical desk, the stuff on the desk that might not be obvious from the photo is my NuForce Icon headphone amplifier, iPod Touch, and a cup of Reese's Pieces. The Icon is to make the music coming from the iPod Touch sound better. The iPod Touch is currently only for music and my todo list (thanks to Things), but the device will slowly be transitioned out of my life as I plan to eventually move my music over to my developer HTC G1 phone. The Reese's Pieces is to help me meet my goal of gaining 20 lbs. during my internship (if you have met me you would realize why I am trying to gain weight, plus I gained 23 lbs. during my last internship so I know it is feasible).

Is the poor sound quality on the headphones because of an impedance mismatch, or do you need more power output than the iPod can provide? I too have a G1, but I am contemplating web apps rather than the currently-mandatory Java. Any chance we can persuade you to port Python?

And pulling back even farther from the desk, the view from my chair is of some new condo buildings. I share an office with a co-worker who unfortunately has to put up with my constant questions on how things work on App Engine. And then Guido, who sits across the hall from me, has to put up with me talking loudly.

I've only visited the Google campus once; I had forgotten that there were residential properties so close.

When the work day is done I walk home to the apartment I am staying in with an old university friend of mine. There I work on my MacBook. The desktop on my laptop is rather simple and sparse. The dock has nothing beyond Firefox and shortcuts to the docs for Python 2.7, 3.1, Google App Engine, and Java stuff for my thesis. The wallpaper is consistently set to a theme that rotates every photos every 15 minutes. Each theme I have is meant to help motivate me to hurry up and graduate. Currently it is sports cars I can't afford or ecologically-friendly ones I could potentially afford if I had a well-paying job.

As for my physical work environment, it consists of either a sofa or a table from IKEA (in my own defense, not a single thing in the photos of where I am staying is mine; my friend is the one with all of the "possessions"). One of the drawbacks of going nearly 950 miles for an internship is you don't get to bring your furniture with you. But plopping down on the sofa with my laptop has worked out fine.

And there's nothing wrong with IKEA furniture. It's built to a price point, but the quality is pretty good. I've been an IKEA customer since 1970, when I lived in Sweden. Plus I taught a Python class at IKEA US, so I know they use Python!

So, in summary: Vim/Linux/30" LCD/condo at work, Vim/OS X/MacBook/messy coffee table at home.

Thanks for letting us see your desktop, Brett. Maybe you can update us after the internship.

2 comments:

Brett said...

Here are my responses to Steve's comments.

The point of the headphone amp is not that the sound quality is poor for, just that it can be easily raised. The headphones I have at work are good and the ones I have back in Vancouver are even better, so I figured I might as well try to get the best out of them. Plus the amp also supports a USB connection so I can a really clean signal from my laptop.

For porting Python to Android, a friend of mine has already done it: http://www.damonkohler.com/2008/12/python-on-android.html . And I know the Jython folks are thinking of developing an interpreter that does not require the ability to generate bytecode on-the-fly, which should allow Jython to run on Android.

The Googleplex in Mountain View is on the other side of the freeway from houses, which is not far. But I am at the San Francisco office which I didn't make clear; sorry about that.

And I have nothing against IKEA furniture; my apartment in Vancouver is mostly furnished in the stuff.

Tartley said...

Thanks for all that Brett, very interesting to see.

I was taken aback by the reference to Python 2.7. In my obliviousness I hadn't realised there were plans for 2.x releases except minor point releases of 2.6.x.

In case there's anyone else out there in a similar state of befuddlement, reading around reveals that 2.7 will further improve the migration path for applications to make the jump to 3.0 (or 3.1...) by improving existing warnings and migration tools, and also by backporting more 3.0 features into __future__.