User Interfaces for Event Streams

Reading Phil Gyford's post about the reasoning behind his Todays Guardian app reminded me of an old interest of mine - the design of user interfaces that show people streams of events.

I hate the fact that I have several systems that have reason to throw notifications at me:

  1. Incoming email (with multiple accounts)
  2. Twitter (with multiple accounts)
  3. RSS feeds I follow
  4. Voicemails/SMSes
  5. Notification of server failures and other such technical problems
  6. Incomng phonecalls, Skype calls, etc
  7. IMs and DMs in IRC, and people mentioning my name in IRC channels
  8. People talking in channels I'm following in IRC
  9. Scheduled alarms (time to stop working and eat!)
  10. Batch processes have finished (I often start a long compilation/test sequence going then browse the Web for five minutes while it runs - then get distracted and come back twenty minutes later)

Many of these event sources are capable of producing events of different levels of urgency, too. It's really quite complex. Some things shout in my face (incoming skype messages cause a huge window to pop up over what I'm doing, for example) while some need to be manually checked (such as email; I get too much spam for the "you've got mail!" noise to mean much to me), and this has little correlation with the relative importance of them.

Obviously, the first thing to do is to have some standard mechanism in the user interface system for notifying me of events. Growl is a start, but it's focussed on immediate notifications, rather than handling a large backlog of events. What I want is something like my email inbox, that has a searchable, scrollable, history, and notifies me when new events come up. But I also want richer metadata than Growl has; I want all IMs, emails, and whatnot from the same person to be tied to that 'source' of events, so I can filter them into groups. I want to have Personal, Work, and Systems events, and to have Personal deprioritised during working and Work deprioritised during personal time. And so on.

The BlackBerry OS goes someway towards this with its integrated Messages system. Any app can register to put messages into the message stream, so when I get emails, BlackBerry IMs, notifications of new versions of software being available, etc. they all appear in the same time-stream and I get a 'new message' notification. I want something similar on my desktop, but with much more advanced filtering and display capabilities. My design for 'user agent' entities in ARGON involves using a standard "send an object to an entity protocol" for all email/IM/notification activities - the same protocol that is used to send print jobs to a printer, files to a backup system or removal storage device, orders to an automated process, and so on; it's roughly the equivalent of "drag and drop" in a desktop GUI. Incoming objects from 'elsewhere' are then combined inside the UA with internal events such as calendar alarms and situations the user agent might poll for, such as things appearing in RSS feeds, into a centralised event stream, by the simple process of translating all internal events into incoming objects like any other; but actually designing a user interface for displaying that is something I look forward to doing...

Phil's analysis of the newspapers interests me, because it's a very similar challenge. You have a stream of events, and the user may want to skim over them to see what's relevant then zoom into particular ones. How do you present that, and how do you help the user deal with an inundation of events, by applying heuristics to guess the priority of them and suitably de-emphasising or hiding irrelevant events, or making important events intrude on their concentration with an alarm? Priority is mode-dependent, too; if you're in an idle moment, then activity in your interest/fun RSS feeds should push out work stuff entirely - apart from important interruptions. And some events will demand my attention to respond to them, in which case they should offer me links to the tools I need to do that - a notification of a problem on a server, ideally, should carry a nice button that will open me up a terminal window with an ssh connection to that server. But some things might require my attention, but I can't give it yet - so I need to defer the task, so it doesn't then clutter my inbox, yet in such a way that it reappears when all higher-priority tasks are done. There are elements of workflow, where events need an initial "triage" to be categorised into "read-and-understood, do now, do later today, do whenever" and maybe prioritised, then later, deferred tasks need to be revisited.

Also, some event streams are shared. Perhaps an event should be handled by the first member of a team to be free, such as a shared office phone ringing, or a bug to be fixed or feature added to a software product. There needs to be some system for shared event pools, with support for events to be "claimed" from the pool by a person, or put back. Perhaps personal event systems should be able to contain proxy objects that wrap events stored in a shared pool somewhere, so they can be managed centrally as well as appearing in personal event streams along with events from other sources. Standard protocols would be required to manage this.

Looking at the relatively crude support for this kind of thing in even the supposedly integrated and smart combined email/calendar apps, I think there's a lot of fun research to be done!

A stroll in the countryside

On Sunday, I was looking after Jean as Sarah was in Cheltenham to run a writing workshop thing.

So I suggested that we might go for a walk, and Jean liked the idea - however, she decided she wanted a LONG walk! So after some discussion, we set off for the furthest of the three pubs in the Parish, which is about three miles away, with a packed lunch and lots of water, and Jean's teddy bear, who she decided should come with us.

To my delight, Jean didn't tire and demand to come home; we made frequent stops to drink water, and sat down in some shade in the woods to eat our cheese and biscuits, but we pressed on cheerily, past some lambs:

Lambs

Eventually we reached the Fostons Ash for some lemonade and crisps.

Lemonade and crisps at the Fostons Ash

Then Sarah rang as she was on the bus home, which stopped off by the Royal William, the pub nearest our home - so we decided to walk straight there to meet Sarah, taking a different route, where we got a little closer to some of the lambs:

Jean and Bear versus the Lamb

At the Royal William we ate a filling dinner of chips (not so unhealthy if you've been walking all day!), and came home.

Chips for dinner at the Royal William

Jean was still enthusiastic at the end, despite having now walked about six miles from 2pm to 8pm!

The best thing was, I recorded about two hours of it on my concealed camera. It's mainly shaky footage of bushes and sky, but it offers the context for the audio track, which records all the awesome conversations Jean and I had.

Ugarit Roadmap

I've not had much time to hack on Ugarit lately, which is a shame - but just to keep you enthusiastic, here's my current roadmap.

Read more »

Van calamity

Last Sunday, we attempted to go to Cheltenham in the van, as Sarah had a WoPoWriMo launch meetup to attend.

We're used to having to deal with ice on the hills leading out of our valley, as water from the farm fields tends to run off into the road; so if it gets cold, it turns into sheets of ice. There were a few patches of ice on the way up, but nothing like what I've managed in the past, so imagine my surprise when I turned a sharp bend onto a sheet of ice that spanned the entire road. The van promptly lost traction, so I stopped and attempted to gently reverse back around the corner to try a different route.

Sadly, the steering had no effect, quickly followed by the brakes; the van began a slow, graceful, unstoppable pirouette until it ended up like this, with the nose wedged into the bank:

Stuck!

That's looking down the hill from above. As you can see, I'd already done a bit of salt-spreading by the time that photo was taken; before I spread the salt, the ice was so slick that I couldn't actually stay standing if I got out the driver's side, I had to climb across Jean and get out the other side.

Sarah had a deadline, so headed off on foot to try and catch a bus, leaving me with Jean to try and free the van. I could reverse it as the rear wheels just span, despite me shoving some road salt underneath. I tried letting the rear tyres down, in the hope that a larger surface area in contact with the ground would help me get traction, but no luck.

So I proceeded to salt the ice sheet; if I could find somebody with a tractor of a 4x4, perhaps they could pull the van from above and get it free of the bank, then I could complete the turn and head off down hill. The salt began to melt the ice, and then salty water started to flow underneath the ice sheet, creating pretty patterns; and allowing me to wack it with my folding shovel to break it, at which point I found out it was a good half inch thick, even after being partly dissolved from beneath:

I wasn't treading on thin ice.

But the one tractor-owner I knew the number of wasn't answering, and another that a passer-by knew couldn't help, so I continued to try and get it free myself. I gave up on being able to drive backwards, so I took the folding shovel (it's actually a military surplus trenching tool. Good job I carry a military surplus trenching tool in the van, isn't it?) and dug the bank away to release it.

After making sure the ice was well gritted. I didn't want to be downhill of a tonne of van, working away at the one thing holding it in place, while it was on a slick icy surface.

After much digging (indeed, it was now two hours after getting stuck in the first place), with the steering wheel on full lock to the left and the rear wheels spinning, I managed to get the van out forwards, and set off down the hill. Surprisingly, the front of the van wasn't ruined, as I'd thought it might be:

Luckily, not much damage!

Jean was surprisingly patient for a four year old strapped into a stranded vehicle while I worked away; I figured she'd be safer strapped in than running around on the ice with me, even if another car came and hit the van.

Many Pockets

As I have mentioned before, I have many pockets.

A few people have asked about this now, so here's a run-down on what's in them.

Read more »

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales