July 9th, 2003


OSCON, Wednesday

Had a great time at OSCON today. Got to hang out / have conversations with a bunch of really cool, smart people:

-- Brian Aker, previously of Slashdot, now working for MySQL. Went to his talk on UDFs, talked about full-text indexing problems, threads vs. connections, the MySQL optimizer.

-- Michael "Monty" Widenius, lead programmer for MySQL, who kept feeding me and everyone chocolate-covered Vodka candies. I talked to him about memcached and he then gave me some pretty big hints on a major new MySQL feature coming in about 2 months. I'm excited.

-- Few other people from MySQL. Talked about threads vs. connections more, and caching prepared handles server-side based on query text. One guy liked it, but Monty said it wouldn't be a big win... parsing is fast. The advantage of prepared statements is in network overhead.

-- Miguel de Icaza, of GNOME and mono fame. Started by asking him about the Linux misc binary problems with wine and mono both fighting over PE files, then diverged into mono, S2, embedding mono, mono complication, mono optimizations, why he doesn't like Parrot, compiler tricks you can do when targetting CIL, why gcc sucks, etc.... The guy's crazy. He was talking to me standing up, one knee up, with his laptop pressed against his thigh, the laptop pointing nearly straight down, typing, demoing mono optimizations and the compiler and other features. He'd get excited and use his hand to make gestures, one hand still balancing the laptop. Another guy took pictures of that. Miguel recognized me from LiveJournal, that was cool. Nat Friedman, working on the GNOME Dashboard, talks about LJ often, I guess. I know he's mailed me a few times about it. I need to get him an interface to get Dashboard data.

-- Dan Sugalski of Parrot. I was skimming his Perl 6 Internals book during the signing session at the end and talked to him to get his side of things, asking why he'd chosen to use registers in Parrot instead of a stack like everything else. Miguel had earlier gone into a huge discussion about how stacks aren't inefficient because all bytecode interpretters JIT anyway, and the stack is just a serializing of the instructions. mono reads CIL and recreates the AST, then re-does all optimizations, including register allocation in the JIT. With a register-based system, the compiler targetting that bytecode has to do its own register allocation, said Miguel. Well, Parrot includes IMCC, Dan said, which is a small level above real parrot bytecode, and lets you have infinite registers, and the output is real parrot with register selection done. But in answer to why, his answer was just "It's faster." I brought up Miguel's point, telling him I was just playing Devil's advocate, that you have to do register selection later anyway, so why do it to start, and potentially kill semantic information that could be used for more JIT optimizations, but Dan was having none of it. Both are really smart people and both projects are interesting, so I guess we'll see what happens, but it seems like parrot is all about premature optimizations.

Didn't talk to Damian Conway, but his talk on the Perl 6 language had the entire packed room in awe.

Microsoft bought lunch, with a big banner that said, "'Free' as in lunch", which seemed a little tacky, but whatever.

Pics: http://www.picpix.com/brad/gallery/0008z69e