Monday, April 30, 2007

A Case of the Nerves

This morning I went to dump some pictures I'd taken over the weekend into Aperture. While the software was starting up, it popped up a dialog and asked me if I wanted to rebuild my projects. Having never seen this before (and since I don't like to let software do things with important files unless I know what's going on), I told it to wait and do it later. But when Aperture opened, all of my projects were red and clicking on one of them yielded a dialog warning me that the project would be recovered.

At that point, I sort of panicked, quit Aperture, and rebooted my machine. Recovered? From what? They all worked fine last time I used the software! Once the machine rebooted, I started duplicating Aperture's photo library: before it starts making changes to my photo library, I want to make sure I can at least get back to where I am at the moment! Since the library's currently 36GB, I had to leave for work before it finished.

In parallel, I ordered a 500GB My Book external hard disk from Western Digital (not my first choice in hard disk drives, but my favorite online store didn't seem to have any Hitachi drives in external enclosures). It's been a looong time since I backed up my Aperture photo library - and this morning's oddness has given me a case of the nerves. Since the disk in that machine hosting my library is only 250GB, the external will have more than ample space to back everything up. It'll also give me something to host Apple's Time Machine whenever Leopard comes out (and I get around to having a machine that can run it - at the moment, I've a Dell Dimension running Tiger; a "Hackintosh").

At any rate, firing up Aperture after lunch did reveal that it had somehow forgotten about all of my projects. But it was able to rediscover them in the library, apparently without any loss. I'll check it over more carefully later, to be sure, before discarding the backup - but it's nice to think I didn't lose anything.

Sunday, April 29, 2007

Containers!

Yesterday afternoon, David and I went over to a nursery close to our house and bought a bunch of plants. For a couple of years now, I've really wanted to put together some attractive containers. Last year, I managed to let the spring slip by without doing anything about it (possibly because I was looking for jobs at that time). But this year, we actually got the stuff, and I planted several this afternoon.

The centerpiece is a mixture of spike, coleus, marigold, sweet potato vine, and basket grass. I've had the pot they're in for over a year, but it's been empty until now. It needs full sun (actually, they all do) which should be okay once I get some of the trees in the back yard removed (I have an estimate scheduled on Tuesday).

The other containers are simpler (with fewer plants) and basically hold the leftovers from my trip to the nursery. I went with a list, but it's somewhat overwhelming to stare at tables covered with little plants and then try to imagine four or five of them sitting together in a container. Especially since the ones you plan to put together are all on opposite sides of the place! This container has coleus for height and focal point, verbena to fill up the middle, and licorice as a trailer.

The biggest "mistake" that I made was to get lots of single plants, rather than four packs. In my big container, that worked out okay; for the others, it meant that I could only put a few plants together. Two of my coleus were quite large. In this container, I set a large, mostly-green coleus against the purple/white/green of basket grass.

Saturday, April 28, 2007

Not Quite There, Still

My prints came from WHCC on Friday, as expected, and I redid the picture I posted earlier. In addition, I did the one shown at right. Neither of them came out as I hoped, though. The rotary trimmer I'd picked up at Staples proved not to be accurate enough for my purposes: there was too much play in the cutter head to ensure an absolutely straight cut. Which was really frustrating (but at least I could return it for a full refund). My measurements were also too imprecise to achieve the near-perfection I'd hoped for - they were also inaccurate. I failed to realize until after I was done cutting that a) the picture was bigger than the matte and b) the matte was not cut so that the same amount of space was on each side of each opening.

It then occurred to me that framers deal with these kinds of cuts all the time: when they cut mattes. Not only that, their cuts are extremely precise and extremely straight. So I looked online to see how expensive matte cutters are. I found this one, which looked pretty good - but it's $229. That's a lot of money - especially since, after making the cuts, I'd still have to put it in a frame. And that's one of the cheaper ones. The professional ones that frame shops use seem to cost in the $1,000 - $2,000 range (largely because they're huge, so they can handle really big mattes). If I knew it would do what I wanted and if I thought I'd use it a lot, I'd invest in it.... But knowing nothing, I'm quite reluctant.

So I visited a local frame shop and talked to the people there. I took along my pictures (the one in this post and the one in the previous post) and explained what I wanted to do. They wouldn't let me use their matte cutter (not a big surprise) but they did say that they could mount my picture on a matte (something that I don't know how to do correctly, anyway) and make the cut for $8.50 (for an 11x14). I nodded and said that it would take a lot of those for me to justify the cost of a matte cutter.

Not only that, but the cost to have them then finish the job (actually frame it up) would total $23 + the cost of the frame (which would depend one what I wanted). Clearly, it's more lucrative for me to have them do the work than worry about it myself.

But the best part of the trip was when the guy at the frame shop said he really liked the effect and that he'd never seen anything like it before. Means I may have hit on something original. That would be awesome.

Thursday, April 26, 2007

Not Too Shabby

Well, the aphids must not have done too much damage: my irises bloomed (before I got around to doing anything about the pests) and they look lovely. None of the non-purples irises I got from a friend last fall bloomed this year - hopefully next year they will. Some of the purple ones I moved the year before did bloom, however, so I'm fairly confident the transplants will bloom.

And in this picture, my lens was razor sharp. No cleaning or anything in the meantime - and no tripod for this picture. Just f6.3 and a high shutter speed. I suppose I was seeing quantum/saturation effects from the long exposure time and/or vibration even through the tripod. Since my lens's IS doesn't have a tripod-sensing mode, I turn it off on the tripod (as recommended). Perhaps I should leave it on, anyway, and see what happens.

Wednesday, April 25, 2007

Picture in Picture

Got a new set of prints back from WHCC yesterday, amongst which was the base print for the framed bit of art you see here. The frame is a double matte with about 1/4 of an inch (in depth) between the outer and inner matte. Over the outer matte, I have the "border" of the picture in the center of frame - but in black and white. Thus transforming the otherwise rather uninteresting outer matte (which is quite large, as you can see) into a muted continuation of the subject of the photo.

I think it's quite a clever idea and plan to build a small, 5-10 piece show around the idea, to be displayed at a local shop. In figuring out the technique (and equipment) needed to precisely cut the middle out of the border, I made a serious mistake (cut too far on the bottom right), so this is merely a prototype. I've got another print of the photo on the way, along with a different photo, set up in the same style. Those prints should arrive on Friday - I'll post my results when I have them.

Avoiding VPNs with SSH and Curl

All of the VPN clients I've used have an annoying habit of rebuilding my routing tables so that all traffic passes through the VPN, as opposed to target-network-specific traffic (by which I mean traffic destined for the network to which I've established the VPN connection). This can of course be fixed by manually rebuilding routing tables after the VPN connection is established: the default route (through the VPN) is reset to the gateway previously serving default traffic; usually, VPN clients add a specific route for the target network anyway, so no further change is needed.

But there is a good reason VPN clients route all traffic through the VPN. Frequently, the target network has permissions to access stuff out on the web that your host network might not. For instance, universities and libraries often maintain IP-pool-based subscriptions to online digital libraries. So, sitting on the university network, you can access material on the ACM or IEEE website; at home, you cannot. Since all traffic goes through the VPN, when you have established a connection to the university, you can access those materials.

Of course, that slows down all of your Internet browsing, since all requests and replies must pass through the VPN. Futhermore, it means that all of your data is passing through the target network - something you may not want, for privacy reasons. Hence the routing-table fix mentioned above.

So here's a way to get around all that. It assumes you have an account on machine in the target network, that said machine is accessible from the Internet, and that said machine runs SSH and has curl installed. Similarly to using SSH to move things, you can use SSH to fetch Internet resources that from within the target network, sans VPN.
ssh -l name host "curl address" > local_file
will do the trick. "name" is your account name on the machine "host," and "address" is the URL of the resource you want to access from within the target network; "local_file" is the name of the file on your local machine in which the fetched resource will be saved.

Not only does this let you grab things as if you were within the target network avoiding the time-consuming VPN connect/disconnect, it does so without placing any temporary files on the remote machine "host." And, since curl prints its status information to STDERR, you get to see your download's progress, even as curl saves the file to your local disk.

Tuesday, April 24, 2007

Lunch Niche

Over the weekend, Matt L. and John B. built our picnic table! It looks great - even better up close, in person, than in the photo. They really paid a lot of attention to detail. Each of the boards has been sanded so there are no sharp corners.... It's great. Can't wait to try it out!

Monday, April 23, 2007

Quite an Adventure

The success of our trip on Saturday (no - you didn't miss something; I didn't write about it) convinced Tracy and me that we needed to take David with us on Sunday and do it again; since he was working Saturday, he couldn't come along. So after church and grocery shopping, we made up a nice picnic (potato salad, cole slaw, and stuff for sandwiches), got everything together, and hit the river.

Well, that's what I'd like to say. The reality is somewhat less glamorous (and less direct). First, we had to spend nearly an hour and a half working out the cars and such: drop off the boats, drive (in two cars) to the take-out point, drop off my car, drive back to the boats. In midday traffic on a weekend - and a particularly lovely weekend - that takes a loooong time. Then we had to carry everything from Tracy's car to the boats (which I'd locked to the guardrail alongside the gravel road), carry the boats to the water, and grease up (so we wouldn't turn into cooked lobsters).

And then we hit the water. We put in just after the dam (that creates the reservoir on which we usually paddle). There was a rapid right alongside where we put in, which makes for an exciting start to the trip. You can see the rapid and the dam in the first photo, above; those rocks at the right of the rapid actually mark where we put in. In the second photo, David waits amongst the rocks for us to get into our boat (and me to stop taking photos!). That was by no means the last rapid for us, that day: the photo at right shows another of the roughly 10 we had to navigate.

The real adventure came right about the middle of the trip. Tracy and I were in a rapid and thought we could maneuver around a large rock in front of us. We paddled hard to the left, and the boat obligingly turned to the left.... And side-slipped directly onto the rock we were attempting to avoid. At which point water poured over the upstream side of the boat (port) and the boat listed hard to port. And filled with water. And became quite firmly wedged. So we had to climb out of the boat, into the icy, fast-moving water, and try to figure out how to dislodge the boat. It took both of us lifting/sliding the back end off the rocks before the water finally did the rest of the work and floated the boat downstream. In the meantime, my camera (in its box) had floated out and sailed down the rapid, as had my water bottle, Tracy's water bottle, her shoes, and some of the food for our picnic (the bread and the chips).

And now that the boat was free, we had another problem: it was at the bottom of the rapid, and we were in the middle of it. We walked down the rapid as hurriedly as we could, but it's hard in icy, deep, fast-moving water to move quickly! Fortunately, David was able to not only rescue all of our gear (save Tracy's water bottle, which was small and easily missed) but also corral our boat (after it had rolled over) on a beach. Tracy and I were so far from where the boat ended up that we had to walk (in my case) and swim (in hers) to shore and then run along the top of the riverbank, down to where the boat ended up. Save for that one loss (we never found the bottle), the incident was without lasting harm. We drained the boat, verified that the chips and bread weren't waterlogged, and continued along our way, looking for a place to eat: an incident like that is not only tiring, it makes you hungry!

Not far from our near-disaster, we found a likely spot and pulled the boats up on a sandy beach. The picture at left and below were taken on that beach. Our food was still cold, and since the bread and chips were still dry, we had a regular feast. As cold as we all were (David had had to get out of his boat to help me drain the tandem), it was pleasant to sit in the sun.

We brought blankets, too, so we spread those on the soft sand and stretched out and dozed for a while - probably an hour, at least. That was really nice, and well earned (I think), after the work we'd done recovering the boat. A group of canoers passed, in that time, but otherwise it was completely peaceful: the sun, the breeze, the water, and the birds - not even many insects, since it's still so early in the year.

From there, the trip was basically uneventful - which was nice - save for a little water taken in on nearly every rapid we went over. The tandem is nice and handles well, and even claims it can go in Class 2 whitewater, but it's definitely not designed to keep its occupants dry in whitewater! The sides are so low that it's quite easy for water to spill into the boat. It's also quite difficult to maneuver in whitewater - but that could be a reflection on the skill of its occupants.

We did see a couple of interesting trees on the way to the takeout point. The first, above, is one of many trees growing along the riverbank that have had their roots exposed by the erosion of the bank. That one was the most fantastic, I thought; I'd seen it on Saturday and was glad to have my camera with me to get several pictures of it. In the larger version (linked from the picture), you can see that the base of the trunk is elevated above the ground: I could probably crawl under that tree. The second, at right, is a tree root (but for what tree, I never saw) that has defined a stream-bed feeding into the river. The water falls along the root and follows its curve into the river - very interesting.

Oh - I suppose there was one more adventure: right before we reached the takeout point, in the last rapid, one of my shoes (which I'd foolishly set on top of the back of the boat - not tied down) fell off. It was only after we'd pulled up onto shore that Tracy noticed it was gone. I had to jump in David's boat and paddle as fast as I could to catch it - at the bottom of the next rapid. And then, I had to climb said rapid to return to the takeout point. Which I had just enough energy left to manage.

Quite an adventure.

A Box for my Camera

You've probably noticed that I've not posted any pictures from kayaking trips, recently. That's because, the more I thought about it, the less I liked the idea of having my kit in the boat with me, unprotected. And since we've been on rivers lately, rather than small, sheltered lakes, I've really not wanted to risk damage to it.

So I bought a box for my camera: a Pelican 1450, as I mentioned in this post. It came on Saturday, while Tracy and I were out on the Rivana River. It's shown, to the right, with my camera and flash snugly encased in foam; the big open spot there is for the EF 70-200 f2.8L IS USM (that I don't own yet). It's pretty massive and very, very solid feeling. I figure with all that foam around the camera, I could drop it off my deck and not have to worry about something getting broken. But I'm not going to test that theory - no sense in pushing my luck. It does float, however, which is a Very Good Thing™: means that if it falls overboard, it'll float on down the river, rather than sinking to the bottom (which would be a Very Bad Thing™).

Especially nice - and unexpected - is that I can leave the lens on the camera, in the box (as you can see in the picture). When I was working out the dimensions in Visio, I thought I was going to have to keep all the components separate. As I discovered while using the camera, yesterday (post to come, soon), it's really nice to be able to open the box and pull the camera right out, ready to shoot.

Friday, April 20, 2007

Aphids and Lens Clarity

The weather finally decided to clear off last night, and this morning the sun was out. A pleasant change after the past week of gloom! So I grabbed my camera and wandered out to the iris bed around my mailbox. They've not opened yet (but they're budding) and in the morning light they look quite lovely. So I set up the tripod and snapped a few pictures.

Only to discover two things. First, that I have aphids on my irises! You can see them pretty clearly in the picture to the right (if you click on it and look at the full-size image in my gallery). I'll have to either find some ladybugs to drop on that bed or get a reasonable insecticide to kill them off. Don't like using insecticides much, but somehow it seems much simpler than dealing with ladybugs (mom got some a few years back - they were a pain to "deploy"). They're kinda cool looking bugs (aphids) but I don't want them on my plants!

Second, that none of my pictures came out sharp. I rather expected that, on a tripod and on a calm day, with a shutter speed of 125 and an aperture of f8, using a remote switch, my pictures would be sharp. But they weren't. You can see the lack of sharpness if you click on the picture above. (The picture to the left is scaled down more from its original size, so it's harder to see the lack of sharpness.) But the one above looks like it's out of focus - but with the enhanced depth of field in shooting at f8, any mistake in focus acquisition should have been compensated. And I look several (and made the camera refocus several times). One at least should have hit!

I've noticed similar, recently, when shooting with the lens stopped down to f22. But that was a picture of a tree, taken at some distance from the subject. I thought it odd but when I opened the lens up to f9, sharpness returned. Wide open the lens is quite sharp, and usually sharpness and aperture increase directly: the more stopped down the lens is, the sharper is it. At least, that's what I remember reading. I should also mention that when I first got the lens, I was blown away by its sharpness. It's a Canon EF 24-105 F4L IS USM - a very high-quality lens.

The lens doesn't seems dirty, either. But I plan to remove the filter and shoot something at various f-stops and various shutter speeds to see if perhaps it is interference from the filter. It's a high-quality filter.... Really shouldn't be reducing the sharpness of the lens. I'll report on that when I have results.

Thursday, April 19, 2007

An Excellent Article

Time Magazine today has this article in response to the shootings at Va Tech. I post it here partly because it's a thought-provoking reflection on the probable mental makeup of a mass killer but mostly because, in many places, it's exceedingly well-written.

As to any comments on the shootings themselves, I will continue to observe my self-imposed silence. There is already far too much analysis being thrown about. I will say this though: hindsight is always 20/20 vision.

Wednesday, April 18, 2007

A More Successful Trip

David, Tracy and I went on a much more successful kayaking trip last night. We dropped Tracy's car off at the takeout point and put in at the same place as our previous trip, but this time headed downstream rather than upstream. David had a box for his phone (which survived being thoroughly soaked!), wallet and keys, we had extra towels and clothes in dry bags, and all wore our life jackets. As such, there were no incidents: it was a nice, calm paddle, and nice that it could be a one-way trip.

Ironically, the reason we'd not been wearing our life jackets was because we assumed they'd be uncomfortable. I mean, I spent good money on them, tried them on in the store, and they were fairly comfortable. But having had those horrible orange things they make you wear at lake parks when I was a kid, I maintained this image of life jackets as, well, horrible orange things. These, once seated and comfortable in the boat, were barely noticeable. They certainly didn't interfere with movement nor put unpleasant pressure anywhere. And it was nice to know that if someone flipped, they'd have something to buoy them until they got their wits about them. So we'll keep wearing them - which is nice, really. Saves room in the boats for gear, since we don't have to stow the jackets.

I also ordered a box for my camera, yesterday, a Pelican 1450 case with pick-n-pluck foam. Laid out all the bits of my camera kit in Visio (dreadful tool - MS should be shot for what they did to it) and ensured that there'd be an inch of foam between each piece and the sides of the case. Even left enough room for the lens I want (but don't have): the EF 70-200 F2.8L IS USM. Looked at smaller boxes, but those weren't deep enough, or had so much extra space that I didn't gain anything by not allocating space for the lens I don't have. So now I have planned growth potential. Once the box comes, I'll be able to haul the camera around with me and not worry about it getting damaged. The only downside is that it's not exactly going to be fast access.... But good protection seemed better than fast access. And I'm not really sure how I'd have managed both, anyway.

Tuesday, April 17, 2007

Never Quite the Right Tool

I not only work in a cross-platform environment (though barely); I'm a cross-platform computer user. Not really by choice, mind you: if I ruled the world, we'd all be using Macs (in spite of the great respect I have for Linux). But I don't rule the world and we don't all use Macs and at work I have a PC and not a Mac.

The good thing about this, I suppose, is that it's driven me to discover new and (often) nicer ways of doing things. Well, not nicer, I suppose, 'cause the software I used on the Mac was really, really nice. But better for not only cross platform use, but also multi-computer use. Since my work machine is at work, when I want to work at home, I'd either have to VPN to work and get my files, or mail them ahead before leaving. Or use web-based services and just know that everything's accessible everywhere. Which is what I do.

But the web-based services require a web browser for access. And that means that most of my work is actually being done in my browser, rather than elsewhere. Which makes my browser about the most important tool I use, outside of the work-specific tools I have on my work machine. And that means that I want a really awesome browser.

Here's the problem: my favorite browser in the world, OmniWeb, only runs on a Mac. Moreover, while it's a truly amazing browser (for many reasons too subtle to talk about - you'd have to use it and experience the niceness), and while it passes the ACID2 test, it doesn't support all of the scripting features that Google uses for its services. Sure, the Google services all work in OmniWeb, but you lose the rich-text-like editing capability. Which means you have to type the HTML out by hand. Which is slow and irritating, though not show stopping.

So I use Firefox at work. And now at home, too, often, since it plays so much more nicely with the Google services. And Firefox is a great browser - it even has a better ad blocker than OmniWeb.

It would be really nice if the two could somehow be married. Probably, since Firefox is open source and has such a flexible API, it'd be easier to merge the subtle nice things from OmniWeb into Firefox. But in the meantime, I'm stuck with two tools for the same job, both of which had nice points, and neither of which actually fits quite right.

Sunday, April 15, 2007

A Cold and Wet Revision

It appears I need to revise Aiello's Gear-Uselessness Principle.

On Friday, David, Tracy and I met David at Barrack's Road Shopping Center so we could get a jump-start on kayaking that evening. Since we were out that way, we decided to hit the upper part of the Rivanna River rather than one of the lake parks.

We put in at Reas Ford Road, and paddled upriver, planning to return to the car with the current. It was a gorgeous evening - I wished I had my camera, but the river was high and I wasn't able to find a hard box for my camera. All the BRMS had were small hard boxes: big enough for a couple of cell phones and a wallet and keys, but not for a camera as large as mine. I'd gotten one of the small boxes, anyhow, along with a bilge pump and a signal mirror before meeting David. So Tracy and I put our phones in the box, along with my wallet and keys. Mostly for fun, since I'd just bought the box.

But back to the beauty. That part of the river is really lovely. Nothing built up along the banks, just a couple of large homes, but those are pretty high up from the water and well shielded by trees. The river was running pretty fast, but not so fast that it was unpleasant to paddle upstream.

Just before we turned around, we happened upon a couple of rapids. Not "OMG look at those huge, roaring rapids," but some pretty fast-moving water. We decided to climb them before we turned around, 'cause we figured it'd be pretty much fun to paddle back down them.

We got up the first one with no difficulty, caught our breath, and started up the next one. Tracy and I, in the tandem, were in front; David was coming along behind us.

Then we heard this big splash, and David calling for help. His boat had turned sideways to the water (his boat is fairly keeled - great for tracking, not great for fighting rapids: too much leverage for the water) and gotten pushed over. So he was in the water, clinging to his boat like a rat to a piece of driftwood as the current carried his boat back down the rapid.

We turned our boat around as fast as we could and paddled over to him. I threw him the dry bag that had our towels, a sweatshirt, and a spare jacket so he could hold that to float, rather than the boat ('cause it's hard to get a good grip on wet plastic). Then I tossed him a life jacket so he could shrug into it, just to be on the safe side (no, we weren't wearing them). But about that point, it was shallow enough again that he could get his feet under him, so neither proved necessary. Note that that lack of necessity translated into forgetfulness: as soon as he stood up, he rather let them float on down the river in the current.

But we let them go, and focused on getting David's boat dry so we could get him back into it. I fiddled with the bilge pump a bit: it moves a lot of water (about as much as a garden hose, I'd say) but quickly decided it wasn't going to move the water fast enough to be of much use; not with the shore so close, anyhow. So Tracy and I removed our shoes and socks, rolled up our jeans, and dragged his boat into shallower water where we could manage to roll it and start draining it. Didn't take too long; much more efficient than trying to pump the boat dry: that boat only has a rear bulkhead, so when it takes in water, it takes in a lot of water.

Now would probably be a good time to mention that it was only around 50º F outside at the time. And the water was glacially cold (not literally, of course, but boy did it feel like it!). It was also about this time that David realized his (brand new) cell phone was in his pants pocket. Instant regret for not having purchased two hard boxes when I was at BRMS!

Up on shore, I had David strip off his two wet shirts and rub his chest a bit while I rubbed his back (remember that I'd thrown the dry bad with the towels and extra shirts and it was now floating down the river!) to try to get him a little warmer and dryer. I took off my outermost shirt, a long-sleeve knit, and Tracy took off the jacket she was wearing so David could have those. Nothing could be done about his soaked jeans or shoes, but at least his chest would be warm that way.

He'd also (naturally) let go of his paddle when his boat flipped, so when we got back into the boats (that water was soooo cold for bare feet!) we pulled out the spare paddle and gave it to him. Then we chased back down the river to get the gear.

Fortunately, the gear hadn't gone far. Also fortunately, the dry bag had done what it was supposed to and kept the towels and spare clothes dry, despite being dunked in the water and floated down the river. We tossed one of the towels to David, so he could take off his soaked shoes and socks and dry his feet, and used the other to dry off our feet so we could put our socks and shoes back on. That made things much for comfortable for us, at least, but since David didn't have extra socks or shoes, I doubt it was a huge improvement for him.

We fished out his paddle, took the spare back from him, and continued back to the car. With the current in our favor, we made good time. We got the boats out and back on the car without further incident - which was good: we'd all had about enough of adventure for one evening!

But back to the title of the post. A lot of our gear actually did come in handy. We needed the spare paddle, so David could control his boat (and we could both paddle ours). We needed the towels to dry off. We needed the spare clothing, so none of us would get wet. We didn't actually use the bilge pump, but I was still comforted knowing it was there: had he flipped somewhere else, we might have had to use it, since I doubt we could have pulled his boat onto the front of ours to drain it (though I plan to practice that and other recovery techniques once it warms up a bit).

Perhaps the reason the Principle failed to hold on Friday was because the relative badness of the outcome was so high. I mean, David got cold. And so did we, though it was nothing in comparison. And perhaps my lack of forethought in throwing away the towels and spare clothes as a floatation device had something to do with it.

Or perhaps it was the badness of soaking his phone (so much so that the external display was waterlogged, with a nice air bubble on top of it, making it rather like a level) due to a missing hard box.

Whatever it was, we needed most of our gear this time around! And I think we learned quite a bit from the experience. For instance, I learned that I need to think a bit more carefully before throwing things for floatation. I mean, sure, in a life-or-death situation, it's better to throw away your towels than let someone drown. But he wasn't in that dire of straights at the time, and I certainly could have taken the extra 10 seconds to dig grab the life jacket instead. It would also have been better had the dry bag been tied to our boat. It's got a D-ring for that purpose - I should really put it to use.

And having done this once, I want to practice it several times (in warmer weather) so that next time a boat flips, we'll be more efficient and skilled at recovering the boat. We spent far to long floundering about in the water trying different things, before actually making progress in draining his boat and getting out of the water. Had the water truly been cold - like near-freezing kind of cold - David would have been in trouble by then. Not that I plan on us being in water that cold, but preparation, as this incident demonstrated, is a Good Thing™.

Friday, April 13, 2007

Aiello's Gear-Uselessness Principle

If you're not familiar with the Heisenberg Uncertainty Principle, it can be summarized thus: looking at something, to figure out where it is, makes it go faster; measuring the speed of something doesn't tell you where it is. Thus you can never know both where something is and how fast it is moving with infinite precision and accuracy.

Gear behaves in a startlingly similar way. If you take a piece of equipment with you, you effectively guarantee that it will not be needed - and therefore will be useless to you. If you don't take it with you, you are sure to arrive in a situation in which it will be helpful (if not necessary). Something about the inclusion/exclusion of the piece of equipment alters its necessity, just as observing something alters its speed.

I hereby name this "Aiello's Gear-Uselessness Principle" under the (unresearched) claim that I am the first to postulate it thus.

Here's an example. Yesterday, Tracy and I took the tandem up Ivy Creek (David decided he didn't want to go along). It had rained the day before, so we were confident we'd get further up the creek than previously. I also decided that, since the water was going to be high and flowing faster, there was a better-than-average chance of mishap (i.e., flipping the boat), so I opted not to take my camera (I've still not gotten a dry case for it, and my dry bags very clearly state that they are not dry enough to entrust precision electronic devices to their seals). And it was cloudy when we left, so I figured I'd not have much light for it, anyway.

Of course, when we got there, there were no clouds. It was sunny, windy, and basically gloriously beautiful. The redbuds and dogwoods were blooming along the banks of the creek. We followed a tributary a ways that, normally, isn't navigable in our boats - it was especially pretty. And then, on the way back (we got further up the creek than previously, but several fallen trees blocked us, and we didn't feel like carrying the boat past them), we saw a beaver.

Now, seeing beavers isn't terribly unusual. What was unusual is that this one let us pass within four feet of him, while he chewed on a stick and watched us. It was incredible: they're generally very skittish. I don't think I've been closer than 20 feet or so from them.

And I didn't have my camera. It was dark then, and my lens isn't terrible fast (f4), but still. I could have cranked the ISO speed and taken them in. Ah well. Perhaps next time.

Of course, next time, the gear-uselessness principle will kick in again, and there won't be anything worth shooting.

Thursday, April 12, 2007

Negative Ten Kay?

So I have a Java version of the game Bejeweled on my cell phone. It's entertaining, so I play it whenever I have a handful of minutes of nothing else going on and when I'd rather not be thinking too hard. Searching for matches on a grid of gems is a great way to derail my train(s) of thought. It's especially nice because my phone will suspend the JVM when you close the lid (it's a flip phone), allowing the game to be resumed at a later point.

I've scored pretty high on the game, and with Tracy playing whenever I let her, we've managed to rack up some impressive scores. I got 31k on an untimed game, before running out of moves. She scored some 48k on a timed game that I took over, pushing that score to some 55k before running out of time.

So, having scored some 52k, what do you think I saw when I fired up a fresh game of Bejeweled this morning?

If you guessed -10k, then you're right on! Props for figuring out my weird title.

"Okay, so how in the world did 52k become -10k?" you ask.

Actually, it's pretty simple. The largest number you can store in 16 bits is 65535 - that's 2^16 - 1. If you want negative numbers, you have to halve that, and get 32767. To be precise, in 16 bits, you can store [-32768, 32767]. All well and good.

The trick is, in 2s-complement arithmetic (which is what the adders in modern microprocessors use), if you have the largest positive number and add one to it, instead of the data value saturating, it wraps around. So 32767 + 1 = -32768, not 32768. Convenient at the logic level; horrible in terms of intuitive results.

So what's a programmer to do? Well, you can use a larger integer - say, a 32-bit integer, rather than a 16-bit integer. That raises the maximum signed value from 32767 to some 2 billion: 2147483647. So why didn't they do that? Well, likely the phone doesn't have support for 32-bit integers: it may very well be a 16-bit machine. So instead they should have used unsigned numbers, thus making the max score 65535, and checked for overflow on every addition, saturating the score to 65535. And probably ending the game with a big banner saying: "You win because we were too lazy to emulate 32-bit arithmetic in software on this platform!"

But here's the real gripe. In the game, I saw that my score was topping 50k. Clearly, at that point, they were using the unsigned (non-negative) 16-bit number - the one that would let them store values up to 65535. Now why on earth would they write that number out (or read it back in) as a 16-bit signed number? What kind of moron does that? And what kind of complete idiot writes a game in which it is so easy to score over 35k and doesn't consider whether or not the storage he's allocated for the score is adequate? Obviously the type of moron who's writing cell-phone games for a living.

Ridiculous.

"Type theory. Do you have it? Can I have it? Reward!"

A Sucker for Melted Cheese

It's just not fair. Today, for lunch, I have marinated tofu, rice, and peanut satay sauce. It's good stuff. I made it myself (the sauce and the marinade and the rice, not the actual tofu). And I was all in the mood for Asian food (convenient, since that's my lunch. But it's all over. I walked into the kitchen to get some water for my tea and smelled melted cheese cooking in the toaster oven. On someone's pizza.

Now, pizza's just not that good. I mean, it's not bad, but it's not good. But that's not the point. The point is, I'm a sucker for melted cheese. Doesn't matter what I have in mind to eat, the smell of melted cheese will change my taste-mood.

So I'm delaying my lunch and hoping my taste buds will realign. Thinking peanut-satayey thoughts.

Darn coworkers and their conspiracy to ruin my lunch. It's enough to make me quit work and become a tomato-raising hermit. With a large stash of melted cheese, of course.

Wednesday, April 11, 2007

Spell Check

Quite a while ago, Tony was working on my computer and got really irritated because, as he was filling out forms on the internet, the computer wasn't checking his spelling. He searched around for a little while and couldn't figure out how to turn it on. Well, this morning, I figured it out and he said he wanted me to write it on his blog. It's nothing exciting, but, since he asked and I like him a lot, I agreed. So, here it is:

This is working on a Mac, of course. Seeing as I don't have a Windows machine in front of me, I can't tell you how or if it works there or not. Right click on a word (for those of you who don't know how to do this with a one-button mouse, hold down your control key while clicking) and you'll see a choice in the list that says "Spelling." Put your cursor over that and a new list will come up. One of the options is "Check Spelling as You Type." Make sure that is clicked and you're good to go.

Tuesday, April 10, 2007

Wedged Repositories

I administer a Fedora Core 6 machine at work. Logged in today and told it to update itself ("yum update"). Checked back a few minutes ago and discovered that yum hadn't made any progress. So I killed off yum, poked around, and discovered that cron had spawned countless instances of this funny rpmq process - one of which was running at 100% on a CPU (I have cores in that machine) and had been running for - well - a long time. Like days. So I killed all of them off, and tried yum again. Still no luck.

Poking around, I found a post on the 'Net that suggested the right thing to do was to delete all of the "__db.00*" files sitting under /var/lib/rpm. That did the trick - unwedged the repository that rpm and yum manage - but I've still no idea why rpmq started dying by falling into an infinite loop. Will have to keep my eyes on that machine for a bit.

Have I ever mentioned my lack of fondness for computers? Yeah. It's a love-hate relationship. On most platforms, it gravitates more to hate than love.

Names Are Like Titles

A good name is everything. Well, alright, not quite everything. But they sure are a lot.

For instance: in digital systems, there is a failure condition known as the Byzantine Generals Problem. (Rather than explaining it in any detail, I'll trust you to look it up on Wikipedia.) It turns out that it is a real problem, it really does happen in real systems, and the consequences of ignoring these types of failures can be quite severe. But it's got the dumbest name. Not because the name doesn't adequately describe the fault scenario - it does. No, because when you try to talk to a manager about it, it's instant confusion. "Wait a minute, here.... Treacherous lieutenants? How can computer components lie? This must be nonsense!" And so on. "Asymmetric faulty" is a much better term (though less cool sounding): it captures the essence of what happens and doesn't require you to imagine that computers are actively trying to be mischevious (or treacherous). I blame L. Lamport for it, since he first described the situation (with others) in this paper.

Here's another one for you. Ribbit. Go ahead. Guess what that is (before clicking on the link!). Give up? It's an add-in to Word and PowerPoint that allows you to enter equations in LaTeX syntax. Imagine trying to get your company to front the money for this tool.
"Hey boss, I'd like you to buy a new tool and suggest that other members in the company give it a try."

"Really? What's it called?"

"Ribbit."

"...."

Yeah. That'd go over real well. And while I'm griping, "LaTeX" isn't such a hot name, either. "Oh - that rubbery stuff?" Yeah. Another Lamport invention, I might add. Oh yeah - and Ribbit's tagline is "Even better than the real thing." Whatever that means.

I should not leave you with the impression that I am the King of Names, however. I'm rotten at coming up with good names - just as I'm rotten at coming up with good titles. But knowing that, I'd for sure get some advice before trying to market my next great product, theoretical contribution, etc. And I understand why people pay so much money for good marketing.

Monday, April 9, 2007

Low-Power Lunch

A few of us at work have decided to go in together on a picnic table. There are nice plantings and such around our building, and the road that runs past here isn't too noisy. But at the moment, there's nowhere nice to sit outside and read papers or have lunch. So we're going to create such a place.

Picnic tables are surprisingly inexpensive - only around $100, if you get one made out of wood. Divided among several people, that's a small price to pay for a spot to sit and eat lunch on nice days. Pictures soon to follow.

Saturday, April 7, 2007

An April Snowshower

Snow in April is odd in this part of Virginia. I quite scoffed at the reports of snow and figured that, even if it would snow, it certainly wouldn't stick. I was wrong. I awoke this morning to snow on the ground and in the trees, a clear blue sky, and sunlight over all. So I trotted out the camera and the tripod and took pictures of some of the springtime plants with snow on their buds and leaves. At left is the Japanese maple that sits on my deck with icy snow over its leaves. It makes a pretty picture; I'm hoping there won't be any damage. Fortunately, though I didn't believe in the snow, I did believe in the cold and made sure to get in my warmer-natured plants. They at least will be unaffected.

While the trees had snow and the leaves covering the ground in the wooded part of my yard had snow, the grass in my backyard did not. Almost a pity: I've hostas coming up in beds in the back yard, and I thought those would look really cool with snow on them. But there was no such luck. The redbud in the front, however, did have snow; one of the pictures I took of it (detail shown here and in the linked gallery) is spectacular. I'll be printing that one, shortly, and hanging it somewhere.

On-the-Water Photography

I've been taking my camera along on our recent kayak trips. Here are some of the photos I've taken. You can see more in my web album over at Picasa.

Most of these are from a recent excursion to Beaver Creek Lake Park. This past Monday, we packed a picnic and paddled for most of the afternoon. The weather was glorious. During the winter season, the county doesn't charge admission to the lake parks. Great for us: we're still willing to kayak in cool weather, and the free admission is certainly appreciated.

There are gads of turtles in the lakes. They can nearly always be counted on to sun themselves on just about anything protruding from the water. The bigger ones seem to be rather afraid of anything approaching them: as soon as we start heading over to them, they tend to jump in the water. The smaller ones, however, will sit it out for quite a while. T suggested that the bigger ones are scardy-cats, while the little ones are braver. I suggested that she had confused cause and effect: perhaps the big ones are big because they are fearful. In any case, this turtle sat still enough for me to get a really nice shot of him. And T held the boat steady enough that the photo came out nice and sharp.

Rounding a bend in one of the creeks that feeds the lake, we came upon an osprey perched high in one of the trees in front of us. T slowly steered the boat toward the bird, while I readied my camera and started taking pictures. The best were after the bird launched from the branch, like this one. Made me wish for a bigger lens, but even if I could afford a supertelephoto, I'm not sure I'd take it out in the boat.... As it is I worry a bit about my camera body and my day-to-day lens. Gotta get a good dry bag and attach floatation devices to it.

Shortly after we saw the osprey, we stopped for a picnic. T climbed out of the boat nearly where I took this picture. I stayed in an paddled around to the far side of the rock. There, an outcropping jutted out just inches over the water. I ran the side of the boat under the outcropping, lifted out the cooler, and the change in displacement was enough to wedge the boat against the rock. I hopped out, the boat tried to float even higher, and it was stuck fast. David's boat we ran up on shore a bit.

During the picnic, the osprey stayed in another tree just across the lake from us, only about 50 yards away, or so. I hoped that he would fly back to the tree from which he'd flown when I snapped the pictures of him, but he didn't. More's the pity - taking the images from land, they might have been a little sharper. And from that angle, the lighting would have been more favorable. Next time, perhaps.

After the picnic, we explored the other arm of the lake. Wasn't much wildlife (aside from some Canadian geese, which I rather discount), but we ran up the creek on that side of the lake and had a good time. David got stuck quite a few times, and probably gave himself quite a workout getting unstuck. It was funny to watch him paddling all out and staying place. He ended up hopping out and walking his boat several times. On our way back to the car, though, I spotted a white egret among the reeds, through some trees before we rounded a bend in the creek. I readied my camera, and just as we came around the bend, it took flight. There was a fisherman just outside the frame of the photo - perhaps he spooked the bird. In any case, I got three pictures; this was the best.

Friday, April 6, 2007

The Collapse of the Cognitive Economy

So what would you do if you met an extra-terrestrial being? In the middle of the day, let's say, to take the fear factor out of it (or at least suppress it). Wave? Smile? Start talking? Gesture to objects?

Think about it. All of those responses assume a base of common knowledge or phenomenological familiarity. Body language is out; spoken language is out. Is a smile a smile, or a snarl? After all, most terrestrial animals bare their teeth as a warning, not a gesture of friendship. Is a wave threatening or inviting? How would you form a basis for communication? How would you communicate non-hostile intentions? Express intelligence? Beat out prime numbers on a nearby tree trunk? That assumes the being opposite you can see or hear.

Without the cognitive economy we rely on for communication, communication seems extremely difficult, at best.

The best answer I can come up with requires another person. Play act a friendly greeting, with all the typical words and body language. Then play act a hostile greeting, with play-acted violence. Then repeat the friendly greeting. Then initiate the friendly greeting with the extra-terrestrial. Perhaps in that way, you could show the difference between friendly greetings and hostile greetings and thereby communicate the friendly nature of the greeting before actually turning it on the alien.

But who knows if that would work? I'm sure others have considered this, but it seems an interesting question.

Using SSH to Move Things

It comes up every once in a while that you want to make a tarball of something but can't, because the machine hosting the files you want to tar doesn't have enough space. Or, you want to copy some big mess of files across the network, but want to transmit them compressed, to speed up the transfer, without having to first tar and compress them, then copy them, and then uncompress them, and then remember to delete the tarball on the source machine.

In either case - and in other cases - it's ideal to be able to accomplish the migration in swell foop (fell swoop). SSH comes to the rescue. The command:
ssh -l   tar c[j|z]O  | tar x[j|z]
will do the trick nicely.

It works because you can give SSH a command after specifying the host IP, and SSH will login, execute the command, and logout when it's done. Any output to STDOUT or STDERR will be routed to the machine making the call to SSH, so you can pipe or redirect that output just as you would had the remote command originated on the local machine.

So in the above command, we use ssh to log into machine ''ip'' with username ''name'' and ask tar to create an archive of ''path'', sending output to STDOUT. The "[j|z]" bit will allow you to simultaneously bzip2 (j) or gzip (z) the tarball, as it is created, before it appears on STDOUT. On the other side of the pipe, we ask tar to expand the input it reads from STDIN; if we have used "j" or "z", we need to give it to tar here, too.

This is particularly elegant if the account on the remote (source) machine has an authorized key for the account on the local (destination) machine. In that case, you don't have to enter a password or do anything other than issue the command.

You can move all sorts of things this way, not just tarballs. Any program that can write its output to STDOUT and read input from STDIN can be used this way. I've used a similar incantation to move Subversion repositories from one machine to another and even to block-by-block copy the low-level contents of one hard disk to another, across the network.

Protecting Grep

So here's some real Arcana for you. This comes from the UNIX family of spells - some of the most-difficult-to-master magic out there.

Grep seems to need protection when it's used to process directory information, as in:
ls /some/path | grep -e [some pattern]
This code may work differently if "/some/path" is a full path to the folder rather than ".". Issuing
env -i ls /some/path | grep -e [some pattern]
appears to solve the problem.

Who knows why grep needs it. Took me quite a while to figure out the solution to the problem, too. Which has resulted in a new bit of core UNIX lore, for me: when in doubt, blow away your environment with env prior to issuing your command.

Services, Ownership, and the Rise of an Empire

I recall several years ago - around 2000 - a professor told me of Microsoft's plans to make Office a web service. No longer would people actually buy and install Word, etc.; rather, they would subscribe to an online Office service and edit their documents online.

I scoffed at the idea. No way, I thought, would anyone want that kind of model of software. I based my reasoning on the resultant lack of ownership and also on a profound distrust for Microsoft: with my documents on their servers, what was to prevent them for reading my information? "But," you say, "why would they care about your information?" Not mine, perhaps, but Lockheed Martin's? Dell's? IBM's? You see my point. What's "proprietary" if the company that makes your word processor can read your documents right off their servers?

Of course, as yet, Microsoft has not succeeded in migrating Office to a web service. But Google has introduced something along those lines. And, while our core productivity applications might not yet be services, so much of the rest of our tools are. Like email: GMail, Yahoo!, etc. Like Blogger. Like Picassa. Like Flicker. Like MySpace and Twitter. You get my point. Sure, all of those are free, but they're still web services. And if you'd told me in 2000 that would happen, I'd not have believed you. Proof of my naivety? Perhaps. Or proof of the radical pace of technological and sociological change (in response to the change of technology).

It doesn't bother me, anymore, that I don't "own" my email service or my blogging service. Not sure why, but it doesn't. Perhaps it's the convenience. For some time, I tossed my own photo library in php and MySQL; more and more, I'm thinking of using something like Picasa to share my photos over the 'Net. So much easier than maintaining my own thing, finding my own hosting, etc. Sure, I have the technical skills to do it.... But I'm a bad computer nerd: by the end of each day, the thought of interacting with a computer is rather unappealing. Certainly the thought of doing anything "computer sciency" is unappealing. Designing, implementing, and maintaining a website counts, in my mind.

Something else has happened with the rise of Internet services: the rise of a new (or several new) empires. Just as Microsoft generated synergy for its products by releasing a Microsoft version of everything, Google is building itself an Internet empire based on an ever-increasing collection of services. GMail. Google Documents. Google Analytics. Google AdSense. Google AdWords. Google Calendar. Blogger. Picasa. All the Google search tools. I'm sure I'm missing others.

It's daunting. And they're all free. If I stop and think about it, it's a bit unnerving, this spiraling increase in Google's presence on the web (as if their search engine wasn't enough presence on its own!).

And then there's Apple. Which struggled for so long. With Mac OS X, they gained a superior OS with a vastly superior user experience. They've always had excellent hardware (excepting, perhaps, the early iMacs). And then came the iPod. And iTunes. And iTunes Video with TV shows. And now iTunes Movies. And now the Apple TV. And now the iPhone. The rise of another empire - in multimedia rather than web services - based on the synergy of related products. Sony should ph34r Apple's power - perhaps not yet, but they'd better be looking down the road: I see only Apple dominance there. (Naivety, again?) And no complaints (yet), as Apple's done a better-than-average job of not taking advantage of its placement, just as Google has. Though I'm sure some would disagree, I point out that both are committed to open standards. (Yeah, FairPlay DRM is not open - but Jobs defended that quite well in this essay.)

Now here's a thought: imagine a merger between Apple and Google. Google's technical expertise in Internet services, distributed computing and file storage, ....; Apple's decades of experience in design and user interfaces. Currently, they have (mostly) non-overlapping technologies. Together, well, I foresee the potential for some amazing innovation.

And then we could watch Microsoft run for the hills. That's a nice thought, I must say.

Thursday, April 5, 2007

Visibility

It strikes me: I have this blog; is anyone looking at it?

Probably not, since I've not advertised it to even my friends (except for T - but she doesn't count 'cause she's an author). Still, I find myself wondering if anyone's coming and looking at it. Or, more precisely, if anyone will come around and look at it. From all appearances, Blogger doesn't have any feature that lets you see how many views your blog has generated. Nor (even more useful) how many views from distinct IP addresses on a daily basis.

So: please leave me a comment if you stop by and read something. Nothing fancy. Just to say hello. I'll be glad to learn you were here.

[Edit] I'd still like to have you mention that you stopped by, but T pointed out that there are clever counters you can install. She's so smart! *jealous* More on counters and stuff later.... [/Edit]

Our Adventures in a Tandem Kayak

Yesterday, Tony, his brother David, and I took two of his boats out for a paddle. We had his new tandem kayak and a single-seater. (David, of course, got to be lonely.) As we started out, Tony wondered aloud about the fact that we always head out into the wind and when we come back, we seem to be either paddling into the wind (again) or there is no wind.

We paddled up the creek for quite a while before we started having to watch where we were putting the boat. Of course, the makeup under the water made the current (which was strong at that point) harder to fight. Shortly before Tony and I turned around, David decided that he'd stop and wait for us to come back. Tony and I made it around a bend and over some logs, only to find out that there was nowhere for our boat to go. So we turned around, gathered David, and headed back to the launch point.

Titles

So have you ever tried to come up with a creative title for a blog? I suppose if you blog already, you've done it.... Otherwise, I challenge you to come up with something creative and applicable (!) in a short span of time. Especially difficult is coming up with a good, applicable, spur-of-the-moment title when you just initiated the new-blog process and had given no thought whatsoever to the (obvious) eventuality of title creation.

Yeah. That's what I had to do.

Nevertheless, it's an apt title, given my background and profession. No, I'm not an IT person; I'm a Software Engineer. There's a difference: IT people live lives even more filled with bits of arcane knowledge. But we still have lots to deal with.

"Wait!" you say. "Arcane knowledge? What are you talking about? Are you some sort of occult member?"

No, I'm not. Pull open your dictionary and look up "arcane" and you'll see that.... Well, here, I'll do it for you: "arcane: understood by only a few; obscure." Think about it. That aptly describes the finer points of computers, does it not? I for sure think so and I know more about computers than the average person.

So is this blog going to be all about computer lore? No. I'd drive myself crazy. It'll be about whatever I feel like writing. But it needed a title, and I figure titles should be applicable. How applicable? Well, I'll post some computer lore, if for no other reason than to earn the title.