This month we got to play with Google Wave. Pamela Fox over at Google and Ben at Proteus Tech organised it and there were people participating from Ben's offices and from Satoko's offices.
A mix up with the accounts meant we had to postpone a week, but as Rob was already booked to fly down from Chiang Mai we did a two weekends, the first exploring how to do things. The two parts that most people wanted to play with were the robots and the gadgets. As the robots have to be hosted on Google AppEngine platform I took a new look at a toy programming project called Urquell.
Rob and I have done quite a lot to get the core language working better and to build a robot and gadget that communicate together to provide some help in writing Urquell code — I strongly suspect that Urquell may be a “read only” language as it's real hard to write, but the code isn't too bad to read, especially with the robot's help.
A lot of the wave APIs are a bit immature yet, and there's clearly a lot missing. We were using the Python APIs and they still betray their Java roots rather too much. The biggest problem we have though is the incompleteness of the libraries.
The robot API gives us very good control over what appears in the waves. The robot is able to monitor changes and invoke changes. But interaction with the robot is very limited as it is only able to read what is typed into the wave. This makes it hard to do anything very structured with it. We started off giving it commands with weird syntax, but that is less than satisfying.
The gadget on the other hand can provide a very nice HTML based interface. This means we can build a very nice auto-completing IDE like feature for Urquell to make it much easier to build Urquell statements. But apart from the ability to store a bit of state in the wave, the gadget can't really interact with anything else.
What this means is that our idea of using the gadget as a front end for the robot doesn't quite fly as there's no way for them to communicate. Even if the gadget communicates out-of-band with the robot (i.e. via the Urquell web site), it doesn't look like the robot is able to initiate updates to the wave until it happens to be reacting to something else. This blows our intended design out of the water right now and we haven't decided what to do about it yet.
Anyway, wave is interesting, but there's still a long way to go (the wave user interface for example crashes at every available opportunity), but there's more than enough there to know that this is only going to get more interesting as time goes on.