"SCRUZIA" ... a very infrequently updated weblog ...


Possible BP trips for this spring/summer

  • Potential:
    • Ohlone Wilderness Trail
    • Ten Lakes Basin
    • Southern Yosemite Loop (from memory: Chiquito Pass, Givens Lake, Moraine Mountain, Merced Pass, Ottaway Lakes, Red Peak Pass, Post Peak Pass, that other one nearby with the Porphyry rocks pattern, Fernandez Pass, Chain Lakes)
  • Some Other Year:
    • Blackcap Basin
    • North Lake / South Lake (e.g, Bishop Pass, Dusy Basin, M?FKR, Muir Pass, Evolution *, ... Piute Pass)
  • Vicarious:
    • follow "Wired" on the CDT.


Aha, finally restored the Cherry Creek picture to the "masthead" at the top of this ancient blog. Man, more than two years since I posted. Needless to say, I've been busy.


An atypical commute

This morning:
  • I found a potato bug in the dogs' food dish;
  • fed it to the chickens;
  • an oak tree had fallen, mostly blocking my road, and I could barely sneak past it (I live on a cul-de-sac, so there is no alternate route);
  • great clouds-in-the-trees in Boulder Creek;
  • a couple dozen turkeys on highway 9 just south of Camp Campbell;
  • more great clouds-in-the valley from Sempervirens Point;
  • a segway commuter (in Cupertino, on Foothill/Stevens Canyon Road just south of Stevens Creek);
  • an airship in Mountain View; and
  • it's still technically Autumn.
I have photos of some of these.


Eagle Creek week

Spent the Winterval week with great friends sorta near here. In what some of the locals call "Bee-Jork Canyon". (Photo shot with my new, then-secret G-phone.)


A small metadata adventure

My nephew Ben, his friend Chance, and I went on a backpacking trip in mid-July (7/12 through 16th), from Twin Lakes (northeast of Bridgeport) into Yosemite. Here are the pictures from the Twin Lakes trip: The actual trip report will be in another posting. [Linked here]

I had a small problem to solve once we got back: Ben had one of my cameras, and I had another. Each one can set the "creation time" in the JPEG file's metadata, but the two cameras' internal clocks were not synchronized, and I wanted to send them up to Picasa in chronological order. The rest of this weblog entry isn't really about the backpacking trip (read the pictures' captions for that, or the forthcoming trip report), but more about how I solved the time-synchronization problem.

[This turns out to be a problem others have run into, and there's a Linux program called "jhead" that can do this kind of date manipulation. But writing the small Python program was quick and somewhat entertaining...]

I did some bulk file renaming to make the filenames lowercase, remove some leading zeros, and make the camera names -- Lumix and Sony -- clearer. I run Mac OS X, which has a command called "sips" (Simple Image Processing System"?); I used it to extract the recorded times for each photo, and listed each time and its corresponding filename into a text file. After another couple of global substitutes, I had a Python array containing the filenames and their nominal times, like this:

pix_and_times = [
  [ 'lmx50553.jpg', '2009:07:10 07:06:45' ],
  [ 'lmx50555.jpg', '2009:07:11 12:15:30' ],
  [ 'lmx50795.jpg', '2009:07:16 16:08:07' ],
  [ 'lmx50796.jpg', '2009:07:16 16:50:09' ],

  [ 'sony6308.jpg', '2009:07:12 05:36:12' ],
  [ 'sony6309.jpg', '2009:07:12 05:36:22' ],
  [ 'sony6524.jpg', '2009:07:16 06:06:31' ],
  [ 'sony6528.jpg', '2009:07:16 06:07:48' ],
  [ 'sony6529.jpg', '2009:07:16 06:08:25' ]
The next question was, when and where did we take any pictures that I knew were from around the same time? What I came up with was that on our last hiking day, in Kerrick Meadow, we saw a pair of Mountain Chickadee chicks, running around on a muddy streambed, and I knew we had both taken pictures of them. So I found a couple of the corresponding photos
Lumix chick Sony chick

and figured out that they were 12 hours and 23 minutes apart.

Armed with that knowledge, I wrote 50-some lines of python that renamed the files so that their filenames, sorted alphabetically, would also be in correct chronological order. The guts of the code:

  # Make an object for each photo
  pixobs = map(Pixob, pix_and_times)

  # Parse the dates of the photos, and adjust my notion of the creation
  # time for only the sony ones.
  for ob in pixobs:

  # Sort by adjusted date
  pixobs.sort( date_cmp )

  # Print out a "mv" command to rename each file with a name
  # that will sort the way we want.
  for nr, ob in enumerate(pixobs):
    print 'mv ' + ob.fn + ' ' + aatrans(nr) + ob.fn
The aatrans function translates an integer between 1 and 676 into 'aa', 'ab', 'ac', ... 'zx', 'zy', 'zz'

  def aatrans ( nr ) :
    qq = nr // 26
    rr = nr % 26
    return atoz[qq] + atoz[rr]
Finally, I ran the shell on that output, resulting in files with names like these interleaved ones, from somewhere in the middle:

(At some point, I'll figure out how to put the python source code somewhere on the web. Note that it doesn't include the bulk renames and sips data extraction.)

My favorite part of this is how well the time-alignment was demonstrated. After aligning the photos via the chicks, I went back and looked at this sequence of photos taken as we were climbing the snow and rocks towards Burro Pass. I took a photo of Ben, way up on the rocks above us, then I zoomed way in and took another one, nine seconds later. In between those two shots, the sorting program placed the picture that Ben took, of me taking one of those pictures! Here's that sequence:


Back to civilization

Just returned from a five-day backpacking trip mostly in Yosemite. Twin Lakes - Benson Lake loop, clockwise. Got some nice pix. Lots of snow on the north sides of Mule and Burro Passes. Lots and lots of bugs. Had the big Benson Lake Riviera beach all to ourselves for an entire morning. Kerrick Canyon and Meadow was my favorite part -- wide open flat meadow, interesting peaks and domes on both sides, and a pretty easy climb out at the top, via Peeler Lake. My nephew Ben did great -- he's definitely in his element out there, now that he's 14 and been on six or so trips (mostly shorter, though). His friend Chance was on his first backpacking trip ever, and his determination overcame his inexperience and low-ish fitness level, so by the last day he was walking down the last part with Ben, and I was dragging along behind. Pix will be along at some point.


Busy times

Planning some backpacking trips for the summer. With luck, I'll have some photos to show from it. Lots of stuff I can't really talk about going on at work. It's nice to see Scala getting some interest. I biked over to LinkedIn about a month ago, to attend a talk/panel with Martin Odersky, David Pollak (creator of Lift), and Nick Kallen from Twitter.


Updated Reminder about DST Asymmetry

It's March: time for my annual reminder about the asymmetry of daylight savings time. If you've seen this before, well, here's a reminder. This time, there's a bonus: a Google App Engine application that'll make a nice graph.

The summary: Daylight Savings Time is not symmetrical around the solar calendar — it does not "surround" the days of longest light as one might expect if one hasn't thought about it. So if you like to do outdoors stuff (e.g., hiking or mountain-bike riding) while it's light out, especially mid-week after work, the time to get started with that sort of outdoors stuff is NOW.

Some details: If we were to start DST at the spring equinox and end it at the autumn equinox, then it would be close to symmetric in the sense I'm talking about. Around the day we spring ahead into daylight savings time, sunset would change from being (say) 6:10 to being 7:10; and the day we fall back to winter time, it would go from 7:10 back to 6:10.
But we don't do the DST changes symmetrically around the equinoxes: we spring ahead in early March, roughly one or two weeks before the after the spring equinox, and we fall back in early November, around six or seven wo weeks after the fall equinox. This means that it's lighter later into each day at the start of DST than it is at the end. In fact, a little bit of trigonometry (or some actual observation) will tell you that the equinoxes are the times of the fastest change in the days' lengths, so it's lighter a lot later at the start of DST than at the end.

Around here (San Francisco Bay Area), the springtime change this year (2009) made our notion of sunset change from 6:10pm to 7:10pm. So it's already worth getting out for a short (60- to 90-minute) hike or ride after work even if you have to work until 6:00pm.

By contrast, the autumn change around here, this year, makes our label for "sunset-time" change from 6:10pm to 5:10pm. So that's a full hour's difference, compared to the springtime change. It generally means that despite the usually dry autumn weather we get, those of us who have to work until 6:00pm or later have few choices by October — learn to like riding with lights (and to find places where it's legal), or stick to riding or hiking only on weekends, "hookey" weekdays, or long "lunch"es.

Bottom line: For those of us for whom snow is not an issue, the dry parts of March or April are the time to start those after work hikes or rides.

So after years of writing the occasional exhortation/warning about this, I finally wrote an app engine app to display the sunrise and sunset data graphically, so you could more easily eyeball and internalize the asymmetry. Here's the link: DST Asymmetry. It's somewhat fragile at the moment, and still has a couple of extraneous debugging links and a css that, um, could be nicer.

Finally, here are links to a couple of earlier versions of this warning: Seven years ago; and Two years ago.


Daylight Saving Time Asymmetry Graphs

Apropos of my last posting, and jeez that was an awfully long time ago ..., I was playing around with Google's graph/chart in-URL API, and came up with these neat graphs that show how asymmetric daylight savings time is. Maybe someday I'll figure out how to put in vertical lines, too, to show where the equinoxes are. (Sorry, I've temporarily edited the blog's template to fix the screwups that were not permitting the graphs to show. It made the sidebar go all the way to the bottom. Will fix that one of these days.) [Later: Ok, I fixed that by importing my customized blogger template from another blogger blog, and further tweaking it to fit this one. Whee.]

With line at 5:30pm:

With line at 6pm:


Latest sunrise of the year

This year, because the end of daylight savings time was pushed into November, the date of the latest sunrise was this morning, 1 November 2008. I went to the US Naval Observatory site here, entered Mountain View, California, and it said that today's sunrise was at 6:34 am PST. That is, 7:34 PDT. Tomorrow, Daylight savings time ends, so tomorrow's sunrise is 6:35. And the sunrise for the week or so after the winter solstice is 7:23.


zsh: missing end of name

I run zsh at work, and was puzzled by an error message I got today:
zsh: missing end of name
The command line was something like this:
echo J Random Guru ( is an email address.
A brief web search led to this old zsh source file, which helped to explain things a tiny bit. Based on it, I tried a slight modification:
echo J Random Guru ( is an email address.
and got a much more satisfying error message:
zsh: unknown group
It turns out that zsh's parenthesis-based file filtering (called "Glob Qualifiers" in the man page) has some features I never new about. 99% of the time that I use it, it's for a command line something this:
ls -ld *(/)
which does a long ls of all of the directories (and not their contents) in $PWD. Next most common are *(^/) which is all non-directories, and *(*) (executable plain files), which I confuse with *(x) (owner-executable files). The reason that this is relevant to the puzzling error message is that two of the possibilities inside the parentheses are "u" for userid and "g" for group id. These take a numeric user or group id, or a matchable delimiter! So a slight modification of my pattern (*( should match any files that are owner-readable (the "r"), and have group-ids matching the group named "". Of which there are none. For reference:



License plate of the day. See this wikipedia entry, I guess. I'd seen the word "neoteny" before, but not "neotenic".

Reminded me somehow of my wife's favorite Latin faux-blessing. Imagine having a nice satin robe and miter, so you look like a pope, and saying "Dasypus novemcinctus". Sounds plausibly like some kind of blessing, but ... well, you can look it up.


Not my baby


Assimilation in progress

I finally accepted an offer made 2.5 years ago. More details later.


Reddit greasemonkey script: see a headline ONCE

For reddit freeloaders like me (i.e., readers who rarely care to vote), one slightly annoying thing about reddit's presentation is re-reading the headlines I've already seen. So I wrote a start towards a greasemonkey script to make it easier to ignore stuff. Usage: when I look at a reddit page, I scan all of the headlines, and hit my scroll-wheel-button ("Open in new Tab (in background)") on any that I care to look into. With this script, I never have to do anything else in order to avoid ever seeing any of the other ones again. The script is here. Bugs: It inappropriately eats the comment-submit box/button; I should disable it on comments pages. Next to do: It needs a toggle on-off key, and it might be nice to shrink and pale-ify the already-seen headlines, instead of removing them altogether. For reddit to do: when I open a raft of tabs from a reddit page, I sometimes forget what reddit submitter-supplied headline made me choose to read this page. It would be nice if reddit could arrange to have the "referrer" be the comments page for this entry, instead of . Nicer would be to set it up so that "Back" would work even when I did the open-in-new-tab trick. Bonus: The script works on ycombihacker news, too.


Headline of the Day

LA turns 226 on Sunday ... but can still pass for 115 thanks to all the work it's had done



Cherry Creek trip

A few weeks ago, I led a very fun backpacking trip down Cherry Creek Canyon. Here's one of my favorite pictures from the trip. See how many levels of rock, water, and sky are in it.


Saw a bobcat at Rancho San Antonio

The weird thing was the timing and nonchalance with which this guy just sauntered through the parking lot, as if he knew most of these Cupertinans (Cupertinoix? Cupertines?) were, basically, cat people. The weirder thing was that I actually got some photos. The stupid thing was that I forgot my silly little Sony has a movie mode. Anyway, here's the photos: Then I walked my required four miles, preparing for the Cherry Creek backpack trip.


Record lows

This past few weeks have been might cold (for California) -- record low temperatures. My posting frequency here and elsewhere has also hit record lows. (My main weblog is not on blogger, and I wrote only 28 entries in it in all of 2006.) But the nearly six months away from here is pretty bad. I guess I ought to upgrade to the new version. But hey, wait! Wasn't it supposed to be a feature of web-based software that upgrades would happen automatically and effortlessly? Here's hoping that it works that way from now on ...


Sad phrase of the day

In the midst of Scott Heiferman's 50 Reasons Why More People Aren't Using Your Website, a list that ranges wryly between humor and truth, one reason in particular struck me as quite sad: "... because they can't think of what they're passionate about."


Toxic Evangelism

In one of the comments on a Rands In Repose article about context and version control, someone mentioned Arch. I've never used arch, but my only encounters with its supporters have ensured that I never will. They are an example of Toxic Evangelism -- a kind of support for something, that unwittingly reveals an utterly repulsive community attitude.


New Dashboard widgets test

This is a test of dashboard posting to my blogger weblog, using one of the new Mac OS X Dashboard widgets.

It looks pretty cool, but only for very small weblog postings.


Oddly news

A legal firm in Florida had an ad comparing themselves to pit bulls. The Florida Supreme Court ruled that it was an affront to the legal profession. [via Reuters' "Oddly Enough"]. My take on the story was to wonder why PETA hasn't sued that firm, for the way it demeans a particular breed of dog. (* RubyURL is like TinyURL; this one should expand to Reuter's horribly long URL that may or may not even be a perma-link. )


gmail as a social networking site

Cryptic thought of the week: Orkut is a diversion. gmail is the social networking site that actually matters to Google. (I posted some similar thoughts to an internal weblog pilot system at my employer's site, some time last year. It included the wonderful phrase "-ster"-crazy. As in Jason Kottke going "-ster"-crazy about keeping up with those labor-intensive social networking sites. (Well, I thought it was wonderful when I made it up.)) Short version: social networking sites are a fad, a means to a meat-space end. In order to get long-term extractable social networking data from the customer base, a SN operator needs to be able to get that data from things that its customers do anyway, every day. Like, say, sending and receiving email. The links may not be the same quality as the explicit ones that users create on SN-Sites, but who's to say which ones are actually more meaningful? The ones that are created self-consciously, or the ones that reflect how people's communications really work?


Misspelling folksonomy

I don't really like the term "folksonomy", mostly because it's not a taxonomy: not hierarchical, not tree-shaped. Chris McEvoy suggests "usersaurus". And Tom Coates says that the first time he heard the term, he really thought it was spelled "fauxonomy". I think I'll adopt that one, and hope that it at least becomes an acceptable alternative spelling.


QOTY -- 43 Folders

Quote of the Year (2004): "Be careful not to let doodling on your pretty map replace the important business of walking the actual territory. (See the end of Merlin Mann's GTD summary for 2004.)


Sparklines and Edward Tufte

Out of the blue, I was thinking Friday today about those little word-sized graphics that I read about many months or years ago. Had some vague recollection that it related to that guy who "wrote the book" about visualization. Napoleon's march to Moscow -- that guy. Well ... it took more google-power than I thought it would to restore the name "Edward Tufte" to my mind, and even then it took some time to track past that to confirm that my vague recollection was correct -- it was indeed Tufte who wrote about what he calls "Sparklines" or "Wordgraphs". It's related to my weblog table of contents ideas from last year ... which in turn were inspired by the outstandingly unobtrusive navigation system exemplified by Textism's Evolution of Writing, where what looks like a decorative row of dots along the top is really a navigation mechanism. For weblogs, what I wanted to do is make it a row of dots and bars, like for example .....|.||||.||....|||||....||..|||| where
each bar indicates a day with entries, and each dot is an empty day. That way you get an instant visual clue about how active the weblog has been, in a very small screen-space. And the bars are direct links to the entries, and they should have tooltips that consist of the titles of those entries. Anyway, more experimentation is needed. I think it was the little graph at Mind Hacks today that triggered this minor mindstorm. (Posted via email; I'll go back and fix the URLs later.) (Or not. The post-by-email attempt got a weird error message returned from bloggers postfix email processor.)


EDUCATION as tsunami death prevention

It's hard to understand how many reports I've heard on the radio in the past couple of weeks, where survivors say things like "the water went way out to sea, so I brought my children to the beach to see it". Before we spend a shitload of money on technological warning systems, how about a half a shitload of money spent on education? Why is there anyone in the world who doesn't realize that if the ocean goes away, it'll come back, worse? Yes, we need to do a hell of a lot now, for relief and rebuilding, and yes, an eventual global techno warning system will make sense. But before that can be built, it sure makes sense to me to do some serious education, to make sure that EVERYone's first response to seeing the ocean go away, is to run like hell for high ground.


Erik T subset ... and test

I'm sure this'll look a mess, but it's a collection of "catch up with Erik T" links, and at the same time a test of what formatting is done by blogger when you email a posting. So, I catch up with Erik Thauvin not by reading nor even skimming all of the articles, but rather by collecting the ones that I otherwise might have clicked on, here in this text file labeled as an html file. Sort of a link-reskimming of the Web's premier Java-orientd link-skimmer. Timeline starts about 12/22 or so.
Extra tidbits to note: - free "groupware" - that logger "anti-framework" - neward's predictions for 2k5, except that his site is currently down. Note that Bruce Eckel has a new weblog for shorter thoughts. C. Enrique Ortiz' (J2ME guy) self-prediction review Weiqi -- Blogging Year In Review: 2004. Andrew -- Struts, JavaServer Faces, and Java Studio Creator: The Evolution of Web Application Frameworks. Ten for the Holidays. Greg Wilson reviews books for programmers and selects ten (or more) for your holiday reading. Holiday Party Guide to Patterns. A survey of some of the Gang of Four design patterns: Composite, Singleton, Factory, Adapter, Decorator, Facade, and MVC. Kevin ... Where to put files on the Mac Joe -- Why Java is better than C Scott ...Scott -- Java Graphing, JGoodies, Screenshots with Java. The Hidden Gems of Jakarta Commons, Part 1. The Jakarta Commons has a wide-ranging collection of handy classes that can save you the trouble of reinventing the wheel yet again. ONJava 2004 in Review: Popular Articles. Editor Chris Adamson takes a look back at some of the most popular articles published on ONJava during the last year.


Recursive animations

I wrote a little about this two years ago on GIGO. Last week (I can't keep up with those guys), boingboing noted a similar picture, and linked to instructions for how to make such a thing. I couldn't find any names on the site.