My Setup
There’s this neat concept over at The Setup where (more-or-less) famous people describe their computer setup. Every interviewee get asked the same four questions:
- Who are you and what do you do?
- What hardware are you using?
- And what software?
- What would be you dream setup?
By browsing their answers, you can finally find out which hardware and software help your personal heroes (or nemeses) conceive their great works. They usually list their day-to-day gizmos as well as their invaluable instruments.
However, if you expect them to use life-changing tools you never heard of, you’d better lower you expectations or you will probably be disappointed. Most of the hardware setups presented on the site are merely a subset of the Apple product line. Their software stack is usually much more interesting, since they help solving specific use-cases. You may discover unsuspected gems which will end up completing your own setup.
I wanted to describe my own setup for future reference, and since I’m unlikely to be interviewed by the team behind the site, I’ll answer the questions right here.
Who are you and what do you do?
I’m a CS student with a knack for languages. My main activities are learning and research; both are powered by reading and writing articles, books and computer programs.
What hardware are you using?
Although I have a desktop machine, nowadays I mostly use my Vaio Z laptop. It’s a fast, comfortable, elegant and very light machine. All components are high-end. The screen is gorgeous, with very accurate colors, and a large 1600x900 resolution under 13”1 of matte glass. The keyboard is similar to those found in Apple products, and it’s my favorite keyboard yet: responsive and quiet. Though my standards might be a bit on the low end, since I’ve never tried a mechanical keyboard. The battery usually lasts around 4 hours with WiFi on, which is sufficient for my current needs. On the inside, it hides a dual-core i5 M560 running at 2.67Ghz and 4Gb of RAM. The killer feature though is the 128Gb SSD. I fear the speed upgrade it brought made me less patient around computers running on hard disk drives.
There are two downsides to this machine however. The first is the price. Depending on the configuration, and especially if you add an SSD, it can add up to quite a lot: the price range is $1600~$4500. Looking at the competition, and after more than one year of daily use, I don’t regret buying it, but the investment is not trivial. The second drawback is the poor support of the NVIDIA graphics card under Linux. There are two graphics solutions: one integrated Intel chipset, capable of playing video and modest games, and an NVIDIA GT330M when more graphics muscle is required. Switching between the “stamina” mode and the “performance” mode works well under Windows, but Linux only supports the Intel chipset. Though I need to state that every single other thing works like a charm under Linux, which is laudable considering the sophistication of the hardware and the lack of cooperation from Sony. This last point alone has convinced me to consider thoroughly all options before buying another Sony product.
My companion computer which lives in my pocket is a Samsung Galaxy Nexus. I’m happy with it for the moment, since it’s fast and useful. The display is large and comfortable to browse the web with. I just hope I don’t have to replace it too soon, since these costly gadgets tend to have a very short shelf life.
And what software?
I’ve used Ubuntu continuously since version 8.04 I think. The Debian package system works well, the system is stable, but more importantly, everything just works. No need to muck with drivers or config files for things I don’t care about. WiFi, external monitors, SD card and even the proprietary Memory Stick reader. My laptop runs Ubuntu 11.04 since the upgrade from 10.10 to 11.04 broke a few things I had to fix afterward, and I don’t want to go through trouble again.
However, when I do want a fine-tuned configuration, I turn over to the latest Arch Linux. My previous laptop couldn’t run the bloat of a full-featured Ubuntu, so I took time going through the ArchWiki and related fora in order to build a more lightweight system. Since then, I’ve grown fond of this distribution. The rolling releases mean I don’t need to upgrade the entire system to get a new major version of specific software. Once you get to know your way around, the configuration is not so bad for desktops; exotic peripherals can take some time to get working though. I’ve heard good things about Gentoo as well, and might try it on a spare computer when I find myself in a curious mood.
On top of this OS, my window manager of choice is Xmonad. I’ve used Gnome, Unity, and OpenBox before settling on Xmonad. The tiling paradigm aptly fits my work flow, and it liberates screen estate from useless widgets. Save for a thin status bar, the whole screen is devoted to applications. No longer do I have to move overlapping windows out of the way. All new windows get a share of the current workspace, or their own workspace. Xmonad is also deeply customizable, though you need to be able to parse Haskell.
Growing up with a computer, I never took a good look at the keyboard layout I was using, and just typed away until my fingers knew it by heart. It was only when my hands and wrists began to hurt after repeated long typing sessions that I finally questioned the merit of AZERTY. Even though it’s the de facto standard French layout, there are letters in the French alphabet you can’t type without the help of additional software, like œ, or É. In addition, pairs of brackets, braces and parentheses are never side by side, which is a pain when programming in most languages. There are plenty of alternative, carefully designed layouts you can choose from. I personally use Colemak, since it seemed easier to learn than Dvorak, while being equivalently comfortable for typing. Switching hampered my productivity for a few months, but was worth it in the long run.
Aside from a keyboard and its layout, a good text editor is also essential for typing greatness. This is why my most cherished piece of software is Emacs. Obviously, I edit all source code with it, and all my version control is done by using Git from Emacs with Magit. I also manage my research notes and draft articles with Org mode, read and write email with Gnus, navigate in projects with projectile, etags and ack… I could write a whole article to enumerate the ways I use Emacs and again another article to describe my Emacs configuration file.
A well-designed monospace font is a primordial part of a programmer’s toolbox. Again, there are many free, good-looking fonts suited for programming to choose from. Personally, I find the Ubuntu Mono font fantastic. Before its release, I used the DejaVu Sans Mono from Bitstream, but the Ubuntu monospace variant has more charm and perfect legibility.
My email setup is a tad convoluted, but for good reason. I use Gmail for my main email address. I use IMAP for all my email accounts since I want to read my emails from my phone, laptop or desktop machine. In addition, I want to regularly backup all mail in case any funny business arises in Google’s headquarters. Toward this end, I copy everything with OfflineIMAP to a local Dovecot server. Then I use the already-mentioned Gnus reader to compose and read emails. Nowadays I also read short emails or write quick answers from my phone.
Apart from Emacs, the application I launch everyday is a web browser. These days I’m back to Firefox (trunk builds). I have a battery of privacy extensions, and can sync my bookmarks, history and open tabs with other devices. I used Chrome for a while, but let it go due to its smaller offering of add-ons and its annoying habit of going to Google search instead of relying on browsing history. The speed difference between these two is getting narrower, and the developer tools are comparable.
The remaining programs deserving mention are: most of the GNU coreutils, Gnome terminal, Evince and other Gnome apps, and zsh.
What would be your dream setup?
My truly ideal setup would have the following characteristics:
- A large display I can read and write on for hours on end without straining my eyes,
- Talking, thinking and handwriting input,
- A way to conceive and develop programs without caring for minute details,
- No need to wade through a hundred pages of documentation to configure or fix something in the computer.
While this may be ideal, it might not be realistic, yet. Though we live in interesting times, and I do hope that someday I can tick a few or all of these items.