Team:Freiburg software/Notebook/September
From 2009.igem.org
- 01.09. (Paul) Meeting.
- 02.09. (Paul) As discussed in yesterdays meeting, i started to work on a robot who will keep an overview of all the functions the other SynBioWave-Robots in this wavelet offer and creates a menu in the current blip. I think this menu should be inside a Gadget, mainly because different people working in the same wave so got their own Versions of this Menu and do not have to share the same one. This means we have think of a protocol for transporting the information needed to generate a Menu from a Robot to the Menu-Robot and form the Menu-Robot to the Menu-Gadget. I'll began working on the second one.
- 03.09. (Paul) As the Gadget is written in Javascipt, i think a JSON-string is a good way to transport information from Java (the Robot) to Javascript.
- 05.09. (Paul) While playing around with JSON and working on the Menu-Gadget, the protocol seems to form. I'll post some kind of visualization of it soon... (is there a standard view of such objects?)
- 07.09. (Paul) My Menu-Gadget is working well enough to start programming the corresponding robot. Maybe David can make it look much nice with his advanced AJAX/CSS-Skills when hes back from holidays.
- 08.09. Meeting.
- 08.09. (Paul) As Sourceforge has not managed to rename our Project from GeneWave to SynBioWave, i have created a new one called SynBioWave ( http://sourceforge.net/projects/synbiowave/ ) today. This step breaks the "history"-function of the SVN, so look at the SVN at genewave.sourceforge.net if you are interested in previous versions.
- 10.09. (Paul) I'm currently learning my robot how to create the JSON-Strings containing the information for the menus. I use Javas JSONWriter-class for this, which seems to be crap and produces invalid JSON. As time is short already i've not time to rewrite it in a proper way, so i have to fix this regular-expressions, which consumes quite time. (Did you know that you have to write "\\\\" in Java, if you want to match a single "\" in a regular-expression, because first Java escapes it and then the regular-expression again...)
- 12.09. (Paul) My Robot now creates proper menus the Gadgets display, I'm moving on to *-Robot to menu-Robot communication. It easiest Way to do this seems to be not going the long way over JSON but just serialize the menu-Object instead.
- 14.09. (Paul) David is back from holidays and i meet him today, introducing me to the menuGadget which he'll continue to work on.
- 14.09. (Paul) Started importing my posts of your local development-journal to the one at igem.org. More (and the Meetings) will follow in time.
- 15.09. (Paul) We'll present our project to Kristian's Lab tomorrow, so i spend today making menuGadget and -Robot more presentable...
- 16.09. (Paul) Today we had another long downtime of Google's Wave Server:
Unfortunately we had our whole presentation concepted as a live demonstration of SynBioWave, so that we were totally fooled by this... That was a good lecture for the Jamboree i think. - 17.09. (Paul) Today David, Jörg and I met to work on the Dataexchange of the menuRobot and -Gadget together. That was quite effective... Till all Robots stopped working again after 1.5 hours... It was late afternoon when they decided to work again. These days Wave really deserves the label "dev-preview".
- 17.09. (Paul) None the less David and I totally reworked the menu-exchange-protocol today, making it much more flexible. Think we'll get some nice results tomorrow. I also tried continued the implementation of the robot-robot-communication by serializing objects to string, store these in the wave, read them with another robot and to un-serialize them again to objects. That found a rough end by limitation of AppEngine...
I'll now try to store the objects in Google's Database and just exchange links to them between the robots... - 18.09. (Paul) Although i used the class for storing Data in Google's Datastore, I'm having a hard time storing my recursive menu-classes. Sometimes it work, but at least about every second try it doesn't. Again i feel left alone with Googles bad documentation. So only thing i can do is keep trying.
- 20.09. (Paul) Today i gave up the Datastore totally frustrated. Even having starred a every word in Googles Documentations, followed the "tutorial" word by word twice and doing only minor changes to the code descriped there, i cannot figure out why my program seems to work only sometimes (by accident?). That's nothing we can build a communication protocol on. Jörg was unabel to solve the problem, too. Think I'll need some hours to get my head free...
- 21.09. (Paul) I'll now build the robot-robot in "the long way", meaning I'll convert the JAVA Objects to JSON-String, place them in the Hidden Part of a wavelet (called Datadokument), read them by another robot and unserialize them back to JAVA Object there again. (And - in case of the menu-robot - convert them to JSON-Strings again after some operations...). At least this seems to work...
- 22.09. (Paul) Somehow Robots often don't see events triggert by other robots, seems thats not implemented in wave yet. I filled a bug-report hoping to get this fixed soon as the workarounds are really ugly...
- 23.09. (Paul) The Communication via JSON-Strings now work! I'll clean up my code today, and build an abstract class organizing this for later robots afterward.
- 24.09. (Paul) It would may be handy to create our own Wave-Event on menu-clicks, but that would require deep changes of the wave-API, which is not an good idea a that early and buggy state of wave i think. I created the abstract class so that every developer has to override mainly 3 functions to create a working SynBioWave-Robot. First, a generateMenu() functions which returns the Menu this Robot offers, second a processSbwMenuEvents() to respont to clicks on this Menu and third a processSbwEvents to recieve the original Wave-Events after they were parsed by the abstract class.
- 24.09. (Paul) I often meet David these day and be talk about the communication protocols a lot and expand them from time to time.
- 25.09. (Paul) I visited a lab meeting of our Wetlab-team today (maybe to be linked later) and talk about how we could collaborate, so we don't have to do work twice. Looks like Freiburg's teams will have the same logo, T-shirts and Wiki-design. I was asked to help them doing their modeling.
- 26.09. (Paul) I tried the hole day to generate a simple list of all blips of a wavelet, what really should not be too hard... and failed! Seems every Event "sees" only a small part of a wavelet and all the documentation says about this is:
Note: The behavior of this method is dependent on the 'context' settings in the Capabilities XML configuration. Child blips may not have been sent with this event.
I found NOTHING neither in the documentation, the Google Wave Group nor in the Web a what context settings i maybe have to set... Getting a list of all Blips is important to updated all Menu's display if a Robots joins or leaves the wavelet.
- 27.09. (Paul) Meeting.
- 28.09. (Paul) After another many hours of searching, i found out that it is impossible to get a list of all Blips in a Wave, at least at the moment.
- 30.09. (Paul) As the framework is now somehow working, i took a look on my blast robot again, porting it to use the framework. I gave the Robots the ability to read formulars from the menu-gadget for that.
- 30.09. (Paul) Today a big update for Wave is ancounted (together with the start of a "closed beta"), hopefully making our life more easy...