Nov 20 2004

ApacheCon US 2004

Went to the Apache conference, even though we hadn’t put all the finishing touches on the Reactor 6.0 release. Lousy timing! At least they had good wireless connectivity, so I could get some work done during the talks. I wrote up most of my notes on the drive back from Las Vegas, and just got around to finishing them today. (Don’t worry, my wife was driving, not me!) It was good to put some faces to names and hear “from the horse’s mouth” what people are up to. Also got to hang out with a couple guys from the good ol’ days of the CitySearch “technocage”.

Keynote: Wil Wheaton
I wasn’t sure what Wil Wheaton was going to talk about in his keynote. Himself, as it turns out. And the internet. His talk turned out to be pretty entertaining, and had a good point to it. What did I take away? A reminder that the internet has the potential to do good in people’s lives. He’s found a second career because of his writing through and about the internet. He talked about some creative folks who wouldn’t have had a shot except for the internet, and are managing to make a living at it now. Also a story about a friend with cancer whose lifeline of encouragement and support came through Wil’s blog, and how the Penny Arcade folks raised millions of dollars for children’s charities. Plus, he made us laugh at his misfortune.

State of Geronimo
The main reason given for developing Geronimo was that there was no comparable application server with the Apache license. Given the backstory of the folks who left JBoss to form the Core Developers Network and later joined Gluecode, I’m sure there were some personal/political reasons also. But it’s interesting that there was no compelling technical need to develop a new app server. It’s in stark contrast to the Perl folks, who seem to be able to get along with each other much better. There may be some duplication of effort and interesting personalities in the Perl community, but generally everybody releases their stuff to CPAN and doesn’t worry about what modules can be mixed together without violating license conditions. I’d like to think it’s just the commercial interests that mess up the Java culture, but I think it’s more than that. There’s signicant difference in mindset between the Perl and Java cultures that I can’t quite put my finger on. The closest I can do is say that the Perl folks seem to be more focused on just getting the job done. Anyway, back to Geronimo. Their main priority is to get J2EE 1.4 certified, and they’re not allowed to talk about how close they are. Since clustering isn’t in the spec, it’s not a priority for them. Bummer, since lots of things in the spec are much less useful. Geronimo has “last starter” advantages, like avoiding mistakes made by some projects, and reusing pieces from other projects. For example, HOWL sounds very cool.

Comparing Web Frameworks
Matt had released the slides already, and the talk followed them pretty closely. It seemed like Tapestry was shown in a better light than before. I can’t tell if that’s because Matt likes it better now, or because Howard was sitting in the front row. I had hoped to catch Matt at the end of the talk, since I’ve been working with him on a project for Oak Grove Systems. Unfortunately, that didn’t work out. Never did track him down. Regarding the talk itself, I think it underscored the sad fact that the Java community feels the need to keep writing more web application frameworks. There were lots of folks at ApacheCon that were badmouthing Java as bloated and slow. This is an old complaint, and the JVM itself is no longer slow. There’s no more excuse for server-side Java being slow, but it often is. C’mon people, let’s get our act together!

Ran into Chris Fry and Perrin Harkins, along with two of Perrin’s current co-workers at PlusThree. Grabbed the last five bag lunches, caught up on things, and had some good discussions.

Logging and Configuration
This was basically just an introduction to commons-logging and commons-config. I was hoping to hear some more advanced uses and wrinkles, but that didn’t happen. Oh well. At least I was able to confirm that commons-logging won’t let you change the configuration after it is initialized. You can change the logging level, but can’t be any more selective than that. Too bad, since I actually want to do that in some applications.

It’s cool I guess, but yet another Java web application framework. Good grief. I probably should have gone to the Clustered JDBC talk.

I’ve read a lot about Inversion of Control containers, so I was looking forward to this. Also wanted to hear Howard talk, since he’s done some interesting work. For the Martin Fowler fans who might be wondering why I don’t use the term “Dependency Injection”… well, it just sounds too painful. Anyway, HiveMind does look pretty cool. It’s got some good features to enable reuse and separation of concerns. I was glad to hear that Howard actually had some technical reasons for writing yet another IoC container. Also, he’s practical enough to realize the benefits of being able to incorporate components from Spring, which I would consider the IoC “market leader”. While I’m getting sick of XML configuration files, I think it’s cool that HiveMind lets you generate documentation about your components and dependencies. The biggest drawback from my perspective is a lack of hot deployment. I can see how that would be tricky to handle with a complicated set of dependencies, but there’s a pretty large class of users that can’t live with his suggestion to just bounce the server when you need to swap out components. I’d like to think that the name “lightweight containers” implies “fast and streamlined” rather than ”not as good as heavyweight”. Hopefully it’s just a matter of time until HiveMind is ready for users that need high availability even during upgrades. Meanwhile, I’m sure there are lots of organizations that can tolerate momentary downtime during planned maintenance. For them, HiveMind is now on my list for consideration along with Spring.

This talk had more than I really needed to know about mod_auth_ldap, but at least it was good to hear that it’s no longer labeled “experimental” for Apache 2.0. Meanwhile, I was able to find a power outlet to bail out my laptop’s drained batteries so I could get some work done. Despite the fresh power, I was still pretty unsuccesful in my battles with JWSDP and the JBoss classloader.

Intro to Derby
This could be a candidate for replacing HSQL as the embedded database in the evaluation download for Reactor. I know the MercyShips folks have been real happy with Cloudscape for their applications, but I think a big part of that has been the ability to pull the client off the network for a while and sync up with the server again later. It sounds like this feature isn’t really a priority for Derby right now. Oh well, the rest of it sounds cool.

Building Scalable Websites with Perl
This was my favorite talk of the conference. I’m not doing anything with Perl on large websites right now, so it didn’t have immediate practical benefit to me. But he’s a bright and funny guy, so I knew it would be interesting. The subject of query caching brought back memories from doing that 7 or 8 years ago. Wow, I guess the “Internet for the Masses” isn’t so new anymore. No wonder there’s not much buzz around cool sexy technologies for programming huge websites. The stuff that most companies need is pretty mature now. Perl, Mason, pregeneration, caching. It does sound like there are some choices for how you do caching, but Perrin is writing a wrapper that provides a common interface around different implementations. Kinda like the Apache Jakarta commons-logging around log4j and JDK 1.4 logging. Anyway, I jotted down some tips and tricks in case I need them sometime. Pretty straightforward stuff, though Perrin said “you can call them design patterns if it will raise your salary.”

Keynote: Miguel de Icaza
This turned out to be all about Mono, which I’m not really interested in. I was initially disappointed, since the program said Miguel would be speculating about the future. But he’s an engaging speaker, so it turned out ok. I agree with him that there’s plenty of room for tools/technology/etc to make programmers more productive. My favorite part was toward the end when he said “I’m tired, so let’s get to Q&A.” He still had some prepared slides left, so he just flipped through them, saying “read quickly… read quickly… crap crap crap… ok, make your questions interesting.” The first question was something like “Are you confident that Microsoft won’t come after you for patents in Mono?” He had a great reply, “Are you confident that Microsoft won’t come after you for anything you do? Next question.” He did elaborate a little, saying that any patents could probably be shown to be bogus because of prior art. This is all stuff that’s been done before.

This is a spec being developed by a committee, and you can tell. Even the presenter seemed a little tired of it. I am glad to see that there are caching semantics with invalidation, though.

Searching with Lucene
This talk reinforced my impression that Lucene looks pretty darn cool. The speaker joked that it might be a short talk, because the library is so simple to use. I’m looking forward to having an excuse to use it someday. The library has been ported to other languages, but word on the street is that the Java implementation is still the best. Ran into one guy who handled searching with Lucene, then uses CORBA to bridge to the rest of the system that was written in Perl. Sounds weird, but he was glad he did it.