Free!

gnat on 2004-03-19T09:21:50

I sent out a draft of the OSCON schedule to the committee members today. What's that? You want to hear the story of my three weeks of hell? Ok! (one of those long stories of personal hacking that is inevitably boring to everyone else is about to start, be warned)

I began by farting around with databases and Excel spreadsheets. Initial attempts involved automatically producing a tab-separated grid of talks before I tried to get smart and use Excel styles to colour-code tracks of talks. This would, the thinking went, help me figure out whether I had, for example, inadvertently scheduled all the Ruby talks for the same time (I haven't). I pissed around for ages trying to find an elegant way to do this without having to learn the juju of Exce::WriteExcelSpreadsheetWritinglyForExcelInSpreadsheetFormThatIsCompatibleWithExcel or whatever that module is.

Finally I gave up on the colour coding. I laid things out quickly in Excel with time on the X axis and rooms on the Y. I began with one track per room, and shuffled and sliced until I had something that was roughly equally disadvantageous to every track. Then I saved as tab-separated and began slicing and dicing in Perl.

First I extracted the records into one file per time slot. So each record had 12 or so lines, one line per talk going on at that time. Then I could reorder the lines roughly in order of what I thought their popularity would be. Popular talks, at the top of the files, will go in the big rooms. More niche topics, at the bottom, will go in the small rooms. This left me with 14 files (6 sessions for Wed and Thu, two on Fri).

I then wrote another Perl program to convert those text files into pretty HTML. With CSS! I speak baby CSS, but it's still enough to make me VERY happy. Anyhow, the result was ten or eleven HTML pages, one per track. Each page contains a full grid of the conference, with the sessions in the current track highlighted. It's cool to be able to click from page to page and see sessions light up and fade away.

Life didn't get easy until I moved to text. Perl helped every step: extract data, produce Excel input, produce text files from Excel output, produce HTML from rejigged text files. Lovely lovely Perl. I've really fallen in love with saving Excel files as tab-separated and using Perl.

Anyway, so the schedule's in the committee's hands and I'm happy about it. It was a total bugger this year because of this "move popular sessions to the big room" approach. We tried that in years past, to some extent, but we tried to keep tracks together. So if you were a PHP guy, you could stay in the PHP room all day and see nothing but PHP talks. This year you'll be jumping from room to room. This may be chaotic, I don't know. We'll see--it was requested by the committee members of tracks that weren't Perl, so they wouldn't have overflowing tiny rooms while Perl ate the 250 person rooms because one talk that day was Damian.

So instead of 12 rooms by 3 days = 36 things to juggle, I've been juggling 12 rooms by 14 timeslots = 168 talks. This, I've discovered, is enough to make my brain turn to jelly.

I'm going to play with my kids this weekend, maybe read a little of the CSS Cookbook or AI for Games Programming, and in general enjoy being free of the Curse Of The Schedule at last.

Have a great weekend, I know I will!

--Nat


CSS

jesse on 2004-03-19T16:30:11

I then wrote another Perl program to convert those text files into pretty HTML. With CSS! I speak baby CSS, but it's still enough to make me VERY happy. Anyhow, the result was ten or eleven HTML pages, one per track. Each page contains a full grid of the conference, with the sessions in the current track highlighted. It's cool to be able to click from page to page and see sessions light up and fade away.


With a tiny bit more CSS fu, you could have just marked each talk's table cell with a class="trackname" and done the buttons up with a tiny bit of javascript to toggle the CSS styles. presto. one page. ;)

Re:CSS

gnat on 2004-03-19T21:52:52

With a tiny bit more CSS fu, you could have just marked each talk's table cell with a class="trackname" and done the buttons up with a tiny bit of javascript to toggle the CSS styles. presto. one page. ;)
I realized that when I wrote it, but debugging Javascript and CSS is such a nightmare that I figured it was much easier to slap a foreach loop around the code.

Don't give me shit. I like my hammer :-)

--Nat