Ex Bibliotheca

The life and times of Zack Weinberg.

Tuesday, 10 January 2006

# 8:30 PM

moved.

As many of you may already have guessed, this blog is basically dead. I've been keeping a secondary blog over on Livejournal, as [info]zwol for some time now; please go there for further updates on my personal life.

For those of you more interested in my current research or my mostly-former career as a free software hacker, I plan to create a research blog hosted at hci.ucsd.edu Real Soon Now.

Monday, 5 September 2005

# 3:50 PM

As previously mentioned, I am taking up a new life as a graduate student in the cognitive science department of the University of California, San Diego. They want me there by the 15th September, so much of my time for the past few weeks has been tied up with packing. Today, the movers came; they have just finished taking away all of my stuff. Tomorrow I get in my car and drive to Bakersfield, where I crash at a motel. Wednesday I have breakfast with my great-uncle Don, then I get back in the car and keep driving, all the way to San Diego. Hopefully, my stuff does not beat me there, nor does it fail to show up for weeks after I get there.

Currently I am planning to work with Profs. Jim Hollan and Ed Hutchins on human-computer interaction, but that could well change once I get settled in.

I'll not be reading email for the next several days. Just for the record.

Sunday, 17 July 2005

# 11:55 PM

I have just had an idea. I'm not quite prepared to talk about the idea itself yet. One thing is clear, though: in order to build it, I need a Wiki engine. And all the Wiki engines I currently know about, don't do what I want. To work, the engine has got to do the following things:

  1. Must be written in a programming language I already know - read "Python or Perl". I'm not wanting to go learn a whole new language for this.
  2. Must allow me to swap out the wiki-markup parser for something of my own invention. (No existing wiki markup is quite right for this.)
  3. Must have pluggable back-end formatting machinery, so that I can render pages into something other than HTML.
  4. Must use a real version control system (CVS or better) to store the source text of each page.
  5. Related: if someone edits a page by direct access to the version control system, rather than through the browser interface, the wiki engine should notice and update the page. (I don't care how it notices.)
  6. Also related: should allow there to be other stuff in the VCS repository than just the wiki. In CVS terms, it shouldn't require an entire module to itself.

So, before I go out and write an entire wiki engine myself, does anyone know of an existing system that does all the above things? Failing that, does anyone know an existing system that satisfies at least (1) and (4)? [I have skimmed WikiEngines; none of the options is obviously what I want, and I'm not feeling up to reading all the project pages in hope of finding the right one.]

Friday, 8 July 2005

# 10:15 AM

end of an era

Last week I ended my tenure as an active GCC developer. Yesterday I completed my last outstanding obligation to CodeSourcery. It has been something like eight years since I first subscribed to the EGCS project mailing lists. I now have two months' vacation and then I begin graduate studies in UC San Diego's cognitive science department.

I'm not sure how I feel about this. I used to get about a thousand emails a day — GCC wasn't the only free software project I kept tabs on — now it's down to a handful, from friends and relations. I don't plan on going back anytime soon, if only because I've tried to do grad school once before and I know I don't need the distraction. Still, GCC's been an important part of my life for nearly a decade and I'm sorry to leave.

Mind, I haven't been doing much in GCC development for a good year now. This is because CodeSourcery was paying me to do other stuff, which soaked up all of the time I was willing to spend programming. Sadly, this means I leave GCC with an awful lot of my personal projects unfinished. (The little imp in the back of my head that says 'you could do them now, you're not being paid to program anymore, it would be fun again' can just shut up ... see above about distraction.)

Now, being unemployed on vacation, I have time to do things like wander round the city more. Yesterday I went with a friend to the Conservatory of Flowers, which is full of rare tropical plants. I found the room of aquatic plants — giant water lilies, pitcher plants, and so on — to be the most interesting. And then in the evening my housemates and I went to 12 Galaxies where Dan Bern was playing. Good stuff that.

Tuesday, 7 June 2005

# 10:20 PM

While burning CDs the other day I got a coaster of a type I've never seen before. Here are two photos of the bottom: somewhat brighter and somewhat darker.

See all the little circles etched onto the surface? They weren't there before the CD was burned. Somehow the laser did that. Does anyone know how that could have happened? They're not on the data layer, they're on the surface of the polycarbonate, and there's an odd sort of a pattern to them.

Monday, 30 May 2005

# 3:50 PM

Saturday I attended Baycon 2005, dressing up for the occasion in an elaborate costume. There are photos. Most of the costuming work, including all of the makeup, was done by my good friend Shweta.

Don't miss the photos of our friends Adam, Amanda, Dave, Fiona, Nicole, and Robynne, performing at the Masquerade Ball as the Uncanny X-Cabaret.

Friday, 11 March 2005

# 11:55 PM

a couple of links

I used to live in New York City, and I regret that I wasn't able to go see Christo's "The Gates" installation while it was there, last month. But! I can live vicariously through people on the Internet! Ben "Mako" Hill and Mika Matsuzaki went and photographed people photographing the installation. Delightfully metareferential; more importantly, captures what it was like to be there rather better than any other photoset I've seen.

In other news, Patrick Nielsen Hayden recently pointed out a 2001 essay entitled Science Fiction without the Science, which is about how modern science fiction is no longer nearly so goshwow enthusiastic about the future as it used to be. Ken Macleod has a good counterpoint, discussing how it's probably a good thing that the shine has worn off the notion that Science! Will! Cure! All! Man's! Ills! And then there's the Vingean singularity lurking in the closet; whether or not you buy the notion that superhuman AI is around the corner, I don't think it's a stretch to say that people aren't predicting the future so much these days because it's become deuced difficult to tell what the future's going to be like.

Saturday, 19 February 2005

# 5:15 PM

reflections after shredding three months' junk mail

  • It's so nice not to have a sack of to-be-shredded paper at my feet anymore.
  • It's so lame to have to go to all that trouble. Took me a freaking hour to get rid of one sack of junk mail. (Why do I bother? Because I've had my identity almost-ripped-off once, and the city has people pick over the recycling by hand to remove non-recyclable stuff that's gotten miscategorized.)
  • But perhaps most important: My shredder is inadequate. It jams constantly. It cannot handle unopened mail, so I have to open every last piece of junk mail and feed it in one sheet at a time. And if there was anything even slightly sticky in there ... like the rubber cement that some of my favorite junk mailers seem to use to hold their envelopes together ... it jams. Same same anything with stretchy plastic on it, like a FedEx envelope.)
  • Moreover! Like so many consumer products in this age of "no user serviceable parts", there is no convenient way to clean the shredder assembly, despite the fact that the usual jam mode is for paper to get caught on the teeth and dragged around inside the housing. I have, once, in a fit of berserk frustration, disassembled the blighter. It took a good hour just to pry apart all the nested plastic snap-together clamshells to the point where I could get at the teeth to cleen them.
  • And what were they thinking making the inner housing out of bendy plastic? It should have been cold, unfeeling, rigid metal that did not allow paper to get dragged around inside.
  • Really, the crosscutting (the feature whereby the machine does not generate long strips of paper, easily pieced back together) should be implemented in a much more robust fashion. It's done with teeth that punch through the paper, but they haven't got anything opposing them other than the structural integrity of the paper, which is in the process of being destroyed. So they don't reliably cut the paper, and they snag on the paper too often. It should be, like, two interlocking checkerboard patterns on the cutting rollers, or something like that.

This rant brought to you by Mad Scientists for Better Household Appliance Design.

# 12:25 AM

So you ride yourselves over the fields, and
You make all your animal deals, and
Your wise men don't know how it feels
To be thick, as a brick.

So ends the extended project of the past several weeks, to listen to my entire music collection in ascending order of track length. The longest is of course Jethro Tull's forty-five-minute, one-song concept album Thick as a Brick. The next longest three tracks are all orchestral - a Tchaikovsky piece and two by Aaron Copland. After that we have a whole bunch of jazz, some other orchestral numbers, a mysterious probably-live 18-minute version of Where The Streets Have No Name (which normally clocks in at 5:38), and some of Pink Floyd's longer conceptual stuff (notably Shine On You Crazy Diamond). The longest piece of straight-up studio rock is Genesis' Domino, which is really two songs mashed together.

On the other end, eighteen of the shortest twenty tracks in my collection are individual segments of They Might Be Giants' Fingertips collage piece. All of these are shorter than 30 seconds. (The longest segment of Fingertips is just over a minute.) After that, we get lots of the interstitial spoken-word bits from Blind Guardian's Nightfall in Middle Earth (a concept heavy-metal album based directly on the Silmarillion. No, I am not making this up), a bunch of other humorous bits by TMBG, Moxy Fruvous, and similar personages, and a couple of electronica tracks by the Art of Noise. The shortest piece of straight-up studio rock (which is a nasty judgement call) appears to be the title track off Declaration by the Alarm.

The really interesting thing about this project has been the way it reveals the natural working lengths of various musicians. They Might Be Giants appear to be most comfortable at three minutes or shorter, as do other "humor rock" acts like Moxy Fruvous and Tom Lehrer. Interestingly, the Ramones and a handful of Queensrÿche tracks also show up down here, and some Beatles. The three-to-five minute range is the most diverse, with bands as far apart as Suzanne Vega, Rammstein, the Art of Noise, the Alarm, Paul Simon, and Garmarna all rubbing elbows. Up above five minutes, things thin out a bit (it should be mentioned that by track count, more than three-quarters of my music is shorter than five minutes). The bands that like to do complicated instrumental stuff - Brother, Alice in Chains, Counting Crows, Cats Laughing, U2 - are heavily represented up beyond five minutes, and there's lots of electronica (Art of Noise, Juno Reactor, etc) and jazz in the seven to nine minute slot.

Oh, and the band with the widest variance? Jethro Tull. The shortest track of theirs that I have is 1m09.

Saturday, 5 February 2005

# 12:40 AM

drums in the dark

Today V and I went to see Kodo perform at Zellerbach Auditorium (on the Berkeley campus). Kodo are best known as taiko drummers, but they also do other sorts of traditional Japanese music, and have picked up little things from all over the world.

What really blew me away was not so much the music itself as the showmanship. For three guys to play an elaborate rhythm on three huge drums is "merely" a matter of technique, but to do it while jumping around the stage, swapping off drums, etc. — that made that particular bit as far as I was concerned. Other really impressive acts included the one with five drummers on ten drums, passing the rhythm back and forth between them; and the interlude for vocal and flute that they did in the middle of the second act.

Interestingly, the larger the drum is, the less painful it is to one's one's ears. Well, to my ears anyway. The largest drum they have is about six feet in diameter, at least that long, and weighs over a thousand pounds. They wheel it on stage on this platform thing surrounded by paper lanterns. It has a drumhead on each end, and they play both ends simultaneously. When they're not playing very fast, you can hear each drumbeat echo off the other end of the drum a few milliseconds after it's played.

In case anyone is still wondering, I should mention that the day after the previous post I took the twenty-seven-point-two-millimeter seat post back to the bike shop, with the bike in tow, and they were happy to exchange it for one that fits. My bike is fully operational again.

Wednesday, 26 January 2005

# 10:20 PM

On Sunday I went to Lafayette to see my mother and my grandmother, and I did this by bicycling to 24th and Mission and then taking BART the rest of the way, leaving my bicycle locked up at 24th and Mission. We had lunch and I showed them my hiking photos and tourist photos and party photos and we had a lovely time. But when I got back to 24th and Mission I discovered that some kind of a gonif had come by and removed the seat from my bicycle.

Well, there being not much to do about this but go and get a new one, on Tuesday I took my car to the mechanic, which has needed doing for some time, and then I walked back home stopping at one of the bike shops on Valencia Avenue. The salesman said, son, what do you need? and I said, I need this here seat and a tube to go with it, because some kind of a gonif walked off with my old one. The salesman said, do you have your bike with you? and I said, no, but I can tell you it is a two-year-old Marin Larkspur. He said, wait here, and he went in the back with the catalogues and the repair manuals and the spare parts, and he came out with a seat tube. He said, son, what you need is a twenty-seven-point-oh millimeter tube and here it is. And I thanked him kindly and I paid for the seat and the tube and I took them home.

Today I got out my bicycle and my Allen wrenches and the new seat and tube and I tried to put them all together but the tube would not fit in the hole. I called Michael over and the two of us applied brute force but the tube still would not fit. So we looked the tube over very carefully and what did we see but an engraving saying clearly this is a twenty-seven-point-two millimeter tube.

And I suppose there is not much to do about this but take it back to the store on Valencia Avenue and tell that salesman, chummer, you said this was a twenty-seven-point-oh millimeter tube but it isn't. Tomorrow.

Tuesday, 18 January 2005

# 6:30 PM

Panix has now gotten its domain name back. Mail to zackw (at) panix.com should work again. They ask that people stop using panix.net.

Sunday, 16 January 2005

# 11:55 AM

I'm not sure how much good this will do since it's affected too, but... Panix has had its domain name hijacked. Mail sent to zackw (at) panix.com will not reach me. Please use one of the following other addresses:

  zackw (at) panix.net
  zack (at) icsi.berkeley.edu
  zack (at) codesourcery.com

Saturday, 27 November 2004

# 11:10 PM

I would like to know precisely what is the difference between normal Ghostscript and ESP Ghostscript.

To be somewhat more specific, I would like to know exactly what it is about normal Ghostscript that causes cupsd to emit the following error message:

E [27/Nov/2004:23:13:11 -0800] Unable to convert file 0 to printable format for
job 1!
I [27/Nov/2004:23:13:11 -0800] Hint: Do you have ESP Ghostscript installed?
I [27/Nov/2004:23:13:11 -0800] Hint: Try setting the LogLevel to "debug".

I tried setting the LogLevel to "debug" and got no additional information. I also tried running the daemon under strace, which revealed that it makes no attempt to do anything with the print job before issuing the aforementioned error. I can only conclude that when the daemon started it somehow probed Ghostscript, determined that it was the wrong kind, and decided not to even bother trying to use it.

This is doubly silly because, as the daemon bloody well should be aware, my printer is perfectly capable of interpreting Postscript itself, so when I try to print a file which is already in that format, it should be able to do the moral equivalent of "cat > /dev/usb/lp0" and be done with it. I know very well that that works, because that's how I have to print stuff right now. Grrraaaaaah.

Sunday, 31 October 2004

# 1:20 PM

Yesterday evening I plugged my camera into my computer, preparing to go through the elaborate rigmarole that has always been required in order to get the photos off the camera.

A dialog box appeared on screen. "Hey, that's a camera," it said. "Would you like to download photos?" I pushed "yes" and got another dialog box asking for where to put them, and then it slurped all the photos off, erased the camera's memory card, and brought up a fairly spiffy thumbnail-gallery window. No fuss, no having to muck around in /proc/bus/usb as root. I'm impressed. I would be a lot more impressed if there were somewhere I could put in that it should not bother me with dialog boxes, it should just automatically download all the photos to a designated location and then give me the thumbnail window. It does not appear that this is possible.

Alas, still haven't found a Web-gallery program that I'm happy with, so I can't actually show you these photos, but allow me to assure y'all that the jack-o-lanterns this year are mighty with artistic creepiness.

Wednesday, 27 October 2004

# 8:20 PM

As I write this, there is a total eclipse of the Moon outdoors. I was watching it, but it's cold out, and nothing much happens over the duration of totality; I'll go back out around 8:45 and watch it emerge.

The last time I tried to watch a lunar eclipse was in fall 1996. I was in New York, and it was overcast. We could see the moon through the clouds before the eclipse started, then it dwindled and became invisible at totality. Today, the skies are clear, and I can see the red disk of the Moon reflecting the light that bends through Earth's atmosphere. It was a little brighter on the ascending limb when I started watching, just a smidge before maximum eclipse. Of course I had to convince myself that that's the right place for it to be brighter; it doesn't seem like the trailing edge of the Moon (as it orbits) should be on top, as seen from here on Earth. Except of course it is. There are two things going on there. One is that the Moon's apparent motion across the sky is primarily due to the rotation of the Earth; the "proper" motion (as the astronomers call it) is west to east, which is why the Moon rises a little later each evening. The other factor is of course that, if you're standing looking at the Moon which has just risen in the east, its north pole is not on top, but on the left side.

Contemplating such things invariably puts me in mind of the little blurb in the corner of one of the pages of my mother's copy of The Next Whole Earth Catalog (which I read at an impressionable age); which was about ways of thinking to remind yourself that you were not living on a flat Earth. Unfortunately, that's about all I remember.

Tuesday, 10 August 2004

# 1:20 PM

another math problem

Really an algorithmics problem, I suppose. Some definitions: for any set s with ns elements, which are totally ordered:

  • The median index ms is the number ⌊ns/2⌋;
  • The median Ms is the ms-th element;
  • The left half L(s) is the subset consisting of the elements numbered 1 … ms-1;
  • The right half R(s) is the subset consisting of the elements numbered ms+1 … ns.

Given a base set S with n totally ordered elements, find an algorithm which emits a list of medians, of the following sets in order:

  1. S
  2. L(S)
  3. R(S)
  4. L(L(S))
  5. R(L(S))
  6. L(R(S))
  7. R(R(S))

and so on until all elements of the original set S have been emitted. In other words, the set is organized into a binary tree, each of whose subtrees corresponds to a subset of the original set, and is headed by the median element of that set; and then the tree is walked in breadth-first order.

The preferred solution is a nonrecursive algorithm with O(1) space requirement.

Monday, 9 August 2004

# 11 PM

did you know ...

that recent GTK+ allows arbitrary rebinding of keyboard shortcuts? I sure didn't. It's yet another undocumented configuration toggle, and it doesn't work in xchat, which sucks because xchat is the program I use all the time which has a menu keybinding that I really, really wish I could get rid of (Ctrl/I "detach tab"). More details here.

As far as I can tell, the things you can put in .gtkrc are documented nowhere. Please, someone prove me wrong.

Sunday, 8 August 2004

# 11:50 AM

circus contraption

Last night V and I went to see the new Circus Contraption new show, Circus Contraption's Grand American Traveling Dime Museum. This is a lively mix of aerobatic feats, old-style burlesque, klezmer music, sketch comedy, and (at the very end) a musical number that completely blew me away with the ingenuity required to think of the gimmick, the musical skill required to pull it off, and the elegant beauty of the result. (Not saying what they did.) Also, there were penny-farthing bicycles! I'd never seen one of these in the flesh before, much less with someone riding it.

The show is at CELLspace, San Francisco, through the end of August. Y'all should go see it. (Obligatory content warning: contains much ribald humor, a small quantity of nudity, and a gunshot.)

slight correction

In the math problem below, the correct formula for values of k is 2i+1s + p, not, er, whatever silly thing it was that I don't remember now that I've gone and changed it.

Monday, 2 August 2004

# 11:35 AM

math problem, solved

Let's restate the problem; the form I showed last time doesn't bear an obvious relation to the problem I actually wanted to solve. Given constants P and S (both of which are powers of two) we want to find all positive integers K (also a power of two) and N (not necessarily a power of two) which satisfy the equation

K = SN + N + P

Let's make explicit which constants are powers of two.

2k = 2sN + N + 2p

where

k = log2 K
s = log2 S
p = log2 P

Factoring out N,

2k = N(2s + 1) + 2p
2k-p = N(2s + 1)/2p + 1

Written this way, it is obvious that 2p must divide N evenly (since it cannot divide 2s + 1, and the right-hand side must be an integer). Let N = 2pr. Then

2k-p = r (2s + 1) + 1

All powers of two are even, so all values of r must cancel the 1 on the right-hand side. The simplest expression for r that does so is r = 2s - 1.

2k-p = (2s - 1)(2s + 1) + 1
2k-p = 22s - 2s + 2s - 1 + 1

The second and subsequent terms on the right-hand side cancel, leaving us with

2k-p = 22s
k - p = 2s
k = 2s + p

corresponding to N = 2p(2s - 1) = P (S - 1). This is the basis of a family of solutions of the form

N = (2s - 1) ∏i (2s ⋅ 2i + 1)
k = 2i+1s + p

where i = 0, 1, 2, 3, … Demonstrating that these solutions all work is a straightforward exercise in algebra. Obviously the i = 0 case (N = P (S - 1)) is the smallest. I have not been able to prove that this is the smallest possible solution, or that there are no solutions outside the above family. However, for the two cases I am specifically interested in - P = 4, S = 16; P = 8, S = 32 - I've enumerated values of the right-hand side of the original equation, for all values of N up to the predicted smallest solution, and found that it is indeed the smallest.

Thanks in chronological order to Nathaniel Smith, Dan Berlin, Tkil, and V. A practical application of this is hoped to be coming soon to a GCC near you.