It occurs to me I never wrote about what I did for the rest of the sprint after my first couple of posts. Mostly I spent the second half of the week floating around the big room; I didn’t really do any more long focused work after the first couple of days of pairing with Robert and Martijn. But here’s a rambling overview; sorry it’s so disorganized
KSS
I looked very briefly at KSS, the “Ajax framework without Javascript” which lets you apply behaviors to a page with something very much like a stylesheet. I had originally seen KSS a bit over a year ago when Whit pointed me to it, but it seems like it’s come a long way since then.
For one thing, their website is a lot easier to understand. It looks a whole lot more attractive; there’s a lot more up-front explanation of the project; and they picked a consistent name for the project. (It’s now all just KSS; from what I remember, last year they were talking about KSS, Kukit, and Azax, and I was very confused.) I guess nice packaging really does help.
Part of me is still wary of it but I think my reason is silly; I just have a gut feeling that it doesn’t make sense to try to bury Javascript and pretend it’s not there, and that KSS is just for people who don’t like Javascript (and I like Javascript, dammit! At least in theory) and instead you may as well leave Ajax for people who don’t mind it. I’ll say again, though, I think this is a stupid thing to think. Robert pointed out that it more or less accomplishes the same thing that Nick and I did with Octopus over the summer, so I’d be interested in doing a direct comparison there and seeing what one of our NUI forms would look like with KSS instead of Octopus.
Anyway, Jeff did a lot of work with KSS at the sprint, and Jeff hates Javascript, so I’m also curious to hear his impressions of it.
z3c.autoinclude
I also did some scattered work related to z3c.autoinclude throughout the rest of the week. At Martijn’s suggestion I wrote to the grok dev list about it, and there were a couple of very good suggestions that came out of that like doing better logging and exposing a convenient way to get information about what files to include without actually doing the autoinclusion, so that you could build alternate inclusion mechanisms on top of z3c.autoinclude like a build script that writes out inclusion statements to a static, tweakable site.zcml. I’ve gotta say it was satisfying and pretty exciting to be talking about my code to people I’ve never met, and changing it based on their recommendations, and hearing completely new ideas about how to use it.
Vudo
I spent an afternoon pairing with Malthe Borch on Vudo, a concept for a new content management system built in Grok with easy Jottit-style content creation and draggable, recombinable page elements. (I don’t think they’ve made a website yet but here’s a video interview from the sprint about it.) I worked with him on a custom traversal hook to create a new object at any URL that isn’t already associated with an existing object, object attribute or view. It was interesting to hear how they’re talking about implementing their system, since a lot of their desired UI sounds like things we’ve talked about too. (Jeff, I tried to find your “draggable page building GUI” blog post to link here, but I couldn’t find it, sorry.)
Gibberisch and Bullschit
On the last full day, looking for something totally different to play with, I sat down with Kai Lautaportti and Tarek Ziadé who had decided to write a random text generator. After spending about five hours trying to get started with git (which never ended up working for Tarek — though, despite all our frustrations, in the end I was sold on it at least as a branching and offline supplement for SVN) and talking about Tarek and Kai’s competing one-line generation algorithms, we had “Gibberisch”, a working library and console script that gave us vaguely plausible paragraphs using a customizable bank of sentence parts. Then Tarek started working on an alternate method while Kai and I banged out “Bullschit,” a proper RESTful text-generating web service in Grok powered by Gibberisch. (We also built an awesome demo.)
I really like the way Grok does REST, by the way: it’s ridiculously easy to create a RESTful interface to any object, and unlike Pylons or our Z2/Plone/Z3 system (the only other things I’ve really tried to do any REST with) I didn’t have to fight with it at all to get it to do what I wanted and no more — it autoset really sensible headers, didn’t set any unsensible headers, and didn’t complain at all when I overrode its convenient automation. A RESTful interface in Grok is implemented as a distinct layer or skin, which I think is a really good idea: so to access /foo/bar RESTfully you use a URL like “++rest++mylayer/foo/bar“ — it lives in its own completely separate namespace so you can have a RESTful service and a user-facing web application sit side by side without interfering with each other.

