<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>jaegerfesting</title>
		<link>http://jaeger.festing.org/changelog/</link>
		<description>Random content from a hacker in Longmont, Colorado. I still claim Boulder as my home.</description>
		<copyright>Copyright 1999-2010 Theodore Logan</copyright>
		<language>en-us</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<item>
			<title>Megafest 8.2 (part two)</title>
			<link>http://jaeger.festing.org/changelog/1294.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1294.html</guid>
			<pubDate>Thu, 04 Feb 2010 22:38:00 -0700</pubDate>
			<description><![CDATA[<p>
Someday I'll get around to writing better support for serialized stories
and for events documented out-of-order. It's a bit disorienting to go
back and try to figure out what the optimal reading sequence is. But
that day is not today, so if you want the beginning of the
<a href="http://mega.festing.org/wiki/Megafest_8.2">Megafest 8.2</a>
story I'll have to provide a link by hand:
<a href="http://jaeger.festing.org/changelog/1289.html">Megafest 8.2
(part one)</a>.
</p>

<h2>Thursday, 31 December 2009</h2>

<p>
My major accomplishment for the morning was getting up (after landing in
Lincoln much later than I had planned) and eating breakfast. My major
accomplishment for the afternoon was getting groceries. After
breakfast, I recruited volunteers for meals and Yanthor solicited
shopping lists from these volunteers before we set out in the cold for
his nearby Hy-Vee. (It's a grocery store endemic in the American
Midwest.) Lincoln was in the midst of a cold spell, with daytime highs
barely creeping into the teens and piles of snow still on the ground
from several weeks prior. We successfully navigated the snow-covered
streets and icy parking lot and began trawling the aisles for
fortifications.
</p>

<p>
I'm used to going grocery shopping with Kiesa, who has the layout of our
local grocery stores memorized and sorts her shopping list in advance
for optimal efficiency. Yanthor provided no such advantage, but we still
managed to find the food we needed. (I also realized I had left my
driver's license in my fleece, having used it to prove to the TSA that I
wasn't a terrorist (because terrorists don't have state-issued photo
identification) but not having identification didn't prove troublesome.)
</p>

<p>
Back at Yanthor's residence, I made coffee (having run out of coffee
beans the day before) and set out to create my Dungeons and Dragons
character. My brilliant idea was to hide the fact that I was an
inexperienced roll-player by I creating a character who was
inexperienced and impulsive. My rogue demon-hunter was loosely inspired
by Wesley Windham-Pryce's first appearance in <i>Angel</i>. I created a
noble-born third son who got bored with his position and decided to set
out in search of adventure. He was impulsive and aggressive and not
particularly perceptive.
</p>

<p>
Yanthor handed me a stack of D&amp;D books and I figured out how to fill
out my character sheet in the context of the game. My character became a
level one human fighter with high intelligence and strength but low
wisdom and charisma.
</p>

<p>
(Yanthor's stack of books were hardcover, and I stopped to wonder
whether this was a cheap trick on the part of the publisher to extract
more money from loyal fans for hardcover books, or whether it was a
legitimate attempt to keep the books from falling apart under the stress
of being stuffed into backpacks every week for years on end.)
</p>

<p>
As he was setting up his dungeon master paraphernalia, Yanthor realized he
was forgetting one key thing: water-soluble markers for marking up his
combat board so we knew where the walls and other terrain features were.
I volunteered to find the markers he sought and headed out on the
snow-covered streets in Yanthor's car. I visited Hy-Vee and Walgreens
and failed to find suitable markers but did find them at the Super
Walmart sitting in the middle of a field on the outskirts of town.
</p>

<p>
One thing I didn't anticipate was that Thax (my rogue demon-hunter; I
couldn't come up with a better name on short notice) would become the
leader of the band. Linknoid played a halfling and seemed to have even
less of an idea what he was doing than I did. Humblik had far more
role-playing experience but played a NPC-turned-player-character goblin
who was more interested in mischief than adventure. Yanthor had the most
role-playing experience but set out to be our dungeon-master. I tried to
follow his guru lineage back to the source but it appeared that his guru
had been playing D&amp;D for decades.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=208&number=117"><img src="/digitalpics/208/320x240/117.jpg" border="0" alt="Yanthor dungeon-masters at Megafest 8.2" /></a></div>
<div style="font-size: small;">Yanthor dungeon-masters at Megafest 8.2</div>
</div>


<p>
We spent the remainder of the afternoon building our character sheets
and set out to play after supper. Nemo arrived just in time to watch our
modestly-multiplayer offline role-playing game. The adventure started
slowly, as we settled into our roles and tried to figure out what we
were supposed to be doing. As dungeon master, Yanthor wanted to do as
much storytelling as combat but had the strange position of needing to
shape the story to match what he had planned without constraining the
players.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=208&number=119"><img src="/digitalpics/208/320x240/119.jpg" border="0" alt="Humblik plays D&D at Megafest 8.2" /></a></div>
<div style="font-size: small;">Humblik plays D&D at Megafest 8.2</div>
</div>


<p>
The adventure finally came to our first fight as the clock crept
inexorably towards midnight. Yanthor needed time to set up the combat,
and there was a new year to count down to. (When the calendar on my desk
runs out, I go buy a new one, rather than deciding the world is going to
end.) I installed xdaliclock on Hobbes and watched the hypnotic numbers
count down to midnight, central time.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=208&number=120"><img src="/digitalpics/208/320x240/120.jpg" border="0" alt="Humblik and Amy at Megafest 8.2" /></a></div>
<div style="font-size: small;">Humblik and Amy at Megafest 8.2</div>
</div>


<p>
(For the record, that's sparkling grape juice in the disposable plastic
goblets, just in case anyone is wondering.)
</p>

<p>
With the new year properly welcomed, we turned back to the hard work of
fighting the bandits haunting the road between two innocent communities
enjoying an idealized version of medieval European life. Before entering
combat, Linknoid's halfling set a trap on a path in an attempt to catch
the bandits as they exited their camp. When they finally came into view
(early morning, game time) my character awoke, drew his sword, and
charged the bandits. Yanthor asked if my character was going to avoid
the trap. I deadpanned, "The what-now?" And Thax entered his first
in-game combat hanging up-side-down by his ankles from the nearest tree,
perfectly in character.
</p>

<p>
We managed to vanquish the small band of bandits and take their leader
captive, only to find out that he had further information to advance the
plot, just in time to call the first segment of our adventure a success.
</p>
]]></description>
		</item>
		<item>
			<title>Mixed subjects</title>
			<link>http://jaeger.festing.org/changelog/1293.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1293.html</guid>
			<pubDate>Wed, 03 Feb 2010 23:14:55 -0700</pubDate>
			<description><![CDATA[<p>
On Monday, I visited a travel medicine clinic to get the immunizations
and other drugs I need to visit India. (Technically I don't <i>need</i>
anything to visit India, aside from yellow fever if I happen to have
come from a region where yellow fever is endemic, but waltzing into a
developing country without any hardware upgrades is asking for trouble.
Besides, I needed to prove to Calvin that I believe in immunizations for
daddy too.) I ended up with five shots: boosters for polio and tetanus
(supplementing my childhood immunizations) and new immunizations for
<i>Neisseria meningitidis</i> (meningitis), hepatitis A and B, and H1N1.
(Picking up an H1N1 vaccine has been on my list since the vaccine was
announced, but once it became widely available I never quite got around
to picking it up.) While it's unlikely I'd come across polio or
hepatitis A at home, tetanus and H1N1 are endemic worldwide.
</p>

<p>
I still need to pick up my typhoid fever immunization pills and
anti-malarial drugs, and get two more hepatitis A and B shots this
month. (I originally scheduled the return visit next Monday, before I
realized I'll be in San Diego for a brief two-day visit to the
Mothership.) I still feel my tetanus shot two days later; I'm not
optimistic that I'll be able to sleep on my left side tonight.
</p>

<p>
(In other vaccine-related news, yesterday <i>The Lancet</i>
<a href="http://news.bbc.co.uk/2/hi/health/8493753.stm">retracted a 1998
study linking the childhood MMR vaccine to autism</a> due to a conflict
of interest, lack of ethical approval, and misrepresentation. There's very
little commentary I can add except to say that: (1) I'm an engineer, not
a doctor or a celebrity; (2) in most if not all cases, I believe the
available evidence unequivocally shows that the risk of contracting
terrible diseases far outweighs the uncertain side effects; and (3)
Calvin (and I) will be getting a full set of immunizations, even if I'm
occasionally eight years late on my own tetanus booster. Please don't
get me started on what I think about parents who choose not to vaccinate
their children.)
</p>

<hr noshade>

<div style="text-align: center">
<div><a href="/photo.cgi?round=210&number=49"><img src="/digitalpics/210/320x240/49.jpg" border="0" alt="Calvin topples the living room lamp" /></a></div>
<div style="font-size: small;">Calvin topples the living room lamp</div>
</div>


<p>
As Calvin became more mobile, he discovered the floor lamp in the living
room and decided it would be a great post to use to pull himself up.
Lacking a better way to illuminate the living room, and the time
necessary to find an alternate lighting scheme, we left the lamp in
place but tucked part of the base under the
<a href="http://jaeger.festing.org/changelog/1287.html">new
entertainment cabinet</a>, providing a bit of protection against Calvin
pulling it down. At least, we thought it was keeping the lamp from
falling over until Calvin pulled on the lamp enough to cause the base to
crack. The lamp listed ominously for several days (barely propped up
with the pack-and-play in the living room) until Saturday, when I pulled
the lamp out to take a look and the base disintegrated. It looked like
the base was built from an unreinforced concrete counterweight. I pulled
a broken lamp out of the garage and managed to bolt its
fully-functioning base onto the bottom of my otherwise-functioning lamp,
then installed the lamp behind the couch where Calvin can't get to it.
In general it works pretty well, but it doesn't provide quite enough
light for our weekly videoconferences with Calvin's grandmothers.
</p>

<hr noshade>

<p>
On Sunday morning, Kiesa went to a baby shower, leaving me with Calvin.
I had been thinking of trying to take Calvin on another hike (even
though my last four attempts were less than spectacular), so as soon as
Calvin woke up from his morning nap I strapped him into his carseat and
headed to Rabbit Mountain. He was pretty happy at first but started
fussing before I made it halfway to the Little Thompson Overlook. I
pulled him out of the carrier, let him wiggle for a bit, and feed him a
few cheerios (which he chewed and spat out; he did better with cheerios
before he figured out he could push them out of his mouth after chewing
on them) before putting him back in the carrier and pressing onward.
This may not have been the right move; he started bawling by the time
I'd covered half of the remaining distance. I thought my best option was
to press on and try to feed him on the bench at the overlook. This
proved far easier said than done; he drank only a few ounces of formula
and continued bawling for fifteen minutes until a group of hikers with a
dog arrived. Calvin was fascinated by the dog, distracting him from his
suffering. (I quipped that Calvin wasn't enjoying hiking as much as I'd
hoped, and the older woman in the group (whom I took to be the mother of
the younger adult woman in the group) responded, "Give him twenty
years.")
</p>

<p>
I wrapped Calvin in a blanket in hopes of providing a bit more
protection against the cold and headed back to the trailhead. He fussed
for a bit, then cheered up when I started bouncing him up and down, then
fussed a bit more, and seemed to sleep for ten or fifteen minutes as I
tried to hold him steady. He started fussing again when I put him back
in his carseat but quieted down when I turned on the engine to head back
home. (He was happy enough that I took a detour to wash Kiesa's car; he
seemed sufficiently amused by the spectacle of being inside a car while
it was being washed.)
</p>

<p>
Kiesa took Calvin for the rest of the afternoon, giving me the
opportunity to finish the last half of the book club book,
<i><a href="http://www.librarything.com/work/8585029">The Windup
Girl</a></i>. Overall I enjoyed the book, but I couldn't help but wonder
if genetically-engineered megadonts would really be a better source of
power than biofuels.
</p>
]]></description>
		</item>
		<item>
			<title>A snapshot of the status quo, January 2010</title>
			<link>http://jaeger.festing.org/changelog/1292.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1292.html</guid>
			<pubDate>Thu, 28 Jan 2010 20:58:30 -0700</pubDate>
			<description><![CDATA[<p>
As of two days ago, Calvin is ten months old. He can crawl vigorously
around the house, usually muttering to himself as he goes. He enjoys
chasing Willow, who is smart enough to maintain a one-foot Calvin
Exclusion Zone. Calvin and Cat5 are less interested in each other;
Calvin will grab enthusiastically at her fur or tail, and Cat5 usually
ignores Calvin. Calvin can pull himself up to a supported standing
position and can cruise (walking while holding furniture), but he's
faster crawling. He's figured out how to pull books off shelves, so we
had to clear out the lowest shelves and seeded one sacrificial shelf
with a bunch of baby-grade mostly-indestructible books. Calvin grabs at
books enthusiastically, so we can no longer read him anything other than
baby-grade board books. (He enjoyed <i>The Cat in the Hat</i> but for
the fact that it's unavailable in board book format.)
</p>

<p>
Kiesa gets up with Calvin every morning but Sunday, when I get up
whenever Calvin decides it's time to get up, and Kiesa sleeps in. (He
usually gets up between 06:00 and 07:00.) A month or two ago Calvin
figured out how to take two-hour morning naps in his crib, and he'll
often take an afternoon nap when he's at home. This gives Kiesa more
time in the morning; she no longer takes Calvin to daycare before
mid-day. (I still find that listening to the monitor keeps me slightly
on edge; I'm still on call, noticing for any changes portending the end
of Calvin's nap.) In the evening, Calvin gets a bath and a final bottle
before going to bed by 19:00.
</p>

<p>
For most of the month of January, I felt like I was simply treading
water, keeping pace but not really getting ahead with the things I
wanted to be doing to keep myself grounded. It took me a week to decide
that might be ok; Calvin gets easier to take care of every month, so if
I'm keeping station now I might actually get traction next month, or the
month after that. It doesn't help that I don't have a dominant winter
sport; I hiked all three of Boulder's highest peaks in one day before
Christmas, leaving little left to do in Boulder's mountain park. I can
snowshoe, and I keep thinking about getting cross-country skis to let me
cover a bit more ground.  The snow that fell around Christmas never
melted on the unpaved path I like to run on from work; it started as
loose snow, then packed snow, and has now turned to ice. Elsewhere the
dirt paths have turned to mud. On Tuesday I ran with my Yaktrax shoe
chains, and today I abandoned running outside in favor of a treadmill.
</p>

<p>
Most of my available discretionary time is absorbed by my trip to India
in five weeks. I'm working through a very long history of modern India
(1947-present), and having actually purchased plane tickets, I need to
start thinking about my actual schedule on the ground. I know I'm not
going to make it through my reading list before departing, so I need to
start triaging and picking out the more important books.
</p>

<p>
My day job continues to entertain, amuse, and occasionally frustrate
me. I'm finally on the cusp of wrapping up a project I've spent a year
on (an interim version is currently in use; I'll deploy the final version
and hope I don't annoy too many stakeholders by the different design
choices made in the final version). Today I spent much of the day
looking at a strange bug that seemed to manifest itself as a heap
corruption issue but turned out to be an uninitialized variable; the
init function I was calling expected the variable to be zeroed, and my
code didn't zero the variable first. (I knew it would be a stupid error
but I wasn't quite sure where to find it.) The six-month review period
officially ends tomorrow, so I spent some time today remembering what I
did for the past six months and writing it all down in one place.
</p>

<p>
I'm never quite sure what each day will bring, and each week is an
adventure, but the trend seems encouraging.
</p>
]]></description>
		</item>
		<item>
			<title>Plane tickets</title>
			<link>http://jaeger.festing.org/changelog/1291.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1291.html</guid>
			<pubDate>Wed, 27 Jan 2010 08:32:25 -0700</pubDate>
			<description><![CDATA[<p>
Within the past week, the pieces all came together for my trip to India.
Last week, I paid Skype for land-line credit and called Willy in India,
twelve and a half hours ahead. I proposed dates at the beginning of
March and he said he'd check. The next time I called, he'd heard of the
<a href="http://www.indianembassy.org/newsite/consular/FAQ%20Tourist%20Visa.asp">new
Indian visa rules</a> requiring tourist visa holders to leave the
country for two months between consecutive visits. This cast large
sections of our plan into doubt, including his overall plan to stay in
the country until the end of the school term in June.
</p>

<p>
(Most countries I've traveled to never asked me to get a visa. My most
complicated visa prior to India was Australia, where my corporate travel
arranger applied online and e-mailed me something to stick in my
passport. But no matter how complicated India is, it's nothing compared
to the United States. I did not have to travel to the consulate, in
person, for a face-to-face interview. Any further complaints I may have
about the visa process are entirely hypocritical given my own
government's xenophobic antagonism to visitors and immigration.)
</p>

<p>
(The more I learn about India the more I think I understand little bits
and pieces of the country's reaction to the western world. India's
colonial repression is still a recent memory, and India's stated goal of
remaining non-aligned during the Cold War did not go over well with the
"you're with us or you're against us" anti-Communist attitude permeating
the United States. India wants to be a great power on its own terms,
which means growing up and making its own mistakes without outside
intervention. This means India doesn't care about whether I visit or
not.)
</p>

<p>
I called Willy again on my Saturday night (his Sunday morning) and
confirmed the dates. I had one more moving piece yet to nail down:
whether I'd take a side trip to my employer's office in Hyderabad while
I was in the neighborhood. (Where "in the neighborhood" means "on the
same subcontinent", since the closest I'd get to Hyderabad would be
Delhi.) This would confer one main advantage: If I could stretch my trip
out through the next weekend, I could take advantage of the
weekend-multiplier effect to get an additional two days to come home,
rather than taking actual vacation days on the return flight. (I've also
come to appreciate the benefits of visiting foreign offices to get a
feeling for how people actually work on the ground, and seeing people
face-to-face whom I would otherwise see only by e-mail is also useful.)
The more I looked at my schedule and timing, the less this seemed like
it would work, and I'd probably need to get a business visa. On Monday,
I e-mailed my tech lead (to whom I had previously floated the
possibility) my analysis and he agreed that it didn't look like it would
work.
</p>

<p>
With everything resolved, I set out to look at flights on Monday
evening. I had previously identified three direct flights from North
America to India (on American Airlines, Continental, and Air India);
most other possible flights involved a stop in Europe. For early March,
the direct flights were the cheapest, and I had my pick of schedules at
roughly the same price. American's polar flight from Chicago to Delhi
looked like the best option for both schedule and price. I stared at the
proposed flights for a few minutes while I contemplated my point of no
return, then clicked "Go" and bought the ticket.
</p>

<p>
After buying the ticket, I had a bit of trouble navigating American
Airlines' website to find my reservation info, and they didn't send me a
confirmation e-mail, so I wasn't entirely sure I had a ticket. The
credit card charge appeared by Tuesday morning, so I knew I hadn't
totally lost the ticket, but I feared I'd need to call them to get the
confirmation (as was
<a href="http://kiesa.festing.org/serendipity/index.php?/archives/152-Airline-Reservation-Fun.html">Kiesa's
experience with her concurrent airline reservation</a>). I went back to
the website on Tuesday evening and found the link I was looking for to
find my reservation while logged into my brand-new frequent flyer
account. (I finally got my e-mail confirmation late Tuesday night,
twenty-four hours later.)
</p>

<p>
I have plenty of planning left to do on my trip to India (and plenty of
<a href="http://jaeger.festing.org/photo.cgi?round=209&number=30">reading
to do</a>); the tentative plan is to fly to Guwahati, swing by Willy's
school in Meghalaya, and work my way back to Delhi via Kathmandu. I have
less than six weeks before I fly halfway around the world, and it should
be interesting.
</p>
]]></description>
		</item>
		<item>
			<title>Fun with PostScript</title>
			<link>http://jaeger.festing.org/changelog/1290.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1290.html</guid>
			<pubDate>Sat, 23 Jan 2010 11:23:44 -0700</pubDate>
			<description><![CDATA[<p>
Two years ago, frustrated by my inability to sort non-fiction books by
subject, I <a href="http://jaeger.festing.org/changelog/1115.html">spent
a Sunday printing and applying Library of Congress labels to my
technical books</a>. Since then, the LC labels have grown to include
most of our non-fiction collection, including the
<a href="http://jaeger.festing.org/photo.cgi?round=209&number=30">collection
of books about India</a> that has taken root in my living room. (That
picture predates the latest application of labels but does sort the
books in LC order.)
</p>

<p>
Last Saturday I decided to label the forty-three unlabeled books in my
collection, many of which joined my collection at Christmas. When I
started printing LC labels, using 80-labels-per-sheet return address
labels, I was so frustrated by OpenOffice.org's support for labels
(especially my inability to import a long list of text to print on
individual labels, or even copy-and-paste across multiple labels) that I
set out on my own, using CSS to format my HTML to position text at the
precise position on the printed page. This worked fine at first; I told
my browser to suppress all headers and print at zero-inch margins and
all was well. Last weekend it failed horribly; I couldn't get any of the
browsers at my disposal to print zero-inch margins that were actual
zero-inch margins, so I had to manually adjust the physical positions I
gave in my CSS to match the arbitrary offsets given by my browser. This
felt dirty but worked fine, but I knew I could do better.
</p>

<p>
Having rejected word processing systems for my label-printing needs
(given the manual intervention required and the lack of accessible
scriptability), I set out in search of something that I could generate
from a Perl script and precisely control on-page formatting. I looked
briefly at TeX, which seemed a bit overly-complicated for my needs, and
realized I could do everything I needed to do in PostScript.
</p>

<p>
On evenings during the week, I downloaded and read
<a href="http://partners.adobe.com/public/developer/en/ps/sdk/sample/BlueBook.zip"><i>PostScript
Language Tutorial and Cookbook</i></a>, then scanned
<a href="http://partners.adobe.com/public/developer/en/ps/PLRM.pdf"><i>PostScript
Language Reference</i>, third edition</a> for specific information on
picking page sizes and determining font metrics. (It's pretty cool that
PostScript allows a single document to be reformatted to fit the media
at hand, but my application requires prior knowledge of the page size.)
I started banging out PostScript code, starting with a simple box and
moving on to drawing a sequence of boxes outlining the labels on the
page. (I don't want to outline the labels in practice, but it gives me a
very useful way to see how well my printed output matches the sheet of
labels.) I wrote a <i>for</i> loop in PostScript:
</p>

<div class="code">
<pre>
0 1 cols 1 sub {
  /x exch def
  0 1 rows 1 sub {
    /y exch def

    gsave
    left x hpitch mul add pageheight top sub y vpitch mul sub translate

    % Draw the bounding box
    newpath
    0 0 moveto
    width 0 rlineto
    0 height neg rlineto
    width neg 0 rlineto
    0 height rlineto
    closepath
    stroke

    grestore
  } for
} for
</pre>
</div>

<p>
For those unfamiliar with PostScript, this may look like gibberish.
PostScript is a stack-based language; each operation pops and pushes
some values from and to the stack. The <i>for</i> loop takes a block of
code, which it iterates through, leaving the value for the current
iteration on top of the stack. Adapting to this way of thinking was an
interesting exercise; I had to visualize what was on the stack at any
given time, and I had the opportunity to write more complicated compound
expressions than I might have otherwise attempted. (I'm also worried I
ended up with under-documented write-only code; I haven't yet figured
out the best way to format and document my code. Debugging was also
tricky; I did find the operator to dump the current stack to the
debugging console, which gave me enough information to figure out that I
was drawing my box <i>up</i> from the current position rather than
<i>down</i> as I had intended.)
</p>

<p>
To write the text, I added an array with the labels to print:
</p>

<div class="code">
<pre>
% Content to print on labels
/content [
(BL1130.A4 B472)
(DS406.B56 2009)
(DS406.B76 2008)
(DS407.G75 2008)
(DS436.T17 1999)
</pre>
<i>...</i>
<pre>
] def
</pre>
</div>

<p>
Then added code inside my inner loop to index into the array, find the
width of the string in the current font, and center the string
horizontally and vertically inside the current box:
</p>

<div class="code">
<pre>
    % Write the text itself
    i content length lt {
      0 0 moveto
      content i get
      dup stringwidth pop
      width exch sub 2 div
      height fontsize add 2 neg div
      moveto
      show
    } if

    /i i 1 add def
</pre>
</div>

<p>
That last line of code is the PostScript equivalent of "i++".
</p>

<p>
Those interested in reading my PostScript program for themselves may
find my full code here:
<a href="/changelog/2010-01-23/labels.ps">labels.ps</a>. Further
refinement is needed in the font selection, vertical centering, and
automatic generation from the LibraryThing database, but I think it's a
pretty impressive result for a few hours of work.
</p>
]]></description>
		</item>
		<item>
			<title>Megafest 8.2 (part one)</title>
			<link>http://jaeger.festing.org/changelog/1289.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1289.html</guid>
			<pubDate>Tue, 19 Jan 2010 22:52:57 -0700</pubDate>
			<description><![CDATA[<p>
For the end-of-December holidays, Kiesa and I tried a
<a href="http://jaeger.festing.org/changelog/1281.html">bold new
experiment</a> involving visiting both families for Christmas.
</p>

<h2>Wednesday, 30 December 2009</h2>

<p>
My day was dominated by my flight from Portland to Lincoln to begin
Megafest 8.2, while Kiesa and Calvin stayed in Longview. After a
leisurely breakfast (and my last hand-roasted coffee) at the Stone
Estate in Longview, I managed to finish my packing. This involved a bit
of negotiation and stuffing, since I wanted to pack exclusively carry-on
luggage to save $45 in airline checked luggage fees.
</p>

<p>
The first leg of my flight to Lincoln was United flight 572, from
Portland to Denver. (This time, it was mere coincidence that Denver
happens to be my home airport; it was simply the most convenient way to
get from Portland to Lincoln.) I ate supper and settled in to wait for
my flight to Lincoln. I started out at the east end of Concourse B, then
moved into the new regional jet terminal hanging off the south-east end
of the concourse when my gate changed. We boarded quickly ahead of the
20:13 scheduled departure; the flight had only 22 people on board,
giving us plenty of room to spread out across the CRJ-200. We taxied
toward runway 8, then seemed to pull off to the side of the taxiway
while other planes passed us. After a few minutes, the pilot came on the
intercom to announce that an unspecified computer glitch was forcing us
back to the gate for repairs.
</p>

<p>
I text-messaged Yanthor to let him know I would be delayed from my
airport pickup as we headed back to the gate. We pulled up to a
different gate than the one we left and stayed on the plane for a few
minutes while maintainence arrived and started poking at the plane. They
decided they needed more time, so around 20:45 we were ushered off the
aircraft at gate B50 to wait for news on whether the plane could be
repaired for our flight.
</p>

<p>
As we sat at the gate, United dispatch decided to update their flight
schedule to show the flight as delayed, so their helpful automated
system texted me updates on my flight delays. At least, the updates
would have been helpful had they told me anything new; all I learned
from the stream of text messages was that they didn't know anything
either.
</p>

<p>
I charged my computer and had plenty of time to stretch while waiting
for my flight. I thought about reading, but I had finished reading
<i>Tea: Addiction, Exploitation, and Empire</i> as we returned to the
gate and I wasn't really awake enough to parse very much text. The
airport services closed down around us as the evening wore on. I
contemplated my options; with Denver as my home airport, I had a car in
the parking lot and I could drive home and come back the next morning,
but the next flight to Lincoln was late in the morning and I didn't
really want to go to the trouble unless they canceled my flight.
</p>

<p>
Maintainence took the aircraft out for a taxi to try to reproduce the
original failure condition, but the results were inconclusive, so by
23:00, a new plan emerged: the flight crew would take the plane up for a
quick spin around the neighborhood to see if the angry amber light
reappeared, and if it didn't, they'd conclude it was safe to fly to
Lincoln. (At one point, one of the pilots mentioned that he wouldn't
time out until 05:00 the next morning, giving us plenty of time to get
to Lincoln.) They left the gate and we continued waiting.
</p>

<p>
Around midnight, the airport started to look like a brightly-lit ghost
town. All of the remaining United gate agents were clustered around our
podium and looked busy, but it wasn't clear what they were doing. At
00:45 the news came in that we were going to fly to Lincoln after all.
The plane returned, and after an orderly reboarding process we were off.
Again.
</p>

<p>
Once we were in the air, we managed to avoid any further flight-related
drama or delays. While landing in Lincoln, I saw the plane's shadow,
cast by the light of the full moon, in the snow-covered fields.
</p>

<p>
We landed in Lincoln after 03:00 CST. I found Yanthor, who had fallen
asleep waiting for me at the tiny airport, and waited for my
gate-checked bag to make it through the luggage system. We headed to his
house on the eastern edge of Lincoln, chatted for a bit, and went to
bed. Kiesa's absence displaced me from my normally-scheduled basement
guest bedroom; I ended up sleeping on the massive new couch encircling
the entertainment center.
</p>
]]></description>
		</item>
		<item>
			<title>Custom oak</title>
			<link>http://jaeger.festing.org/changelog/1287.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1287.html</guid>
			<pubDate>Sun, 10 Jan 2010 09:50:51 -0700</pubDate>
			<description><![CDATA[<p>
When Kiesa and I
<a href="http://jaeger.festing.org/changelog/1270.html">ordered a custom
entertainment cabinet</a> at the beginning of November, the salesguy
told us it would probably take twelve to sixteen weeks for our cabinet
to be delivered. I wondered whether the Great Recession would affect the
timetable, since furniture is one of the biggest casualties because
Americans are moving less and needing less furniture. My suspicions were
confirmed a week before Christmas when the salesguy called me to let me
know our cabinet was in and to set up a delivery. I didn't have my
calendar in front of me, so I told him I'd call back to set up an
appointment.
</p>

<p>
I didn't actually manage to call back until I was back at work last
week. (Since we were
<a href="http://jaeger.festing.org/changelog/1281.html">out of town for
Christmas and New Year's</a>, we wouldn't have been able to accept
delivery until last week anyway.) They had a Saturday delivery slot,
which I accepted. Friday night I set out to clean out my old cabinet,
consisting of a cabinet and a printer stand both picked up off the side
of the road and a cheap Walmart bookshelf for storing DVDs.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=209&number=21"><img src="/digitalpics/209/320x240/21.jpg" border="0" alt="The old entertainment cabinet" /></a></div>
<div style="font-size: small;">The old entertainment cabinet</div>
</div>


<p>
The new cabinet arrived Saturday morning just as I was sitting down for
breakfast. One delivery guy noted how perfectly the cabinet fit in the
space allocated for it, and the other delivery guy noted the straight
shot into the house from the front door. I paid the balance on their
hand-held point-of-sale terminal and wondered whether it was using a
cellular network to verify my credit card.
</p>

<p>
(We configured the cabinet to match our existing living room furniture
as much as possible, but once it was delivered I saw that the "wheat"
stain was at least two shades lighter than the oak coffee table. In
practice this shouldn't matter; the style is identical and it's close
enough that it's hard to care.)
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=209&number=25"><img src="/digitalpics/209/320x240/25.jpg" border="0" alt="The newly-delivered entertainment cabinet" /></a></div>
<div style="font-size: small;">The newly-delivered entertainment cabinet</div>
</div>


<p>
I set out to configure the cabinet, starting with the cable access
ports. The salesguy told me the delivery guys would be able to cut my
access ports, but I decided I'd rather do it myself once I had the
opportunity to study the cabinet and how my A/V stack would fit in it. I
visited my local hardware store to pick up a three-inch hole saw and
returned home to modify my new cabinet. I cut one hole at the bottom of
each cabinet and one additional hole in the middle of the left cabinet.
I set up the printer in the right cabinet and the A/V stack (consisting
only of my Mac Mini, a receiver, and a DVD player) in the left cabinet.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=209&number=27"><img src="/digitalpics/209/320x240/27.jpg" border="0" alt="The new entertainment cabinet" /></a></div>
<div style="font-size: small;">The new entertainment cabinet</div>
</div>


<p>
I'm not totally satisfied with the placement of my speakers on the top
of the cabinet (especially the subwoofer), but I'm not sure what my
other options are. I was worried about the standing lamp, but it looks
like there's enough clearance under the cabinet for the base of the
lamp, and the cabinet may even keep Calvin from knocking the lamp over.
I still need to tie the television onto the cabinet to keep it from
falling over, though it's much harder for Calvin to reach in its current
position.
</p>

<p>
I'm happy with the new cabinet. It raises the level of decorum in my
living room and should serve us well for decades.
</p>
]]></description>
		</item>
		<item>
			<title>My RSS feed joins the twenty-first century</title>
			<link>http://jaeger.festing.org/changelog/1285.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1285.html</guid>
			<pubDate>Sat, 02 Jan 2010 14:47:00 -0700</pubDate>
			<description><![CDATA[<p>
Now that the second decade of the twenty-first century has dawned, it's
time to roll out a long-anticipated update to my RSS feed: Actual
content inside the feed, making it possible to read my entries without
leaving your RSS aggregator.
</p>

<p>
If you're already subscribed to my RSS feed, you shouldn't have to do
anything for the new content to show up, though if your aggregator is
caching old entries you won't see anything there. If you're not already
subscribed to my feed, and you're into that sort of thing, look for the
"RSS" links at the bottom of the page, or in whatever form your web
browser displays the &lt;link rel="alternate" type="application/rss+xml"
/&gt; tags. Readers already subscribed to my entry feed may be
interested in the brand-new comment feed, allowing you to keep up with
what passes for discussion on this site.
</p>

<p>
If you're logged in while reading this page, and you look carefully at
the RSS urls, you'll see an arbitrary 128-bit hex-encoded cookie in the
url. (In this sentence, I'm using
"<a href="http://www.catb.org/jargon/html/C/cookie.html">cookie</a>" in 
the generic sense of an arbitrary token, not an HTTP cookie.) This
cookie allows my RSS feed to identify you and show your aggregator
articles that might not be otherwise available to the public at large.
This has its downsides: Certain RSS aggregators are known to have funny
(and by "funny" I mean "broken") ideas of what a "private" RSS feed is.
I spend a fair amount of effort making sure my online writings are
targeted at the right audience, and all of this effort goes to waste
when an aggregator decides to make my feeds searchable. (I rarely say
anything about my job in public entries, but I say more where I'm fairly
confident Google can't find it.) As a result, only world-readable
entries (those one could read by visiting my site without logging in at
all) are visible in their entirety in the RSS feed. Articles restricted
to all logged-in users have their first paragraph included "above the
fold" in the feed (up to the first blank line, which seemed close enough
in practice) with a link to my site to log in and read more. Articles
restricted to a subset of logged-in users have only a link back to my
site.
</p>

<p>
(The same applies to comments. My "above-the-fold" parser isn't smart
enough to find paragraph tags, but it'll find the first blank line and
snip there for logged-in-user-only comments.)
</p>

<p>
Let me know if you run into any trouble with my feed. I hope this will
portend a brave new era of RSS-based content aggregation.
</p>
]]></description>
		</item>
		<item>
			<title>Christmas (part two)</title>
			<link>http://jaeger.festing.org/changelog/1284.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1284.html</guid>
			<pubDate>Wed, 30 Dec 2009 21:39:04 -0700</pubDate>
			<description><![CDATA[<p>
<i>Christmas, phase two: In which the intrepid narrator visits Longview.
See also: <a href="http://jaeger.festing.org/changelog/1283.html">phase
one</a>.</i>
</p>

<h2>Sunday, 27 December</h2>

<p>
Calvin managed to sleep in a bit on Sunday morning, at my parents' house
in Walla Walla. Kiesa got up with him when he woke up, giving me a bit
more sleep before getting up myself. Kiesa wanted to leave early enough
so that our drive coincided with Calvin's morning nap, which suggested a
departure around 09:00. She also hoped to get to her parents' house in
Longview by 14:00 for her family's Christmas celebration, which was
scheduled in early afternoon to allow her grandparents to return to
Portland before it got too dark. I wasn't quite sure about the merits of
this plan, but I didn't have any better ideas.
</p>

<p>
We bid my family farewell and headed out in the early-morning fog. Our
first task was locating coffee; I didn't want to take the time to make
my own coffee and subsequently wash my coffee press. Both of the coffee
shops we knew about in College Place were closed, so we headed into
Walla Walla and found an open Starbucks. Kiesa got a doughnut to round
out her breakfast. Finding our way out of Walla Walla seemed harder than
it should have been, which I blame on inadequate signage.
</p>

<p>
We headed west and Calvin took his morning nap. On the outbound drive
from Portland, I used the rental car stereo's auxiliary input jack to
listen to podcasts from my iPod, but on the return journey I didn't want
to disrupt Calvin's nap. The drive was uneventful until Calvin needed a
diaper change around Hood River. Oregon's rest stop restrooms seem to be
missing baby changing tables, but I did find a bench that worked fairly
well.
</p>

<p>
We rendezvoused with Tristan and Jessica at PDX's cell phone waiting
area, where we transferred our stuff into the vehicle they drove and
returned our rental car. Calvin was fussy on the drive up to Longview;
it was time for his afternoon nap but he didn't want to sleep.
</p>

<p>
We arrived in Longview at about 14:30 and found most of Kiesa's extended
family waiting for us. Calvin perked up when he saw he had an audience
but started getting fussy again after we started eating. He didn't want
to take his afternoon nap, and even exciting new bath toys weren't
enough to keep him entertained during his bath. He did calm down once it
was bedtime, giving the rest of us the opportunity to open Christmas
presents in relative peace. Kiesa and I opened Calvin's presents, which
included two sets of Duplos for him to grow into. (Most of the pieces in
one of the basic sets should be safe for him at the moment, but he's not
going to be able to actually build anything just yet.)
</p>

<h2>Monday</h2>

<p>
Kiesa and I left Calvin with his grandmother and headed into Portland
for our traditional Powells pilgrimage and to get away for an afternoon.
I considered various options for getting into and parking in Portland
and ultimately decided to park at the Lloyd Center and take MAX across
the river into downtown Portland. We drove Kiesa's mother's new (though
previously-loved) Prius, which was interesting. It took a bit of time to
get used to some of the design choices, like the tiny gearshift lever
and the pushbutton engine start. It felt a bit like a concept car with a
lot of interesting features, most of them half-baked.
</p>

<p>
Our first stop in Portland was the Chinese Garden, occupying a city
block that used to be a parking lot. We stopped by the Tower of Cosmic
Reflections teahouse for tea and a snack, which proved how little I
really know about tea. I picked an arbitrary green tea, and Kiesa picked
a flavored black tea. (Somehow I had the impression that she didn't care
for tea, but the reality is that she simply doesn't go out of her way to
drink it, especially since caffeine doesn't actually affect her.) We
continued our tour of the garden, which was a beautiful refuge in the
middle of the city, though it was a bit crowded by the post-Christmas
crowds. (At least half of the visitors seemed to be Asian, which seemed
to be a higher density than the Portland norm.)
</p>

<p>
We walked to Powells, aided by the map on my phone. The weather was
crisp and sunny; the sun seemed out of place for Portland in December,
but I wasn't going to complain. Inside Powells, I headed to travel and
looked at Nepali trekking guidebooks and picked up a map of
north-eastern India. (The latest incarnation of my plan for visiting
Willy in India suggests spending most of our time trekking from
Kathmandu, though before buying too many more guidebooks I'd like to
double-check some of the sundry transportation logistics. Among other
things, most standard treks assume one has weeks to spend in Nepal,
which probably makes sense in the general case (why go to the trouble of
going all the way to Nepal if one isn't going to spend very much time
there?) but breaks down in our case.) I thought about heading to science
fiction but got sidetracked in Indian history; I spent the better part
of an hour studying the collection and walked away with four books about
modern Indian history, starting with independence in 1947 and going
through 1991. Most were focused on Indira Gandhi, but one covered Rajiv
Gandhi's assassination in 1991. One was titled <i>Underground Literature
during Indian Emergency</i>, and reprinted political resistance
literature during the "emergency", when Indira Gandhi suspended the
constitution from 1975 to 1977. I wasn't sure I'd be able to understand
very much of it, but it seemed too good to pass up.
</p>

<p>
I found Kiesa in science fiction and managed to avoid looking at the
books at all, since I already had an armful of books. Kiesa declared
herself done and we headed to checkout.
</p>

<p>
Our final stop in Portland was dinner at Thai Peacock, a few blocks from
Powells. Dinner was good; I had pineapple curry and Kiesa had pumpkin
curry.
</p>

<p>
We took the long way back to the MAX back to Lloyd Center, which
involved taking the streetcar for one stop and catching a crowded MAX
train across the river. A few stops after we boarded, a small group of
tea party activists boarded the train, carrying protest signs, headed
for the stadium (or convention center; I couldn't quite tell which). I
tried to figure out why they were taking taxpayer-funded public transit,
especially since we were within the Fareless Square, where light rail
fares are entirely free.
</p>

<p>
The rest of our journey back to Longview was uneventful. Calvin was in
bed by the time we got back. I played one game each of Dutch Blitz and
Settlers of Catan with Tristan and Jessica and entered my haul of new
books in LibraryThing.
</p>

<h2>Tuesday</h2>

<p>
I got up when Calvin woke up at a modestly early hour. Kiesa's mother
was up and took care of him. I amused myself trying to catalog a few of
the guidebooks that I couldn't copy-catalog. Based on my collection, I
wanted to put the Indian guidebook next to the Indian cultural reference
for travelers, and it made the most sense to put both of these books in
the same general section as my Indian history books. (I found a corner
case where Library of Congress numbers break down; there is no specific
place where South Asian guidebooks are supposed to go, but there are two
or three places where American guidebooks might go. (I also discovered
that my copy of <i>Jarhead</i> is shelved in Iraqi History, which isn't
really the right place for it.)) This forced me to assign my own numbers
for these books, which was exciting. Kiesa pointed me in the right
direction as she caught up on her work e-mail and we both kept an eye on
Calvin crawling around the living room.
</p>

<p>
Kiesa's parents' living room has two steps going down from the entryway
into the living room. Calvin found these steps early in our visit and
proceeded to pull himself up on the first step and then tried to attack
the second step. This proved somewhat more difficult, but with some
practice he managed to climb both steps, though he kept trying to turn
around and sit up before he was fully secure on the top step. We kept an
eye on him as he climbed, but only rarely did we have to break his fall.
He seemed to adapt well to the stairs.
</p>

<p>
In addition to his new toys, Calvin especially enjoyed being pushed
around the living room while sitting on a wheeled toddler walking toy.
He made some effort to stand and push the toy via the handle designed
for that purpose, but was far more interested in being pushed while
riding the toy.
</p>

<p>
We ended up with a vast oversupply of books and other materials that we
needed to take back home. I segregated my books into those that I wanted
to use in the next several days and those that I wouldn't mind shipping
home. (Many of these were Christmas presents. Some were those I borrowed
from my family, and some were those I acquired at Powells.) Kiesa threw
in two audio cds and a boxed set of <i>The Bible in Living Sound</i>.
This filled most of a modestly-sized book box from the garage but left
enough room for a handful of music books. When Calvin woke from his
afternoon nap, Kiesa, Calvin, and I headed into central Longview to mail
the books to ourselves and to visit the library. It was snowing as we
left, large wet flakes that quickly covered everything. I had seen the
art deco facade of the Longview post office but I may have missed the
subtle art deco interior in the two-story foyer. We ended up mailing 30
pounds of books and cds to ourselves and got to use "media mail", the
twenty-first century version of book rate.
</p>

<p>
Our next stop was the Longview Public Library, sitting in a stately
building with classical pretense across the circle from the post office.
(As we climbed the stairs to the main stacks, I noted that nothing says
classical pretense quite like travertine.) Kiesa sat Calvin down in
front of the board books, and he amused himself looking through the
books, playing with the age-appropriate toys, and pulling out the
letters in the letter board I gave him.
</p>

<p>
Calvin seemed fussier than normal during his evening bath but went to
bed without complaining. I packed for the third phase of my holiday
(flying to Lincoln for Megafest 8.2) and stayed up late documenting the
first phase of my Christmas holiday, and Kiesa stayed up slightly later
finishing the paperback (Victorian paranormal romance?) she got at
Powells.
</p>
]]></description>
		</item>
		<item>
			<title>Christmas (part one)</title>
			<link>http://jaeger.festing.org/changelog/1283.html</link>
			<guid isPermaLink="true">http://jaeger.festing.org/changelog/1283.html</guid>
			<pubDate>Wed, 30 Dec 2009 00:07:39 -0700</pubDate>
			<description><![CDATA[<p>
Kiesa, Calvin, and I
<a href="http://jaeger.festing.org/changelog/1281.html">flew to Portland</a>
on Southwest flight 2182. As we descended into Portland, we flew over
the northern flank of snow-covered Mount Hood glistening in the morning
sun, giving an amazing view out the left windows, where we happened to
be sitting. I snapped several pictures out the window as we passed.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=208&number=006"><img src="/digitalpics/208/320x240/006.jpg" border="0" alt="North-east ridge of Mount Hood from N737JW" /></a></div>
<div style="font-size: small;">North-east ridge of Mount Hood from N737JW</div>
</div>


<p>
Calvin had only a short nap on the plane but managed to stay fairly
happy throughout the rest of the flight. Kiesa let him sit and stand on
her lap as long as the seatbelt sign was off.
</p>

<div style="text-align: center">
<div><a href="/photo.cgi?round=208&number=012"><img src="/digitalpics/208/320x240/012.jpg" border="0" alt="North-west face of Mount Hood from N737JW" /></a></div>
<div style="font-size: small;">North-west face of Mount Hood from N737JW</div>
</div>


<p>
Portland was covered in fog; I didn't see the ground until a few hundred
feet before the runway. Inside the airport, I posted the two changelogs
I wrote on the flight. Kiesa's mother met us as we emerged from
security, handed us the carseat base, and accompanied us to baggage
claim and then to car rental. I attached the carseat base to the middle
of the rear seat and we headed to The Olive Garden in eastern Portland,
where we met Tristan and Jessica for lunch before heading east on I-84
to Walla Walla.
</p>

<p>
<a href="http://twitpic.com/uul2s"><img src="/changelog/2009-12-29/calvin_and_grandma.jpg" border="0" /></a>
</p>

<p>
We arrived in Walla Walla at 18:30, after an uneventful drive up the
Columbia River. My mother and Bethany were thrilled to see Calvin,
though he was far past his bedtime and didn't really know what to do
about traveling so far. We put him to bed, skipping his evening bath in
favor of time.
</p>

<h2>Thursday</h2>

<p>
Kiesa wanted to trade morning Calvin duty, so she elbowed me awake when
Calvin got up at some ungodly hour Thursday morning, before 05:00 PST.
I fed him and kept him occupied for several hours, as the sky turned
gradually from black to a depressing gray, until he was ready to go down
for his morning nap. Now that he's figured out how to take morning naps
in his own crib (rather than being carted around the neighborhood in a
stroller), this gave me the opportunity to catch up on my own sleep. I
woke up in time for my family's leisurely breakfast, sometime late
morning.
</p>

<p>
In preparation for visiting family for Christmas, I picked up a
<a href="http://www.rei.com/product/784116">hand-crank coffee
grinder</a> (with a ceramic burr grinder) and a
<a href="http://www.rei.com/product/784620">coffee press</a> to satisfy
my caffeine habit. I had beta-tested the coffee press but not the grinder
before leaving home, but I did have several backup bags of chai if all
went wrong. I brought my last batch of micro-roasted
<a href="http://flyingfivecoffee.com/">Flying Five Coffee</a> (which
provided subscription coffee roasting in Longmont before closing earlier
this month; their whole beans were the best-smelling beans I've ever
encountered) and managed to produce a reasonable quadruple-serving of
coffee.
</p>

<p>
In the afternoon, Kiesa and I bundled Calvin up into the cold (roughly
freezing, but humid) and walked the several blocks to Swinyar and
Heather's house in nearby College Place. Their level one human Geekling
(mere weeks away from leveling up, er, her first birthday) Veronica was
willing to share her toys with Calvin, and
<a href="http://disasterkitchen.blogspot.com/">Ceri</a> (whom I knew
from the Commune Era at Union, a decade ago; I last saw her in 2002, but
I've been stalking her blog) was hanging out. We swapped baby stories
and Swinyar and I compared netbooks. (My Dell Mini 10v won, with its
larger keyboard and touchpad, but both of our netbooks have standby
power consumption issues that may be Linux-related.) We headed back to
my parents' house to try to get Calvin to take his afternoon nap (which
is a hit-or-miss affair) and successfully handed him off to my parents,
who were just heading out on a walk. This gave Kiesa and I the
opportunity to visit the
<a href="http://www.colvillestreetpatisserie.com/about.php">Colville
Street Patisserie</a> in downtown Walla Walla with the Swinjarnyars and
Ceri. It wasn't too cold out for gelati; I also had spiced cider but
Kiesa's tea might have been a better choice.
</p>

<p>
We tried to put Calvin on a more normal schedule, shifted one hour to
best coast time. This included an evening bath, which tends to calm him
down and might get him ready for bed. (It's become something of his
routine, so we're not sure we want to change it now.) Sometime in
November he started being able to pull himself up in his infant/toddler
tub, and seemed far more interested in standing up in the water than
sitting and splashing and playing with bath toys, so Kiesa started
accompanying him in the bath so she could provide a bit more support and
keep him from falling.
</p>

<p>
I volunteered for bath duty and ran a small bath in my parents' bathtub.
Their bathtub was a large jetted tub that would fit two adults with room
to spare. Calvin didn't seem to mind the extra space until he slipped on
the smooth floor, dunked his head, started choking as I pulled his head
above water, and managed to spit up into the tub before breathing
normally again. He survived unscathed, but the bath water was a bit
worse for wear. We abandoned the tub, searched for alternate bath
locations, and found my mother's laundry sink. Kiesa cleaned it and it
made a perfect bath for Calvin: high enough that I could spot him
without leaning over, and close enough to the kitchen that the rest of
my family could drop by to visit Calvin, which everyone enjoyed.
</p>

<p>
Calvin went to bed without much more trouble and we ate my family's
traditional Christmas Eve dinner: cheese fondue. After eating, we called
Willy in India to wish him a merry Christmas and to hear about his
travels to Varanasi, Delhi, and Kathmandu during his school year break.
We talked about my plan to visit him sometime in the spring and tried to
figure out what the next part of the plan was.
</p>

<h2>Christmas Day</h2>

<p>
Kiesa got up with Calvin on Christmas Day, letting me sleep in to a more
modest hour. As is traditional for my family, I opened my stocking when
I awoke, then we ate a large breakfast (while Calvin took his morning
nap) and finally settled into the ceremonial opening of presents
starting around noon, after Calvin woke up. He seemed less enthralled by
the unwrapping of gifts than might have been hoped; he wasn't
particularly interested in the wrapping paper or brightly-colored boxes,
but did appreciate the toys he got once they were unwrapped. He got
fussy after an hour, in time for his afternoon nap; we continued without
him. I ended up with a handful of Indian tourbooks and proceeded to
borrow several more from Willy's shelf to make sure I had all of my
bases covered.
</p>

<p>
(While shopping for Christmas, I had a short anti-materialism moment in
which I wondered about the merits of buying stuff for Christmas. I have
sufficient means that I can go out and buy most of the stuff I really
want, and the stuff that I can't immediately buy out of spending money
is far too expensive for anyone else to consider buying for me. There's
clearly benefit to buying things someone doesn't know they want, or
things they might not have the time to research as extensively as they'd
like, but I found it difficult to justify buying more stuff simply for
the sake of having something to put under the tree.)
</p>

<p>
After the gift-exchanging ritual was complete, and the floor was
littered with discarded wrapping paper, most my family took naps,
leaving me sitting cross-legged in the living room in front of the
coffee table hacking on my RSS feed. The results are not quite ready for
prime-time yet, but my goal is to include the full text of my
world-readable articles in the RSS feed itself, which should provide a
more seamless reading experience in one's RSS reader.
</p>

<p>
Calvin got up from his nap, played with some of his new toys, and
managed to amuse himself (and be amused) while most of the adults
prepared Christmas dinner until his bedtime routine. He went to bed in
time for Christmas dinner. After eating, my mother tried to show
pictures from India but ran into trouble with sorting photos by date
rather than alphabetically (which I couldn't convince my photo-viewing
software to do), so she switched to her smaller-screened computer to
complete the showing.
</p>

<h2>Boxing Day</h2>

<p>
I got up with Calvin when he woke up shortly after 06:00 on Boxing Day,
which happened to be the day he turned nine months old. I went back to
bed during his morning nap and got up again in the middle of the
morning, after my parents had gone to church but before Bethany, Josh,
and Kiesa had departed. I made coffee, ate breakfast, and studied the
available flights between India and Nepal before heading to the
University Church in time to hear the postlude. I found Kiesa and Calvin
in the balcony mother's room and successfully rendezvoused with the rest
of my family before heading back home. Dinner was a leisurely reprise of
Christmas dinner, though it was early enough that I brewed some of the
tea my father brought back from India. I spent much of the evening
trying to ignore the lame Christmas movie playing on the television
while I studied India-to-Nepal flights and ultimately concluded the
goal of flying from northeast India into Kathmandu was going to be far
more difficult than I had first thought. (Guwahati to Kathmandu is
apparently a city pair that the airlines of India don't optimize for.) I
went to bed late on my last night in Walla Walla before heading west for
Christmas, part two.
</p>
]]></description>
		</item>
	</channel>
</rss>
