Older blog entries for Rich (starting at number 9)

YAPC is as much (and for some folks, more!) about the social aspects as about the technical aspects. It is a community conference as much as it is a technical conference. It is therefore appropriate that I tell you about YAPC by telling you about the meals that I had while there.

Tuesday evening, I had dinner at The Olympia, a nice Greek place a few block from campus. I had a wonderful gyro and some retsina. We talked about software testing, the origins of retsina (no, it does *NOT* taste like pine sol, thank you very much) and the business practices of ISPs. In attendance were Deven Corzine and his brother Scott, Amagosa, Geoffeg, and Ken Rietz, all of whom, with the exception of Deven, had driven down together from Louisville. We also had some of the specialty of the house, fried cheese, presented at the table with great ceremony by setting it on fire. Flaming food is a Good Thing.

On Wednesday, I had dinner with a group of authors from the various subsidiaries of Pearson Education - formerly known as Macmillan Publishing. Why companies throw away name recognition has always been beyond me. Even when I did it myself. Among several other people, one of those present was Geoffrey Young, the author of mod_perl Developers' Cookbook. Now, I have been teaching mod_perl classes for some time. And I have been developing mod_perl applications for a while also. Geoff made me feel like I did not know much - which is to say, he was so completely knowledgeable about mod_perl that, by comparison, I felt like a beginner. His talk on Thursday was a great success in opening my eyes to some of the things that are possible with mod_perl.

Also present was Andy Lester, who talked about his ideas for a new book. This sparked a number of very interesting side-discussions, but I don't really think that I ever got a good idea of what he wanted to write about. We'll need to talk about that some day. Anyways, Andy wanted my module Apache::Perldoc to do something that seemed rather obvious in hindsite - rather than just generating the docs for any installed Perl module, it now is able to act as a content filter of sorts, converting .pod files to HTML on their way out to the client. Get the newest version!

Thursday evening, we headed out to Brent Michalski's house, where he grilled what seemed like a ENORMOUS amount of hamburgers for the 30 or so people that showed up, including the majority of the Perl 6 development team - Larry Wall, Damian Conway, Simon Cozens, Jarkko Hietaniemi, and many others. As the sun went down, we were treated to a show of the musical talent in the Perl community, with guitar, banjo, and electric guitar, and various people singing late into the night.

On Friday, about 20 of us went out for Thai food for lunch. This was really wonderful. Ordering for that many would have been a problem, so we just asked them to bring us a bunch of food. Which they did. And we ate, and ate, and ate, getting back just shortly before Damian's closing talk. Mmmmm. Thai::Food.

Then, Friday evening, I persuaded some folks to go with me to an Ethiopian restaraunt, which later got changed to a Vietnamese place, and, by the time we actually go there, a Welsh Pub. Um. OK. Quite a shift. But it was very good, and the company was fascinating. I sat by Nathan Torkington, Jon Orwant, Simon Cozens, and a plethora of other folks.

No summary of YAPC would be complete without mentioning Sarah Burcham, who did most of the work to pull it all together. Sarah is wonderful, and did an awesome job pulling this conference together. As she observed today, the most important thing is that the conference happens, not where, or how far apart the rooms are, or whether there are meals provided, but just that there is the meeting of minds.

26 Jun 2002 (updated 26 Jun 2002 at 11:27 UTC) »

5am, first morning of YAPC

Sarah Burcham, the wonderful person that organized YAPC this year, got us in contact with an employee of the University who offered to have us crash at his place. Expecting something a little more ... well ... little, we discovered that it is a *beautiful* home just a few blocks from campus. Our host is very generous, making us feel very much at home, and even made us cookies (with his daughter) with our names on them!

Well, I'm awake because I'm on Eastern time, and also because one of our fellow-lodgers is snoring resoundingly from the next room. How can someone snore that loudly and still be able to talk the next day? Wow.

Today should be a good day. Some interesting talks lined up. I'll probably wait to a slightly more decent hour before getting up and getting a shower.

Photos at http://buglet.rcbowen.com/photos/2002/yapc/

This has clearly been the week for cluelessness, from NPR claiming that I need their permission to link to articles on their site, to ISS pretending that they could find their rear end with both hands and a flashlight. Can somebody point them in the direction of where the clues are kept?

I managed to get my conference presentations in on time, for both conferences. I'm doing two talks at the OReilly conference - Intro to Apache, and Migrating to Apache 2.0. I expect that I will end up making both papers quite a bit more verbose over the next month before the conference, but I am pretty happy with them as they are.

I also, last night, submitted 5 (yes, five) talks to the OReilly OSX Conference. I think it's the same 4 that I submitted to the OSSCon, plus the "Migrating to 2.0" talk that I've developed since then. There are two bad things that could happen. Either none of them get accepted, which would be bad, or all of them would be accepted, which would probably be worse. If 2 or 3 of them are accepted, I would be very happy. Of course, that would mean that I would have to locate an OSX machine somewhere. Although folks assure me that it is indistinguishable from BSD, I have my doubts about this.

Final item. This afternoon, I attended "ITEC" which was a technology conference/trade show in Louisville. It was sponsored by Intel and Gateway, and a lot of area tech businesses were there. I made a few good contacts there, and hopefully a couple of them will actually turn into something useful, like, say, paying work.

Day 5 of training class. This is perhaps the best student I have ever had. He asks the right questions, wants to experiment with what he has learned, and is very aware of what he needs to know, and what he does not, in order to do his job when he gets back. I need more students like this. Day 5 usually ends up being "let's get through this as fast as possible and get out early", but this guy wants to use the available time to the best benefit, and really learn this stuff.

Additionally, he's helped me improve my course, by pointing out all the places where examples would be useful, and he really wants to work through the examples.

Unfortunately, I have only one student this time around, so we really done even break even. But it's been a valuable class for me, and, I hope, for him. In fact, I've even learned some things in this process.

Meanwhile, I'm almost ready to send in my presentation for the OReilly conference. I'm sure I'll end up modifying it futher before I actually get there and give the talk, but I have to have them in by the 10th, which is Monday. Which gives me just a few more hours to work on this.

In the process of writing my presentation for the OReilly Open Source convention - Migrating from Apache 1.3 to 2.0 - I am learning so much about 2.0 it is a little alarming.

I'm reminded of when I wrote my first book - Apache Server Unleashed - and learned so much about Apache while writing the book. It was clear to me then that I was probably not the right person to be writing the book. However, during the process, I had to do a lot of work with the documentation, found a number of problems with the documentation, and ended up doing all I could to improve the docs through that process.

Although this won't turn into a book - I hope - I see some of the same thing happening in this process. In reading the 2.0 docs more thoroughally than I had done before, I am finding places that are either inaccurate or are incomplete and/or misleading, and more than a few typos and gramatical problems.

At the moment, I am working to arrive at a better understanding of the MPMs, and, in particular, the Perchild MPM, which promised wonderful things, but is still just a little incomplete. In particular, I'm trying to understand the whole thing of assigning a particular child process to a particular virtual host, which sounds pretty cool when you first hear about it, but seems to have a number of problems, even at the conceptual stage.

If a connection segfaults, it takes out the entire virtual host?

And in the case of the ChildPerUserId directive, if it really means that you are just assigning a user ID to a particular child process, what is to guarantee that all connections to that child will be for the desired virtual host. There's clearly a lot missing from this particular doc, and this is where the investigative documentation comes in - hassling the developers until I can get enough information to clarify the docs for normal people.

It's a special type of person that can develop these programs, but often they are unable to clearly articulate their ideas to mere mortals.

Released Date::ICal 1.61 last night. It is pretty cool, with things like overloading on - so that you can do

$duration = $date1 - $date2;

And there are some much more efficient internal algorithms, and a new class, Date::ICal::Duration, written by srl.

Get a new copy as soon as your CPAN mirror replicates.

In other news, I'm *almost* done with my book (http://www.apacheadmin.com/) which will be a happy happy day.

My publisher firmly believes that I spent the weekend writing a book, and I did in fact spend some of the weekend doing that. I even got some things done.

But most of the geek-time this weekend was spent working on Date:: Perl modules. I've submitted a story to use.perl about the new modules, and I don't feel like retyping it here.

The short form is that I wrote Date::Passover, Date::GoldenNumber, Date::Chinese, Date::SundayLetter, and updated several of my other Date:: modules. I think I also updated Apache::Htgroup, but that might have been on Friday.

I should have my copy of Calendrical Calculations any day now, and I really want to stake my claim to certain Date:: namespaces that look particularly fun. I almost wrote Date::Bahai this weekend (I might call it Date::Baha'i just for fun) but did the Chinese one instead because it is altogether more fascinating.

The Chinese calendar is *way* more interesting than the cycle of 12 animals that you've seen on your placemat at the Peking Moon. It is a cycle of 19 years, superimposed on a cycle of 10 years, superimposed on a cycle of 12 years. This is going to be a lot of fun.

Today I got out a new version of Date::Leapyear and a new version of Apache::Htgroup.

Randal Schwartz emailed me and asked why Date::Leapyear requires Perl 5.6. The real reason is that I lazily used h2xs to generate the module, and then never changed it. The new h2xs makes your module require 5.6, for no apparent reason. So I stripped that out and released 1.04

Someone asked me what license Apache::Htgroup was under. I've been meaning to attach a license to all of my modules, and had just not gotten around to it yet. So I stuck a LICENSE file in with the distribution and put up a new version, along with some other minor edits.

At TPC, we got a new version of Date::ICal out. Actually, about 3 of them. This was a complete rewrite of Date::ICal, in order to change the internals around and make it easier to work with.

The internals were icky, contained a lot of redundant code, and stored the date in several formats at the same time. So if you changed one, you had to make sure to go around and change all the others also.

Now there's just one authoritative internal format, and the other attributes are calculated from that.

Two changes that are still under consideration are:

1) Use Memoize to make sure that we are not recalculating the same stuff over and over. For example, when you call $obj->ical, it calls $obj->year, $obj->month, and $obj->day. Each of those, in turn, calls parsedays to get that attribute frome the julian date. That's just silly, since you end up parsing the date three times to get the ical string. Using Memoize will remove that, and speed things up by 3 in a lot of places.

2) Split the date/time floating point number into a date integer, and a time integer. We're getting round-off errors of a second, and that's just not acceptable. Splitting into two values will remove the roundoff, and be accurate for another 100,000 years or so. Should be sufficient.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!