Entries from September 2009 ↓

The process of collaborating

letterOften when you hear about how old scientist collaborated they used letters. Like Niels Bohr who drafted some of his ideas in letters to Heisenberg. Many of these letters are stored as a part of the great thinker’s collaborative process and a history of how our knowledge expanded.

I would guess that people spend a long time on writing the letters to each other’s and then hoped to get a reply back some weeks later (I’m not sure on how fast the post system was at that time). They probably also spend more time on writing what they meant, in a communicative fashion, because you just could not ask for a change. If I wite a mail and someone, does not understand my writing they can send comments back fast, and I can then clarify the parts which is difficult to understand.

The price for sending a letter across Europe must have been high compared with todays prices, since there was so much manual labor. That meant you probably had to use more time on creating the letters and treasured the result much more. I would also guess that paper and ink was more expensive than we think today.

Going from this letter collaboration to a much faster email has changed the way we feel about letters. I got a book with some letters/emails that I have written in 1996 when I was an exchange student. But other than that I don’t think I have any of my old emails, because they are not relevant anymore. If I had done some collaborative work, it would have been changed into a document.

With Google Wave this movement is speed is even greater. One of the popular activities is to blog, like this. With Wave blogging becomes an even faster, since you can collaborate with your readers like offlineblog writes. Currently working on scientific papers is a highly collaborative process, according to Wikinomics, the average paper had 100+ authors (I cannot find the detail now). Working on scientific papers might become more collaborative with Waves. In scientific papers it is very important to create the right formulation, and there the collaborations work easily. Business documents like scientific papers can also be a collaborative process, hire does it help to have

Then think that you get an instant reply on you idea generation. It just speeds up the process from many months to a single day. Okay breakthrough discoveries probably cannot be discovered in just one day.

You will of cause be able to go back and revisit all your waves, since they will all be stored on the server. The question is then if you are able to find all your nuggets between all in your daily conversations. The question is also if the Wave will be compatible with future use wave servers or the Wave protocol will be replaced by something else in 20 years time.

Image by jude_bird_86.

Bookmark and Share

My first 2 months with Google Wave

I got a comment from Jim Spath, about lessons learned from an early adopter. I feel this is something that I would like to share. I have now used Wave for two months and am getting use to Wave.

At first it was just creating some test waves with other users on the wave. Just to test wave. To many people used the same waves and the system were getting a little unstable. With the release of some service packs it is now much better.

All test users got two accounts a normal and then –test account. So it is possible to test the collaboration with another user if you don’t know anybody in the sandbox. Gave an interesting place to start with development and made it possible to work on projects without disturbing others. It just required to different browsers, but that was easily fixed.

The first couple of times I was using Google Wave, I got some crashes like showed on the screenshot below. Lately it has not been very often. The platform is much more stable and faster now, than when I first started. After I upgraded to Chrome 3.0.195.21, the browser crashes sometime when the Wave is fully loaded.

When I open the window it takes sometime before the client is fully loaded. It takes around 10 seconds to load the client on Chrome, which is a little irritating. But you can start seeing you inbox while the rest is loading.

I have lately been using Google Wave to some productive tasks. I have used it to write blog posts, that I would like to have multiply editing on. I have also been on the SAP Wave discussion, which shows how collaboration can work. I have not talked with the people on the wave, but we are able to have some interesting discussions. Some of them has been asynchronously.

The documents get really messy if there is a not of comments and nested comments. Currently it is not possible to fold the comments together, but I hope it will be possible. Alternative is to delete the comments and merge the result of the comments into the main documents or threats. It could probably be compared to a governance process.

From the development perspective, things have worked out quite easy. The Java APIs have not changed much in the period. When we did a Wavehackaton in Denmark, the delay between changes in a wave and execution on Appengine took until 10 minutes. Appengine was running really smooth, so it must have been something on the bridge between Appengine and Wave which gave problems. This delay gave some confusion when developing application, is my Robot not working or is it Appengine which is not working.

I always get my mail inbox down to zero mails, with the use of archiving. There was coming a lot of Waves into the inbox, most of them was from some random person sending waves to the public group. Mostly something you did not want to see, hence people have started complaining about spam. I have also created a lot of Waves, when I was testing robots. With the instability in the Wave/Appengine path you where not sure if you robot was working or not, so I had to do some more tests. I often forgot to archive those waves so they are still in my inbox. I would like to be able to mark many Waves and then archive them, so I don’t need to see them all.

I’m not fully comfortable with the usability, yet. It takes some time to get use to all the short cuts and the search options. The Danish keyboard users ALT GR to create @ or { signs, it does not work for me because of some reason. You can only see one wave at the time, but switching between them is easy.

I’m looking forward to the next 2 months of Waveing, where we hopefully will see some larger implementations.

Bookmark and Share

New design principles; it should be wave-y

Today Google posted the new design principles for developing applications to Wave. This list of principles is to raise the bar for developing applications on to Wave. It requires the developers to think usability in to extensions. The concept is really nice; think about you wave development and create better applications.

The concept wave-y is introduced to help developer on focus tools, which are target collaborative intuitive and real-time components. Developing applications to support these properties can prove to be difficult, because it is a new paradigm for development.

One of the areas the guide touches is about writing commands to robots. The robots should be able to detect when they are needed. This defiantly provide a problem to create robots which listen after the data and works with them. An enterprise robot, which does this, is the robot DJ Adams has created. It listens for indications on a transport name using regular expression. If it finds a match it reacts. But with the right text tools it will be possible to extract some information about the current customer, which is used.

This text analysis will probably requires some better functions for semantic web.

According to the document it should be possible to subscribe to events depending on what is written in the wave. So if the user writes “address” the address robot is added to the wave to process the address.

The extensions (gadgets or robots) should be very intuitive. It should be possible for first time users to use them, without pulling out an instruction manual or now a wiki. It might be difficult to make an easy to use enterprise modeling tool like Aris (if it was a gadget) from IDS sheers, which can be used without a manual or a course.

The document also promotes the use of extension install. I have not used it for any of my robots, but it could prove to be an interesting task to do. It will be much easier to use the robot if it was just a one click in the menu.

The best thing about the document is that extensions have to be fun or be useful.

Bookmark and Share

New SAP ES Demo: Creating Service Requests

Some weeks ago I made a demo of how SAP ES could be reached from a Google Wave. This was just to show it was possible to call ES. That demo did not help in any workflow; it just showed some data to the user. I have now worked with getting a better idea for coming up with a demo, which shows how wave can be leveraged to implement a better solution. I need this demo for my Virtual Community Day presentation on Thursday the 24 of September at 16 CET.

This demo is about creating services requests for a customer. In the scenario the customer adds the robot, which displays all the equipment items the customer has. The customer then selects the item which is broken, and creates a service request on this item. When the request is created using another enterprise service, a technician is added to the wave to help the customer solve the problem. This will allow the participants to write to each other showing how things work out.

An extension of this demo, would obvious be a place where the two participants could change the status. So the task would be completed, when they have solved the problem.

This demo is also created by SAP as a Composite application (CE), but using CE will only create the request. It will not allow the participants to help fix the problem in just one place. I believe it is in this place the Wave Robots has something value adding compared to normal web applications. There still need to be some development to get a more compelling look and feel. I’m not sure what is possible to do with styling and creating tables but the view should be styled before an Enterprise ready application is created.

How this was done

As with the last demo, I have not been able to run Axis2 on Google App-engine, where robots currently have to be implemented. It seems like Axis2 is using raw sockets, which is not allowed on Appengine. I have therefore created SOAP-XML in hand and just submitted them via the URL connection. This XML I got by using SOAPUI, which is an excellent SOAP client for testing services. By using SOAPUI I could craft and test XML calls before spending time on implementing them in Java. It is also possible to use the Webservice test tool in connected to the Enterprise Repository. For some of the request it is possible to get some basic test data delivered.

When I got a response back I have used a SAX parser to handle the requests. This works great to store the information for later retrieval by the robot. It would have saved some time on this front also if the Axis2 would work. For the three calls I perform, I use three different parsing strategies. I though learned something from this, so I’m happy.

Output to the wave was pretty straight forward using the Robot apis. I only had some problems with some of the used keys between the different blips. To remember the item name, I store the item in the Memcache. That way it is easy to store data between different requests. I did have a problem with the robot, which believed that it should react to its own requests. That was not a good idea, and it created a lot of blips in the wave. So when developing robots, do not react to events performed by the robot itself or any of the robots at the @gwave.com domain.

The code for the robot can be found in the sap-wave repository.

Before deploying this code you self you need to change the WebserviceHelper class, and add you own username and password to the SAP ES demo systems as Basic authentication parameters.

Notice this blog is cross posted to SAP SCN.

Bookmark and Share

Simple Form Gadget

Creating my first form gadget, I call it “form gadget” because the main idea of creating this post is to simply show the possibility of using gadgets for form transactions inside wave. Form transactions, meaning having a form created in gadget residing inside a wave but sending the data gathered to a robot or a robot can simply manipulate the data once the form is submitted.

NOTE: In this post I will not discuss on how to create a form gadget. However, I will discuss parts of the code and hopefully feature some other ideas on it.

When I first started creating this gadget I thought it would be easy for me to finish. Unfortunately there were a lot of challenges. I think one of the most challenging part, is having an idea on what gadget to build. Until, I came up with an idea of creating a simple address book gadget. I choose address book because it is simpler and much easy to create. It also shows the idea of a form being submitted. I believe there are a lot of potentials using gadgets inside wave, like this one that I have created. It shows the potential of having a transaction from one servlet residing in remote server or other scripting language that resides in a remote server.

Continue reading →

Bookmark and Share