Tuesday, January 26, 2010

My google wave post just broke :( but google fixed it :)

About 3 months ago, I wrote a google wave gadget, which allows users to collaboratively work on a google wave gadget within google wave.  I've gotten a bit of publicity out of it and its all been great.   Sadly, tonight, the wave that I created to document my gadget has crapped itself, collapsing under the publicity of its own popularity, with more than 200 blips and 500 participants.   The main blip in the wave now has no content whatsoever, and I can't view its history to repair its view.

This is a bad sign.  I like google wave, and I want to support it as a new way of communicating that is easy, effective and efficient.  The problem is that I can't trust it.  If its going to destroy information on me, how can I rely upon it?  Sure, its in beta at the moment, and I probably shouldn't complain, but I'm disappointed.  Its got a truckload of participants now, and I understand that that brings a lot of complexity, but I don't want to loose data.  If I could restore its state it would be fine... The really sad thing is that I'm due to deliver a presentation on my gadget tomorrow night, espousing how good google wave is and how it can be used.   What am I going to do now?

Time to address reliability issues Google.

Update: I've asked google to look into the problem, and it looks like somebody accidentally deleted all of the content in the wave.  This could have been a simple PEBKAC, or a more complex interaction of network latency causing the google wave software to do something unexpected.  It is beta software after all, so these things are to be expected.  It wouldn't be a problem at all, except I can't get access to playback to retrieve an older copy.

Never fear however, the dynamic chaps at google have had a look at my wave, and apparently there are over 30000 revisions to it.  This was a bit much for the javascript engine's tiny little brain and it broke.  They've fixed it now, and all is back as it was.  Thanks Christian!

The time is now for inference engines in user interfaces

I've been thinking the last couple of days about the future of phone user interfaces, and I suppose the future of interfaces in general.  At the moment we have fairly static interfaces, with a scrolling list of applications with the occasional widget to tell us the weather forecast or what not.  We set it up how we like it and thats it.  Some user interfaces (in particular, I'm thinking of Android's pages) provide different screens to cater for different use cases, but it is still a manual affair.

What I'm looking forward to is the day when my phone can infer things about what I'm doing.  Our phones (and our extended computer networks)  know an incredible amount of information about us.  They know where we are, and if we are moving or not, and they can remember where we have been before and at what times.  They have our calendar, they know what time it is now.  That there is enough information to begin to infer things.

For example, I tend to finish work at roughly the same time every day.  When I finish, I walk to Flinders St train station and catch a train home.  During the day, I couldn't give a tinkers cuss what the train timetables look like, but when I walk out the door, all of a sudden I'm keen.  My phone, based upon my previous history of movement, detecting when I start moving from the building I've been in for the last few hours, could easily infer that I am leaving, and that my most likely destination is home.  Wouldn't it be cool if it could alter its home page to show timetable information because thats where it thinks I'm going.

We can get more sophisticated here by adding in additional information too.  If I throw my calendar into the equation, the destination guesser has more information available to it.  If I have an appointment at 5:30pm in a different part of town, it can logically infer that I'm not going home, but rather that I'm going to this location.  Instead of showing me the train timetables for my home line, it could show me a tram route to my meeting, or the location of the nearest taxi rank.  It could even choose which option to show me based upon the time until my meeting.  If I've left myself lots of time then I can take public transport, but if time is running short perhaps I should take a taxi.  My phone becomes a true digital assistant, rather than a window on to information that I have to instruct how to operate.

I want my phone to do this now, and there's no reason it couldn't be done.  I'm sorely tempted to get venture capital funding and go do this.  Its where the action is going to be in the near future, in my opinion.  I've got a whole bunch of ideas about what sorts of information could be fed into an inference engine.

We do need be careful to remember the lesson of Microsoft's clippy however.  In order for an inference engine to work, it needs to be accurate.  It needs to provide value to the user.  It should also be unobtrusive.  if the user simply wants to get to his email, or his web browser, it should be no more difficult to get to than it is on today's interfaces.  Clippy failed on both counts here, and was widely lampooned and hated for it.  The amount of information that the clippy inference engine had to work with was limited, so therefore the assistance it could provide was worthless.

No inference engine will be perfect.  If I walk out the door and start walking towards the train station, I might not actually be going home.  Instead, I might be going to a bar on the way to the train station to meet a friend that just phoned me up.  There's no way my phone is going to be able to guess that (unless it monitors my phone conversation, and understands what we are talking about.  We can't do that yet...).  The secret here is to be unobtrusive.  The phone should offer information on what it thinks I'm doing, but in such a way that if I want to do something completely different it doesn't get in the way.  Phone user interfaces are getting sophisticated now(e.g. SlideScreen) so I see no reason why inferred information can not be incorporated.

One final thought about this is privacy. In order for this to work properly, our computer/phone needs to collect, store (for pattern analysis) and cross-check a lot of really private information.  Where does this information get stored and analysed?  at Google/Yahoo/Facebook?  The inference engine will then construct a model of my behaviour to predict what I'm doing.  I'm not sure I want a big corporation like Google to be able to make these sorts of inferences for me...  but thats naive.  Big corporations like Google already construct models of our behaviour, and every time we sign up to a new service like Google calendar or gmail we give them more information to model us.  I'd prefer to run such a service on my own hardware, but that isn't the way that the industry is going.

But as I ranted recently, perhaps that isn't an issue any more.  Are we willing to give up fundamental privacy in order to get the advantages?  I'm not sure...

Sunday, January 24, 2010

I'm part of a presentation on developing Google Wave extensions, Wed 27th of Jan at RMIT

The local Melbourne chapter of GTUG is hosting a meeting around developing extensions for Google Wave this wednesday at RMIT.  The big presenter there will be Pamela Fox, Google's developer relations person, but I've been asked to give a quick run down at the end on my experiences developing a mind map gadget.  If I get time, I might also theorise about how wave could be used to provide ad-hoc communications focused tools inside business.

If you'd like to come along, please register here.  Its open to everyone.

Tuesday, January 12, 2010

On Privacy

Facebook's CEO, Mark Zuckerberg recently said that privacy is no longer a social norm, Google's Eric Schmidt has also said that if you want to do things online that you want to keep private, then you really shouldn't use online services such as Google, due to laws requiring identification and retention of data.

There are benefits to treating your privacy as a commodity.  The most obvious examples are the personalities that have achieved fame and riches through living their lives in a very public fashion, such as Paris Hilton or Kim Kardashian, but each and every one of us makes a decision to trade our privacy each time we go online, whether we do it knowingly or not.

I recently showed my Father in law how to use Picasa web-albums feature as a way that he could easily catalogue his photos from a trip, upload them to the web and then share them with people.  He was delighted and immediately started pestering his friends to view the web album, which of course involves creating a google account (if you want to restrict viewing to a group of people).  One of his friends refused, citing that he didn't want Google to know about his every move online.

This goes to show the difference between not caring about privacy online (my Father in law) and having enough knowledge to be scared but not enough to fully understand (his friend).  My Father in law knows in an abstract sense that google can track his activities, but he doesn't care.  He has made an implicit (and some would say uninformed) decision to trade some of his privacy for the additional features that Picasa gives him.   His friend doesn't want to share this information, and understands that an account is a tracking mechanism.  What he doesn't understand is that sites like google routinely issue web cookies which are almost as good at tracking people as an account when tied to server logs. Even if you don't sign up to google they will be storing information about you and your browsing habits.  It won't be as easy to pin the usage directly to you as in a person with a name, but it definitely can be, and is, done.  Google do this so that they can target adverts that are tailored to you to your screen, but that doesn't mean that the info can't be used for other means too.

In order to be completely private online, a user needs to go to extreme lengths, using cookie blocking software and IP anonymising routing.  If you do this however, many features that we have come to rely upon no longer work.  You can't browse online email.  You can't one-click share photos with friends, you can't use social networking sites.  Even if you could, there would no longer be any incentive for software giants to produce cool software for us to use, because they could no longer make money off us. The vast majority of us seem to be quite happy to make this trade.

If privacy becomes a commodity, then I would like to have control of that information.  I tend to agree with both Mark and Eric, and I am quite open on the internet, but I want to be able to control what information is used, and what isn't.  If my privacy is a commodity,  that means it has value, and I'd like to see whether I am getting value for privacy.  It is possible to envisage an architecture to the net whereby all personal information is stored locally, on a server that each of us controls, or encrypted on central servers in such a way that only people we allow can have access to that information.  In order for this to work, there would need to be legislation to enforce this separation, as there is cost associated with implementing things in this way.

And there's the problem.  There's no incentive for companies to give us privacy, or to give us control over our privacy, as it will loose them money.  There's no incentive for governments to give us control over privacy as they want to collect information on us too.  "The People" are unlikely to get thier shit together, as they are too easily distracted by the latest shiny product released by Google, or Yahoo or Facebook.   As a result I think we are doomed to a future where information is routinely collected on every aspect of our life.

This conversation has been going on for ages, and its good to see people were thinking about it decades ago.  Credit card companies have been constructing models of us consumers for years and years, based upon our purchasing history.  They then sell this information back to department stores and marketing companies.  A particularly good scenario surrounding how this could end up is played out as a side story in David Murasek's excellent novel Mind over Ship.  Its a sequel to Counting Heads, so you might like to read that first if you are interested.  Now that I think about it, there's also an interesting plot in there about the relative privacy of the rich/powerful vs the middle class.  In both novels the middle class is routinely scanned for information, and their personal AI's (called Mentars) are incapable of keeping the information gatherers out.  The rich have much better Mentars and as a result are able to navigate their way through life with relative anonymity (but of course the heroes undergo a lot more scrutiny because they are the focus of big events).  Perhaps that is our future...

Sunday, January 10, 2010

New Version of Google Wave MindMap Gadget available


I've just updated my Google Wave Mind Map gadget to a new version.  New features include:
  • It renders graphically now, so things are a little prettier
    • It won't work on Firefox versions earlier than 3.0.  If you are running an earlier version I strongly suggest that you upgrade
  • There is now the ability to edit properties, accessable via the properties menu button.
  • There is a context menu that can be used to access the menu, accessible via the Right Mouse button.
  • You can change the colour of nodes. There's also the ability to edit the background colour, but this is currently unused.
  • You can change the outline of nodes:
    • Underline
    • Circle
    • Cloud
  • You can change the direction of layout of the root node. Where is places nodes is a bit random, and I do plan on fixing this
  • You can specify whether nodes are collapsed upon intial view or not.
  • Upload/Download now supports non-ASCII characters, such as Cyrillic
Its not perfect, and there are a few things that need to be fixed, but it is an improvement on the old version so I thought I'd release it. If thre are any problems, please do not hesitate to let me know. I can easily revert it back to the old version if its really broken, or issue quick patches.


I'd be delighted to hear your feedback.

Tuesday, January 5, 2010

Why don't more engineers follow the KISS principle?

I was having a drink with some colleagues last night, and the subject of the over-use of high-availability environments came up.   At too many customer sites we see requirements that the system must have 5 9s uptime (approximately 15 minutes a year downtime) when there is patently no reason for such a requirement.  As a result, we end up spending far more time, more hardware, and more software licenses on the solution than is required.  This not only hurts the project during development, but also during maintenance as a more complex solution requires more maintenance.  This problem isn't limited only to HA, but extends to all areas of design.  In my opinion, this tendency to over-complicate projects is more responsible for project overruns and failures than any other cause.  To make things even worse, organisations who decide to do things "just because" tend to under-invest in them which means that the result is half-arsed and doesn't work properly anyway.

In a quick survey that I conducted of the people around the table at the pub, all of us subscribe to the KISS principle, and I suspect that most engineers would agree with us.  So why do so many projects end up bloated and lumbering?  The knee jerk reaction that everyone other than myself is an idiot just doesn't hold water.  Chances are the next enterprise architect that I meet will be almost as smart as me (even if my ego tells me otherwise), so what is it?  Here's a couple of theories.

Firstly, keeping things simple means that you will be done quickly, but you may need to come back later to make changes or to add functionality.  This is normal and expected within an Agile development methodology, but more problematic in big institutions that take ages to approve budgets and have difficulty dealing with change.  In many organisations it is easier to ask for $1M in one go, rather than ask for 10 $100K budgets. This sucks, but it is the way things go.

Secondly, companies contain many individuals, each of which has their own view on what is important. The reporting guy thinks that all his reports are the most important thing.  The IT guy thinks that good data architecture is the be all and end all.  If one constructs a plan by consulting everybody in the organisation you will end up with gold plating and and a very very long build cycle.

In order for KISS to reign a project needs ruthless leadership.  They need to make sure that their staff understand the principles by which the project is being run, and the intended goal. Knowing what you want to achieve is very important.

P.S. Happy new year!