Last Tuesday was the day of the first Wave Hackaton in Århus, a small event arranged by Tommy from Miracle where we were going to get some more hands-on experience with Google Wave. I had been asked to talk a little about Gadgets and how GWT is used for the client.
Unfortunately, the GWT client is not open sourced yet, but I hope that will come soon – it will be interesting to see exactly how GWT is used internally at Google.
Wave gadgets, on the other hand, are described on the Google Wave APIs page – at least somewhat. It seems that no matter what you do with Google Wave, you have to be prepared for it not to work as described. Google Wave itself seems somewhat unstable – speed is not always good, there’s often more latency than you’d expect, robots work sometimes and sometimes not. In other words: It’s alpha-state. No surprise there, but it can be pretty frustrating.
At the event, we didn’t really accomplish much. I had created a small gadget beforehand to show off some of the gadget functionality (the gadget shows the participants and a color for each of them which each participant can change. The idea was that participants could express their opinion about the wave. It’s available at http://braindump.dk/wave/profile.xml). We started some work on a new robot, but ran into problems pretty quickly: What are the possible elements and values in capabilities.xml, NullPointerExceptions in the wave API jar file, unexpected behavior, and so on. Debugging is pretty hard, and the development cycle is somewhat long also: Edit code, deploy to AppEngine, wait for it to be ready, open the browser, interact in the right way to trigger the robot, check benavior, see that it does not work, open the AppEngine log files, change level to debug, expand log entries, find the right one, descramble large JSON request and response, see if anything makes sense, when it doesn’t, insert more debug statements, repeat. At some point something might work, but probably not as you had envisioned.
Luckily, I get to go to the Wave Hackaton in Copenhagen also (registration required, no more seats available), so I can bring some of the lessons we learned.
For now, here are some of the main features I look forward to:
- Ability to run robots anywhere, not just on AppEngine
- Ability to initiate requests from a robot. As it is now, a robot can only do something based on a user action in a browser.
- Better debugging
- Better documentation – or at least no misleading documentation



