|





|

| 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.
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.
° ° °
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
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
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.
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.
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
|