It was another great weekend at No Fluff, Just Stuff … this time in Seattle. I had to leave early this time, so it felt like I just flew in, gave my talks, and left. But not before one_really great_ session.
My talk on Aspect-Oriented Programming and AspectJ is always popular, and this time was no exception. Somehow we had the smallest room at the conference, and it was standing-room only. And I had some excellent (if not particularly lovely) assistants: fellow AspectJ enthusiast Ted Neward sat in, as did Andreas Schaefer (who gave a talk on JBoss’s AOP framework on Sunday). Maciej Zawadzki, who is working on some very neat stuff with AspectJ, was there. And best of all, sitting at the back of the room was Gregor Kiczales, who led the team that developed AspectJ.
Everyone chimed in, and there were a lot of great contributions from the audience. It was a privilege to lead such a session, and I think everyone in the room would have enjoyed it if it had lasted twice as long. Events like that are a strength of the NFJS symposiums—when knowledgable speakers attend their colleagues’ talks and chime in with their own expertise, everybody wins.
Gregor gave me some very helpful feedback on my talk, so next time it’ll be even better. I’m looking forward to it already!
I helped Dave and James put together OSCON’s Ruby track this year, so I’m really disappointed that I didn’t get to attend the show. I really enjoyed it last year. But I’m very pleased at the Ruby track that resulted, and thrilled about Steve’s assessment.
Of course, Dave had his “Ruby in a Day” tutorial, and Matz got to speak about the thinking that gives rise to Ruby. For OSCON, it was crucial to have a Ruby talk aimed at those with a Perl background, and Phil Tomson came through. And Rich Kilmer spoke about FreeRIDE, the Ruby IDE he’s been developing. (FreeRIDE has a very interesting architecture, and I’m especially sorry I didn’t get to see the talk.)
One of Ruby’s real strengths, in my opinion, is its power for metaprogramming. Of course, many dynamic languages allow you to do such things, but in most languages the code for metaprogramming is almost otherworldly … as soon as you start doing those kinds of things, your code becomes difficult for most people to understand. Metaprogramming in Ruby is unusually expressive and straightforward, and we found some great talks that showcase that capability. Michael Granger and David McCorkhill started with a discussion of classes that adapt to the data they’re representing. Chris Pine contributed an overview of the basic concepts behind Ruby’s dynamic capabilities. And finally, Dave wrapped up with a talk I’ve been waiting to see for a year: a case study of a fascinating project he did last summer.
I think the next year will bring great things for Ruby. I think Mac programmers will continue to discover it, since it is bundled with Mac OS X. Ruby 1.8 is soon to be released, and no doubt it will be followed by new editions of the popular Ruby books. And if Steve’s assessment of the mood at this year’s OSCON is correct, there are a lot of Perl developers who see in Ruby something they’re looking for.
Next year I hope to do more than help organize the OSCON Ruby track; I want to be there and contribute a talk of my own. Hopefully after the strong showing Ruby made this year, there will be more slots available for Ruby next year. A strong group of proposals can only help that effort, so start planning now!
About an hour ago, I saw Rael Dornfest’s musings on Python. As I read it, I thought to myself, “Sounds like Rael would really like Ruby,” but didn’t think any more about it.
But just now NNW updated Chad Fowler’s blog, and I see that Chad thought exactly the same thing! Rael, if one more person had the same thought, I think you’re bound to give Ruby a try.
(Of course, I’m not sure this is really that significant; after all, every language bigot always thinks, “Oh, <my favorite language> would be perfect for that!” at the least provocation. But I’ve seen Rael’s Perl code, and he really does need to give Ruby a try. And the source to RubLog might be a great place to start. :-)
The single coolest feature—at least from a purely technical standpoint—of the last major version of Mac OS X was Quartz Extreme. When I first installed Jaguar, graphics operations were noticeably speedier, and it was nice to know that much of the work was being done by the graphics card, not by the CPU. Then I discovered screen zooming (find it under “Universal Access” in system preferences). It’s a breathtaking effect. I often use it during demos when giving a talk, because other windows on the screen use smaller fonts than PowerPoint, so it helps the audience if I can zoom in on them. I nearly always hear some under-the-breath reaction from someone in the audience when I first zoom in.
It was immediately clear that screen zooming was achieved by exploiting Quartz Extreme. The fact that the entire desktop is now an OpenGL scene, with each window an OpenGL object, makes the effect both easy-to-implement and fast. James Davidson and I immediately began wondering when Apple would begin using that underlying tech to do other neat things with the desktop.
We didn’t have to wait long. Yesterday Apple showed some previews of Panther, and there are two features that exploit the power of Quartz Extreme to good effect.
The first is Exposé, which I described to a friend as “the Win2K ‘Show Desktop’ button, minus the ‘sucks.’” Try out the demo on the webpage, and you’ll see windows smoothly receding from view until all of the windows on the screen are visible, and then zooming back to normal size again.
On the website, Apple introduces that effect by saying, “Because we can.” In user interfaces, at least, a little of that attitude goes a long way—but I think this is a great place for it. Dazzling effects like that would be distracting and annoying in most parts of the interface, but both of these events—stopping to look for a new window, and switching users—are inherently disruptive events, and they’re great places for Apple to show off a bit. Architecture isn’t everything, but it does matter, and nobody knows that better than Apple (who labored under the burden of a terrible OS architecture for years). Of course, the OS X architecture isn’t perfect, but starting from a mostly clean slate is a big advantage, and now that they’ve pulled the switch off I’m sure they’re gleeful.
Be careful with the desktop experience, Apple—but keep having fun. It’s one of the things we like about you.
(via my java.net blog)
(After the flurry of blogging last week at JavaOne, I’ve had to concentrate on work for a while. But I have a lot of notes from the conference that I’ll continue to write about for a while.)
My introduction to collaboration software was a talk by Pavel Curtis at a USENIX conference in January 1995. He talked about his research project, Jupiter, at Xerox PARC. That talk spoiled me … none of the available collaboration software has measured up to the vision of Jupiter that Curtis presented that day.
Curtis and most of the Jupiter team spun off a startup, PlaceWare. They reimplemented the core architecture of Jupiter in Java, and began selling a successful product, PlaceWare Conference Center. (Although it’s a nice product, I’ve always been a bit disappointed that they didn’t offer a product aimed at the same space as Jupiter – passive, continuous team collaboration and awareness.) I was interested to learn during Jonathan Schwartz’s general session on Tuesday morning that PlaceWare has been acquired by Microsoft. It’ll be interesting to see how Microsoft deals over time with this large system built in Java – and also whether Microsoft’s stability and clout will allow PlaceWare to resurrect that original vision.
In the meantime, though, there are others in that space. After the Wednesday general session (notable primarily for demos gone wild) I went to a session on the wonderful support for Java in Mac OS X. It was a great talk, with a really compelling and completely successful demo … a demo of collaboration software that gave me an unmistakable sense of deja vu. Marratech is team collaboration software along the lines of the old Jupiter project.
The speaker, Alan Samuel, opened an online video conference with Serge Lachapelle and two other developers from Marratech. The Marratech group was in Sweden, and the conference was conducted over the public Internet. Four audio and video streams (although presumably the audio streams were dropped when there was relative silence) plus shared documents, with the other Marratech developers annotating the slides while Serge talked. Marratech is a Java product, and while it wasn’t developed initially on OS X, the port was very easy and it’s now their flagship platform. Best of all, the demo went off without a hitch.
I was particularly pleased with the quality of the audio. I was sitting right in front of one of the rear speakers in the lecture hall. Serge’s audio feed, encoded in real time, shipped across the Internet, decoded on Alan’s PowerBook, sounded just as good as Alan’s voice, going directly into the Moscone microphone and sound system.
I think everyone present was impressed – and the best part was that the Marratech guys in Sweden got to hear our applause.