|The Universe of Discourse|
12 recent entries
Sat, 05 Oct 2013
The talk is about Moonpig, the billing system that Rik Signes and I wrote in Perl. Actually it's about Moonpig as little as possible because I didn't think the audience would be interested in the details of the billing system. (They are very interesting, and someone who is actually interested in a billing system, or in a case study of a medium-sized software system, would enjoy a three-hour talk about the financial architecture of Moonpig. But I wasn't sure that person would be at the workshop.) Instead the talk is mostly about the interesting technical underpinnings of Moonpig. Here's the description:
Moonpig is an innovative billing and accounting system that Rik Signes and I worked on between 2010 and 2012, totaling about twenty thousand lines of Perl. It was a success, and that is because Rik and I made a number of very smart decisions along the way, many of which weren't obviously smart at the time.I went to sleep too late the night before, slept badly, and woke up at 6:30 and couldn't go back to sleep. I spent an hour wandering around Oakdale looking for a place that served breakfast before 8 AM, and didn't find one. Then I was in a terrible mood. But for this talk, that was just right. I snarled and cursed at all the horrible problems and by the end of the talk I felt pretty good.
Slides are available here. Video may be forthcoming.
Share and enjoy.
[ Addendum 20131217: I wrote up the talk contents in detail and posted them here. ]
[ Addendum 20131217: The video of the talk is available on YouTube, and has been since October, but I forgot to mention it. Unfortunately, the sound quality is poor; I tend to wander around a lot when I talk, and that confuses the microphone. Many thanks to Dan Wright for the video and especially for putting on PPW. ]
Offensive stuff in classes
Shortly before I gave the talk, I got cold feet. I asked a bunch of conference attendees if they thought I should take the picture out. All but one set yes, I should. The one dissenter was Gurusamy Sarathy, at that time the Pumpking, the Perl release manager. "Take it out?" he said incredulously. "Are you crazy?"
I left it in. I don't think it was an error.
I wonder, though, if I would have gotten away with it now. People are a lot more on edge about unprofessional-seeming and potentially offensive conference presenations. They also seem to be more common. When I hear about conference presentations with pictures of porn stars, or "humorous" presentations about projects to "titstare", I wonder where these morlocks came from; I've never seen anything like that at a conference and I would have been surprised and offended to see it ten years ago.
On the other hand, maybe I'm a hypocrite. One year at OSCON I did present a slide that used a still from a porno:
The porno in question was a full bladder fetish video.
Were there people offended by this then? I don't know; I hope not. Nobody complained, but that doesn't prove anything. I can certainly imagine people finding this extremely offensive today. But I still think it's hilarious. Would I do it again? I don't know, but probably not.
From the same talk, was the illustration I used on a slide about "bullshit". I don't know if that's more or less offensive. On the one hand, the picture is a lot more visually disgusting. There is no mistaking what is happening; in the omoroshi picture you might not realize what is happening. (At least one participant commented on my "clever visual pun", explaining "well, of course she's just bowing". "Huh," I said, "that would have been clever.") On the other hand, if you do take the omoroshi picture at face value, it could be understood as a powerfully misogynist image of the humiliation of a woman by men. On the other other hand, I could have used an identical image that wasn't from an actual porno and it could have been understood the same way. But then I would have had an ironclad defense: No, it's just a picture of a woman standing in a room. But it could be the same picture. So I'm not sure. Regardless, I will apologize to anyone who wants an apology; although I considered the image carefully at the time, I hoped that it would not offend anyone, but nevertheless recognized the possibility and chose to risk offense anyway.
Another conceivably offensive slide image I used once is below:
These are two-headed sperm; it's possible that this is an image of human semen. I can imagine someone complaining bitterly about this. Meng Wong told me once that if anyone ever did, I should soothe them by claiming that it was gorilla semen; then it would be all right. That does seem like it might work, although I'm not sure why it should.
But none of that is really what I wanted to discuss; I was only thinking about it today because because I was writing a new talk in which I discussed the following piece of code:
#!/usr/bin/perl use DateTime; use DateTime::Duration; my $then = DateTime->new( month => 4, day => 2, year => 1969, hour => 0, minute => 0, second => 0); my $now = DateTime->now(); my $elapsed = $now - $then; print $elapsed->in_units('seconds'), "\n";This looks like it ought to calculate and print out the number of seconds between midnight 1969-04-02 and the current time. Instead, because of a series of bad decisions by the designers of DateTime::Duration, it calculates that value as a number of months, days, minutes, and nanoseconds, and then prints out the leftover nanoseconds divided by one billion; typically the answer is a number on the order of 30. In this case it's obvious that something peculiar is going on, but in general you might not realize that this code is not doing what you (or anyone else) wants; you might test it on two times with only a few seconds difference, see that it produces the correct answer, and fail to realize that it breaks completely for any interval that crosses a minute boundary.
My first idea was to claim that this code prints out FUCK YOUR MOTHER, suggesting that although the object knows how much time has elapsed, it refuses to tell you, because it is a spiteful and foulmouthed object. But people have pointed out that sometimes kids attend these conference talks and don't want to hear FUCK YOUR MOTHER (or their parents don't want them to hear it) and anyway, FUCK YOUR MOTHER is sexist and I would prefer to offend everyone without resorting to racism or sexism. I don't mind offending people in general, but it is unfair to do it from a position of power, and to direct it against people with less power than I have.
I spent quite a while thinking about this. Before I committed the slides I struck out FUCK YOUR MOTHER and replaced it with UP YOUR NOSE, EPSTEIN (a catchphrase from the 1970s sitcom Welcome Back, Kotter) and then SIT ON IT, CUNNINGHAM (a catchphrase from the 1970s sitcom Happy Days). Both of these, having aired on prime-time network television in the 1970s, can be presumed to be sufficiently innofensive for a conference talk in 2013.
But they didn't seem to be quite what I wanted, and for a while I considered CHINGA A TU MADRE (Mexican slang for FUCK YOUR MOTHER) which has advantages and disadvantages. I think it's funnier if the DateTime::Duration module turns out to be a Spanish-speaking punk. And some of the people who might have been offended won't understand the Spanish. On the other hand, some of the people who might have thought the joke was funny won't understand the Spanish. And the sexism is the same as in English.
A friend suggested that I just go with GO FUCK YOURSELF, but I decided that I could probably find something funnier if I went in a scatalogical direction. Scatology is safer than sex, because sex is a forbidden adult subject, but everybody poops. Four-year-olds can, and do, make poop jokes and find them hilarious.
The first thing I thought of was I'M SHITTING IN YOUR MOUTH which I do think is funny, but perhaps too physically offensive; it's a really unpleasant image.
But Google search for the Mexican version of FUCK YOUR MOTHER had led me to Wikipedia's page on Spanish profanity, which is a gold mine. Reading through it, I knew, as soon as I saw ME CAGO EN LA LECHE, that I'd found the right phrase.
It means "I shit in your milk!"
That seems to me to lie at the perfect intersection of what I want. It displays the program's obnoxiously unhelpful attitude, it should be no more offensive to anyone than to anyone else, and it conjures u pa mental image whose unpleasantness is strongly tempered by its surreality.
[ Addendum: I should mention that this accusation against DateTime::Duration is false, and it would be completely unfair, except that the desired answer here is so perfectly at the center of DateTime::Duration's purported area of expertise, the answer actually given by DateTime::Duration is so utterly and manifestly useless, and there is no way to get it to produce that answer you actually wanted. If you ask me how many seconds have elapsed since April 2, 1969, and I say "43", can't you reasonably claim that I might as well have said "¡Me cago en la leche!"