Wow. What a rush. But I mean that literally.
I've
known for a few months that I'd be delivering a
three hour tutorial on Seaside at
OSCON. But like many of the activities, I didn't actually start writing the materials until last week, and I'd been sweating bullets trying to generate what I believed to be enough material to fill three hours.
I'd settled on a basic outline that included:
- A quick intro to Smalltalk and the Squeak GUI
- Basic concepts of Seaside (starting from configuring a "hello world" application)
- Forms and state
- Subcomponents and call/answer
- Magritte
- Persistence
- Other bolt-ons (testing, ajax, etc.)
The last few items existed only as a single page each full of about eight bullets, hoping that when I had gotten to there, I could simply go off and show web pages and do some handwaving, rather than produce real code, because I was running out of time to write the code I wanted to show.
I had decided to use a "demo first, then summarize what I showed on slides" approach, because this means that the slides could be a bit more outline-like, since they didn't need to actually teach the material. This is a different teaching style from what I am most familiar with—the
Perl classes are almost all slide-driven, not demo-driven.
I decided for the demo that I would create and elaborate on a simple "To Do List". Yes, I was inspired by the now-classic
Potsdam Tutorial, but I came at it my own way, trying to figure out how to change the fewest lines of code to get to the next working program and yet continually illustrate a new feature each time. I rehearsed my presentation Saturday with Tom Phoenix, my fellow Stonehenge presenter, who was also going to be in the front of the room with me in case I passed out or got tongue tied. When I realized that this particular example really illustrated a lot of good ideas, I knew I was on the right track.
When I had first pitched the idea to OSCON, I wasn't sure what kind of turnout I'd have. After all, my Seaside talks hadn't been accepted to the main OSCON tracks (I believe they were deemed "not relevant enough"). So with the idea of an additional three hours for which people would have to pay to attend, and on Monday (the most distant day from the rest of the conference), I had decided that I would be "extremely pleased" if as many as 15 people showed up.
At
Smalltalk Solutions 2008, James Robertson of Cincom offered me the opportunity to hand out Cincom VisualWorks installation disks to my students, which I readily accepted. I said I'd get back to him with a number so he could ship them to me. When I asked O'Reilly what my pre-registered number was, I nearly fell out of my chair when the response was a whopping
41 people. James sent me 50 disks (bizarrely each individually bubble wrapped, and in a box that also had bubble wrap filling), and that was followed by Monty Williams of GemStone quickly burning 50 DVDs of
GLASS for me to hand out as well.
And, it turns out that by noon today, a total of 55 people had signed up! The room was nearly packed. The people were attentive, and asked good questions, and were generally following along, including being in wonder and awe when I got to the intra-hit debugging and talked about how the continuations provided a level of control-flow abstraction.
But, here's the crazy part. By the midway break, I'd covered only the basics of Smalltalk. I hadn't even started the Seaside part! I spent the last 90 minutes building the basic "To Do" application as a simple single-page form, adding items from a field at the bottom, and having a "delete" button by each item to remove it. So I had clearly underestimated the amount of time it takes to walk through the material, and had clearly over-prepared.
I didn't even get into changing each item from a simple string into an Action object, creating a subcomponent for the bottom form, or using call/answer for validation. None of the stuff that I had prepared beyond the initial code. Well, sounds like I really have eight hours of material already. That's good, because I'm going to need it on my next delivery. Yeay.
In short, my first "big" Seaside tutorial went very well, and the feedback was great, and I suspect quite a few of the students will be experimenting with Seaside (or at least talking about it), if not strongly considering it for a near future project. Smalltalk and Seaside clearly are on the radar of many people now, and the attendance and the attentiveness of this tutorial shows that we are on the right plan.
But I'm beat. And tomorrow's another day.