Skip to main content

Home computing for $5/month

As a programming father you need to be concerned about your budget. This means resisting the temptation to buy the most amazing hardware, and not running power-hungry CPUs all day.

Ok, I lie - I'm not really that concerned about our budget, and I could afford to buy a new computer. I must admit to reading a pamphlet for our upcoming council election... and part of the reason I can afford a new computer is that I enjoy cost optimisation (ok, stinginess). But what's even more fun is that the best way to be stingy is to use three different gadgets instead of just one.

Gadget 1 - For Consuming the Internet -> Cheap Chromebook

For this, I want a portable computer that I primarily use to consume content; if I want to do any creation more complex than writing or spreadsheets, I'm happy to use it to connect to another device (ssh, vnc, etc.).

So, portable, low power, high battery life, keyboard:
An Acer Chromebook bought a couple of years ago (new) for $US100. Admittedly on special, but you should be able to find a decent Chromebook under $AUD200 or $US150 if you look around.
Why a Chromebook? Because all you really need for this is a browser, and they're designed to run one consistently in a low resource environment, generally 'just work', and have hardware video acceleration of HTML5 in the browser (sadly unlike Linux).

Cost:
chromebook price / 48 months + 5W * 3 hours/day ~= $3 / month

Gadget 2 - For Actual Computing -> Google Cloud

Here I want access to the most computational power. But it would probably be a little wasteful - in cost, space, and marriage related friction - if I were to build a high-powered cluster at home. Happily, the modern world has a solution to this in the cloud:
Google Cloud Preemptible VMs, now available in Sydney - Google has been rapidly expanding the available regions.
Why are these great? Well, they're effectively just another computer, so you can run everything you want (and ssh/mosh/vnc/... in), Google make it trivial to have a boot drive that is used repeatedly (unlike AWS spot instances, which also don't offer spot pricing on t2s), and you can provision as much capacity as you want whenever you start work. Moreover, they're insanely cheap and billed in 10 minute blocks, so even if you do manage to burn through the generous amount of free credit Google's doling out - I've received over $US340 - as long as you're only using them occasionally the cost will hardly register. Finally, the 24 hour limit is actually useful, because if you forget to shut it down when you finish...

Some costs in Sydney, which is one of the most expensive locations, and sadly where you can't take advantage of the free f1-micro. All pricing in US cents:
  • f1-micro - 0.46c/hour. I find this is good enough for simple CLI work; if you only need occasional compilation bursts, you'll probably get more single core performance than you would out of a laptop.
  • n1-standard-4 - 5.397c/hour (10 times the price, but still, 5c?). 4 cores, 15gb of RAM. Given that most decent laptops are still stuck on 2 cores, and you'll have to pay through the nose to get more than 8gb on something half-portable, this is a pretty good price.

On top of that there are going to be disk charges. You'll almost certainly want to keep a 10gb boot drive around permanently (54c/month) - though for extra data you can save money with snapshots, Google Cloud Storage, or Google Drive) - and you are going to have to cough up for network egress (~20c/gb), but most traffic is going to be ingress (free). Still, say I did the following in a month, which is actually vastly more than I'm using at the moment:
  • 10 * 2 hour sessions on an f1-micro = 9.2c
  • 2 * 2 hour sessions on an n1-standard-4 = 21.58c
  • 10gb boot drive for the month = 54c
  • 500mb of network egress = 9.5c
  • 4 hours of 375gb ephemeral local SSD storage (non-network, fast) = 17.7c

I did probably miss some minor charge, but still... cheaper and more reliable than running your own desktop for occasional use, perhaps?

Cost:
$1.12 / month

Gadget 3 - A Home Server -> 'Broken' Android Phone

That's all great, but sometimes you just want a computer always running at home. My requirements of this computer are fairly low - run a cron job or two, and maybe serve some MP3s or web pages occasionally. So obviously it shouldn't use much power, and there's no reason for it to take up much space.
An old Android phone - I grabbed my partner's old (broken screen) Xperia V out of the drawer, and installed Linux Deploy (if you don't have root access, you can use GNURoot Debian instead).
If you don't have one, someone around you probably will, and suddenly you've got an incredibly low power linux machine with built-in networking and battery backup - and even a display if you want to get really fancy with status messages! Better than a Raspberry Pi, no?

Cost (power only):
one month of 1W usage ~= $0.20 / month

In short...

That's less than $5/month for both power and purchase - assuming that you can acquire an old Android phone for $0. Even if you can't, in Australia at least you can probably pick up a new locked prepaid phone with 1gb of RAM for under $AUD50 (or less on sale), though you may need to add a MicroSD card for more storage.



As a side note, I'm not joking about the rough equivalency between environmental consciousness and stinginess. In most circumstances, what costs the least is what is most efficient, and what is most efficient has the least impact on the environment (and you transfer less purchasing power to others who might use it to buy an F250). This is only not true when 'negative externalities' aren't properly addressed - i.e. when we lack a carbon tax...

Comments

  1. Great post. Is there a compromise in usability and responsiveness? The nice thing about having a dedicated pc is that everything is running natively right in front of you. Have you ever run into issues with latency because every command is going over the internet?

    ReplyDelete
    Replies
    1. Thanks!

      Personally, I'm happy enough running everything over ssh at the moment, and the latency is not a problem because I'm right near a data centre. VNC would be a little more annoying, and if you're further away from a data centre you'd probably want mosh for ssh. It's really something worth trying for yourself to see if you find the latency penalty acceptable.

      Delete
  2. Interesting. But that does not include the machine that you use for SSH'ing the cloud instances (unless it is the chromebook). Also very developer-oriented -- I'd be hard-pressed running Ableton Live and connecting audio hardware and a MIDI keyboard on a cloud instance

    ReplyDelete
    Replies
    1. Yes, I do use my Chromebook. And you're right, it doesn't work if you need to attach interesting devices (I actually have an old HP 2510p that I used for flashing that Xperia V) or for gaming (which I just don't do anymore - old age...).

      Delete
  3. Thanks for sharing your setup. I was an evangelist of this approach for a while (a chrome book and a $5-10/mo digital ocean VM/droplet). I even installed [cloud9](https://github.com/c9/core) to have an in-browser IDE. It was nice that I could pick up my work from any computer. But then I started playing with atom and VSCode and things seemed faster and easier (relative to the in-browser IDE they are). I switched to vim though, so perhaps I could go back.

    Only thing is, you can't work at all without an internet connection, right? Maybe that's not a big deal for some folks (including me).

    ReplyDelete
    Replies
    1. Yes, it can definitely be more frustrating depending on the kind of work you're doing. I just switched from the cloud to a laptop at work in part because I wanted to mess around with different IDEs more easily. I've also tried using Cloud9, but it didn't grab me. Not sure why.

      And yes, without an internet connection I've got very little (except my home 'server'), but that hasn't been an issue for me so far: our home internet is quite reliable, and I very rarely use my laptop anywhere else.

      Delete
  4. Thanks! That's interesting post and I learned that Linux (Debian) on mobile devices is pretty easy to setup. Will test. :-)

    But you probably forgot to include WiFi router in your calculations and you rely heavily on internet access.

    I'd also consider using some cheap ARM board (Raspberry Pi Zero, Orange Pi Zero) instead of mobile phone. Especially when we need to buy a device. Easier to connect to other devices, can handle HDD for local storage, runs native Linux.

    ReplyDelete
    Replies
    1. Yes, I glossed over the internet thing. That's a 'family' rather than personal expense, so it does fall in a different bucket, at least in my mind :)

      Depending on the phone, you can connect an OTG usb hub and power it at the same time - e.g. https://www.amazon.com/Aiposen-Adapter-Powered-Charging-Connector/dp/B01B5XY8EE

      But indeed, it would be nicer to run something like an Orange Pi Zero if you don't care about battery backup/screen, as there's a little more chance of getting a recent kernel... I find the original Raspberry Pi a little too slow though (try running the AWS CLI!).

      Delete
  5. Thanks for sharing, really interesting. If you wouldn't mind, how does your setup for longer storage of family photos and such look like?

    ReplyDelete
    Replies
    1. I'm one of those strange people that barely takes photos (I've only recently had a device capable of taking half-decent photos anyway) and doesn't keep them. I have my wedding photos stored in Google Photos, and that's it.

      Having said that, my wife _does_ take photos, and she has a 'real' computer - though she stores her photos in the cloud - so I'm not describing the whole setup for the household.

      Delete
  6. By the way, you can use Google Cloud Shell (cloud.google.com/shell) as a free dev machine. No need to pay for the VM at all. This is in addition to the free f1-micro.

    ReplyDelete

Post a Comment