Run in the cloud? You should develop there too
A number of years ago – and I’m frankly taken aback to discover this was a shocking six years ago – I tried hosting my main development machine in the cloud.
At the time, it didn’t work fantastically well, although looking back at that piece I think it was more that I was trying to do it with an iPad.
I’ve been using the same MacBook Pro for just over three years. It’s a very well spec’d machine – a high end i7, 16GB RAM, 512GB SSD, but a big part of the issue is that I need to use Visual Studio the majority of the time, meaning that I need to run Windows in a VM on a Mac. I can’t run a pure Windows laptop because I need to do iOS development too.
So when my MacBook is slow, or the fan runs, I end up thinking about this notional “tax” I pay – that to run a MacBook, I end up slowing down each and every operation that I run simply by having a virtual machine.
Part of it is that I like having a Mac. There’s a reason why Apple’s market cap looks like it does – and for me it’s a nice machine. Another part of it is that I don’t want to find that I’ve left my Mac at home when I need to do some iOS development. I need both environments with me all the time.
This is a standard development problem. Machines that are nice to use and carry around – and I’ll lump Surface into this as well as things like the non-Pro MacBook, which is gorgeous -- do not have the power to be development workstations. An Alienware laptop is not nice to carry around, either to look at it, or in terms of weight.
What developers need is powerful machines, such as one might find sitting in a rack in a datacentre. 64GBs of RAM, with dual SSD drives, and top of the range processors. Luckily, there is this thing called the internet that lets you access them from wherever you are.
For the past couple of months I’ve been doing this, using my MacBook only for local iOS development, and this time round it works really well. I’ve managed to find a host that for around £50/month can provide a 64GB, i7-6700 Quad-core Skylake processor and dual 500GB SSDs. (Plus about £20 a month for a Windows Server license.) Amortised over three years, that mostly makes sense. Plus of course you have to factor in the base cost of the hardware, but in theory you can then keep that machine for far longer.
There are some issues with the arrangement. The most obvious is bandwidth. It’s now difficult to do work itinerantly in a coffee shop or similar that has sketchy Wi-Fi. I’ve also had a couple of occasions where I’ve been forced to stop work because the otherwise-perfectly-fine Wi-Fi has failed.
The biggest wrinkle is that of backups. For some time now I’ve taken a snapshot of the whole machine (including the VM) to an external drive. I do this to limit the effect of any ransomware. This is more superstition and paranoia than anything else – I have cloud backups, and I can restore that back to a point-in-time before infection. But it gave me reassurance. I now can’t do this, or rather I can do that but it involves buying a solution for taking machine snapshots on Windows Server, and this pushes my superstition too far – my existing backup solution should be fine.
A second wrinkle is that it’s disconcerting to “trust” your source code in the cloud. This is a particularly odd superstition, seeing that most of us keep our source code in the cloud (GitHub, TFS, and smaller providers), and our actual data in the cloud (OneDrive, Google Drive, Dropbox, etc).
Keen-eyed readers will note that you flip this on its head and rent access to remote Macs for development work from company’s like MacinCloud.
For me, I like using a Mac, but the argument here is the same whichever way you flip it. For me, I don’t see the point in having local, powerful machines for doing development work, unless you are “strange” in that you cannot find yourself attached to a decent internet connection throughout the day, every day.