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:
- Syntastic
- Solarized
- Fugitive.vim
- Git Gutter
- Improved Markdown
- Improved JavaScript
- tbone.vim
- vim-systemd (Arch)
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.