Tomorrow Julian, Nicolas and friends are having a workshop about blogjects – objects that blog. I unfortunately can’t be there, so I’m writing this as a provocation for the workshop. Some of this would be better illustrated with pictures, so hopefully I can find a good Mac Omnigraffle stencil to mock some stuff up in – at which point I’ll edit this post.
The concept of Objects That Blog is interesting, but to me seems one way: objects publishing some element of information that they can sense or make sense of. I’m interested in Objects that IM – things that can report, take orders, and even conduct conversations. IM gives us a ubiquitous interface – text – even if the exact syntax for each object is different.
Here I present 4 scenarios from the future (or the recently possible, as Clay likes to call it). The bits are there to implement this stuff now.
The basic idea is that your ‘objects that IM’ live either in single person-to-person (thing) IM chats, or all join a particular chatroom, allowing commands and requests to be made to multiple objects at the same time. I’m using IM as a synonym for IRC, even though there are subtle differences in reality.
Most of the ideas here have come through interactions with various IRC and IM bots – thanks to Jo Walsh, for pushing and writing these for years, the chumpbot authors, various bot developers on “#london.pm, and the authors of bots such as Eggdrop.
Yes, I talk to my things. Isn’t it time they talked back?
issue a command – take a picture
This is very simple. You would just address an object, and give it a command, such as:
<ChrisH> webcam: picture <You are being sent cam010106_24.jpg by webcam... Accept?> <ChrisH> yes
And then the picture would be saved.
This is actually similar to making a web request – the url http://webcam/picture is functionally equivalent.
There is no interactivity, other than to make the request. IM/IRC have methods to allow sending of files, and more complex multimedia interactions (although the display and handling of such things is application-dependent).
a more difficult command example – making a call
Let’s try and make a phone call using the objects around.
<ChrisH> call +35801000800 <SkypePhone> Dial? (assuming iBook) <mobile> at home, will not call <AddressBook> Taxi service Helsinki <memoire> Last called 05:06, 13/01/2006; called 33 times <ChrisH> SkypePhone: yes <SkypePhone> Dialling +35801000800, routing to iBook... <ChrisH> end call
So, more going on here. There’s an assumption that these objects are context-aware – here SkypePhone knows which computer I’m using, presumably the microphone and headset availability, and maybe my location (home / work etc.). mobile deferred, due to context. Two other objects recognised that there was a phone number, and used their capabilities to add information. Note that each object does not necessarily need to know about the others, though naturally this would lead to increased usefulness.
buying a service – buying a calendar
But are the examples so far objects? Here’s a different idea. I go to the electrical shop and buy a clock radio. I plug it in at home, and it connects to my network and adds a new object or two to IM.
<clock> Hello, this is your new Starck Internet Timepiece. Please set me up - useful commands are Set time, Set alarm, New name, New event, Delete event, Reset all <ChrisH> clock: set time <clock> Setting time using radio.... <clock> time set to 1137 <ChrisH> clock: new name KitchenClock <clock> updating... <KitchenClock> ready
...
<ChrisH> today <KitchenClock> 1500 swimming lesson, 1900 dinner with Bob. Alarm set for 0730. <ChrisH> 1900? <KitchenClock> 1900 - dinner with Bob. Location: Maxill. Bob confirmed. <ChrisH> address Ravintola Maxill, Helsinki <addressbook> Ravintola Maxill, Korkeavuorenkatu 4, 00150 Helsinki <ChrisH> text Bob Hi Bob, the address of the restaurant is Maxill, Korkeavuorenkatu 4, 00150 Helsinki. See you at 7! <mobile> text message sent to Bob (+358555070707)
So this is a real object that has been bought, that also acts as an Internet or networked calendar. The object may just be being a proxy (the calendar service may be an Internet service), or a data store itself. Setup is easy – once it’s connected to the network. During use, it accepts conversational entry, using state and context to give best-guess results. I haven’t shown error cases here, but they can be far more gracefully handled in conversation than in stateless command incantations.
This also shows the benefit of having many different objects. They’re building blocks, that you can easily string together to accomplish difficult tasks, using information stored locally and on the Internet.
object swarms – e.g. searching music or TV
I think a lot about storage, and where information is kept. I’m neither in the home computer/home networked storage camp nor the everything-on-the-Internet camp. The answer is that storage is going to be messy in everyone’s lives, with information living in multiple Internet services, computers, set top boxes, games consoles, and things that are only occasionally accessible – iPods, memory sticks, DVDs.
So, how do you search through all of these to find things?
<ChrisH> search Talking Heads <DVDlibrary> 1. Talking Heads, Once in a Lifetime <BBCiVO> Alan Bennett, Talking Heads, Series 1 (downloaded, ready to play) <iTunes> 1 Once in a Lifetime; 2 The Name of This Band Is; 3 Fear of Music; 4 12x12; (5 more...) <iMac> 78 files found; 65 music; 2 video; 5 documents <Safari> History: 245 pages found CDLibrary: Disc 248 - Fear of Music, Disc 29 - Sand In the Vaseline <strongspace> 78 files - possible commands "more" or "refine" <ChrisH> iTunes: play
There are agents for each of my storage places, whether they’re online or local. They know about me (at least my login details) so search can happen automatically. By default, only ‘my’ objects are searched; I could then extend the search to Internet services. There is beauty and usefulness in each service having it’s own identity, but at the expense of cleanness, verbosity, and possibly having to learn a different interaction system for each agent.
Unanswered questions:
How many objects is too many?
How do companies agree on shared commands? Wait for v2 and hope for the best?
How can internationalisation happen?
How do you define spaces for devices and their agents to connect to?
How chatty should objects be?
Am I just a text addict? Could these also be implemented as voice input, or graphical UI?
How do I let others have access?
How do we draw and document possible interactions, given context and state descriptions are neccessary?
Other scribbles I haven’t expanded upon:
RSS vs IM
pets that IM
an oven that takes a picture when the meal is ready
centralised vs. peer to peer
<ChrisH> send to weblog
Let’s see that Omni Graffle..we’ll have some transcriptions, audio, slides and images up shortly after the conference..maybe before, even.
contact
email:
chris is at anti-mega.com
Twitter:
@antimega
iChat/AIM:
antimega77