17th level Hacker

Fluid Information Architectures

I’ve been taking some time to try to step back a bit and consider the role of technology as a whole. Already a pretty popular topic, many of the currently popular bloggers mix politics, sociology, psychology, and technology into their own editorials. But I’m not taking quite that big of a step back. I’m thinking more in terms of the overall productivity that technology brings. I find it very easy to fall into the trap of striving for a technical hack for no reason. When I see a problem sometimes I just want to solve it. Probably a pretty healthy overall attitude, but like anything too much is bad thing. So I have a bunch of toys now: a good hosting plan for my main site so I can run what I want, a PDA with bluetooth and 802.11 interfaces, a new cell phone, a GPRS plan with no data limit. So it was time to take a deep breath and think about what that means instead of just running off in search of the next gadget.

I use my phone for the standard SMS usages, mostly coordination of meetings with people and notifications. I use it for work a decent amount, just to let someone know what the status is if IM isn’t an option. I also use it for small reminders to myself however. Over the last few months I’ve really started to “live out of my inbox”, which is one of the phrases used to describe the common condition of organizing work based on the email in your inbox. I could just take a note on my phone, or put a todo item in my PDA, but I’ve found it much more convenient to be able to insert that message right into the place where I know I’ll be able to manage it. The service I have provides a special number that I can send an SMS to, but which then delivers the message to an email address. Very convenient for when a quick idea strikes. Something I would like to do, but haven’t done yet, is setting up filters on my mail server to SMS me a message when someone from my address book sends me an email. This is something that the Blackberry devices do well. They deliver a message to the device asynchronously whenever there’s a new email. The mix I have doesn’t support that directly, but it’s something I can hack together.

My address book is becoming more and more important as well. For me, the “official” version is the one on my PDA. I would like to be able to sync that information around easily.. but even after all these years bluetooth doesn’t deliver in this regard. If I send my address book from my Clie to my T610 some fields end up in the wrong places, and there doesn’t appear to be a sync (just a send). So I’ll have to spend some time trying out a tool like MultiSync to see if I can get a sync between the devices working. I won’t bother complaining about the need to involve a third device in that transaction.

These are all little bits of detail however. What I would really like to be able to do is take an overall look at my practice of information management. I’ve described some pieces of what I would like to be a much more unified technique for moving my information around. One of the major issues standing in the way of a fluid set of interactions with my information is the lack of ad-hoc reconfiguration that software provides. We’ve been hearing for a long time that the world of user programmable systems is just around the corner. The ultimate vision is that computer software systems will consist of easily pluggable components which even the most casual user can assemble into the software that they want. No one has been able to deliver on that architecture however. One of the latest incarnations of the vision seems to be within enterprise computing, where a technology called web services and an associated paradigm called service oriented architecture are currently all the rage. However, I’m interested in the problem all the way at the other end of the scale of computing. How can services be provided in a generic way such that online and offline information can be blended, and that I can access the information that I want and perform the actions that I need to both from my PC and from my phone or PDA? It’s a tough question.

Some of the examples that I find the most appealing come from pretty much the same arena, they’re chat based services. The first are IRC bots. These are programs that connect to the IRC network and listen for commands sent to them using the same mechanisms that an IRC user would use to communicate with any other IRC user. The second are applications built on top of instant messaging frameworks, in particular Jabber. In both cases a user can interact with the program in the same way that they communicate with friends and colleagues. But that can’t be the only difference. If that were the only important characteristic then systems like Mailman would fall into the same bucket. I think it’s probably important that the chat based programs act very much like bridges into other systems. Many bots have functions such as performing lookups on websites, tracking when users last logged in and storing some profile information about them, keeping common definitions and references, and notifications about external events (one example of this would be pastebot).

Of course, they’re really just hacks to allow this external information to be accessed using chat as the medium. What should the medium of access be in the ideal system? How should the subsystems interface? What should the user see while assembling their components?