JEST results

Four months ago I opted out of daylight savings time. How did it work out?

  • I won't need to wake up an hour earlier tomorrow morning, when all the rest of you in America do. This alone makes skipping DST worthwhile.
  • I enjoyed midwinter days where the sun set at 6:30. I got an hour more sunlight in my life every day. (I was never up before the sun.)
  • I had a few confusing moments. A few visitors were confused by clocks in my house.
  • I learned some things about myself, like I enjoy being a little bit out of step with everyone else. I have a powerful capacity to filter the world so that everyone else is wrong, and I'm right.
  • While away visiting on holidays, I mentally switched to daylight savings time once. Because I didn't want to be at all out of step with everyone else then. (This did not impact my sleep schedule any more than visiting and needing to get up early normally does, except it was easier to get up early.)
  • I felt closer to my friends in Europe, and more distant from my friends on the west coast.
  • Technically, setting TZ=JEST+4 caused few problems. Gnome's panel was somewhat inconsistent. One program failed to parse dates another had produced.
  • Unexpectedly, I saved some money. Turns out that if you show up in certain restaurants at their 11:15 am (your 12:15 pm), they don't have a lunch special chosen, and will let you pick the lunch special. :)

Tomorrow I will be in sync with everyone else. That might take some getting used to. I plan to keep my timezone setting, and will be doing this again next winter.

Posted
new growth

Projects I've been working on are, if not bearing fruit, at least showing promise.

git-annex is growing up a nice community that nags me about things like Mac OSX and FAT filesystem support. It's great to have their feedback, it's been leading to fast improvement, even though I've only gotten two patches to my haskell code. :)

New users are finding Branchable despite us not knowing how to market it. Sometimes a new site springs up overnight fully formed, having been developed on a laptop and git pushed to us. I get a vicarious thrill over whatever our users are doing, be it driving to Mongolia or watering plants with arduino.

Posted
weird git tricks

I wrote this code today to verify setup branch pushes on Branchable. When I was writing it I was just down in the trenches coding until it worked, but it's rather surprising that what it does to git does work.

The following code runs in git's update hook. The fast path of the hook (written in C) notices that the user is committing a change to the setup branch, and hands the incoming git ref off to the setup verifier.

                # doing a shared clone makes the setupref, which has
                # not landed on any branch, be available for checkout
                shell("git", "clone", "--quiet", "--shared",
                        "--no-checkout", repository($hostname), $tmpcheckout);
                chdir($tmpcheckout) || error "chdir $tmpcheckout: $!";
                shell("git", "checkout", "--quiet", $setupref, "-b", "setup");

I got lucky here, since I initially passed --shared only to avoid the overhead of a clone of the site's entire git repository (which can be quite large, since Branchable doesn't have any real limits on site size). Without the --shared, the clone wouldn't see the incoming ref at all.

In the setup branch is an ikiwiki.setup file, and we only want to allow safe changes to be committed to it. Ikiwiki has metadata about which configurations are safe. Checking that and various other amusing scenarios (what if someone makes ikiwiki.setup a symlink etc) takes a hundred lines of fairly hairy code, but that doesn't matter here. Eventually it decides the setup file is ok as-is, or it's already died with an error message.

                # Check out setup file in toplevel. This is slightly tricky
                # as the commit has not landed in the bare git repo yet --
                # but it is available in the tmpcheckout.
                shell("git", "pull", "-q", $tmpcheckout, "setup");

                # Refresh or rebuild site to reflect setup changes.
                print STDERR "Updating site to reflect setup changes...\n";
                shell("ikiwiki", "-setup", "ikiwiki.setup", "-v",
                        ($rebuild_needed ? ("-rebuild") : ("-refresh", "-wrappers"))
                );

When this code runs there are three repositories, each with a different view of the setup branch. The main bare repository is waiting for the hook to succeed before it updates the ref to point to what was pushed. The temporary clone has what was pushed already checked out. And the site's home directory still has the old version of the setup branch checked out. Possibly even a version that has diverged from what's in the bare repository.

It's rather odd that the update hook goes and causes that latter repository to be updated, before the change has finished landing in the bare repository. But it does work; it ensures that if there is some kind of bizzare merge problem the user doing the push sees it, and I probably won't regret it.

The result certianly is nice -- edit ikiwiki.setup file locally, commit and push it, and ikiwiki automatically reconfigures itself and even rebuilds your whole site if you've changed something significant.

Posted
getting out of cell phone contracts, redux

Exactly a year after I switched from pre to droid, I broke another cell phone contract. So there seem to be three fool-proof ways to get out of a cell phone contract in the US, despite all the hype about them involving signing away your firstborn.

  1. Switch to a different US cell phone company, and do it by going into a store and finding a hungry salesman in person, and making his sale contingent on him finding a way to break your old contract. What I did last year.
  2. Simply move to a part of the map that doesn't have cell phone coverage. (You will have seen these parts of the map from a plane.) It probably helps to have your cell phone drop off the edge of their map repeatedly for some months, presumably they can look this stuff up. Call up technical support, go thru some mild rigamarole as they try to configure your phone to magically see cell towers that have several mountains and/or the curvature of the Earth blocking line of site to you. Magic words: "please note on account: no cell service"
  3. Sell your contract on one of the existing cell contract exchanges, to someone who wants cell service with a shorter than usual contract. (Means giving up your number.) I haven't tried this one, maybe next time?

Unlike my Palm Pre which didn't survive being cut off the cell net, my Android phone is still fairly happy. While I'd really like to turn it into a proper Debian box, with X etc, I may just use it as a camera, web browsing (on wifi) and emergency 911 system. Pity though about the GPS stuff needing an internet connection when the phone has many gigabytes of free space that could hold a useful map.

(If you want to phone me now, the number is 1-423-IKIWIKI. I only receive voice mail, and your call data and transcript will be absorbed by the Google Borg.)

Posted