Free yourself...

The network is the computer. It was a visionary statement, but one that is yet to really play out.

If the network is the computer, then the computer has been a slow and unreliable device that can only be used inside metropolitan areas. It wasn't that long ago that dial up was the standard way to connect to the internet, and even now high speed mobile internet access is spotty at best. You can't even expect to get a reasonable connections at major inner city hotels. I remember spending 10 minutes trying to establish a VPN and download my emails from a business oriented hotel.

However, things are getting better. 4G is finally offering the kind of bandwidth and latency that you need to run real time network applications. ADSL and cable internet access is now common place, and rollouts of high speed fibre networks are slowly spreading across various countries (unless you happen to live in South Korea, which has led the way for high speed internet access).

The incremental improvements in internet access have been matched by an ever expanding variety of computing devices. It is not uncommon for a household to have a Windows or Mac desktop, an iPad and an Android phone. These devices still tend to fulfill different roles, but what if the network was the computer, and these devices simply became different ways to access the same information?

Of course, with browser based email clients and productivity suites, this is already possible to some extent. But web based apps still have a long way to go to match the functionality and compatibility of the desktop applications they seek to replace.

The holy grail for me has been to have a desktop that I can access anywhere and from any device. In practical terms this means having a remote desktop accessible from a browser.

My requirements were simple. First, the whole setup had to cost less that $500 a year. Since this would be a work expense that could be claimed on tax, this would amount to about $1 per day, which was a comfortable price point. Second, I needed enough computing resources to do my daily work. This meant at least 4GB of memory and enough CPU cycles to run around half a dozen applications simultaneously. Finally, I needed to be able to easily access the desktop through a browser using standard HTML5 technologies.

Surprisingly few VPS (Virtual Private Server) providers could provide the resources I was looking for with the budget I had allowed. I could have maybe come in under budget with Amazon EC2, as long as I shut everything down at the end of the day and was willing to use their spot pricing system. But that seems like a lot of work. Most other VPS providers would charge at least $100 a month for a system with more than 2GB, which seems ridiculous to me given how cheap RAM is these days.

After much frustration I finally found A2 Hosting. They provided Linux based VPS systems with 4GB of memory for just under $500 a year (as long as you use their coupon to get 5% off).

Getting the VPS setup was a breeze. It was pretty much point and click as far as getting the Centos 6 OS up and running, and from there you have root access via SSH.

I installed the Gnome desktop, and then installed VNC using the instructions provided on the Centos web site. Once that was running, I installed NoVNC and set it up as a service using supervisord. And that was it - a fully fledged Linux desktop that was accessible via a web browser.

Performance is quite good. The tasks I run on a daily basis are at least as fast as they were on my Lenovo T500 laptop, if not slightly faster. I could have used another 2GB of memory, but unfortunately 4GB is the limit on VPS services provided by A2.

Visually there is some lag when accessing the desktop through VNC. You can drop the color depth down to increase the responsiveness over slow connections, but there is a limit to what you can do to reduce latency on a server on the other side of the planet.

I also had to hack up a small Javascript bookmarklet to remove the HTML elements from the standard NoVNC login page in order to get true full screen desktop experience (the code is included below). NoVNC is designed to work with custom pages though, so if you are really keen you can just make your own NoVNC portal.

javascript:(function(){var overflow="hidden"; var display="none"; document.body.style.overflow = overflow; var hideElements = ["noVNC-control-bar", "noVNC_status_bar", "noVNC_screen_pad", "noVNC_logo"]; for (i = 0; i < hideElements.length; ++i) document.getElementById(hideElements[i]).style.display = display;})()

Unfortunately NoVNC doesn't work very well on Android devices. I had to install a virtual keyboard in Gnome to get any access to the system, since the native Android keyboard displayed by the NoVNC portal didn't seem to work.

Thankfully it is possible to connect to the remote desktop using a standard VNC client, and Android / iOS have plenty of VNC clients available. However, because A2 uses a non-standard SSH port, you will need some workaround to tunnel your VNC connection over SSH. The following command will establish a VNC connection to a non-standard SSH port (1234 in this example).

VNC_VIA_CMD='/usr/bin/ssh -p 1234 -f -L "$L":"$H":"$R" "$G" sleep 20' vncviewer -via user@123.123.123.123 localhost:2
On Android I used ConnectBot to establish a connect and forward port 5902, which allowed me to connect to the remote desktop with RealVNC (which is like $7 from the Play Store).

Overall I'd consider the experiment to be a success. I can log into my desktop from pretty much any device and pick up where I left off. It sounds simple, but being able to do some work at home on your desktop and then pick up exactly where you left off when you get into work and fire up your laptop is a huge time saver. It has also allowed me to squeeze some more life out of an old desktop PC, because it no longer does anything other than open a web browser or VNC client.

Looking forward, I can see that prices for VPS services will only come down while performance goes up. There is no need to worry about upgrading my own hardware to keep pace, and I have the piece of mind that the hardware is being maintained by dedicated professionals.

So if you are looking to rid yourself of the bond that an OS configuration on a specific device has over you, check out the A2 VPS services. If you are willing to work around a slightly laggy interface (and even that might not be an issue if you live closer to the A2 installation than I do), you can free yourself from the burden of being tied to a specific computer.

UPDATE
I found that MyHosting offers an 8GB Linux VPS for under $500 a year (as long as you use a discount code). I could really have used that extra 4GB... Maybe next year I will swap.
Post a Comment

Popular posts from this blog

Fixing OpenVPN "Authenticate/Decrypt packet error: cipher final failed"

MinHash for dummies

Exporting from MySQL to H2