RSS 0.91 feeds Subscribe and save over 75% off newsstand price!

car - 7
games - 2
hacks - 20
  flac - 4
  photo - 4
  slim - 3
journal - 127
misc - 5
news - 9
pomona - 2
rants - 6

For the biographers:

2005 - 2006 - 2007 - 2008

Now playing

CD-Box (disc 1)

Green Bird
from CD-Box (disc 1) by Cowboy Bebop
at Wednesday, August 20, 2008 1:53 AM

How this works

Hot Live Webcam

Yes, really.

Recently from Google

from Evansville IN, searching for example c vorbis_comment use

from Magdeburg DE, searching for E7Even-LLU-User

from Chicago IL, searching for JB waterman

from Alhambra CA, searching for autostitch 16:9

How this works

Contact me

mikey@singingtree.com
4171622
mdickers47
mike.dickerson@pomona.edu
pomonamikey
wii number7808 7239 7724 0213
blackberry pin204db8e4

On Notice

  • American Apparel
  • Taco Bell
  • Iron Maiden
  • Assertiveness Training
  • Oregon
  • Fallout Boy

As seen on The Colbert Report.

This site contains only my own opinions, and not those of my employer.

May look horrible in Internet Explorer.

blosxom logo   Creative Commons License

gotta
knock
a
little
harder

obstrepero.us banner
mostly harmless circulation 214

the only one who could ever feed me was the son of a pizza man

filed under: /journal

That hilarious witticism is what I kept thinking on the way home from work today, for some reason. Probably because I am hungry, and because Megan likes to sing the non-adulterated version at the karaoke. I am hungry because I haven't eaten since Friday. I haven't eaten since Friday because I apparently got food poisoning. That is what the Kaiser doctor lady said, anyway. Apparently when one has certain symptoms typical of food poisoning, one can get dehydrated in half a day. And apparently the post-thirsty stage of dehydration just hurts, a lot, when one's kidneys can't process blood anymore. This is a state that is hard to get out of by oneself, when one can't drink water and keep it down.

So the Kaiser doctor lady, whose name, coincidentally, was Sue Kim, gave me some anti-nausea pills1 and said that if I could keep liquids down with the pills, it would be the fastest way to get better. This I promised to do in exchange for no anti-nausea shot and no IV. So that's what I did, and I think I am mostly over it. My big accomplishment was eating some crackers today. Anyway, so that's why I'm hungry.

Chrisi and Beth took me to the doctor, by the way, which I'm sure is what they wanted to do with their entire Saturday. If they hadn't made me go, it seems likely that I would have ended up there eventually, but I'm pretty sure that if it had been another few hours I wouldn't have been able to talk my way out of getting shots. So that was a close call.

Not much else to report, or I would report on it. A couple weeks ago, I got the idea to go buy the equipment and develop my own film, which isn't really very hard. So now I have D-76, stop, fixer, Hypo Clearing Agent, Photoflo, graduated cylinders, beakers, thermometers, and everything else that one would need, except the film, because I haven't found anything to take pictures of since then. Maybe if I go to Ireland in a couple of weeks as I keep meaning to do.

1 And thanks to wikipedia, I have just learned that the promethazine can be combined with codeine to make a recreational drug cocktail called Purple Drank! How fortunate that the other time I was sick this year, I got codeine. No, I'm not going to try Purple Drank.

12 Aug 2008 00:18 PT - persistent link - trackback - 5 comments

at odds with the times in wars with no lords

filed under: /journal

The day after Megan's wedding, I had until about 8pm to be back at the Salt Lake airport. Since it was a 4 hour drive back, and I don't tend to get up all that early, that meant I had time to stop at one of Idaho's many attractions. I decided to skip the Potato Museum (which I am not making up) and go to Preston, which is the town where Napoleon Dynamite was filmed.1

For a town whose sign says it contains 3000 people, Preston is a metropolis. The downtown goes on for at least three or four blocks. If the commerce-to-population ratio were the same in Sunnyvale, it would look like Manhattan. This must be because Preston is a county seat, with a courthouse and a number of distributors of various agricultural supplies and accessories. The Chamber of Commerce sells T shirts and Sweet Maps of Napoleon's Preston ($1), so that is your first stop.

The highlights of downtown were Napoleon's thrift store and the Rex Kwon Do storefront, which is really called Groll's Gym and is NOW OPEN 24 HRS. How or why it is open 24 hours is beyond me. I would have to guess that it really just means they don't lock the door.

Away from the main street, there are a couple of suburban looking blocks, then you quickly run out of paved roads. You can find pretty much every house in the movie, but Pedro's and Napoleon's are the most recognizable:

Some of the movie sites are not in Preston exactly, but a ways down the highway in a place called Franklin. These include Debbie's house, Trish's house, and the egg farm, which is apparently a Biosecurity Control Area. The valley with the egg farm is what you see at the top of this page, if you are reading this in approximately 2008, and if you aren't reading RSS.

1 For extra fun, read the comments on IMDB where people explain how the movie is all about 80s nostalgia. Um. Right. 80s.

° ° °

The other thing I could have done that day was drive down past Salt Lake, one more hour to Orem, which was, as my mom said, probably the last chance I would have to see Grandma alive. She was right; Grandma died on July 10. Erin has written a better story about her than I could have done. Living in Provo, Erin spent more time with her in the last few years than any of the rest of us, unless it's my mom.

I'm not overly worried about not having gone down there in June. By all accounts, Grandma was not in much of a condition to be receiving visitors. It seems fine to me that I last saw her at the family reunion in 2007, when she was still mostly mobile and mostly coherent. I know people fixate on the random details of the circumstances just before somebody's death, but I don't know why. If you are religious, and believe that Grandma is hanging around somewhere intact, then surely she has things she'd rather think about than the month when she could not walk or eat or speak. If you're not, and believe that Grandma just ceased to exist, then she really doesn't care about any of that stuff.

That's another thing. A number of people at the funeral said they knew they would see Grandma again, as people at funerals usually do. If that happened, who's to say that you would even recognize her? I assume that she wouldn't have the form of her 90 year old self, because what kind of heaven would that be, everyone wheezing around in wheelchairs with oxygen tanks. I'd think that if it was up to her, she would pick an age that happened well before I was born. Likewise with her grandma, who must remember her as a teenager or so. So I guess even if one does wake up at a big family reunion after one dies, one has a lot of changes to get used to.

Something I did not know: my grandma wrote poems. She won second place in a Utah Valley contest of some kind.

What surprises will people find out at your funeral?

21 Jul 2008 01:20 PT - persistent link - trackback - 3 comments

Famous potatoes

filed under: /journal

Last week I went to Idaho for [my sister] Megan's wedding. As I get tired of explaining over and over, a typical Mormon wedding such as this one happens in the temple, which means very few people are present at the actual ceremony. Most people, including me, just wait outside and go to a reception later. One still has to get dressed up for this, but only so that one looks nice in pictures. This is the extent of your participation in the "wedding" proper. There are no pictures of it, ever, and no visitors, ever.

Also, the "temple" is not the same thing as the "church." Churches tend to be plain brown buildings and there is likely one in your neighborhood, unless you are reading this from Connecticut. Temples tend to be rather more conspicuous and are rare; there are probably about a hundred of them these days. It happens that [my girlfriend] Megan lives just down the street from the Oakland temple. They are used for completely disjoint sets of things. Nobody goes to regular Sunday church in a temple.

All right, so to the extent that Megan's Idaho reception had a photographer, it was me. I borrowed Kacirek's big Pelican case which is an imposing 15 pound piece of equipment itself, and amused myself by making up various appropriately mysterious yet plausible explanations I could give to anybody that asked about it while I dragged it through the airports. Curiously, I did not need a fictional explanation or any other, because even though a couple of people asked about the case, nobody asked what was inside.

Upon arrival in Salt Lake City, I got a convertible rental car, which seemed like a good idea at the time, and drove four hours to Rexburg, Idaho. Upon arrival in Rexburg, I found out that the plan for pictures was to be outside the temple at 12:30pm—that is, at high noon, in direct sun, on white concrete. Awesome. Anticipating a lot of full-power flash cycles, I remembered to charge another set of batteries in the hotel that night. Which is right where they stayed the next day, when I forgot to bring them.

I started out under the porch, or whatever you would call it, the covered walkway outside the front door, with the Canon 1DmkII and Tamron 28-75/2.8. This area had a white plaster-esque ceiling about 12 feet high, which was good for bouncing the flash (a 580ex). The results in here were not too bad, at least when I got a full dump from the flash:

But there wasn't enough room under here for big groups, so all of those pictures had to happen out on the steps, in the sun. With nothing to bounce against, and figuring that I couldn't afford an umbrella with all of ~60 watt/seconds and 10+ people to light with it, I just shot these straight on. That's what all the pros I have observed do, anyway. I guess all you can hope for from the flash is to fill the shadows a little bit, and it mostly managed that.

This is a hard part of every wedding. These group pictures are quite boring, and all anybody is looking for is a passable job, but to even get that, somebody has to boss everyone around. This was always delegated to me when working as an assistant, probably because it sucks. This is easier when nobody knows you, because then you are a Professional as long as you do a halfway convincing acting job.

Anyway, we got done with those and did a few more set shots, for which I got out a second flash and a white shoot-through umbrella. This was hand held by Kyle or Erin, the technique usually called "voice activated light stand." (I had mechanical light stands too, but even if there had been time, it was too windy.)

Now since I have very little experience with using lights in direct sun, there was a strong possibility that I was making some horrible mistake, so I repeated almost every shot with natural light, just in case that was better. And the easy way to do that was to shoot twice in quick succession, before the flashes recycled. What this means is that I have a number of useful before-and-after pairs that show me exactly what the lights did. So, this is what the umbrella slave, held just out of frame, at 1:1 ratio with the direct flash looks like:

And here is simple direct fill, plain TTL with no adjustments:

Then I tried a thing I learned from strobist, which was to meter the natural light, underexpose it by 1-2 stops and make the flash bring the subject back up to normal. This works as advertised, but can make it look like they are standing in front of a painted backdrop:

Meanwhile, I had put the lensbaby on the 30D, but this was a bust; I way overexposed all of these that were in the sun. A couple that were taken in the shade were passable:

You can see the weird effect that I have noticed before, where if you really hugely blow the highlights by like five stops, they turn weird aliased colors. Hence the sky and veil have gone pink. It's not surprising that these were overexposed, since the camera has no idea how to meter with the lensbaby, but I should have checked the histogram.

There weren't a ton of creative masterpieces that came out of the rest of the day, but I think the album overall would hold its own against a fair-to-middling professional effort:

Finally, my mom had this idea that I should make a picture of the temple lit up at night under the full moon, so we went back out there at about midnight. This was much harder than it looked, but eventually we managed these:

The rest of the set, and bigger versions

Next day, Preston, Idaho home of Napoleon Dynamite.

26 Jun 2008 02:21 PT - persistent link - trackback - 3 comments

fork and exec ftw

filed under: /hacks

One of the reasons I put off the upgrade of my work computer was that it required me to face the fact that some library named "pyflac," which I used to write flacenstein, has disappeared. Nobody wanted to maintain it, because maintenance is boring, so instead at least two other people have written new and completely different libraries from scratch. This is so typical that it has a name (CADT), and it drives me up the wall.

So I downloaded some other guy's new python tag library, which is not really any less hacky or better documented (writing documentation is boring), but after a few minutes of guessing at how to use it, it occurred to me that you know what, flacenstein also depends on cdparanoia, yet that part has always worked just fine and has never required me to touch it at all.

How is that possible? Because I heeded the advice in the cdparanoia code and never screwed around with libparanoia or any library bindings at all. I just fork and run the cdparanoia process and read its output.

I see this pattern every day in another place. You may have heard of GFS, which is the "Google File System," not unlike Amazon S3. It doesn't actually work like a file system; you can't mount it. You have this enormous and complicated file-like API that changes all the time. Or, you have a command line tool that provides most of the file API. Binding to the file API requires a recompile every couple of weeks, occasional busywork introduced by changes to the API, and many MB of bloat dragged around with your binaries. Even when you "only" have to recompile, this really sucks when you have to ever-so-carefully distribute the new binary to many thousands of machines. Whereas the tool flags change much less often, and it stays up to date for free, because it's Somebody Else's Problem.

So I now advocate os.popen for the win. It screamed "hack" at me when I had been more freshly educated in Professional Computer Science. But you know what, it works just fine and has a number of advantages:

  • The parent-child process interface is old and well understood and well defined. I tell the child what I want it to do by giving it arguments. It tells me how it turned out with its exit code. If it wants to tell me anything else, it writes to stdout or stderr. All of this is trivially easy to handle in any programming language ever written.
  • It gives me fault isolation in a simple and well defined way. No matter how badly the child craps itself, the kernel cleans it up and changes the sheets and politely informs me that my child died on a signal 11. Ever try to use a swigged-up library that has a habit of SIGABORTing itself on errors?
  • The command line interface is stable. Far more than most people's library interfaces. Guess why—because people use the command line interface. Changing flags and such is seen as expensive, because it inflicts usually-pointless pain on the poor ignorant users. I get the same benefit if my automation pretends to be a poor ignorant user.
  • It is dead simple to debug. If any of my programs has trouble, I print the command it tried to run and die (or whatever is appropriate). Copy and paste command into shell, find out why it doesn't work, done.
  • It is similarly easy to explain and test dependencies. Try running this, and this, and this, and if it all works, my script will work for you. Trying to solve this problem for linked code leads to apt-get or /usr/bin/ports. These things are fine when they are set up just right, but getting your code set up just right is a ton of work that I never bother to do. (packaging is boring.)
  • Fork and exec just isn't very expensive. Look at the hash Apache made of it when they tried to eliminate fork in apache2, the better to appeal to the average Windows idiot. It has been 8 years, does anybody use apache2 yet?

Linking is overrated. Fork and exec ftw.

13 Jun 2008 01:59 PT - persistent link - trackback - 1 comment

work it harder make it better

filed under: /journal

I had a good weekend. This is what I did:

  • mopped the living room, dining room, kitchen, and hallway
  • mopped the living room a second time when it was still sticky
  • washed or put away the laundry on the floor, which was all of it
  • vacuumed the kitchen rugs and bedroom
  • washed and put away the dishes
  • cleaned the bathroom
  • watered the grass, two times
  • put away the camera stuff that was taking up the entire junk room floor
  • put away the camping and car washing stuff that was still out in the yard
  • got light bulbs to replace the ones that had burned out
  • put away the green sheets and brown blanket and brought back the other ones, which shall be the summer ensemble
  • took out the trash and an entire bin of empty cans and bottles

All this makes the house look quite different, which always makes me happy, whatever the reason is. Then Megan came over on Saturday night, but fell asleep at 11:00 as tends to happen, so I went and fixed some stuff:

  • upgraded the computer I use for work from "dapper" ubuntu to "hardy," which is about two years of revisions. The automatic upgradamabob thing tried really hard, but crapped out and left behind a big mess that took a lot of dpkg this and apt-get that to sort out. But the point was to get firefox 3 and..
  • mediatomb, which is a thing that exports all my video and picture files to be playable on the Playstation. This seems to be working.
  • upgraded the slimserver to the new version, which is now called "squeezecenter". It's now all fancy and ajaxy, but thankfully my crazy flac patch still applies cleanly, so it wasn't too miserable to make it work again.
  • fixed the Apple computer to be able to print to the communal printer (after much frustration trying to do things the Appley way, it turns out you do this exactly the same way you would have done on linux, by adding the one line "server nightfall" to /etc/cups/client.conf.)

We interrupt this blog in progress to bring you breaking news: some drunk guy just walked into my kitchen. As in, opened the door, came in, closed it behind him, and turned on the lights. This was a little unsettling, but at least I was still up, or I imagine it would have been moreso. A short conversation ensued:

Me: Who are you?
Some Dude: Do you want to sell your house?
Me: No.
Some Dude: (looks around speculatively) You will one day.
Me: This isn't my house.
Some Dude stares at me, apparently confused.
Me: (opens door after the fashion of showing someone out) I don't know who you're looking for, but it's not me.
Some Dude goes back outside and stands on the steps. Me feels rather better about the situation with him not in my house.
Me: Are you ok?
Some Dude is silent
Me: Do you want me to call a cab?
Some Dude: No, no (lurches toward the street)

That never fails. If there is one thing drunk people are sure they don't want, it's a cab. I'm glad the guy left without needing any more encouragement than the door opened, since I don't really know what my escalation path would have been here. He was somewhat bigger than me, maybe like 240 pounds. He also had a bunch of dry grass and crap stuck to his shirt, which makes me think he was passed out (or maybe just fell) in my front yard for a while before he decided to come in.

09 Jun 2008 03:47 PT - persistent link - trackback - 6 comments

busy busy busy

filed under: /journal

The more stuff I have to do, the less I have to say about it. And I have had a lot of stuff to do recently. So this isn't likely to be terribly interesting. You can skip reading this one, I won't know.

I mentioned that I went camping at Big Basin with Kacirek and them in April, which looked like this:

Man that was cold. Don't try to tell me how cold weather camping seems like it might be really fun, either; I did it enough times during the years when the church Boy Scout troop had some kind of iron-man policy of going on a campout every month of the year, except March and April, which were declared to be too muddy. In Connecticut it might be 50 degrees in January, but it might also be 5, and we did both. Now I am a grown-up, and can assert with that this was not all that great of a character building or educational activity, it was just cold.

The following week I went to Yosemite with the other crowd, which looked like this:

This second picture is on the "mist trail," which I did not finish. Possibly because I was pretty sick by then, but I am not going to claim that I would have finished it anyway. It is a lot of walking uphill, even before you get to the wet and slippery death-stairs which go on, as far as I know, forever. I gave up and turned back about half way to Cirith Ungol, and waited back at the bridge, where I amused myself taking pictures of birds and trees.

After Yosemite I was sick for a week, then on call for a week, then Alice came to visit, and we went to the sfmoma art museum, which looked like this:

The One Way Color Tunnel was my favorite thing. It is made out of glass coated somehow so that it reflects all kinds of colors in most directions, but after you walk through it and turn around, it is all black.

We also saw Famous Works of Modern Art such as [an authorized reproduction of] Marcel Duchamp's Fountain, which you may also recognize as Gas Station's Urinal, and my favorite, Robert Rauschenberg's White Painting. I was not allowed to take pictures in the galleries, so I have painstakingly recreated White Painting from memory, using only HTML:

It is apparently true, and not just an obvious joke, that White Painting was an inspiration for his friend John Cage's musical composition, 4'33".

Anyway, we actually went to the museum because I wanted to see the photography exhibits of Lee Friedlander and Gabriele Basilico. I expected to like the second one better, being about Silicon Valley, but it was the other way around. Mr. Basilico's pictures were bizarrely sterile, frequently featuring busy streets and freeways that he has somehow photographed without a single person in sight.

(A secondary objective on this visit was to take a picture of Alice that does not completely suck. This has always been incredibly difficult for me, for reasons I do not understand. That is why the picture of her in the coffee shop; it is maybe my best showing yet.)

So that happened. That brings us right up to last weekend, when the ever-intrepid gang went to Reno-Fernley Raceway, which, in case you don't know, is Racing's Field of Dreams. Judging from their web site picture, which features "Future Kart Track," "Future Golf Course," and "Future Hotel and Casino," they have got at least the Dreams part down. Unfortunately it rained most of the weekend, which looked like this:

But it dried out some on Sunday afternoon, so we went out to the track, where Adam had been sitting in Weaver's RV during the rain. We watched them drive, which looked like a lot of this:

I didn't drive this time, for a number of reasons. I don't have a helmet, I need a couple of small things fixed on the car, I didn't want to drive the 4+ hours each way to Reno by myself, blah blah blah.

That about covers all the action and adventure around here. Somewhere in those few weeks I bought the [onetime] fastest camera in the west. I also got promoted again. Like the previous time, nothing will actually change in what I do at work, it just means...something. Come to think of it, I'm not sure what.

28 May 2008 02:36 PT - persistent link - trackback - 1 comment

Encyclopedia Brown and the Case of the Suspect Postcard

filed under: /journal

So I haven't written anything in a while, which is because three weeks ago, I went camping in Big Basin with Megan, Kacirek, and them. That was cold. Megan was sick at the time. The weekend after that, I went to Yosemite with Chrisi and Soo and Adam and Beth. It wasn't cold, but I was starting to get sick at the time. Then, predictably, I spent the following week at home sick. That sucked.

Before I write anything long and involved about all those misadventures (for which you're holding your breath, I know), maybe you can help me figure this out.

Trashball is a blog that I have read for a couple of years. It's written by a guy that used to haul trash around DC, and he used to post pictures or scans of random bits of it, and this used to be interesting to me. The name "Trashball" comes from the fact that he set up a vending machine that sold random pieces of trash in plastic capsules. This was all very avant-garde so it got an article in the New York Times. Then he quit the trash hauling job and moved to New Mexico, at which point the blog got far less interesting. But that's neither here nor there.

If you look right now, the second-newest post is a picture of this allegedly old postcard. I say "allegedly" because there are a number of things wrong with it. How many can you find?

The most obvious problem, which set me off on this whole thing, was that the given date is 1939, but the address has a zip code. Zip codes were not announced until 1963. Even worse, how did that Postnet barcode get printed on the bottom? That wasn't invented until 1980.

There's more. Three cents postage seemed a little steep for the year the Joads set out for California, so I looked that up, and the cost of mailing a postcard in 1939 was one cent. Maybe the sender was a wealthy Jim Rawley who didn't care about the extra two cents? He would have also had to be a time traveling Doc Brown, because as eagle-eyed Sally Kimball (played by Megan) noticed, the stamp was printed for the 150th anniversary of Tennessee statehood, from which we find that it was issued in 1946. Finally, that three cent stamp appears to have been cancelled with the message ALWAYS USE ZIP CODES, which would imply that the postmark is also no older than 1963. It's almost possible that the postcard was mailed with zip code for three cents, but not quite: The postcard rate was raised to 4 cents on January 7, and Zip codes were not announced until July 1.

I can think of no theory, no matter how ludicrous, that accounts for more than a couple of these inconsistencies. Nor can I think of any theory for why anybody would bother to construct such an elaborate yet obviously flawed forgery. Can you?

08 May 2008 00:39 PT - persistent link - trackback - 3 comments

As You Like It 2.7.147

filed under: /journal

see also: the end of the summer

see also: rainbow waterfall sunny liquid dream

This seems to be a dry spell. I haven't got much of anything to say, so here is some disorganized junk.

This month has not been great; I don't really know why. I guess I don't like the weather at this time of year, for one thing. By now, the spring should be well on its way to summer, but here no change is coming. Some time around July, if you have paid close attention, you might notice that some days are 68° and clear, instead of 55 ° and rainy, but that's about it. Nobody has a swimming pool here because it never gets hot enough to use it. Nobody has a hot tub because it never gets cold enough. In terms of Connecticut, it is a perpetual drizzly March here. It's the seasonless world where you laugh, but not all of your laughter, and weep, but not all of your tears. This will bother me again in the fall, like it always does.

I am also contending with the anti-nesting instinct again, which is probably related to my apparent seasonal affective disorder. This means I filled up the trunk with more clothes and old furniture and books and took it to the Goodwill.1 I go through the house with a trash bag thinking things like, why am I ever going to want my high school diploma again? I have these moods where I just don't want any of it. I bought some plastic bins at the Costco thinking it will be easier to move if the stuff is already packed. I replaced a table with one that will be easier to carry. Why, I don't know. I have no plan to move anywhere. I don't even know where I would go.

Today was the mysql conference in Santa Clara again, at which I reprised my role as Google Engineering Representative, handing out such coveted gewgaws as the blinky pin you see here. That means it is an acting job. In 2006 I was the new guy that tagged along with Steve, my mentor and tech lead. This year I brought Ian, our new guy, to whom I am now mentor and tech lead. The symmetry was not lost on me.

Normal work is an acting job these days too, because of this tech lead business, which is new in the last few weeks. It came about because Steve is becoming a manager soon, apparently for real this time (it has been "soon" for 2 years now). We had a difficult couple of weeks during which it was not clear who was going to inherit the job of tech lead, which I got through using my passive Gandhi technique. This means I offer no resistance, only sit back and wait until other people have messed up enough that somebody asks me to drive again. So having gotten over that, the question now is whether "tech lead" means anything when detached from Steve, who will after all still be around, just a manager. That remains to be seen.

This is what success at the Google looks like, so if I don't like it, it will be time to think up either an answer to where I am going next, or a better rationalization for staying here.

1 But don't worry if you are one of the several people that gave me books for Christmas or my birthday, those are all still here.

16 Apr 2008 01:55 PT - persistent link - trackback - 1 comment

the Pei Pei art project

filed under: /journal

Back in November, Eric's girlfriend Pei Pei met me for the first time at the Guy Fawkes bonfire event. Somehow she got the idea that I was a Photographer,1 and invited me to appear in her art show that she was planning. I readily agreed to this because the show wasn't going to happen for several months, and no date more than a couple weeks in the future really registers with me as a thing that will actually happen.

I must have been going through a creative phase at the time, because it was only a week earlier that Kacirek's then-girlfriend Christine met me for the first time, and immediately decided that I needed to meet her then-single friend Megan who is Creative and a Writer and works for the Theatre-spelled-with-an-RE. (Christine is now engaged to Kacirek and Megan now has a boyfriend.)

So despite my skepticism, March 2008 came around, and it was time to worry about what Mikey the Photographer was going to exhibit in the Art Show. I didn't want to take it too seriously, but I didn't want to take it not seriously enough, either, since I could see that Pei Pei was working really hard on it. She printed a program, made little museum-like name plates for each person, and so on. So I put some real effort into my project as well. I was just going to post the product, but I think the process is the more interesting part.

Here was an odd thing. I had not been featured in an Art Show since high school, and since that's all I had to go on, I went and got foam board and spray-mount glue like we did back then. I had Pei Pei's theme to help pick the photographs, which was "Expulsion from the Garden." I got a colorimeter to calibrate my new display to try to get control of the color of the prints, which I haven't bothered with before.

I got this stuff at the Aaron Brothers store near my house, which is just a whitey suburban strip-mall chain, of course. There was only one other customer there; a woman who wandered around looking at the paints and feeling the brushes and so on, until she sheepishly explained to one of the employees that she was "just getting started" at painting and didn't really know what she needed. I was doing exactly the same thing, of course, a couple aisles away with the various spray adhesives and mat cutters and such.

Good for her, I decided, and I hope she does paint something, even if it sucks. So what if she is never going to have a fancy gallery opening where smug trendy people will drink precious little espressos. So what if she never hangs a picture outside of her own house. If she makes anything at all, she is participating in the creative scene, and that matters.2

This fits directly into an ongoing conversation with Megan, who has been concerned about the questionable future of The Theatre. My assertion is that High Art as found in SFMOMA or National Geographic or Berkeley Repertory Theatre will not survive without legions of active participants, however amateurish they may be. That's because you can't sell any of these things as purely passive entertainment, because they can't compete with TV. Look at the audience at any of Megan's shows—anybody under 70 is connected to the theater in some way. So any Serious Artist that might turn up his nose at today's strip-mall art store does so at his peril, because its customers are the people–possibly the only people–that might buy a ticket to his highbrow exhibit tomorrow.

Anyway, the point of that argument was: hooray for Pei Pei, for encouraging a bunch of random people to draw and paint and sing and act. She did more for the Future of Art than the next twelve hand-wringing articles in the San Francisco Chronicle.

So, having gone to some trouble to convince you that it doesn't matter, here is what I actually produced. I mounted each of these 10x10 squares on a white 12x14 board, so that they were framed kind of like a Polaroid, not that that had any particular artistic significance. The little explanatory notes I printed out and mounted on a board of their own. And let's don't talk about how long I just spent trying to recreate that effect in CSS.


The four pictures I have printed do not have much of a unifying theme, but rather represent four different interpretations of Peipei's theme, "Expulsion from the Garden."

Sand: Death Valley, 2008

If the paradisical Garden was the place where the "Lord God made to grow every tree that is pleasant to the sight, and good for food," then it would be hard to get more "expelled" from it than the sand dunes in Death Valley. These tracks would have been made by a raven, who landed here for a short time during his endless search for food in hostile country. My tracks are in the picture too, and although I wasn't looking for the food at the time, I couldn't stay here either.

Cemetery: Powerscourt, Ireland, 2007

If the Garden were the whole earth and all of human life, then the expulsion could only mean death. Mormons (and possibly others, but that's all I really know) believe that memories of the premortal existence are temporarily obscured by the "veil" of life on Earth, so death would also represent a transition to a less sheltered state with complete knowledge of good and evil.

And by the way, this place is called Killing Hollow, and is a closed part of the Powerscourt gardens where I was not supposed to be, and would likely have been expelled had I been caught.

Wedding: Palo Alto, 2007

A wedding was traditionally the end of childhood and beginning of adult life. This idea is now something of an anachronism, which suggests that our society overall has outgrown the more innocent era of 1950s picket-fence ideals.

The composition of this particular picture, where Soo has just noticed me from a distance and interrupted the important goings-on to wave (hello? goodbye?), also happens to be a visual metaphor for the inevitable change in relationship that happens when one of a pair of single friends gets married.

Park benches: Golden Gate Park, San Francisco, 2007

This picture is the most literal and least pretentious. The lines and colors of the green benches seemed to evoke the sand of the desert and the foliage of Powerscourt, but this particular man-made garden is closed.


1 This is apparently an entry with Reckless Capitalization.

2 This is all projection again of course. What I mean is that I will never have a fancy gallery opening full of smug trendy people, and I may never hang a picture anywhere outside my own house, but that doesn't mean that making them is a waste of time.

07 Apr 2008 03:06 PT - persistent link - trackback - 3 comments

Stitching gigantic panoramas in OS X

filed under: /hacks/photo

Several years ago, somebody showed me a program called "Autostitch," which uses some new technology to automatically assemble one large image from a lot of overlapping small ones. So I thought I would try this in the desert this year, and brought back two sets of pictures meant to be stitched into two large panoramas, one at Aguereberry Point and the other at Eureka Valley.

I figured that with the passage of several years, the state of the art would have advanced to the point that I would have half a dozen stitching programs to choose from. Half an hour of Google searches later, I was extremely annoyed to find that this is not the case. There is still almost nothing available except the crappy binary-only crippled Windows "demo" of Autostitch. How can this be? It turns out the professors that wrote it have patented the algorithm and are trying to sell it. Great.

So, with Autostitch off the table, is there still any way to get this done? The answer turns out to be yes, barely. I will spare you the many false starts and talk about only the tools that eventually worked.

Taking the source pictures

You have to be mindful of a few things when you take the pictures you are going to stitch together. Mostly, you want to eliminate as much variance across the scene as you can. So, find the place you want to stand, and set your camera to aperture priority. Assuming this is in daylight, you probably want f/8 or f/11. Make sure the ISO setting is fixed, if your camera has an auto-ISO mode.

Now you have locked down two of the three variables that determine the exposure, and need to find a shutter speed. Sweep the camera across the scene, and observe the meter. If you see more than about 2½ stops variance, you might as well give up now, because the end product won't have enough range. Otherwise, pick a shutter speed that looks like it will cover the most ground. Better to be a little under than a little over, so a half-stop faster than the midpoint of the scene is probably about right. Both of my scenes were shot at about f/9 and 1/1000 at ISO 100.

Switch to fully manual mode and dial in the aperture and shutter speed you chose. You might want to switch to manual focus, too, or lock the focus to infinity. Taking landscapes at small apertures, it doesn't really matter. If you are stitching pictures of closer subjects, you'll have to balance depth of field as well.

Now start taking pictures like a crazy man. I didn't fuss about rotating the camera around the nodal point of the lens, because again, tiny parallax errors don't really matter on distant scenery. Don't worry about keeping the horizon level or making precise overlaps, that doesn't matter either. Just make sure there's plenty of overlap, and be aware that anything moving while you are shooting will make life difficult later. I usually shoot raw files, but I turned that off for the panoramas to save time and space.

Generate control points for stitching

The process of assembling the panorama depends on "control points," which means that you tell the stitcher that point P in image A is the same as point P' in image B. You need a handful of control points for every overlapping pair of images, and you can mark them all by hand, but you probably have better things to do with a weekend. So you want a tool that can apply the SIFT and RANSAC algorithms to identify overlaps automatically.

The best we can do for now is autopano-sift, written by Sebastian Nowozin, a grad student in Germany. It has only one glaring flaw, which is that for some unfathomable reason, it was written in C#. Sigh. So off you go to download the 100MB Mono runtime before you can run the 23k of code you need. Once you have gotten it to run, it's easy to use:

# mono autopano.exe eureka.pto IMG*.JPG

Come back in a couple of hours, and eureka.pto is ready to go.

Transform the source images

Next, you need to use a thing called hugin to apply the affine transformations (translations, rotations, skew) to your source images. This is a GUI frontend that thinks it can run the autopano and enblend steps for you too, but I found this awkward and unreliable, as GUI wrappers that rely on command line tools to do the heavy lifting usually are. (I would know, having written one called flacenstein.) So I would recommend that you only ask hugin to do the transformations, and maybe fool with the control points if you want.

Open the .pto file in hugin, and run the thing called Optimizer. This calculates various distortion constants, which I didn't bother to learn what they were, but hey, if there's a button labeled Optimize, how can you not push it? Then go to Stitcher. The projection you probably want is equirectangular. Go ahead and click "Calculate Optimal Size," but think about what you are going to do with the finished product before you accept the "optimal" size. I was using so many source images that the 1:1 output size was about 50,000 pixels wide, which is too many. Printed at 200ppi, that would be over 20 feet wide. So I saved many hours of rendering time by limiting it to 20,000x7,000 or so.

Set the output image format to Multiple TIFF, turn on either kind of compression, and check the "Save cropped images" option. (If you leave out compression or cropping, it will still work, but you might fill up your disk. Each output TIFF tends to weigh a few GB.) Leave the stitching engine set to nona, since it doesn't matter. Click "Stitch Now," and go entertain yourself for another hour or two.

Blend the source images together

When you come back, if you didn't fill up your hard disk and crash, you will find a collection of TIFF images that were generated one from each source image. If you open one of these for fun, you will see that it's just the source image, rotated and distorted as necessary and placed inside a huge blank field. Now you want to lay these all on top of each other and melt them down into one combined image. For that you use enblend, which came in the Hugin bundle (also available on its own).

suntop:bin mikey$ cd /Applications/HuginOSX.app/Contents/MacOS
suntop:MacOS mikey$ ./enblend -o eureka.tif stitched*.tif

This also takes a long time, but when enblend finishes, you're done...almost. More precisely, you're done if you want a TIFF file and are completely happy with the projection you got. If not, you'll want to apply the finishing touches in Photoshop. I hate to say it, but the Gimp is just too painfully slow on images of this size. Anything that triggered a screen repaint, such as clicking on a menu, meant a five minute wait. Photoshop was running laps around it.

All done, here is a finished product:

What to do with it now, is an open question. Kacirek tells me it is possible to get one massive print, using the people that make the prints for the gigapixel project. Otherwise, I was going to slice the finished image into tiles and print them at any standard size, possibly the 10x10 squares from mpix. I thought that if the tiles were mounted on foam board and hung at the right spacing, one might create the appearance of a window. Or at least, this idea might work if executed by a person of sufficient artistic ability.

30 Mar 2008 02:31 PT - persistent link - trackback - 1 comment

Copyright © 2005-06 Michael A. Dickerson