JavaOne, day 4+
By jag on May 21, 2006
The After Dark party on Thursday was a lot of fun. The Mythbuster guys were a riot to talk to. They helped judge the t-shirt contest this year. First prize went to "Didactic Whoosh": Roberto Diaz, Chris Wilson, Iian Klinghofer, Mike Hollatz and Mitch McCuiston. They built a 6 barreled cannon that was a wonder to behold: solid engineering and (amazingly) no weird parts that couldn't be found at a local hardward store. They used standard sprinkler valves which conventional wisdom says don't have wide enough throats or fast enough opening times to work properly, but they did. It was quite a thundering spectacle when all six barrels fired at once.
Second place went to "Chariot Solutions": Rob Butler, Dmitry Sklyut and Andy Oswald whole slammed together a chainsaw and what was roughly a baseball pitching machine. It didn't work as well as it should have because at the last minute the Fire Marshall made them get rid of the powerful gas chainsaw that they originall built it with and substitute a somewhat wimpy electric chainsaw - the issue was the fumes laden with uncombusted gasoline that the engine spews.
Third place wend to " World Cup Champions": Bruno Souza, Leonardo Galvao and Vinicius Senger. They're from soccer-mad Brazil and produced a launcher what was a performance-art piece. When choosing between the second and third place teams I said to Adam Savage "It looks like a choice between style and mayhem". His answer was roughly "In my book, mayhem always wins".
The contest was great fun. Thanks to all the teams for all the time you put into your entries. It worked really well doing the contest during the party. Beer and mayhem: yum! Think up some great hurling ideas for next year!
I had to duck out of the party early because we were rehearsing the Friday morning keynote during the second half of the party.
The other piece of geek craziness was the slot car racing programming challenge. By Thursday afternoon when it was getting down to the wire for choosing the three finalists, the race track area in the pavillion got seriously crushed with people (it was always pretty crowded). Hackers were getting pretty creative with things like acceleration profiles and inventing antilock breaking algorithms - the name of the game is keeping the tires in static contact with the track, as soon as they start sliding life gets pretty tough. At the end of Thursday the three finalists were Peter Whitfield, Robert Chou and a team of 4 university and high school students: Anna Partheil, Michael Partheil, David Jahn and Georg Wetter (they got to JavaOne by winning a programming contest in Germany). After the pavillion closed, the track was moved to the stage in the main hall and the finalists got some time to practice and tune. When they first ran, all of their cars flew off the track. So they all actually started to carefully detune their entries, since they all wanted to finish the race with no aerobatics. By the time the final race happened, everyone stayed on the track for the whole race. Peter got first place, followed by the German students, and then by Robert. It was a great race: thanks everyone. Thanks especially to Greg Bollella, our lead real time geek, who was the driving force that made it all happen.
It wasn't all fun, I did have some serious work to do. My keynote on Friday morning was all demos with color commentary. The demos were:
- Tom Ball showing off the Jackpot refactoring/reengineering engine for NetBeans. It opens up the whole concept of refactoring to all sorts of user-defined transformations. For example, it can be used for eliminating deprecated methods, migrating APIs, doing code cleanup or enforcing coding standards.
- Next up were Petr Suchomel and Martin Brehovsky from the NetBeans mobility team who put together a great end-to-center-to-end demo. At one end they connected an RFID reader to an embedded controller running JavaME with the guts of a cellphone for connectivity - even though it's not a "cellphone" NetBeans mobility did a great job of enabling the development of the code. In the center was an app server (in Prague) that implemented a suite of web services for package tracking. At the other end was a cell phone running a couple of apps (written in JavaME using NetBeans, of course) that made it possible to first register interest in a particular package, and second react when notified via push-SMS from the app server when the package was seen on the RFID reader.
- This was followed by Nedim Fresco and Hinkmond Wong showing off the cool features of
JSR 209, which brings a large part of Swing and Graphics2D to JavaME/CDC. High performance imaging... the ability to use GUI editors like Matisse... multithreading... lovely!
As an added bonus, Nandini Ramani (with some help from folks at SavaJe) ported the leaderboard app I had written for the slot car race to the SavaJe phone. It was apparently a trivial task, except for a bug (in my code) where I had a timeout in some network error recovery code that was a little too tight for the latency of socket connection through the cellphone network.
- Then came Greg Bollella talking about the next generation of our real time VM that incorporates a new garbage collector based on some research from the University of Lund. It gets really interesting when you put an app server (with 5 hours of tweaking to take advantage of a few RT features) on top of it. They did a benchmark where they set up the app server to serve two ports that were identical except that one serviced requests using regular threads, the other serviced requests using real time threads. Then they loaded up the server with a bunch of other tasks to slow things down and turn it into something of a worst-case situation. Here's a graph of the distribution of request response times:
The red bars are from the real time threads, the blue are normal threads. To be fair to the non-real time numbers, I should point out that the graph was rendered with the red bars on top of the blue bars, and a large number of the non-RT responses are hidden under the red bars. As you can see, the real time server has tightly bounded response times, where the other has a significant number of outlyers. This isn't just the result of a rocket-science garbage collector: paying close attention to RT issues like queueing, scheduling and priority inversion all have a noticable effect. These dramatically great numbers don't come for free: there is a tradeoff between predicable timing and aggregate throughput. Most software optimizes for throughput, and this is generally the right thing to do. But sometimes, timing is more important.
- Next came the slot car race, which I've already mentioned.
- Lastly, I finished with a tour through Tommy, the DARPA Grand Challenge vehicle build by Paul Perrone of Perrone Robotics. It's a lovely piece of work about which much has been written. A clean architecture... AI and device control all in Java on three processor boards.
After over a month of not getting more that 4 hours sleep a night, I finally got home and slept...