(1)
Tue Mar 02 2010 18:27 Star Trek vs. Batman:
(1)
Tue Mar 02 2010 18:27 Star Trek vs. Batman:
I always have a difficult time at events held in bars, but Sumana is very good at introducing me to people. For instance, I met Saladin Ahmed, who along with Nora was nominated for a Nebula this year. And then comes this SF Signal interview with Saladin, Nora, and many other Nebula nominees. "If your work couldn't have been on the ballot this year, what work would you have liked in its place?" Saladin:
I'd also have been happy to see more two-fisted fun on the ballot. Two of the absolute best stories I read this year were "Zeppelin City" by Michael Swanwick and Eileen Gunn, and "Let Us Now Praise Awesome Dinosaurs" by Leonard Richardson. Both were ridiculously enjoyable and Nebula-worthy to my mind.
I'm encouraged!
Thu Mar 04 2010 17:21 Incomprehensible Joke:
S: "I always wondered what would happen if you put a disc in the Wii the wrong way."
L: "It shows a Koopa Troopa on its back."
Fri Mar 05 2010 20:58 Work humor:
"I will lock you and [x] in a room for a week to sort this out."
"We would spend that week planning vengeance on you for locking us in a room!"
"The scenario you put forward seems all too plausible."
(2)
Wed Mar 10 2010 21:29 It's All Fun And Games:
Fri Mar 12 2010 07:39 "Frankly, I do not feel this hatred.":
Back when I first heard about this project, I mentioned to editor Rami Shal'heveth that the story's title is a riff on a phrase originally in Hebrew, but he probably already knew that. Actually, no: "Ben-Sira's book is one of those canonical texts that everybody knows of, but nobody reads."
(2)
Fri Mar 12 2010 08:47 The Long Joke:
In 2001 my sister Susanna sent me the birthday card you see before you. It said "Whee! You're Then Susanna had a daughter, and I had an idea. Recently Maggie turned three, and I gave my niece the birthday card Susanna had sent me eight years earlier. "Whee! You're 3 22 3!" The payoff was worth it. "I laughed for like 5 minutes," said Susanna.
Recently I was doing a video chat with Susanna and I mentioned:
L: So I'm jogging for an hour every day, and I realized I wasn't doing enough reading, so I decided I also needed to read for half an hour every day. And I also want to devote half an hour to games, though that's not as much of a problem. And I think I should also allocate at least half an hour for writing. But if I keep dividing up my free time like this then my whole life will be...
S: Organized?
Hmm.
Speaking of new weblogs by my friends: Pat Rafferty's Raffertyesque. Now you have something to read while you look at Evan's curated pictures.
(8)
Wed Mar 17 2010 21:24 Alternate ETag Validation Functions:
Here's the problem, on a high level of abstraction. Consider a representation (#1):
<p id="1">Forklift</p>
<p class="read-only" id="2">Green</p>
And let's say the ETag of this representation is the string "x".
According to the protocol governing this media type, you can modify the text in any paragraph unless its class is "read-only". So maybe you can PUT a document like this (#2):
<p id="1">Hovercraft</p>
<p class="read-only" id="2">Green</p>
Or PATCH a document like this (#3):
<p id="1">Hovercraft</p>
OK, that's easy. Now suppose that the read-only text changes randomly according to conditions on the server. Let's say the read-only text suddenly changes from "Green" to "Red". If I were to GET the document again, I'd get this document (#4):
<p id="1">Forklift</p>
<p class="read-only" id="2">Red</p>
And let's say the ETag of this document is "y". If I sent a conditional GET with an If-None-Match of "x", I'd get 200 and a new representation instead of 304 ("Not Modified").
OK, but I don't send a conditional GET. I don't get the document again at all. Instead, I PUT document #2, with an If-Match of "x", and the request fails with 412 ("Precondition Failed"). Maybe it should fail anyway; maybe the server is very strict and thinks I'm trying to change a read-only paragraph from "Red" to "Green", which would probably be 400 ("Bad Request"). But we don't even get to that point because the ETags don't match.
The request also fails with 412 if I PATCH document #3 with an If-Match of "x". But there's nothing really wrong with that request. The point of If-Match in conditional writes is to avoid conflicts with other clients, and there are no other clients here. The ETag is different because a read-only paragraph changed on the server side.
One obvious solution is to calculate the ETag only from the read-write portion of the document. This fixes conditional writes, but it breaks conditional reads. A client that requests document 1 and then makes conditional requests will never get document 4. The ETag is no longer a strong validator (update: actually, it's not any kind of validator); the document might change significantly without the ETag changing. So that's no good.
The solution Björn came up with is to split the ETag into two parts. The first part is derived from the read-only portions of the document, and the second part is derived from the read-write portions. The ETag is a totally opaque string to the client, but the server knows what it means. On a conditional read, the server checks the entire ETag. On a conditional write, the server only checks the second half.
In this example, the ETag for document #1 might be "1.a" and the ETag for document #4 might be "2.a". A conditional GET of document #4 with If-None-Match="1.a" would fail, but a conditional write with If-Match="1.a" would succeed. When the write went through, the document's ETag would change to "2.b", and "1.a" would not be good for either conditional reads or writes.
From the client's perspective everything just works: your conditional read returns 200 iff the representation has changed, and your conditional write returns 412 iff someone else is messing with the resource. But is this okay from a standards perspective? Section 13.3.3 of RFC 2616 says "The only function that the HTTP/1.1 protocol defines on [ETags] is comparison." That doesn't seem to prohibit me from defining another one.
If "x" is a strong validator then so is "1.a", but the new comparison function ignores some of its information about the resource state, effectively treating it as a weak validator (update: or as something that's not a validator at all). Is that okay? Would you believe the following definition of a strong validation function? "In order to be considered equal, the second halves of both validators MUST be identical in every way, and both MUST NOT be weak." (cf 13.3.3 again)
I'm interested in your thoughts on this. Smartass comments like "you should have two resources" will not be dismissed out-of-hand but also will probably not convince me. If you're curious, here's the real-life bug that spawned this thinking.
(1)
Sun Mar 21 2010 21:50 Tiny Youtube Party:
In honor of awesome things, a 17-minute infomercial for the Univac. (Univac!) They're especially proud of having invented the numeric keypad. Also check out the enormous machine that reads from magnetic tape and writes to punch card, and the equally enormous machine that reads punch cards and writes to magnetic tape.
Mon Mar 22 2010 18:32 Camping It Up:
I kind of envy Sumana's campingless youth. If this works out, 2010 will be the first year I go camping voluntarily. I always got dragged along with family or church or Cub Scouts.
(2)
Fri Mar 26 2010 18:47 End Of An Era:
See, it's funny because you can't say "ass" on a movie poster. (Dishonorable mention to Slap Shot 3: The Junior League, whose tagline "Get ready for a rough-and-tumble comedy that knows how to kick some serious puck!" is a) as long as the movie itself and b) can only bring itself to make a pun on "butt".) But that fig leaf has fluttered away, because there's a movie coming out called Kick-Ass and they've got a huge subway-visible ad in Queens that doesn't have a tagline at all, just the name of the movie with its three-story "ass".
Now that the taboo has fallen, the only thing standing in the way of an epidemic of the word "ass" on movie posters is the fact that, formally speaking, a tagline has to be a joke, and "kick some ass" isn't a joke. I'm sure they'll figure out a way, though, and when that day comes I'll be waiting and vengeful. It's time to kick some "ass"!
Fri Mar 26 2010 22:03 Modern Life:
S: Yes!
L: What is it?!
S: Just navigating this phone tree.
L: Oh.
S: Agent!
And I still have a bunch of stuff in my browser tabs.
[0] I don't usually link to Wikipedia to explain concepts, but the "Shanzhai" entry hasn't been buffed to the personality-free NPOV sheen typical of Wikipedia entries for things like "Forest" and "Giant (mythology)", and itself somehow seems like a good example of the shanzhai spirit, insofar as I understand it.
(1)
Mon Mar 29 2010 21:38 Micro Matzah:
I told Beth about this plan and she said that matzah balls are traditionally made small. You only find huge matzah balls in delis (we decided this was for ease of portioning). I didn't know this because I'd only had matzah ball soup from delis, and from my mother, who'd probably only had it from delis. My crankiness unwittingly led to the fulfillment of tradition. So take a tip from Beth and me: small matzah balls means better soup.
Also, the Hillel sandwich is surprisingly good for something that sounds like a theorem in topology.