The Google Brainwash
Yesterday Kars helped me out with migrating my BeyondTrees email account to Google Apps... and that was surprisingly easy to do. I used the free standard version for now, but thinking about upgrading to the premium $50/yr account later.
I was worried about migrating my email history (note I was using Mozilla Thunderbird), and indeed got some problems with the Google Email Uploader; something about not having setup Outlook as a default mail client? But fortunately, the new email service supports IMAP as well, so we added an IMAP account in Thunderbird to my new Google Apps email, and I just copied my folders there, folder-by-folder, creating the GMail labels automatically. Uploading the 6,000 emails took about half an hour, and all works really well. I forgot to copy my Sent folder at first, but when I did, Google nicely grouped my emails in threaded conversations.
All seems to work very well now, and I'm glad to use the power of GMail, including on my Android HTC Magic, and a better Calendar integration. And finally getting rid of unsafe POP passwords and blocked SMTP servers when I'm onsite...
As you can see, the investment Google made in us when we visited Google I/O in San Francisco last month, is working... they brainwashed us completely and BeyondTrees is now nothing more than a Google Drone: resistance is futile ;-)
My first Google Wave Robot: Eliza
As I've told before, I continue to be very impressed by the vision of Google Wave, and its underlying architecture. Yesterday I decided it was time to see if I can make my own robot. I had never played with Google AppEngine too, so it was a double first for me.
With my background in AI, I decided it would be nice to use the old Eliza program to create a Google Wave robot that acts as a shrink and asks you if you feel depressed during your conversations. I found a nice Java implementation by Jan Wedekind and shamefully used that source to start off with my robot.
To create a robot, you have to download three jars and include them in your project (easiest to use the Google Eclipse plugin, create a project (don't forget to switch off GWT support in the new project wizard if you do not need it). Your main servlet then has to implement RobotServlet, with a single method:
@Override public void processEvents(RobotMessageBundle events) { }
The events contains a list of event objects that have been changed. Note this can be multiple events as several people are doing stuff at the same time! You can subscribe to events by adding a file capabilities.xml in a folder /_wave/. Mine looks like this:
<w:robot w="http://wave.google.com/extensions/robots/1.0">
<w:capabilities>
<w:capability name="blip_submitted">
</w:capability>
<w:profile name="ElizaRobot" imageurl="/eliza.jpg">
</w:profile<
So I only subscribe to the submittal of entire blips, so that my Eliza can react to entire sentences.
The code then reads the text of the blip (for now: just the first it finds that has changed), asks Eliza for a response and adds a child blip to the wavelet:
And that is it, basically! Well, you have to remember to add the servlet to the URL that wave uses: /_wave/robot/jsonrpc in the web.xml. Then compile, upload to appengine.
And then the fun begins! I created a new wave, and invited my new best friend. You can do it too, if you have a Google Wave developer account. The identifier for Eliza is: elizarobot@appspot.com
Here's a nice screenshot of one of my first conversations with her:

Please feel free to play around with it, invite me too (anneveling is my googlewave account) and if you have some nice robots or extensions: let me know!
All in all, this took me about 1-2 hours of fun. It is actually quite easy and fun. And: I do not feel this lonely in Google Wave anymore ;-)
With my background in AI, I decided it would be nice to use the old Eliza program to create a Google Wave robot that acts as a shrink and asks you if you feel depressed during your conversations. I found a nice Java implementation by Jan Wedekind and shamefully used that source to start off with my robot.
To create a robot, you have to download three jars and include them in your project (easiest to use the Google Eclipse plugin, create a project (don't forget to switch off GWT support in the new project wizard if you do not need it). Your main servlet then has to implement RobotServlet, with a single method:
@Override public void processEvents(RobotMessageBundle events) { }
The events contains a list of event objects that have been changed. Note this can be multiple events as several people are doing stuff at the same time! You can subscribe to events by adding a file capabilities.xml in a folder /_wave/. Mine looks like this:
<w:robot w="http://wave.google.com/extensions/robots/1.0">
<w:capabilities>
<w:capability name="blip_submitted">
</w:capability>
<w:profile name="ElizaRobot" imageurl="/eliza.jpg">
</w:profile<
So I only subscribe to the submittal of entire blips, so that my Eliza can react to entire sentences.
The code then reads the text of the blip (for now: just the first it finds that has changed), asks Eliza for a response and adds a child blip to the wavelet:
initialize();
Wavelet wavelet = events.getWavelet();
Blip b = null;
for (Event e : events.getEvents()) {
b = e.getBlip();
if (b!=null) break;
}
if (b!=null) {
String answer = eliza.getResponse(b.getDocument().getText());
Blip blip = b.createChild();
TextView textView = blip.getDocument();
textView.append(answer);
}
And that is it, basically! Well, you have to remember to add the servlet to the URL that wave uses: /_wave/robot/jsonrpc in the web.xml. Then compile, upload to appengine.
And then the fun begins! I created a new wave, and invited my new best friend. You can do it too, if you have a Google Wave developer account. The identifier for Eliza is: elizarobot@appspot.com
Here's a nice screenshot of one of my first conversations with her:

Please feel free to play around with it, invite me too (anneveling is my googlewave account) and if you have some nice robots or extensions: let me know!
All in all, this took me about 1-2 hours of fun. It is actually quite easy and fun. And: I do not feel this lonely in Google Wave anymore ;-)
Tsunami alert: Google Wave
If you haven't heard about Google Wave by now, you have probably been off the Internet for the past days, and off Twitter...
After a mind blowing presentation at Google IO in San Francisco last Thursday (which I attended :-)) more and more people on the Net have seen the presentation (please take a coke and view this 1.5 hr video today if you haven't already) and are beginning to write about what it may mean for the Internet or for their own businesses.
Everybody is so incredibly positive (did you know that Google got a standing ovation at the conference, which is quite rare, especially on a hard to impress techy audience?) that I wondered whether anyone disliked Google Wave. Who better to ask than Google itself? I typed in "Google Wave sucks" (with quotes) and got this:

0 results! This may be censured of course ;-) no not really. Really 0 results. Maybe by this time you will find some results, so I took a screenshot.
No doubt Google Wave has its shortcomings and limitations, but if you understand not only the usability of this new communication paradigm but also a little bit of how it was constructed underneath, you cannot do anything but be excited about new opportunities. Or worried if you work for a company that either
Now its time to get over this jetlag first ;-)
After a mind blowing presentation at Google IO in San Francisco last Thursday (which I attended :-)) more and more people on the Net have seen the presentation (please take a coke and view this 1.5 hr video today if you haven't already) and are beginning to write about what it may mean for the Internet or for their own businesses.
Everybody is so incredibly positive (did you know that Google got a standing ovation at the conference, which is quite rare, especially on a hard to impress techy audience?) that I wondered whether anyone disliked Google Wave. Who better to ask than Google itself? I typed in "Google Wave sucks" (with quotes) and got this:

0 results! This may be censured of course ;-) no not really. Really 0 results. Maybe by this time you will find some results, so I took a screenshot.
No doubt Google Wave has its shortcomings and limitations, but if you understand not only the usability of this new communication paradigm but also a little bit of how it was constructed underneath, you cannot do anything but be excited about new opportunities. Or worried if you work for a company that either
- sells a product that does one little thing that Google Wave does better, or
- consists of people that do not get the message that it entails
Now its time to get over this jetlag first ;-)
