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. (VERIFY THAT THIS IS GOOD ENGLISH)

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 windows 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 of if 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.

The Importance of the First Hour Of The Day

Like many of you, I work in a fast-paced environment, with a small team, that demands your attention each and every hour of the workday (And sometimes outside of the workday as well).

Over my career, I noticed that I am most productive at 2 times of day – before 8AM, and after 9PM. Hint: One of these is helpful to a social life and your health, the other is not. I wondered why I wasn’t being more productive, until I read Time Management for System Administrators (Affiliate link) by Thomas Limoncelli.

The First Hour Of The Day

So I tried that. Simply by coming in as early as I could, after three weeks I have come to the conclusion that this is one of the simplest things one can do to improve the amount of work that they can do, interruption free.

I also recommend turning your phone off, or sending all but your boss to voicemail. While some members of your organization might be upset that you are not answering, most will be understanding, because you are actually doing your job. As long as you continue to provide high-quality work and service to your colleagues and clients, most will be perfectly fine with you ignoring them for the first hour or two of the day.

Just ensure that after you’ve accomplished your work, you get back to them promptly – an ignored customer (or colleague) is a very unhappy one, and can ruin the entire flow of work. Try it! Be as productive as you can be, without any of the drag. Your brain and your workload will thank you.

Now, I mentioned small teams specifically in the first paragraph. With larger organizations, it can sometimes be easier to deflect things that can wait – have them open a helpdesk ticket, have them talk to another developer, etc. For smaller teams (particularly teams of one!), this can be difficult. However, do not lose all hope! The solution is to train your users. I’ll be covering that topic more over the next few weeks, including some tactics that have worked, as well as the ones that haven’t.

Until next time,

Featured Image is by Kalyan Chakravarthy, available on Flickr under the Creative Commons Attribution 2.0 license.