How I compute

After my recent article about ditching Google services made the top 10 on HackerNews, I was inundated with Emails asking me about what products I use in other areas of computing, how I manage my security and various online identities, what Linux distros I prefer, etc. This is an attempt to answer those questions in more detail than anyone could possibly want.

General computing

Operating systems

I run Linux exclusively with the exception of my photo editing box which runs Windows 8 (yes, I know, don’t start — if you have an alternative to Adobe Lightroom that’s not terrible I’d love to hear it).

On my workstation and work laptop I use Arch Linux and on my personal laptop and servers I run Debian. When I need a desktop environment I use XFCE or Openbox.

If I’m setting up a computer for someone else who doesn’t know or care what an operating system is, I install Fedora with Cinnamon. I also enable the non-free software repos and add RPM Fusion to the repos list. Most people don’t know or care what a file format is, or that it has patents on it; they just want to play MP3’s, and I respect that.

Configuration and setup

Most of my config files are stored in a repo on GitHub. The repo contains a makefile which soft-links the various config files in my home directory to their counterparts in the repo. If the files already exist it creates a new branch (based on the hostname of the machine) and performs an interactive merge between the two files. This lets me get up and running quickly on a new machine without having to reconfigure everything or familiarize myself with a vastly different environment.

File storage and backups

My home directory and most of my documents, media collection, photography, etc. are stored on a RAID 10 array comprised of 4 1TB disks. I eventually want to move these to a different (external) enclosure and rebuild the array as a ZFS pool or, alternatively, using Btrfs if it matures to the point where I feel comfortable deploying it.

I manage offsite backups using git-annex and Amazon Glacier. All offsite backups are placed on TrueCrypt volumes that require a keyfile (dd if=/dev/urandom of=truecrypt.keyfile bs=512k count=1) to open or, if I need to store small individual files, using PGP (GnuPG in particular). One day I’m going to get around to automating the whole procedure and setting up a cron job to do it for me, but for now my backups are mostly completed by hand.

Photo editing

I edit my photos on a Windows 8 box which is airgapped from the internet unless I’m uploading to my Flickr. Photos I’m currently editing are stored locally on a small 10,000 RPM disk (about half of which is partitioned for storage, the other half of which is for the Windows page file). Once I’m done editing, or when I want to make a backup, they’re copied over Samba to the storage array in my main workstation. For all photo editing I use Adobe Lightroom. If I need something more akin to Photoshop I use Gimp.

Email and chat

I read and respond to 90% of my email in Thunderbird with EnigMail for PGP support. For chat I run an XMPP server and use Pidgin with an OTR messaging plugin or a GPG plugin for a client. For group chat I use IRC which I connect to using Irssi.

Both Thunderbird and Pidgin drive me up the wall (the interface and configuration is terrible) and since I do most of my computing in a command line environment I’d like to find a CLI replacement for both. I haven’t found anything that meets all of my needs though (Good PGP/OTR support being the main ones). For XMPP I really like Profanity which imitates Irssi, but it’s not very feature complete.

Music

I play music and subscribe to podcasts with Rhythmbox or mplayer. When I’m on the go, I use VLC for Android. Most of my music is ripped from CD’s to Flac which I then wrap in an Ogg container. When I need a format that’s not lossless, I use Ogg/Vorbis where possible.

Collaboration

When I need to collaborate on something I use Git and host the repo on my server or on GitHub.

Command line

I do most of my work on the command line using the default terminal emulator in XFCE (xfce4-terminal), Bash for a shell, and tmux for a multiplexer. I tend to put my shell in Vi emulation mode as well. I like my Vim-esq keyboard shortcuts. Occasionally I get annoyed with xfce4-terminal and attempt to switch to UXTerm, but I eventually switch back. One day I’ll settle perhaps.

Typesetting, word processing, and engraving

I do all of my plaintext editing in Vim and use pathogen.vim to load extensions. Normally I have at least the following installed:

I also make a ton of changes to my .vimrc.

Typesetting

I do a lot of writing but don’t use an office suite. I normally draft documents by hand and then, when I want to digitize them, retype them in LaTeX or Markdown. Usually using the XeLaTeX engine and TeX Live. For typesetting poetry I use a LaTeX package I wrote called PoetryTeX (meant for creating anthologies) along with the Verse package. I also compose traditional contra and square dances on occasion for which I wrote the package ContraCard. For music engraving I use LilyPond from within LaTeX. A basic example of using lilypond-book to typeset LilyPond code from within LaTeX can be found on my GitHub.

Servers and web

Hosting and servers

I host this blog on a VPS provided by Linode [Disclaimer: Referral link]. My Linode serves pages using Nginx. When I need a database I use SQLite or PostgreSQL. I also use a lot of Redis when I need a distributed keyvalue store.

For running Ruby applications I use a Thin cluster shoved behind Nginx or HAProxy.

DNS and domain names

My domain registrar of choice is NameCheap [Disclaimer: Referral link].

For DNS I use Linode’s DNS manager with HE’s free DNS setup as a slave service. Dynamic DNS is performed for a few records via a cronjob that SSH’s into my main Linode which updates the record via the Linode API.

For DNS lookups I use Google Public DNS (notably absent from my recent post about ridding myself of Google services). I also use OpenDNS, though I don’t use it often because I don’t like their filtering or search nonsense which is on by default.

SSL

My current CA is StartSSL, though I prefer CACert for any site that doesn’t require that most browsers trust it out of the box. In the past I have also used a paid solution: RapidSSL, and been happy with their service.

Blogging and content management

For a blogging platform I use Jekyll, mostly paired with Octopress and the tīˈpō theme (formerly I used Sierra Whisky). When I need a CMS I use RadiantCMS.

Conclusion

Thanks for reading; you can head over to HackerNews to discuss this post, or drop me a line if you think of something I’ve left out.