There are two experiences in my life that caused me such embarassment that though years have passed, when I reflect back upon them for more than a few seconds, I find myself subconciously curling up into the fetal position with a pained expression burned into my face.

These are not those experiences. But, they are experiences that were embarassing at the time.

Now that JavaOne is half-way upon us, I couldn’t help but think back to an experience at both JavaOne 2003 and JavaOne 2004.

At the JavaOne 2003 show, I attended a Birds-of-Feather (BoF) session given by Kohsuke Kawaguchi, one of Sun’s XML wizards. He was talking about his interesting JARV project, which incidentally was a strong inspiration for the new Validation framework in JAXP 1.3 (the JAXP bundled with Java 5). As the time to start his talk drew near, it became apparent that something was wrong. He was tinkering with his notebook in desperation, and soon that heart-dropping expression crossed his face that we all innately recognize — and it was clear that his notebook just wouldn’t boot. It was some PC notebook running some Linux install. Now, you have to understand, I’ve sat through a lot of presentations in my life. Mostly, they’re accompanied by a Windows laptop running PowerPoint, and it always inevitably runs without problem. But, on the rare occasion that a presenter brings a Linux laptop, in my experience the speaker inevitably has problems getting the presentation to work. Nearly without exception.

So when this happened to Kohsuke, I found myself thinking, almost a little smugly, “This would never happen to me.”

Kohsuke saved the day by whiteboarding his presentation live in front of all of us. And, it went pretty well! At least, I learned a lot about JARV and wound up using it quite a bit thanks to the excellent presentation. Great job, Kohsuke, on both the talk and the software.

Fast-forward to JavaOne 2004. I’m presenting a BoF in the same hotel just a few rooms away from Kohsuke’s presentation. It’s a multimedia presentation explaining how the GlooLabs Java-powered WiFi MP3 player works. I’ve got a great PowerPoint presentation, some multimedia demos, and live code examples all queued up.

And, just before the time to start, I take the AC adapter, already plugged into my trusty Windows laptop (IBM ThinkPad), and plug it into the hotel’s cheap, dingy little power strip. And, you guessed it, bye-bye laptop. The LCD instantly turned off. I didn’t panic, I just rebooted. I can’t tell you how relieved I was as everything came up normally. The blood flowed back into my extremities and… the video died after about two minutes. And it died again after I rebooted. And again. In fact, I was able to reproduce that behavior for the rest of the laptop’s (short) life. Plugging in an external monitor (e.g., the LCD projector) made no difference. The video card, my friends, was fried.

Ahhh, life’s little ironies. I followed Kohsuke’s example and whiteboarded my talk to a crowd of folks who came expecting to see the MP3 player in action. Folks were complimentary, but I felt really, really stupid. The happy coda to the story is that right after my talk, I crossed the street (both figuratively and literally) and bought my replacement notebook* at the Apple Store and have enjoyed being a serf in Steve’s little Cult of Mac ever since.

While I’m talking about embarassing conference moments, I have to throw in one I had at OSCON 2004. I presented there too, though I don’t think I did anything embarassing while delivering my talk. No, the moment came for me when I listened to Jim Hugunin talk about IronPython. So, I admit, at this point in my life, hating Microsoft was a personal hobby. And if there’s any group that despises Microsoft more than the Scott McNealy of this era, it was the Open Source crowd.

So when Jim announced in his talk that he had accepted a job at Microsoft, I shouted out a playful “Boo!”, expecting others to snicker or join in. Instead, everyone in the section of the room I was in turned around and stared at me, all effectively communicating, “What kind of moronic freak are you?” I sat pretty silent for the rest of the talk.

You know, while I’m at it, I have a near miss from JavaOne 2005 I’d like to share. I delivered two talks at that show; my “almost-embarassing-moment” comes from the Ajax BoF that Dion Almaer and I gave together. Our talk submission completely pre-dated the Ajax phenomenom — we submitted it even before Google Maps came out, but just after folks were starting to notice XMLHttpRequest.

Of course, in the months that followed after the talk was submitted, the Ajax movement caught on and was incredibly popular around the time we presented at JavaOne. In the meantime, Dion and I had started, and we spent a lot of energy tracking the Ajax evolution. When it came time for our JavaOne talk, we treated the talk as an opportunity to teach folks about Ajax, and didn’t pay much attention to the BoF abstract we submitted (with BoFs, you bring your own slide deck and do your own thing).

As it turned out, Dion and I had a few hours of spare time before we gave the talk. So we thought we’d have some fun. The first thing we did was code up a Google Maps engine from scratch. For months we’d been telling people it was easy and that they could do it in a few hours; we thought it was high time we walked the walk. And, as it turned out, we finished it in a couple of hours**. In the thirty minutes before the BoF started, as we were relaxing with Howard Lewis Ship, we thought, “Hey, why don’t we add off-line capabilities to that Ajax RSS Reader we made?” So, about two minutes before the BoF started, we finished the off-line mode feature, which lets you download feeds by consuming Blogline’s Web Services API and save the results of the feed to disk (yes, using JavaScript) so that even if you clear the cache and quit the browser, you can relaunch the browser and read your feeds, even if you’re off-line.

The near-miss embarassing moment came when, as we presented the talk, more than a few people asked, “When are we going to see the off-line mode?” That caught us completely by surprise, because to us, we were talking about Ajax, but, of course, in the abstract, that particular aspect of the presentation was given prominent mention. We were happy to demo the off-line mode that we had just barely finished coding, but man, that would have really looked bad if we had said, “Err, yeah, no off-line mode, but what do you think of this neat Ajax effect?”

Ahh, memories. I wonder what JavaOne 2006 will hold in store?

* The change of term from “laptop” to “notebook” here is more than stylistic. Those PowerBooks run HOT! In fact, if you read the manual, Apple clearly states that — get this — it’s not designed to be used for extended periods of time ON YOUR LAP. Which is why, if you study their materials, you will never, ever see Apple refer to their PowerBook notebooks as “laptops.” They’re not.

** If you’re interested, our upcoming Pragmatic Ajax book has the code from that experience, demonstrating how you too can build your own Google Maps style UI.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s