Log in

No account? Create an account
OSCON, Wednesday - brad's life — LiveJournal [entries|archive|friends|userinfo]
Brad Fitzpatrick

[ website | bradfitz.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

OSCON, Wednesday [Jul. 9th, 2003|09:36 pm]
Brad Fitzpatrick
[Tags|, , , ]

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

[User Picture]From: denshi
2003-07-09 10:11 pm (UTC)
Postgresql & Oracle both create the query plan before caching a prepared statement. So the savings is much more in path analysis rather than in SQL parsing. (It's a slightly embarrassing terminology overload.) Did that come up? Are stored query plans referred to with another term in the MySQL world?

I know close to zero on interpreter design, but AFAIK you can't do continuations with a stack-based interpreter. So Parrot needs registers for that alone. As for speed, I have no idea.
(Reply) (Thread)
[User Picture]From: brad
2003-07-09 10:28 pm (UTC)
Well, a prepared statment can have parameters, the values of which can often influence the execution plan...
(Reply) (Parent) (Thread)
[User Picture]From: denshi
2003-07-09 10:37 pm (UTC)
I shouldn't argue databases when I haven't been paid for them in over a year.

I recall there being some non-negligible amount of analysis possible with a query before parameters are inserted.
(Reply) (Parent) (Thread)
[User Picture]From: jwz
2003-07-09 10:41 pm (UTC)
Miguel is hilarious. He's possibly the most hyper person I've ever met (it's a toss-up between him and Don Hopkins.)

Next time you see Nat, get him talking about [any time he was drunk].
(Reply) (Thread)
[User Picture]From: brad
2003-07-09 10:52 pm (UTC)
I'll be talking to Nat Friday, if not tomorrow. I'll try and steer him in that direction. :-)
(Reply) (Parent) (Thread)
[User Picture]From: mart
2003-07-10 02:46 am (UTC)

"Free" as in lunch :)

Heh. I think Microsoft's banner's quite funny, actually. It almost makes me forget who it represents!

I wish I could go to one of these things. Why does everything cool have to happen in the US? :)

(Reply) (Thread)
[User Picture]From: scsi
2003-07-10 08:09 am (UTC)

"Free" as in lunch :)

I can't believe they had the balls to show up to an open source conference since almost none of their crap is open source. I wonder if they had to give a free lunch to keep the crowd from booing them right off of the showroom floor...

I wonder if anyone was wearing a "Linux: Because Windows Sucks" shirt.. :)
(Reply) (Parent) (Thread)
From: evan
2003-07-10 09:18 am (UTC)
I'm envious.

The whole register selection problem seems really hard to me, especially because for the only platform most people care about you only have four of them-- and language that provides any will provide more than four, so it does seem premature.

Here's (one of) Dan Sugalski's essays on it, but I can't seem to make out his argument... I think it's mostly that registers are better in the non-JIT case, I guess?

Really, I want Parrot to "win" but only in a non-technical/anti-ms/pro-(perl|ruby) sort of way. The worst outcome is for all of GNOME to use CLR, then have the scripting languages using Parrot, and then we're back to the interoperability/"binding" problems we have right now, but just with slower languages.

And Dashboard is neat in a whiz-bang sort of way, but I'm still not sure I'd have any use for it. You should read Nat anyway: natfriedman_rss.

Oh yeah, and there's a LiveJournal-friends-page-ish aggregation of the GNOME developers up here now... two of them use LJ, at least. :)
(Reply) (Thread)