Or maybe it's that Sun had it right, that The Network Is The Computer, and I want an imaginary network.
I do most of my work on a laptop. It's a fairly recent model (MacBook Pro), with a modern CPU (2.5GHz), fast hard drive (7200RPM), and has what would have been not too long ago an incredible amount of memory (4GB).
It just isn't enough, though. I easily exceed what the machine can do with my day-to-day work, often waiting around while it pages, and much longer when I actually have it doing Real Work. On an average day I have the following applications running at the same time:
- a web browser (Firefox)
- a WYSIWYG document editor (OpenOffice)
- 1 or 2 IDEs (Eclipse)
- 2 Java-based Application Servers (JBoss, Tomcat)
- a relational database (MySQL)
- an instant messaging application (Skype)
There simply isn't a laptop that can keep up with what I want to do. As I see it there are only a few categories of solutions: (a) run less software, (b) distribute the software to multiple machines, or (c) get a better machine.
I'm inclined to consider (c) only because its an interesting thought experiment in the world where the latest laptops aren't much better. Here's a survey of what I could come up with.
- Get a powerful desktop at each location I work from.
Pros:- Fast
Cons:- Software licensing. I don't want to buy software all over again for each machine.
- Synchronization. There are lots of ways to sync, from network home directories on a server to software like Windows Live Mesh, dropbox, MobileMe, etc. I'm not sure using any of these is realistic.
- Multiple powerful desktops are expensive
- Fast
- Run all software on a powerful central server. My laptop, and any other machine, is used simply as a terminal to the server.
Pros:- Synchronization is not an issue, as all work is done on the central server
Cons:- Requires violations of the first three fallacies of distributed computing
- Remote desktop software doesn't usually work all that well. (VNC - slow, limited capabilities; X - sssslllllooooowwww; RDC - not an option for Mac OS X)
- Server can't access to internal network resources without VPN or advanced remote desktop solutions (like Window's RDC)
- A portable disk drive, with eSATA or Firewire 800 interfaces, that is carried around and booted from on powerful desktops at each location.
Pros:- Solves the synchronization issue of option #1
Cons:- All machines must be close -- or identical -- in hardware
- A single drive is vulnerable (but encryption and backups can solve that)
- Requires option #1 - fast desktops at each location - and therefore expensive.
- Solves the synchronization issue of option #1
- A portable disk drive containing a virtual machine. Similar to the above option, but the disk contains a virtual machine image. The VM is then run on a desktop at each location and the host desktop contains no other software than the virtualization platform.
Pros:- No common hardware requirement as was required by option #3
- Solves the synchronization issue of option #1
Cons:- Performance hit due virtualization
- Single drive is vulnerable (but encryption and backups can solve that)
- Requires #2 - fast desktops at each location - and therefore expensive.
- No common hardware requirement as was required by option #3
- A luggable. Since I run Mac OS X, this would probably have to be a Mac Pro taken apart and refitted for a small case.
Pros:- Least expensive of all options
Cons:- Likely heavy and awkward to carry. Keeping some items, like the power supply, external (and duplicated) could help with that.
- No hope of warranty service.
- Least expensive of all options
It doesn't seem like any of these options are very practical. Maybe the real solution is to figure out how to run less software.
