Working In The Cloud: Act One

Working In The Cloud from a SurfaceIn 2011 (four years ago!), there was a very interesting article published by Mark O’Connor about swapping his MacBook for an iPad+Linode. I envy Mark, so I decided to try and emulate his setup as best I could.

Using a Linode 4096 at $40/month, I have the luxury of practically (4TB) unlimited bandwidth, guaranteed disk IO, as well as 4 cores and 4GB of RAM.

It has also forced me to simplify everything that I do, and streamline my toolbox. I used to use the following stack (still do for some projects):

  • VMWare Workstation/Fusion
  • Sublime Text as my editor over NFS/SMB
  • Github for Mac/Windows
  • Another VM for the browser I am testing in
  • Cygwin/PuTTY open for the dev VM
  • A bajillion and one tabs, windows and misc things open that are all screaming for my personal, undivided attention.

Now, it’s more like this:

  • Cygwin, SSHed into devbox (This sets up port forwarding and a bunch of other goodies)
  • Vim in a tmux pane (On window 1, maybe window 2)
  • Browser I’m testing, if necessary via a VM running on my local system

And that’s about it. I can do work from any machine I sit in front of, regardless whether it is an iPad (the iPad mini is a rather terrible platform), a friends Chromebook (Maybe that’s next), my Surface, my desktop, my phone (Don’t try do to real work with your phone), or any other machine with an internet connection.

Over the last 9 months since I started doing things this way (I started in January 2015), I have discovered that there is something strangely zen-like about knowing that if the physical machine in front of you gets coffee dumped on it (or otherwise comes to an untimely end), your data isn’t there – it’s in the cloud!

This requires backups of your server, which will be a topic for discussion at a later date (short version: Give Tarsnap a try).

This setup is not for you if…

  • You are a fan of a GUI editor like Sublime Text, JetBrains or Netbeans/Eclipse.
  • Mobile apps (yay phones)
  • You require a mix of operating systems for your systems (e.g. there is a Windows service, as well as a Linux one)

On the other hand, if you’re developing web applications, I highly recommend this. In the time since I started, I have worked to slim down our applications assets (CSS/JavaScript) as much as possible, and almost halved our asset load time. When you’re traveling across the internet to get your application dependencies, every little bit of performance that you can improve upon counts even more – this has a nice side bonus of directly impacting the customer (Because lets be honest, what customer doesn’t like fast software?).

I hope to write more on this setup as I count down to one year of working full-time on a remote server. I can definitely say that it has been fun.