Software engineer (Google)
Ads Via The Deck
Software engineer (Google)
I am a software engineer at Google. I helped launch the Android mobile platform, working on its kernel and system stack. Nowadays I work on the distributed system that powers Google’s web search. Prior to Google I did a bit of Linux kernel work, most recently at Ximian, which was acquired by Novell.
I also write books. My latest is the third edition of Linux Kernel Development.
I have four machines in my life: my workstation, my laptop, my server, and my smartphone. With each passing day, the phone is becoming the most important and useful of the four. It is hard to believe how stagnant and broken that industry was just three years ago, before the advent of iPhone and Android.
My workstation is a Dell machine with quad core Gainestown-based Xeons and 24GB of DDR3 RAM. It is connected to a 30” HP monitor outputting 2560x1600. I use this machine for coding and little else, so it is all about lots of RAM and screen real estate.
On the workstation, I use a dorky Logitech keyboard, but I’m absolutely obsessed with the old IBM Model M keyboards. Those things can withstand small arms fire, and I love the tactile response of the buckling springs. Unfortunately my colleagues at Google would kill me if I was clicking away on that relic all day, so I make do with the Logitech. My mouse is a Logitech MX518.
My laptop is a 15” MacBook Pro. It is a recent model, with 2.53GHz Intel Core 2 Duo, 4GB RAM, and a matte display. I use the laptop for most non-coding activities. I carry it between home and work, so I always have it, although so much of my world is in the cloud, I could stop doing so at this point.
My server is a Linode instance. I can’t recommend Linode enough for folks’ hosting needs. They do VPS hosting with Xen, and as a company they just get it.
My smartphone is an Android-powered Nexus One. I love the gorgeous AMOLED display and 1GHz Snapdragon CPU.
My most-used consumer electronics device is a Kindle 2.
My workstation runs Google’s in-house version of Ubuntu, creatively named Goobuntu. I run the GNOME desktop environment (the default in Goobuntu). My main applications are GNOME Terminal, VIM, and Chrome. I do all my coding in VIM. For Android, I wrote in C, but my current project is mostly C++. I’m coping. At Google, we use GCC, with a lot of nice productivity and development tools around that and we have vimrc files to tie everything together. It is the most powerful and productive C/C++ development environment I have ever used.
My laptop runs Mac OS X 10.6 “Snow Leopard.” The only apps I run on it are Chrome, iTunes, and GIMP.
My server runs Red Hat Enterprise Linux 5 with a kernel of my own compilation.
My phone runs Android 2.2 “Froyo.” My most frequently-used apps are Twitter for Android and the browser, although I think the killer app is Maps. Other installed apps include Dropbox, Google Translate, Kindle, and OpenTable. I also dig the News & Weather app we added to Android 2.1 - it is an attractive widget and I like how it auto-updates the weather forecast to your current location.
Most of my non-coding time, across all of these devices, is spent on the web. Gmail, Google Calendar, Google Reader, and Twitter are my most-used web apps. I store data in Dropbox. I use Google Docs. I just need cloud-based streaming and storage of my music.
I’d love a laptop with the profile and weight of the MacBook Air but with a gorgeous, high-resolution, pixel-dense display and with days upon days of battery capacity. Lots of RAM, SSD, and a fast but (more important) energy-efficient ARM core.
But that isn’t a dream, it is next year. Taking a broader look, I’d argue hardware, aside from battery capacity, is beyond where consumers need it. Modern hardware is impressive. Software, on the other hand, has room to grow. Not because software is bad, but because there are so few limits. Software is just so malleable; it is like working in the medium of pure thought. A lot of dreamin’ is possible.