Computing happiness, apparently it is a thing now. As I write this, I’m sitting at home, Hurricane Sandy is bellowing outside my window and rain is slowly trickling into my basement. I live on borrowed time, in existential dread – any minute now mother nature may cut the power lines and thus amputate the better half of my brain. Once that happens I’m relegated to think sluggishly over 3G until the juice in the battery runs out, and from there out I enter the slow moving dominion of flesh. Can I finish this post before that happens? We shall see.
So while I’m anticipating digital lobotomy to strike me any minute now, lets talk about something positive. Let’s talk about computing happiness as inspired by this list put together by Shrutarshi Basu. There is a lot of good stuff there, but I think I can do a little better than this.
Here is my list of things you should and should not do to maximize your happiness and minimize your frustration:
Invest In Hardware
One day hardware will be a thing of the past, and we will be able to do do all our computing directly with our minds. For the time being however we are tethered to physical artifacts that act as conduits between us and the digital spheres. These is absolutely no reason why you should spend most of your day banging away on a $5 keyboard. Get yourself a nice ergonomic keyboard, large luxury mouse and a big external monitor or two (seriously, you haven’t lived until you have worked in a dual monitor environment). A nice comfortable desk chair is also a worthwhile expense.
Have a Local and Remote Backup
Budget away a little bit of money for a robust off-site backup plan but make sure you are mirroring the backups locally. Hard drives fail. It is not a question of if, it is a question of when. If you have never experienced a catastrophic irreversible data loss, you can consider yourself a one lucky motherfucker. Also, you are overdue for some grief inducing, spectacular hard drive death. Prepare yourself. It is the most important thing you will ever do so don’t fuck it up.
If you spent more than 15 minutes making it, it needs to be under version control
If your project is not under version control, you are going to have a bad time. Oh, and Mac users – wipe those grins of your faces. This applies to you too. Yea, you might have system wide version control baked into the OS, but that does not the same. You should really use a remote repository such as Github or BitBucket. Why? See the next point.
Sync Your Machines
If you use multiple computing devices, make sure they sync up over the internet. If most of your code and creative work lives on GitHub it is fairly trivial to sync it between all the computers you own. For everything else there is Dropbox and Google Drive. Your work should flow freely between all the machines you own. This way you can start coding something on your desktop, then save it, grab your laptop and finish it on the go. You are not tied to a single machine.
Same goes for configuration. Put your vim config under source version control. Put your Firefox profile folder in Dropbox. Have these things sync and flow between your machines so that your work-environment is fairly consistent regardless of physical machine or OS you are using.
Use Customizable Power Tools
Let’s face it, most of us “edit text” for living and for fun. Said text may be code, may be fiction or journalistic prose. But it is text. Therefore stands to reason to invest in a good text editor, for the same reason why you want to invest in a nice keyboard and mouse. I’m not going to tell you what editor to use, because it really depends on your needs. Whichever one you use, make sure it is both powerful and customizable. In my personal opinion best editors are the ones that are fully extensible and programmable (like Emacs and Vim).
Avoid WYSIWYG at all costs
I said it before, and I’ll say it again: WYSIWYG is a blatant lie and all word processors suck. Nothing good can come out of working in Microsoft word – it is a path leading straight towards tears, despair and frustration. Unless you absolutely need specific Word features, saving your documents in error prone, proprietary binary format is counter productive. Use plain text files and if you need “rich text”, Markdown is by far the superior option.
Use a Password Manager
Get a password manager such as 1Password or LastPass and use long randomly generated passwords for everything. This is a bit of a controversial stance, but hear me out. Yes, putting all your proverbial eggs (password) in one basket is risky. But, chances are it is easier to protect one super-important password, than a dozen of individual ones. You can make your skeleton key password long, secure and hard to guess and chances are you will remember it because it is the only one.
If you are paranoid – here is the trick – keep the password to your primary email off that key-chain. This way even if you somehow your password manager gets compromised, you can still get all your accounts back via the password restore feature, as long as your email remains uncompromisable.
Don’t become a slave to a single OS
There are many operating systems out there and they all have their strong points. Use them as appropriate. Linux and Unix are great for servers and server side development. OSX is a Unix machine with a nice UI, but also great tool for home computing. It integrates nicely with all the other devices in the Apple ecosystem via the iCloud. Windows is… Windows is good for gaming.
Honestly you should use all of them. Once you rid yourself of the single OS mentality you will learn to think about your work in terms of general computing problems. It opens up your mind and makes you more flexible.
So that’s my list. I would make it a 10 point list, but I’m getting hurricaned so I will be wrapping it up. What are your rules for computing happiness? What would you add or remove from this list?