July 18 & 19 2009
Thank you everyone who participated in the Google Wave DevFest last weekend hosted by Proteus Technologies and Mozo in Bangkok Thailand. We were originally scheduled for July 11th & 12th but Google ran into issue getting the Wave ids setup so we were delayed. You can see the original announcement and signups here. I think we had a little over 20 people actually participate both here in Thailand and a few outside working remotely with us. We were in two offices in Bangkok, my company, Proteus Technologies and Satoko Ohira 's company, Mozo, which is a few blocks away. Unfortunately the last minute date change made it where several people could no longer come. In fact one had non-refundable plane tickets for the weekend before so we held a mini hackathon with a few test accounts Pamela Fox and other Google engineers kindly let us borrow with a few people on the original date. Also there were a few who registered but did not get Wave accounts for some reason. We shared test accounts with them.
This is my report on the event as I can best recall...
Our primary focus was the robot api. The unintended consequence of this was that many of us had to get initiated into using AppEngine seriously for the first time and this ate up a great deal of our time as AppEngine still has a lot of undocumented behaviour and outright bugs. I built this page to help people get setup ahead of time which helped people at least get to a hello world bot : Robot API/App Engine Setup Page .
Google AppEngine issues we kept hitting include:
1. Hitting the limit on the number of apps one account could hold (for those who had accounts before) but not being able to delete the old ones and not being able to create new accounts without a new cell#. (We were scurrying for people with cell #'s that never registered before.)
2. There is an unreported limit of 100 uploads per version of an AppEngine app. This wouldn't be so bad except, when it's reached, the interface on the dashboard that let's you select which version of the app to server by default is broken until the next quote cycle come around. We filed that defect here: Defect Report
3. There's another issue with the AppEngine simulator that makes it incapable of reporting proper error messages when running under Python 2.6. It seems AppEngine is actually running Jython and not standard Python. Google should probably more publicly disclose this and even encourage people to run the local simulator under a Jython environment rather than standard Python.
4. AppEngine local simulator does not work correctly with some critical tools like virtual_env that allows one to setup custom local python installs without screwing up your system's python install. I don't know if this is another Jython issue or not but it's very frustrating for experienced Python developers. Basically there was a fairly significant consensus that we don't like hosting robots on AppEngine and very much look forward to being able to run them on a more standard environment.
We did get into Wave's robot api fairly well. We had one Java dev and a bunch of Python devs. It's very clear that the Python api is a thin wrapper around the Java one and not as feature complete. The java dev got his running first - a simple Thai -> English translator leveraging Google's translate. We spent a LOT of time doing exploratory coding to understand how the environment worked. The UI implies certain behaviours and relationships that do not reflect the actual structure of the underlying wave and this led to a lot of dead ends until it was better understood.
Here's the things I can recall that were done/attempted:
1. Implemented a basic Thai -> English translator robot using the Java api. thai-interpreter@appspot.com
2. The first "useful" python api bot is a rather NSFW one by Sajal . Basically it replies "STFU!!!" to every message posted by anyone but its creator to whom it responds with over the top complements. Despite it's rudeness it was a morale boost to see it interacting with the Wave. :-) sajalwave@appspot.com
3. The most fully developed python bot is one called urquell envisioned by Kirit . This is an implementation of an ongoing concept of his so completely academic and absolutely impractical to the point of being completely useless that it quickly captured the imaginations of several of the attendees including myself. :-) It's a functional style programming environment that is implemented via URLs. http://urquell-fn.appspot.com/ It even has a full project page here: http://support.felspar.com/Project:/Urquell They've got the beginnings of a gadget but are having a bear of a time figuring out how a gadget & robot can interact together via the Wave mechanism and not being forced to resort to a full RESTful http pipe between the two which seems like overkill. Being so totally without practical application or merit it is impervious to normal criticisms so the biggest debate was between Kirit's choice of prefix notation (ala lisp) and my suggestion for postfix notation (being an old forth-ite). I still believe once he gets to the point of trying to distribute machine state around to other hosts in the wave that he's gonna find a stack-based environment (and therefore a postfix notation) more er... practical? Well I guess I lose then. Anyway - warning - this may be the oddest use of wave thus far but do NOT discuss it in a room filled with pedantically inclined developers & architects (especially with the odd forth-er in the vicinity) for fear of sucking every bit of productivity out of nearby projects for at least a few days. I'm speaking from experience here. Needless to say - this one remains an ongoing project to this day.
4. My bot is an effort to implement a workflow bot to support a gameshow host (initially human but eventually automated as well). Presently it can create a new game (assigning the creator the "host" role), start a game (thus announcing it), and end a game. Was just about to get into allowing players to join games then implement the question & answer mechanism. The core workflow was the ability to illicit private responses to Questions by the host from participants so other players couldn't see a competitor's answer until the host "released" them for public viewing. This would have been simple if "private replies" were replies at all - which, as it turns out - they are not. A private reply is quite simply (after lots of discovery coding) a brand new wavelet with no parent associating it with the original message at all. Therefore there is no way via the wavelet structure to associate a "private reply" with the Question it is intended to be a response to. I did work out a mechanism (which, although requiring a great deal more coded logic, makes the interface better for players) to get this concept working (involves the bot initiating "private reply" messages to all players simultaneously then displaying responses publicly on a different wavelet) but have not had the chance to implement it. A nice side effect of this mechanism is natural support for team trivia games where a team can collaborate together in private. My goal is to be able to implement an online version of the 1970's era game show "Match Game". gameshow-host@appspot.com
5. A few people at the Mozo offices were working on integrating Titanium interfaces with desktop apps & Waves. I'm not sure how far along they got. If I can get a more detailed report I will pass it along to you.
Those are the ones that I can think of still. Some common issues we ran into but couldn't resolve were:
a) can't delete waves or quit them (already reported)
b) can't figure out how to get a user's display name - we're limited to account ids but the Wave UI clearly can retrieve display names.
c) sometimes robots just don't get the mesages from a wave. some waves will cease sending messages to bots altogether.
All-in-all it was a fun and useful learning experience. I think everyone saw that, despite being very early software, the concept has lots of promise and we continue to have lots of interest.
Thanx are due to Pamela Fox for getting everything together for us and making this happen for Bangkok! We look forward to more of these in the future!

"the interface on the dashboard that let's you select which version of the app to server by default is broken"
FAIL
Well this is very interesting indeed. Would love to read a little more of this. Great post. Thanks for the heads-up. This blog was very informative and knowledgeable.
You got a really useful blog I have been here reading for about an hour. I am a newbie and your success is very much an inspiration for me.
I missed it! I would definitely would love to of attend! what a shame.
I would like to share it with all my friends and hope they will like it too.
Hugely helpful and interesting information that you have provided here. Many thanks
this is a great competitn. this certificate is reaally ionteresting and useful most of all.
Would love to read a little more of this. Great post. Thanks for the heads-up. This blog was very informative and knowledgeable.
Attractive design and very impressive content.
Hugely helpful and interesting information that you have provided here
Google Wave DevFest was conducted at the highest level. All the guests were happy ochchen. The sponsors of this meripriyatiya steel confectionery manufacturer Roshen and supplier of drinking water Frost.
Great article. I like your post. I will keep visiting this blog very often. It is good to see you verbalize from the heart and your clarity on this important subject on trees can be easily observed.
How was it? I was gonna come to visit but couldn't make due to some business problems. So please share.
Thanks for this wonderful post. I really enjoyed it a lot.
I missed it! I would definitely would love to of attend! what a shame.
very nice
Çok fena bir şey thanks
Education is very important by way of age range. That traines our human brain to consider critically, and it's really beneficial to encounter difficulties in your life.
Thanks for sharing this informative article, wonderful means regarding bring this specific subject matter to be able to dialogue. Continue the wonderful perform!
They're some very nice led lights. They really provide a excellent glow i such as. These types of would definitely look nice in your house.
There are many things should be taken into consideration, but you've made a good point here. Thanks a lot for that. I will follow your way soon.
Another very useful python article. Thanks for sharing!