- Who are you, and what do you do?
I’m Dale Hamel, a recent graduate from the University of Manitoba’s Computer Science program. I’ve worked at R.I.M. on projects like WebKit, and for a few smaller startups. I am transitioning to a new company called “Shopify,” an Ottawa, Canada-based e-commerce website startup with a Google-esque feel to it.
My specialty is probably best defined as an operations developer, doing system administration, higher level systems architecture, as well as custom Linux builds for tailored applications (web servers, LDAP servers/clients, grid compute nodes, RAID servers, etc., depending on what’s needed for the job). I have built a system called “ImageForge” for customizing Amazon Machine Images, though it could be used on bare-metal servers as well. Most of the work I do is with cloud computing, either in high availability/uptime environments, or in high CPU/memory scientific computing number-crunching applications.
- Why do you use Linux?
I started off using Linux out of curiosity, after the 12th time or so of re-imaging my Windows XP box due to corruption or viruses. At first I couldn’t get anything working (Fedora Core 4, back when I was in grade 9 or so), and actually I just gave up.
A few years later, I tried out Ubuntu on my Windows Vista laptop, but couldn’t get wireless networking working (a common problem at the time), and had to give up again. It wasn’t until university that I actually got things set up properly. I put Ubuntu and XBMC on an old computer I had and used it for watching TV shows, etc, as I had previously been running XBMC on a modded legacy Xbox, but it was no longer supported on that platform.
I learned everything I needed to on the fly, to keep my XBMC box running properly. I eventually realized that I liked tinkering with Linux so much that I wanted to make a career out of it. I gave up on pre-med, and went fully into Computer Science at University. I found I enjoyed the freedom of the problem solving process to the rigidity and formulaic nature of the natural sciences.
Linux is amazing for hobby projects, especially with the rise of cheap platforms like the Raspberry Pi, for which I develop and maintain a custom operating system called RasPlex, that acts as a cheap media front-end, and is very much the modern incarnation of my original XBMC box that got me into Linux in the first place. It’s something of my Magnum Opus, and I see myself always working to improve the project in some form, as multimedia is what got me into Linux in the first place.
I’ve used the tricks and tools I’ve learned hacking on such projects in my professional life, and basically use nothing but Linux anymore. I’ll only boot into another OS to port an application to it, as I vastly prefer my customized Linux-based setup. Also, I don’t game much, but I am really excited for the changes being brought about my Valve to this end.
- What distribution do you run on your main desktop/laptop?
I use a customized version of Funtoo, a Gentoo derivative that is currently maintained by Gentoo’s creator and BDFL, Daniel Robbins. I find that it is better than stock Gentoo for a number of reasons, but one of my favorite features is the Git-backed portage tree.
- What desktop environment do you use and why do you use it?
I don’t really use any major desktop environment that would be easily recognized; like everything else it’s quite customized.
For a window manager, I use “Notion,” a Lua-scriptable tiling window manager, running Chromium for a web browser, terminator for a terminal emulator, and vim for a text editor. I also use the Programmer Dvorak keyboard layout.
- What one piece of software do you depend upon with this distribution? Why is it so important?
Portage. It is hands down the best package manager available. What is a Linux distribution without a good package manager? Nothing. The package manager is fundamentally what makes or breaks a distro. Since I do a lot of customization, I need a flexible package manager. This cuts out every binary-based distro immediately. Aptitude, yum, and pacman provide you with “snapshots” of the distro, and I think this is a fundamental flaw, as it limits compatibility with older libraries, doesn’t allow multiple versions of a library to peacefully coexist (without some sort of odd, inelegant hackery).
For instance, say you have a package like Nginx. You want to compile in a custom module. With Red Hat or Debian you are basically screwed — you have to search through documentation, find a blog post, and then you completely abandon the package manager (unless you go through the process of bundling it yourself – not an easy task on these distros). With Portage, you just modify the existing ebuild to include support for the module you want, or use an environment variable to append your module to the compile path. Best of all, everything is still tracked by the package manager, so you can keep track of what was installed where!
With modern hardware, the compile overhead really isn’t a big deal at all. Most packages (with exceptions like Chrome or Firefox, for which there are binaries provided) compile very fast. As a rolling-release system, there’s never any need to completely wipe and replace your installation. In fact, I’ve been continuously upgrading and maintaining my original Gentoo install (though I will probably be replacing it with a Funtoo image soon).
- What kind of hardware do you run this setup on?
On my home server, which is a NaS raid with a Plex Media Server running on it for transcoding content, I run an Intel i5 with 4GB RAM. It’s nothing special — I prefer to buy mid-range parts because I’m cheap, and this rig was actually second-hand. I’ve had no need to upgrade it, as I don’t really game; it’s main purpose is as a RAID, but I also have distcc set up on it, and a package server. All of my Funtoo computers work together to compile packages via distcc, and store the binaries in this central location.
- Will you share a screenshot of your desktop?
Yes, here is a session with some compiling and a wifi manager. The widgets at the bottom are custom lua scripts for status things I like to watch.