A Portrait of the Artist as a Pelvic Thrusting Rotisserie Chicken

Ben Ahles:

Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.

Tags: , , , , ,

Timezones

Hey Lazyweb! Want to hear something batshit insane about the iCal format? Sure you do!

(I write these things down in the hope that doing so will cause some unfortunate soul in the future to waste less time learning this than I just did. "Today I learned something new and stupid!")

When you're exporting an event as an ICS file, so that someone can add it to their Apple or Google or Outlook calendar, you have to say what time the event starts.

Now some people well tell you, "just specify all your dates in UTC, that's easy and unambiguous." But here's what happens if you do that:

You have an event happening in San Francisco on Feb 21 at 8pm. You specify the time in UTC (DTSTART:20180222T040000Z). When someone adds that event to their calendar, the little box shows up in the calendar grid at 8pm just as it should. But then they double-click on it, and the text says: "Feb 22, 2018, 4AM to 5AM (GMT)".

While technically true, this is not a useful or convenient thing to say to an actual meat-based human who is expecting to attend that event.

So instead the sane thing is to specify the time in the local time zone where the event is happening: 8pm Pacific (DTSTART;TZID=US/Pacific:20180221T200000). The box still shows up in the calendar in the same place, but now when you click on it, it says the much more sensible "Feb 21, 2018, 8PM to 9PM (PST)". It even says that if your local time zone is something else. So if you're in New York and planning a trip to San Francisco, it's obvious to you that the event in SF starts at 8pm local time, not 11pm local time (which is what the clock would say in New York).

So far so good, right?

Oh, except that's not a valid ICS file.

Why? Because the TZID doesn't refer to the name of a time zone from the IANA Zoneinfo / Olson Database, which has been the gold standard historical record of such things since just about The Epoch. (This database is an absolute treasure, documenting and clarifying an ongoing global political and technical clusterfuck of nightmarish proportions. The work that went into this thing is staggering. It is a treasure of nightmares. But I digress.)

No, see, the iCalendar spec wants each ICS file to fully document its own notion of what the Daylight Savings Time rules are! You can't just say "Look, it's US/Pacific, ok? When is Daylight Savings Time? March? I dunno, whatever, do the right thing!" Instead you have to specify the switch-dates explicitly!

Here's what Apple does:

BEGIN:VTIMEZONE
  TZID:America/Los_Angeles
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
    DTSTART:20070311T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:STANDARD
    TZOFFSETFROM:-0700
    RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
    DTSTART:20071104T020000
    TZNAME:PST
    TZOFFSETTO:-0800
  END:STANDARD
END:VTIMEZONE

What that says is: "The definition of the America/Los_Angeles time zone is that as of 2007, it is UTC minus 7 hours from the 2nd Sunday in March through the 1st Sunday in November, and is UTC minus 8 hours otherwise."

This is, of course, false, because the rules were different before 2007. Because reasons.

So while it may work for this particular calendar entry, past ones have to be different. And let's say you put a far future event in your calendar -- the ten year anniversary of something or other -- and in the intervening decade, your country's bureaucrats change the Daylight Savings rules again. Oops, now it's wrong. You're still in US/Pacific, but the ICS file doesn't know that what that means has changed.

Because the authors of the ICS standard felt that indirecting through the IANA rules was a terrible idea for some reason.

Here's what the full set of US/Pacific timezone rules look like, all the way back to when the whole idiotic idea of Daylight Savings Time took hold, through today. It will definitely change again. The Olson database is constantly being updated. That's the whole point of it!

BEGIN:VTIMEZONE
  TZID:US/Pacific
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYMONTH=3;BYDAY=-1SU
    DTSTART:19180331T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:STANDARD
    TZOFFSETFROM:-0700
    RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYMONTH=10;BYDAY=-1SU
    DTSTART:19181027T020000
    TZNAME:PST
    TZOFFSETTO:-0800
  END:STANDARD
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    DTSTART:19420209T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
    RDATE:19420209T020000
    RDATE:19480314T020100
  END:DAYLIGHT
  BEGIN:STANDARD
    TZOFFSETFROM:-0700
    DTSTART:19450930T020000
    TZNAME:PST
    TZOFFSETTO:-0800
    RDATE:19450930T020000
    RDATE:19490101T020000
  END:STANDARD
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYMONTH=4;BYDAY=-1SU
    DTSTART:19500430T010000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:STANDARD
    TZOFFSETFROM:-0700
    RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYMONTH=9;BYDAY=-1SU
    DTSTART:19500924T020000
    TZNAME:PST
    TZOFFSETTO:-0800
  END:STANDARD
  BEGIN:STANDARD
    TZOFFSETFROM:-0700
    RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYMONTH=10;BYDAY=-1SU
    DTSTART:19621028T020000
    TZNAME:PST
    TZOFFSETTO:-0800
  END:STANDARD
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYMONTH=4;BYDAY=-1SU
    DTSTART:19670430T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    DTSTART:19740106T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
    RDATE:19740106T020000
    RDATE:19750223T020000
  END:DAYLIGHT
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYMONTH=4;BYDAY=-1SU
    DTSTART:19760425T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYMONTH=4;BYDAY=1SU
    DTSTART:19870405T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:DAYLIGHT
    TZOFFSETFROM:-0800
    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
    DTSTART:20070311T020000
    TZNAME:PDT
    TZOFFSETTO:-0700
  END:DAYLIGHT
  BEGIN:STANDARD
    TZOFFSETFROM:-0700
    RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
    DTSTART:20071104T020000
    TZNAME:PST
    TZOFFSETTO:-0800
  END:STANDARD
END:VTIMEZONE

(I didn't build that by hand; I coaxed Apple to spit it out by creating and exporting an event in the 1800s.)

Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.

Tags: , , ,

Inside The Federal Bureau Of Way Too Many Guns

By law, the system must remain intricate, thorny, and all but impenetrable.

"I get e-mails even from police saying, 'Can you type in the serial number and tell me who the gun is registered to?' Every week. They think it's like a VIN on a car. Even police. Police from everywhere. 'Hey, can you guys hurry up and type that number in?'" [...]

That's been a federal law, thanks to the NRA, since 1986: No searchable database of America's gun owners. So people here have to use paper, sort through enormous stacks of forms and record books that gun stores are required to keep and to eventually turn over to the feds when requested. It's kind of like a library in the old days -- but without the card catalog. They can use pictures of paper, like microfilm (they recently got the go-ahead to convert the microfilm to PDFs), as long as the pictures of paper are not searchable. You have to flip through and read. No searching by gun owner. No searching by name.

"You want to see the loading dock?" We head down a corridor lined with boxes. Every corridor in the whole place is lined with boxes, boxes up to the eyeballs. In the loading dock, there's a forklift beeping, bringing in more boxes. [...] Almost 2 million new gun records every month he has to figure out what to do with. Almost 2 million slips of paper that record the sale of a gun -- who bought it and where -- like a glorified receipt. If you take pictures of the gun records, you can save space. [...]

"These were Hurricane Katrina," he says, leaning against a stack. "They were all submerged. They came in wet. And then we dried them in the parking lot. When they got dry enough, the ladies ran them into the imager.

"Do you want to see the imagers? I'll show you. Imaging is like running a copy machine. So, like, if there's staples? So what these ladies along here do, from this wall to this wall, from six in the morning until midnight... staples." [...]

The vast majority of the gun records linking a gun to its owner are kept back at the various licensed dealers, the Walmarts, Bob's Gun Shops, and Guns R Us stores dotting America's landscape.

We have more gun retailers in America than we do supermarkets, more than 55,000 of them. We're talking nearly four times the number of McDonald's. Nobody knows how many guns that equals, but in 2013, U.S. gun manufacturers rolled out 10,844,792 guns, and we imported an additional 5,539,539. The numbers were equally astounding the year before, and the year before that, and the year before that. [...]

Serial numbers, it turns out, are tangled clogs of hell. Half the time what the cop is reading you is the patent number, not the serial number, or it's the ID of the importer, and then you have the "zero versus letter O" problem, the "numeral 1 versus letter l versus letter small-cap I" problem, and then there is the matter of all the guns with duplicate serial numbers [...]

Step Two: Hester calls the manufacturer (if it's a U.S.-made gun) or the importer (for foreign-made guns). He wants to know which wholesaler the gunmaker sold the weapon to. [...]

Step Three: You call the wholesaler and say, "Who did you sell it to?" The wholesaler, who also has to keep such records, goes through the same rigmarole the importer or manufacturer did, and he gives you the name of the gun store that ordered it from him. Let's say it was Walmart.

Step Four: If the Walmart is still in business, you call it. The actual store. Not corporate headquarters, or some warehouse, but the actual Walmart in Omaha or Miami or Wheeling. You call that store and you say, "To whom did you sell this Taurus PT 92 with this particular serial number on it?" By law, every gun dealer in America has to keep a "bound book" or an "orderly arrangement of loose-leaf pages" (some have been known to use toilet paper in protest) to record every firearm's manufacturer or importer, model, serial number, type, caliber or gauge, date received, date of sale. This record corresponds to the store's stack of 4473s, which some clerk has to go dig through in order to read you the information from the form. Or he can fax it. Congratulations. You have found your gun owner. [...]

There is no other place in America where technological advances are against the law. Unless you count the Amish. Even if a gun store that has gone out of business hands over records that it had kept on computer files, Charlie can't use them. He has to have the files printed out, and then the ladies take pictures of them and store them that way. Anything that allows people to search by name is verboten.

Previously, previously, previously.

Tags: , , , ,

Clock of the Long Now: Installation Begins

Clock of the Long Now: Installation Begins

After over a decade of design and fabrication, we have begun installing the first parts of the Clock of the Long Now on site in West Texas. In this video you can see the first elements to be assembled underground, the drive weight, winder and main gearing. This is the first of many stages to be installed, and we continue to fabricate parts for the rest of the Clock in several shops along the west coast.

Previously, previously, previously.

Tags: , , , , ,

  • Previously