Wednesday, October 8, 2008

Day 67: Reckless abandon

I saw a house being undercut by the river; its foundation extended several feet over the cutbank, over air and over domestic garbage cluttering the bank: broken dishes and a lawnmower, treasures to some future archaeologist. I was feeling guilty for neglecting the exploration of the various abandoned buildings that populate the riverbanks, and especially so after boasting of my feats of exploration in my journal. I could not just go by this old house without letting myself down.

I pulled over to river right. There was about ten feet of shallow, sloping mud before the eight foot cliff of the cut. I left my canoe in the water, anchoring it by tethering a bungee about my paddle, which I stuck upright in the mud.

There was no easy place to climb the cliff just there. My sandals were slippery, filled with mud. My feet slipped all around in them so that mere walking threatened to twist my ankle. I took them off and spent the rest of the excursion barefoot, carrying them in hand if they would be necessary to cross broken glass or nails.

I found a slope up and walked to the building. I did not even have to touch the door, since some screen had been torn out. I just stepped over and in.

The floor was thick in dust, and the area around the stove was black, as if a fire had gotten a bit out of control there. I always imagine teen parties or reckless campers using these abandoned buildings. There were a couple of aluminum lawn chairs, their nylon webbing torn and twisted in this room, but nothing else was recognizable.

The next room had a sink with drawers on either side, a kitchenette. I opened a drawer and imagined what I saw were old dishrags, but it was hard to say. On the floor was an overturned chest of drawers, empty. Some floorboards had been taken up to reveal a large wooden box in the dirt beneath. This box was now empty. There was a couch lying there, and its foam was shredded into a layer of debris all over the floor.

There was a cheap grandmother clock on the floor, which might have worked if I wound it up. The only thing I thought unusual was an open roll of aluminum foil, surprisingly new.

I walked back to the door I entered and had a look in the washroom before I left. The toilet was at back of the house and now empties onto the bank below. I didn't need to go.

There were two shed not far away. One was full of rusted steel, likely old farm equipment, but it was hard to say, it was so far gone. The other shed was empty.

There wasn't anything terribly unique as far as abandoned buildings go.

As I walked back to the house, a gust of wind struck the canoe, and my paddle leaned over, allowing the bungee cord to slip off. The canoe was free, and moving.

I jumped down to the lower bank and grabbed my paddle. The wind and current pushed the canoe about as fast as I could walk alongshore, but overturned trees and piles of branches slowed my progress, and the mud was no help, either. I hoped the canoe would get caught in the stumps of old trees in the bend up ahead. These were on river right, so I would just be able to scramble across the branch piles and into the boat.

The wind had other plans. The canoe found some muddy shallows at river left, and was stuck on shore. There was no bridge or ford nearby, and I knew what I must do.

I stripped down to my underwear, leaving my clothes in a heap on the grass. I took some deep breaths and prepared myself. I am a weak swimmer and holding the paddle in my hand made me even worse. Halfway out I thought I should have left the paddle and used the spare when I got to the canoe.

I was fortunate the river was not wide at this point, maybe fifty to sixty feet across. My feet touched the muddy bed, I waded over to the boat, and I paddled back to my clothes. I felt surprisingly clean after my swim.

Day 67 ended: 50*04.113N, 100*54.407W


John said...

Word up, g, protect that hacker rep! If it involves a swim, that's what you have to do.

I think this will be the last time I journal my day on your blog. I'll try to keep the comment regime up, and I might even split off to a parallel journal. It was an interesting idea, demonstrating parallel lives.

Today I got up an hour earlier, and it was great. I'm worked on a little grammar doing boolean matches, figured out how I wanted to do the state transformation structure for a simulator, and stubbed out a few sequence transforms.

Today at work, it was just narrowing down and cleaning up, my boss was on vacation in the morning, and everybody wanted to talk to the guy. He said he got something like 300 messages since Monday.

I'm kind of figuring out better Mathematica. It's very tempting to make things too Perl,

(#[[2]])& @@@ ((Range[#])& /@ 1;;%)

Wednesday night is Project Runway in our household. I'm a big Project Runway fan. I started watching in the last half of Season 4, but then I watched all of Seasons 2 and 3 on DVD. I follow the blogs and the interviews. It's a great show, because reality show stuff aside, you're watching creative people doing what they've been trained to do, and what they want to do.

Kevin Saff said...

I don't have Mathematica available to me! Could you please post a sample input and output from that excruciating code?

John said...

It's not quite real, here's an executable example with pretty much all of the same fun.

So, suppose the value of the previous expression is 7.

If we evaluate the following
(#^2) & @@ ((Range[#][[3 ;; %]]) & /@ {20})

Is a pure function that creates an array from 1 to the argument, and then takes the part from 3 to the previous argument (Range[#][[3 ;; %]]) & . When mapped across the list
{20}, that returns {{3,4,5,6,7}}, which internally is List[List[3,4,5,6,7]]. The @@ substitutes the pure square function for the head of the list, and thus the square is taken across it, thus overall returning
{9, 16, 25, 36, 49}

In practice, it is never close to this bad. For one thing, % is really only used for interactive work. On the other hand, I didn't use any rules.

John said...

Also, I submit for your inspection #0, which corresponds to the head of expression, and thus is the operator for creating anonymous recursive functions.