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?
While I agree with point 8 in theory, in practice the only gaming I do is nethack, and I am a poor student with better things to spend my money on than Apple products.
Maybe I should be using Debian and BSD to fulfil this requirement…
Hello from consoleland! I agree with most of what you say but some things I disagree with:
1. I tried two monitor setup but I found it uncomfortable to use and likewise I got “new” 20″ screen to replace my 15″ one but after few months of use I sold 20″ one to my friend and went back to 15″ one.
4. Consistent work-environment would be a good idea if my computer ran same OS or even somewhat compatible OSs. I use *nix (linux, netbsd, minix 1.5, rhapsody), plan9 (9front), dos (freedos, ms-dos 6), amiga os (Workbench 1.3, aros), beos (5 PE, haiku) and mac os (system 6, system 7) and there are basicaly no programs that will run on all of those and hugely varying drive sizes (40MB-60GB) make syncin even just code a pain in the ass. Great idea if you have more normal systems but not usable for all purposes.
7. Good idea but only for your less important passwords.
I do a similar thing for my passwords with a gpg-protected file. I also realize it isn’t the wisest thing in the world to do, but it (server) resides somewhere (ostensibly) safe, and bad guys would have to breach ssh, and my gpg password to get at them.
The only problem is that if I am away from ssh I am away from my passwords, so I haven’t come up with a mobile solution to this problem.
@ joek:
Well, #8 was targeted more at the Windows users who rarely venture outside their ecosystem. Most Linux users have some Windows experience already (often that’s what they have been using before they got into Linux) and often hop between distros every once in a while.
@ JuEeHa:
Wow, really? What were you running on the dual screen rig? I run Kubuntu and it works well for the most part (the nVidia drivers can be finicky sometimes). I guess the experience really depends on the setup.
Also, you are the first person I heard about who traded a 20″ monitor for 15″. I have a 22″ screen at home and 24″ one at work, and whenever I’m working on my 13″ laptop it feels incredibly cramped. I cannot imagine permanently downgrading my large screens.
@ Stephen McQuay:
Well, you never have to be away from ssh. I have iSSH on my iPhone for that very reason.
4)
Who uses Firefox any more?
Not to speak of vim.
@ Peter:
Well… Me. :)
Thanks for writing this list. I definitely agree with the backup part (and it reminds me that my backups are terribly out of date except for what’s in Git repos). I think that using multiple monitors effectively requires a good window manager. As for WYSIWYG, I’m glad to have discovered Latex and that I don’t have to touch Microsoft Word. That being said, I do hold out hope that someone will do WYSIWYG right someday. Also for presentations I use Keynote because I like to be able to just drag and reorder things and think fully visually.