I’ve been rather busy of late, with finishing up at my old workplace in a frenzy of activity, and then starting my own business (which largely involves, at present, contracting back to my old workplace so I can complete what the frenzy didn’t. It’s a strange world I live in…). Despite these various frenzies and fits, I’ve had a bit of time to play with Iowa, the former Avi Bryant vehicle that now has Kirk Haines firmly entrenched in the driver’s seat. (The story of my defection from the Seaside/Borges camp is covered elsewhere).
To do so, I’ve had to write a Webrick servlet for Iowa. Iowa previously didn’t work on Windows, as it depended on Process.fork and .setsid, both of which are unsupported by Windows. The Webrick version, which you can download from here, is a rough version – it doesn’t have the full level of functionality that the socket version has (yet), but its got enough to get one playing with the library.
And playing with the library is a worthwhile experience. Iowa, like Borges, has URLs that make REST advocates withdraw into twitchy, sweating foetal positions in the corner, but for an application developer, its a pretty sweet experience. Iowa has the templating system I’ve been trying to add to Borges (well – its not exactly what I was after, but its more than sufficient, and more importantly, its there). Its got page reloads without stopping and starting webrick, which is a vast improvement over Borges – I can modify on the fly. I can do most things without thinking too hard, which is a strong requirement for me.
It’s still not the application coders wet dream1 that Seaside/Borges is, but I can clearly see the foreshadowing of Seaside in it. Its nearly good enough. I don’t much like the bindings, nor the binding syntax. I’m not comfortable with the API yet, and I feel there are substantial bits I’m missing – inline components come to mind. I’ve seen a sample with an inline component, but no docs. (By “inline component”, I mean a sub-template – a partial template that can be included inside a master site-style template). These things would be handy for the majority of apps. I’m getting around it by throwing the menu-area functions in a module, and doing a lot of copy-pasting on the html, which is clearly quite undesirable. The documentation for Iowa is still spartan, but better than a lot of other libraries. Kirk has expressed a desire to improve the docs, and I’ll try to help out where possible.
Development of the sample app for comparison with the Borges version is flying along, in the brief moments I have to work on it. Iowa isn’t getting in my way, which is the best thing I can say about any toolkit.
1 With the performance problems crippling Borges, Borges is like a wet dream alright, but the kind of wet dream that after you get into it, you open your eyes and see its your grandmother. Erg.