Rough sketch of how I would like to use my laptop and my (more powerful) office computer (let's call it the "station"). For the record, the station has two monitors, as of this writing.
When I say data is "in" a computer, I mean I'm able to use this data when I have this computer and no other, and I'm unable to use this data when I don't have this computer.
"heavy" data is in the station; thinking in terms of my work today, that would be the few-hundred-megabytes-each Zope instances.
personal data is in the laptop, except the data that is necessary to run "always-on" things on the station.
more specifically, personal data is in my USB2 external HD. If I unplug it, the laptop should have a more or less minimal system, which I can fearlessly let friends use. If I plug it in, my stuff magically "pops in" on the right places.
when laptop and station are together:
- the laptop's input devices control both. (I don't care much right now about what happens with the station's input devices, although Nebraska style dual-pointer would be cool.)
- "applications" that were already "active" in the laptop can make use of the station's superior RAM and CPU. (Although I want to get rid of the idea of "application" eventualy, but let's leave that for a future post.)
- I can move UIs ("windows", in terms of today) between the three screens. If the UI paradigm is window-based, then no window tries to display half in each screen (or, even worse, one piece in each of them).
if the laptop goes away, the station automatically locks input and output devices. I can still manually unlock it, in case I ever need to use it without the laptop.
Alternative: locking input devices is done on a per-device-set basis; output locks if there is no unlocked input set. So I would leave the station's device set always locked, and output would lock automatically when the laptop's input disappears.
an UI on the station (or laptop) can interact with traffic on IRC. The machine that is actually connected to IRC is my other PC at home.
I currently do this using irssi-text, screen, and ssh. But the UI of irssi is clumsy, and this setup wastes a lot of bandwidth.
Bonus points if I can display (and therefore waste bandwidth with) only a subset of the channels I'm actually seeing in my monitor at home.
Bonus points if this is the same UI as (or at least consistent with) my IM.
the station is permanently connected to the IM accounts I use for work (lalo at exoweb dot net on msn and jabber, as of this writing)
Bonus points if it automatically goes "away" when the output devices lock.
I'd like to play mp3s that are on the USB2 drive (connected to the laptop), using the best CPU available (station if station is there, laptop otherwise), displaying the control user interface on the laptop, having a choice of output trough the laptop's headset jack or the station's speakers (again, if the station is there).
ok, I don't really want to play stuff at the station's speakers at work, but I want to do this at home, and I didn't want to make the example more complex than necessary by introducing a third machine.
if I'm somewhere else (with the laptop and connectivity) and I need data that is in the station, I can get to it. The system is smart enough to do IO-heavy processing on the machine where the data is stored, so what actually gets transmitted over the wire is as little as possible.
if someone else has a similar setup with the same system, and I gave them my permission (and conceivably a hard disk quota), they can use the station in the same way (with their own laptops) when I'm not using it.
Bonus points: we can turn all the stations in the office into a cluster of identical instances of this setup. This would raise a few considerations:
- we probably don't want to duplicate data too much between them, but some duplication might be good
- it doesn't matter to me "where" my IM connection is actually "running" in this cluster; in fact, it may even be thrown around between them and I wouldn't notice. But if I link the laptop to one of them, then the IM thingie will jump to that one.