Friday, May 29, 2009


Overnight I've been thinking about Google's new Wave dealy.

I can see a Wave server being woven into a Sakai deployment to facilitate ad hoc and classroom projects, with the Wave robots tracking participation and in simple cases grading. Cross institution wave components can federate.

Wave client thingy is written in GWT, stitched together with Guice and GIN.

My first concern is for the amount of bandwidth this can soak up. Each keystroke - yes - is a callback up to the server. gulp. I haven't plowed through the protocol but I think it's XMPP ( Jabber spawn ) with extensions.

Since I'm between projects... hmm... sniff. hell I better do public write up of the last one!

Other quick hits:
Project management - Lombardi's Blueprint is a very impressive hunk of engineering. Their GWT implementation is beautiful. Might be of a low-ritual scale Sakai implementors could find useful.

Instant slideshows - Animoto. Upload your still images and a clicktrack (ok they said music) and it will auto keyframe a set of configurable transitions based on the clicktrack. nice stuff.

Thursday, May 28, 2009

Google I/O notes

I am attending the Google I/O conference, and these are short notes. typed on my nokia with my thumbs - sorry for the typos!

the conference threads I am attending are the GWT, the Java app engine, and the generic 'tech talks.'

GWT 2 looks good. they have addressed the problems inherent in their stnd-aalone client by creating a set of browser plugins. This was in no small part due to developers missing the great firefox tools.

their initial presentation on the Java app engine wasn't very compelling; a lot of review.

a later talk from the Lombardi team was interesting. to achieve ambitious graph rendering the resorted to all soerts of mad hacks, including inline html. another totally cool technique was to execute 'client' layout code backk on the server ... if timing metrics in the browser showed that the server was more responsive.

in all GWT talks the use of for:each loops was strongly discouraged as a wway to create many spurious objects.
code spliting is cool. i like how it forces dvlprs to consider failure conditions. entry level / weak developers always ignore or handwave failure, and many UI folks ignore the issues completely. ( ymmv I hope ) TURN OFF unused platform targets in dev for faster builds. watch out for broad class use in the RPC code via polymorpphism. Hmm there is a flag to log the steps of code optimization. cool. the useful tool is 'Story of Your Compile' SOYC.

javascript code splitting is an olld trick, but always a headache to maintain or torque in an emergency. Letting GWT worry about a lot of it sounds like a good idea. the idea is to get running code on the browser ASAP. here you will wrap in some GWT async blocks around deferrable functionality.

yes there really was an android phone for everyone.

Google Wave. cool. it'll be interesting to read the newly released white papers.

datastore. goal - simplify dev and mngt of apps. 'scale always matters'ok there are remote keys. multi values look too easy. frames! soft schema: only in the app layer. JDO /JDA defines this soft schema using JDO / JDA supports migration to and from. what? one to ten transactions a second?only one slot update in a transaction? whoa. p eht presenter focuses a lot on this not being a RDBMS.

single col keys migration easy
composit keys map to ancestor chaiin
mapping table to mv props
but hard to do bidirectional adds up to heroics
porting transactions involves more heroics in the form of, say, explicit compensateing transactions.

no joins.denorm or multi queries.

ezr to migrate out.