Wednesday, October 29, 2008

Google Summer of Code 2008 [GSoC2008]

One of the three highlights of this young, long-haired gentleman's trip to California was to participate in the GSoC 2008 conference. Earlier this year I had been asked to become a mentor for the Dojo foundation. As you might know Google gives out enormous amounts of money each year to Open Source organization all over the world, earmarked for students so that they can afford to work on a project for their organization during the summer.

This in itself is really cool and generates (deservedly) no small amount of goodwill for Google. Being a mentor I was invited, along with some 200 other people to the conference. At first it felt a bit strange to have an open source conference. I mean, it felt like having a conference on wearing pants. It's a given, more or less. The only times I normally reflect on Open Source licensing is when I see someone walking down the street sporting a nekkid lower half.

Most, if not all of the focus of an Open Source software developer surely lies in the application or service being created. However, when arriving at the conference I suddenly understood the reason for the conference. Naturally the focus was on Open Source Software, and some of the sessions did indeed focus on project management and licensing issues, but the whole point of the conference was to get to meet the best and the brightest developers in the world - or so it felt at least.

Most people don't code at all. Of those who code a fair share, say at least 50%, just code as if it was any other kind of job. No real enthusiasm. Of those who are somewhat enthusiastic, there's maybe one in ten who are _really_ enthusiastic about programming. Of those maybe again 1/10 have the inclination or assertiveness to actually engage themselves in a public Open Source project, and of them not many decide to take on the responsibility of being a mentor (of which I could have made a much better job, actually, but more on that in some later post).

Anyway, those were the guys I met. But before the conference there was a traditional Thai dinner in downtown Mountain View. The way to the restaurant look a bit like this from the train station:

There was a lot of happy confusion, assertive Leslie Hawthorns all over the place and a resounding call to arms for the following beer bash at a nearby establishment built for this very purpose. The volume of all these programmers talking at the same time was positively deafening, despite some truly outrageously tasty local beer. I'm so sorry that I never remember names, but I hope you know who you are! Please mail me if you want to get in contact.

I met the project manager for the NTP project and was surprised to hear that something that is relied on by so many and used daily for a number of purposes is not getting the economic attention it really deserves. I met a lot of guys from Germany working on MoinMoin, and another that worked on Zope (which I have actually tried out). There was Boombox an Open Source project to replace the OS on an iPod (and other things), several ambitious bio-CMS systems (I'm a reformed molecular biologist hobbyist myself :) and tons of other people.

The party went on into the night and I was nearly unable to manage a late night dry martini at the hotel when I got home, where I had a long discussion with a couple from Alaska who liked to travel a lot (he was a geologist and she was a M&A specialist, which gave me a feeling that they were probably able to. Traveling can be exhausting in my opinion, but here were climbers of Kilimanjaro who would not agree :). They were also really nice people) discussing Obama (Yes!), various economic conundrums and how to pronounce Göteborg and whether the city in question resides in Sweden or Denmark (the former).

Sadly, since I had to be back home on Sunday, I had to leave on Saturday, leaving me only with four hours of conference. With a rapid taxi out to MTV I decided to make the most of it, and made a great number of good contacts, some with people who agreed with me that we must have met before, but could not recall when (it's just half a world away, really). Tons of good discussions on Dojo and on implenetations of REST and general information managemenet. Thanks everyone I met. It was a pleasure talking to all of you!

ANd then there was the scale-model (surely?) of the X1 spaceship. And the lebansese buffet, and the juice bars, and the Testing onThe Toilet posters (on the toilet), and the general Googly atmosphere.

Anyway, most of all; Thanks 1.0E6 to Leslie Hawthorn and Chris diBona (and the rest of the crew) for creating a wonderful experience and creative climate for all of us. And for the Google frisbees. I snacthed two to give to the kids when I got home, who were duly impressed and commenced wrecking our living room immediately :)


Tuesday, October 28, 2008

Tech Talk on Thin Server Architecture and Dojo at Google

While I was in the neighborhood, I managed to get invited to do a tech talk at Google's Mountain View offices this last Friday. I tried to describe the drawbacks with traditional server-centric web frameworks and to use Dojo as an example of how to build true client applications which lead to an increased efficiency for the development team and hence to lower production and maintenance costs.

People were in general very nice but razor-sharp and to the point. Very good discussions afterward focusing on build systems and SEO issues.
Here's the slides themselves;

And here is the Youtube video of my presentation as it is;

Alex Martelli was there as well, and had to comment on the size of my computer :) Erk Arvidsson who should have been my presenter (since I was so nervous I jus got up and presented myself as I usually do, sorry Erik!) took some pictures of relative computer sizes between mine and Alex's;

AjaxWorld 2008 impressions III

Trying to catch up with recent events from last week. Above a shot of the comfortable room at the Sainte Claire picturing the authors own small and portable Acer 9920 and a jug of local adult beverage.

One of the talks that I had anticipated most was Chris Keene's WaveMaker presentation where WaveMaker's cloud strategy would be unveiled. Chris made away with a very thorough and Monty Python themed presentation of the state of the cloud space today, with pros and cons of diferent solutions and wit a special focus on Amazon's EC2/S3 offerings.

The reason for the Amazon focus is of cours that WaveMaker is building its own service on top of it. The presentation was unfortunately not so focussed on what WaveMaker's service would look like or work, but on clouds in more general terms. I do hope that they follow some of my suggestions and make the service more of a 'live' development environment than an IDE that happens to be on the web. Time will tell. Sometime in November the site will go live.

WaveMaker is superficially like Smartclient, TIBCO GI and Bungee labs connect (and MS popfly, et.c.)
What separates Wa veMaker from Smartclient, for example, is that Smartclient is entirely neutral towards the kind of backend being used, whereas WaveMaker projects are exportable as stand-alone WAR arhives, to be dropped in any Java-based app-server of your choice. If you have a more mixed environment, Smartclient might be a better choice, but if you run a Java-only shop WaveMaker will mean much quicker deployment.

This is also what separates WaveMaker from Bungee labs (and likes), which push PaaS (Platform As A Service) where they host and manage they produced apps in pretty much the same way Google App Engine does (Except it doesn't come with any IDE). What WaveMaker brings to the table is the possibility of choice (something Chris did emphasize very well) where you can begin hosting your own application, then move it onto (say) an EC2 virtual machine, only to take it back in-house again when the corporate infrastructure or security requirements have changed. It seems that this will only be made simpler with the coming cloud service. We'll wait and see.

Monday, October 27, 2008

AjaxWorld 2008 impressions II

AjaxWorld had nearly all available conference space at the Fairmont Hotel in San José, connected by miles of carpeted classical Hotel vestibules. All talks had ample room for attending listeners, but the amount present varied (as it does) betwee different talks.

One interesting fact was that there was two different talks on server-side JavaScript; One from Jaxer and one from the Phobos project. The Jaxer demo was very good. The presenter Ian Selby made a small REST server implementation while we sat there, database tables and all. Sure, he was well prepared but still. The amount of code was very small. All portions that accessed was database was one line each. That's the way it's supposed to be, really.

I do hope that Jaxer moves away from the server-side templating stuff and instead emphasize the really nice platform and infrastructure they have in place. Cooking DOM JS on the server and pushing the rendered results to the client when JS is unavailable or wrong version is an edge-case at best, and if no JS is present, ten attaching event-handlers won't be possible anway, so in practice (having mulled this over the course of some months) I feel that there is little that a server-side DOM processingcan do that can't be done with plain CSS anyway. Please correct me if I'm wrong :)

The other Server-side JavaScript talk was by Roberto Chinnici who made an excellent presentation of the Phobos SSJS framework. In theory Jaxer and Phobo does pretty much the same thing, but Phobos is much more focussed on language integration. I think that Jaxer has something similar, but OOTB phobos can call and use any Java library or class as well as spawn JavaScript threads. Not hurting whatsoever is a (coming?) port of ActiveRecord from ruby and a low-level implementation of Gears (wich also works with Jaxer, btw).

Something that was mentioned as a feature, jMaki made me perk my ears up. I checked jMaki out briefly a year or so ago and felt pretty certain that it was something tied to JSF, which made it rabidly uniteresting from my point of view. Luckily Greg Murray, the creator of jMaki was also present and could now refute that fact. jMaki is apparently something quite separate which can be used with Java, Ruby, PHP and now also SSJS.

All well and good, surely. But what does it do? Quite. jMaki is a cross-toolkit switchboard. What that means is that you can use a from created in Dojo, attach its events to a table from YUI which readsits data using data abstractions from Ext. Is that hot or what??? In the examples available there is always some pesky server-side component needed with generic sounding names at every turn, but it does seem at his point that jMaki is not dependent ona server-side component and of so, it is pure gold.

I also saw a presentation by Brent Hamby and Geof Hendrey from which takes my thin server architecture one further step: no server architecture! They have a database service which can be used directly from an ajax page with full transport security. The have a model which is similar to Kerberos, where tickets are issues and encryped by the server, which also includes rules of use which must be preserved. also have an administrative interface where you can define queries and users, in a very simple manner. If you have an applicationwhere you can put most of the logic on the client and only use a data store + security, it's a very interesting solution.

All talks were recorded, but it will take up to five weeks until we can see them online (including mine), so I'll post the links to that later.


Wednesday, October 22, 2008

AjaxWorld 2008 impressions I

This is the first in a series of post on what I saw, talked about and experienced on the AjaxWorld conference this year in San José. The conference has just ended and I'm sitting in the hotel room after a nice crabcake burger and a glass of wine and will soon head off to Mountain View in search for a SF bookstore.


My impressions of the conference as a whole and of the state of the industry (which one might hope would have a correlation) is that the world is being split in two. Luckily, most people isn't particularly interested in the bad part :) What I mean by that is that a seizable portion of the talks and booths revolved around products that continue to pile complexity upon complexity on the developers to shield them from the browser.

I'm primarily talking about Oracle and Icefaces here, of course. But also talks on GWT and PHP-generated server-side templates for JS did their best to muddle the waters. Of course, this is not really fair in my part, since everyone is trying their best to solve the problems as best they can. If it so happens that someone has struck upon a substandard architecture and haven't had time to think through all the angles, it's certainly not because of malign intent.

On the whole I was happily surprised to see a lot of companies present whose products and talks were attracting a lot of attention, who were in essence advocating thin server solutions across the border, wholesale. Smartclient from isomorphic has grown a _lot_ since I checked it out a year or so ago.

They have basically built 50% of Dojo all by themselves, for their client side framework, and I couldn't help but thinking: Agnostics what a waste! How much time it must have taken them. And then immediately: Wow, that's really smart, we should have that in Dojo :) What I was most impressed with was their efficient focus in metadata. Nowadays we have JSON-Schema, which was not a luxury they had when they started out, of course. They have a tool which let you import schemas of different formats, though, so JSON-Schema support is probably on their radar.

Why is schemas so important? Well, they have many (all?) components schema-aware, so that if you attach a schema to a Form component, up pops a form with the correct fields, date fields have a datepicker, int fields have validations for integer values and so on. Also, the form gets generated by itself, of course, and can be remaking itself dynamically. Why don't we have such a thing in Dojo? Actually, there's no reason at all, but right now I'm blogging. Also their grids work in the same way, and have a couple of extra features like sort fields which can be enabled for any column (filters).

My only gripe with Smartclient is that the web-based IDE is non-free (but they have a 60-day demo), and also that they have written a whole new toolkit instead of leveraging jQuery, Dojo, Ext or something. Their toolkit is LGPL and all, but still think that it would have been simpler if they hadn't been so monolithic. Now, I _am_ just grumbling. the Smartclient DIE was absolutely wonderful with tons of smart components and a clean separation o f concern between the client being created and the services it consumes. Very good.

As @ckendrik points out in the comments below, when the first versions of Smartclient were created, no toolkits were available (2001), which explains both the long list of features and the reason for a homegrown solution. I'm not at all suggesting that Smartclient is fracturing the framework space. It is actually very uncommon for companies with similar products to actually leverage an existing framework; Appcelerator, TIBCO, et.c. have their own frameworks as well. This is very much alleviated by the fact that many companies are starting to provide bridges to other frameworks; Smartclient have extension for GWT interaction, for example.

Coming up: " jMaki - buried treasure", "WaveMakers upcoming massive cloud gambit", "Lessons learned around Mars" and finally "SSJS - the only way forward".

Your trusted uncle in San José,

Wednesday, October 15, 2008

Codebits in Portugal

My presentation for Codebits in Lissabon, Portugal just came up. I hope not too many people go to both AjaxWorld and Codebits this year :)

Thanks 1.0E6 for Mário Valente for recommending me as a speaker. I haven't been in Portugal for over ten years!


Academic exercises

A couple of weeks ago I was invited to speak for Bleking Tekniska Högskola (BTH) here in Sweden on the subject of Thin Server Architecture, which was something I just couldn't turn down, even though I'm in deep in several other things at the moment.

At my suggestion, I also made a couple of slides with exercises for the students in basic Dojo widgetry. Then I rememberd how confused I had been when I began to learn Dojo and the peculiarities of JavaScript like closures and Object Literals and such things, so I had to do some quick slides on those as well.

A lot o thanks goes out also to Stuart Langridge, whose presentation "secret of javascript closures" I was able to use, instead of writing my own :) It saved a lot of time.

All in all I was surprised in how many of the students that understood what I said, that was able to (or wanted to) follow the exercises and came up with good questions, and also had already seen the crockford vids on 'advanced javascript'. These guys were really up to speed! OK, they had only worked with jQuery/Mootools concatenation style toolkits before, so the relatively 'classic' coding style of Dojo was something new.

What I also realized is how truly huge Dojo is, when I tried to do a quick feature rundown. The 2D cross-browser Gfx, the charting support, fx and easings. Especially the animations was fun to show, as they're really completely generic and can be used to morph from one CSS class to another, or to change color, or to move an element on the page, according to the easing rules which determine how fast or slow to change the values over time. That's really slick.

Thanks to all the students (and teacher) for having me, and having tried this out I can say that I'm now officially prepared to teach at other places as well :)


Tuesday, October 7, 2008

Conferences come in groups

I'm trying to find time each day to finish my presentation for AjaxWorld, which I'll present the 20th this month in San José. I've got permission from Kris Zyp from Sitepen and Ganesh Prasad of SOFEA fame to loan their pictures for various slides, so there's hope that I'll have something more than text in it!

The title of the presentation is "Practical Thin Server Architecture with Dojo" and I hope to live up to the title, even though I won't be doing more than talk and dance.

I spoke to Leslie hawthorn at Google when I visited the Open Source Offices (and got a spanking nice T-shirt :) this summer about doing a tech talk (apparently called 'Google MTV' internally) on the subject of Thin Server Architecture, which I just got confirmed. It's the 24th October in the middle of the raging Summer of Code unconference (which I'll also hopefully attend).

That's two talks of the same kind the same week, which is OK. But what happened two weeks ago was that I got a mail from Mattias Schertell at Blekinge Tekniska Högskola (A technical unversity in Southern Sweden) which wondered if I could do a day of workshops and talks around the subjects (TSA and Dojo), which I accepted, and I'll fly there Tuesday next week. I have to remake a couple of exercises I've been writing a while ago this weekend, to get them up to Dojo 1.2 speed. Mental not to self and all that.

Then a friend asked if I couldn't speak at a Swedish conference (on Ajax, et.c.) also next week, the 16th, which I could, so that's another engagement right there. There's another conference by the same organization in early 2009 as well, so...

Anyway, completely unconnected comes an email from Pedro, a Portuguese organizer for the codebits 2008 conference in November this year which also invites me to speak, and how can I say no to that!

So all in all it seems that my future is filled with glaring lights, repetitions and pointed questions :)

On the plus side, my next chapter to be rewritten in response to proofreading for the book is due as far out as October 19, which feel really far off at the moment. I've managed to do some coding on World Change Network, but still hope to get the new menu working properly and to have the CRUD tables skinned to spec.

While evaluating WaveMaker 4 for my client, I tried to create a custom component that wrapped dojox.charting which I managed (with some help from WM personell - thx!) to accept complex json objects as data series input and switch both chart type and color theme on the fly. Pretty neat actually, and not so hard as I thought. It's open source as well, so mail me if you want it!