This Space for Rent

May 31, 2010

Railroad picture of the day

Two BNSF switchers

Two switch engines huddle against the storm in BNSF’s Northwest Portland yard.

Trolley picture of the day

Tri-Met 110 passes the 12th Ave layover yard

A Bombardier/BN car leads an eastbound train past the layover yard at 12th & Yamhill late this afternoon when we were on our way to Finnegans & the (closed, alas) downtown public library.

May 30, 2010

Yay! for the Urban Growth Boundary

On Sunnyside Road, just east of 172nd

Sheep in a pasture just east of 172nd St, right on the border between Happy Valley and Damascus.

May 29, 2010

Railroad picture of the day

Phoenix & Holly passenger train

A Phoenix & Holly passenger train waits for passengers at the Holly St station (not the only station on that railroad line; there’s one other station on the other side of the property (some 1500 feet away) that’s used during the fall pumpkin season and there may be a third station that’s used during the regular operating season) late this afternoon.

May 28, 2010

Friday Dust Mite Blogging™

Executive chair, executive Dust Mite

The best found a discarded executive office chair this afternoon when leaving the eye doctor, and decided to bring it home. And then Dust Mite seized the opportunity to take command of the situation.

Trolley picture of the day

Rainy Convention Center streetcar stop

It’s been a cold, damp, and rainy week, so the extent of my streetcar picture taking has been when I can snap pictures out the window of the mighty Prius when we’re on our way out for our traditional friday night dinner sans babies. This is a train that just passed us going west at Holliday & MLK.

May 27, 2010

Ob-rando junk

Rando junk of the week

I’ve found many interesting things lying alongside the road during some of my loops in and around Portland (a couple of dead iPods, a shoulder bag, a few screwdrives and wrenches) but nothing quite as amusing as yesterday’s find; an ancient frame + fork, complete with Suntour column shifters, a Simplex rear derailer, and a pair of Dia-Compe centerpull brakes (I think they’re the 750s that were recently reissued) and (unsprung) levers. Oh, yeah, and the bottom bracket (the driveside is frozen in place, so I need to buy a large adjustable wrench to try and crack it free) contained a cottered axle.

Okay, calling this “rando junk” is stretching the truth, since I wasn’t out breveting away, but was instead just rambling around town as part of going to one of my LBSes for a pair of brakes for the Murray Baja Experience. When I first spotted it, it was in a heap with an old Miyata frame, but I was riding the MLCM so I didn’t have room to carry two frames, and when I went back to try and retrieve the frames later that evening, the Miyata was gone and there was nothing left except for this mass of gaspipe.

I spent this morning stripping the frame (mainly done, except for the frozen bottom bracket cup and the cups from the headset, both of which will need new tools for extracting). It’s not very high quality, and it’s heaaavy – 6 pounds for the frame + headset cups + bottom bracket cup, 2 pounds for the ridiculously low-trail fork. And it’s pretty rusty – I did an emergency framesavering with boeshield (I do have some framesaver, but I’ll save that for if I decide to keep the frame (if I keep it, I’m going to have to have it sandblasted and powdercoated, and there’s no point in using up framesaver if it’s just going to burn away during the powdercoating.)

I’m not sure of the exact geometry, but it’s a 23.5" top tube and 22" seat tube, or about halfway between the Trek and the MLCM. It might be worth cutting the rear triangle off and building up an actual longtail triangle, so I could get a low-trail Xtracycle that would be slightly better suited for brevets.

May 26, 2010

Once again, the components are more expensive than the frame

Finished!  Or is there work still to be done?

The 700c'ed Murray Baja has finally reached the point of being a safe-to-ride bicycle; I went downtown today and picked up a couple of new brakes (Shimano Sora, which is apparently the cheapest possible road brake from a brand name, and even if not it was the cheapest short-reach brakeset I could find at Universal Cycles) and (after drilling out the fork to accept a recessed nut) installed them and tested the bicycle out.

As of right now (sans lights, fenders & porteur rack) the price list of the bicycle is:

The bicycle.
Glowspek flashing LED pedals (which actually didn’t cost me anything, because I was using a gift card that REI gave me for getting their co-branded credit card.)
Shimano Sora caliper brakes
Sheldon’s Fender Nut, which I pulled from my partsbin (I bought a set from Rivendell last year so I could fenderize the front wheel on the Trek; this left me with a spare which I’ve finally used after having it kick around the basement all winter.)

The wheels are the old ones from the Trek, so they didn’t cost me anything, and, unless I end up having to get a new headset, there’s nothing else that needs to be added until the little tear in the saddle cover gets out of control.

May 25, 2010

Avoiding that pesky ride to the start of the brevet (300km edition)

Sellwood to Hood and back

The only problem with riding a 300k brevet or permanent in this neck of the woods is that even the ones that allegedly start in Portland don’t start in Portland. Now, there’s something to be said for starting in Sandy, Newberg, Wilsonville, or Forest Grove – if you start way out at the edge of the (thankfully UGB-limited) suburban sprawl there’s not much sprawl you have to go through before you fall off the edge of the city and into the country. But there are several things against starting way out near the edge of the UGB.

  1. Services are more limited than they are in the city. If, for example, a Forest Grove brevet is scheduled at the same time as Pacific University holds its graduation, the limited number of hotel rooms out there get hoovered up just like that, which means that…
  2. it’s a fairly long haul, at an ung-dly hour of the morning, from Portland proper out to the start of the loop. And if the ride starts at 6am, you (and by “you”, I mean “me” – the fast boys can probably crank out the 25.5 miles from Sellwood to Forest Grove in a hour and 15 minutes. But I’m not one of them) need to get on the road by 4am if you want to get there with enough time to catch your breath before the ride starts. And if you (and by “you”, I mean “me” – I am not one of those randonneuring deities who laughs at snow+rain+hail+sleet, but instead am a delicate and whiny flower when it comes to doing ferry moves in the rain) wake up at 3:30am and hear the pitter-patter of rain on your roof, it tends to make the whole business of starting much more difficult.

So, to solve that problem, I should just make a ride that starts 100 meters away from my front door. The UGB200k.bis solves that problem for 200km, and this loop will (hopefully after I’ve done a checkride to verify that it’s all passible) solve that problem for 300km.

I blame Michael Wolfe for this one. His Barlow Trail 300km was an extraordinarily pleasant ride from Sandy to Maupin and (allegedly; I blew up at Government Camp, and thus missed a nice middle of the night plunge down the west side of Mount Hood) back, but it started in Sandy, which is 25 miles away from my front door.

Well, that’s easy enough to fix, if you don’t mind transiting a city as part of your R300.

You start at Milwaukie & Bybee, then proceed south (via Milwaukie, River Road, various Oregon City streets, and Central Point Road) down to New Era and Canby, then across to Estacada via various backroads (and a little bit of OR211), where, after stocking up in preparation for 90 uphill miles without any services, you wind up OR224 to the end of the highway just east of Ripplebrook, where you switch onto forest service roads to climb up and up the mountain to Timothy Lake, then Clackamas Lake (or at least the ranger station), then along Oregon Skyline Road to NFD 48, which takes you up to OR35 (and Barlow Pass), US26, and a late lunch (if you’re fast)/dinnertime control in Government Camp, followed by a plunge down from the mountain to Sandy, where you jump onto Bluff Road and proceed along various sideroads into Troutdale, where McMenemin’s Edgefield and the end of this sentence are encountered. And after Edgefield, it’s back into the city, crossing to the southside of Gresham, hopping briefly onto the Springwater Trail, then taking Foster Road and Woodstock back into Sellwood, where the ride comes to an end just in time for bed.

I figure that it would take me about 12 hours to get up to the Government Camp, then 6 hours to get back. Though I’ll probably replace the 48-tooth crankring on the MLCM with a 46-toothed one to give me a little bit more breathing room on the more tedious parts of NFD57.

(And if I wanted to make this into a 400, I could just add a branch down to Maupin or Hood River. Maupin would be nicer in the fall, but Hood River would be nicer in the summer. But that’s a bridge I will burn later.)

I hate sewing circular seams

Another cylindrical handlebar bag (part 1)

My last handlebar bag has a few things wrong with the strap placement, so I’m sewing up a new one to take its place while I bring it back to the shop to relocate the straps. This means that I need to sew up a bag much like it. Which means it needs to be cylindrical.

Now, the spiffy new 50+ year old Pfaff sewing machine just loves to sew packcloth and nylon webbing; the machine sewing of this thing took me about 25 minutes, even including ripping out a couple of seams and realigning the zipper. But that doesn’t include the approximately 4 hours I needed to actually get the cap pieces ready for sewing.

I first tried to machine sew an end cap freehand. This would have worked except for the barrel of the bag folded up under the foot of the machine. So I ripped that seam out, pinned the cap into place, and tried again. And the barrel of the bag folded up again.

So I ripped the seam again, then used a roll of duct tape (which, by happy coincidence, was almost exactly the 5" diameter of the bag) as a mandrel to fit the bag around, carefully pinned the cap, and s-l-o-w-l-y sewed it on the machine.

Which folded the barrel of the bag under the foot. Again.


So what I did was (after throwing out the end cap I had been trying to sew in, because the last time I ripped out the seam I managed to tear the fabric) to pin the caps into place, then tack them into place by hand, and then finally fed them into the Pfaff for the final 90 seconds or so of machine sewing.

I HATE sewing circular seams. I’ll stick to boxy bags for a while, because I can machine sew them without having to spend several hours preparing the carcass beforehand.

May 24, 2010

Cute baby picture of the day

Voracious readers at dinner

It’s not often that I get a chance to take a picture of the bears without them noticing and making horrible faces, but they were so involved with reading a Pokemon manga this evening that I was able to fire up the CBC and get one picture before the flash alerted them to the danger.

1 comment

YAFYE picture of the day

UP 7461 @ 12th & Clinton

I was on the way back home from a late-afternoon shopping trip (bagels plus stuff for cooking up dinner on the grill) when I spotted this train coming around the corner from Brooklyn Yard (presumably it had been waiting for the 17:00 Cascades to head south out of Union Station. The trek was loaded up with groceries, but I wasn’t carrying anything that was ultra-perishable, so I stopped dead and waited for the train.

I was carrying the CBC instead of my Pentax, but this meant I didn’t have to fuss with focus or f-stop, so it wasn’t a total loss.

May 22, 2010

Domestic vermin picture of the day

In the arms of somnia

I was running the fireplace today to keep the house warm (we ran out of oil last week, and since it’s May I’m not going to run out and buy more because that’s just not right), and when the temperature in the living room got up to around 80 Buckley jumped up onto the sofa and took a veeeery long nap.

New Code (part 2)!

Postoffice has been pushed up to version 1.5.2 to fix a few defects found when moving out of the old co-lo.

  1. On FreeBSD 7.1, setreuid() does not work as expected; it doesn’t give up privileges, but was instead writing files AS ROOT. That is bad. So I’m not even going to try to give up and regain privileges inline; instead I’ll just fork off a child process which will give up privileges and THEN attempt to write.
  2. It turns out that my home router drops packets when they’re pushed in too quickly. I discovered that when mail sessions, including ones from gehenna, started timing out during the DATA part of a transaction. But while debugging this feature (which I can’t work around, because a new router would cost >$100; I’m working around it by putting the mail server on gehenna and popping in to check mail) I found a few things that I needed to check.

    • I’m checking for the existance of setlinebuf() in, but was not actually bothering to use the resulting #define in my code.
    • if the close-on-exec fcntl exists, use it on the server socket.
  3. Pay attention to the active flag for virtual domains; if that flag is 0, the domain is not active (previously I was just checking to see if the flag existed to see if it was active.)

  4. I was handling MXes improperly; the queue running code was trying to deliver mail to the highest numeric value of MX, instead of the highest priority MX (MX priorities are like D&D armor classes; lower is better.) This was fixed, plus I randomise MXes of the same priority so that they pseudo-round robin.
  5. data() has been reworked to clean up the dot state machine and to make it smaller. Dropping \r’s with prejudice made the handling of EOL.EOL a lot easier, but I still had a lot of stubby nonsense from the old code there.
  6. smtpbugcheck() now uses mfcomplain() to dump out whatever error messages milters give me for rejecting a letter. mfcomplain() strips the extraneous numeric codes off the front of the error message, which cuts down on clutter.
  7. Finally, I was using open()/read()/close() to read the contents of a .forward file into memory. This left me open to fun attacks because I wasn’t bzero()ing the buffer between reads, and a short .forward would just be overlaid on top of a long .forward instead of replacing it.

    I changed that to use FILE*s which do all the trimming and stuff by magic.

I’m sure there are more things that I need to work on (like, um, STARTTLS) but the move out of the co-lo turned out to be traumatic enough so that this New Code! is enough for this month. Try it and see. If your exploding server can achieve low earth orbit, you’ll probably get a prize

New Code!

ps-etc has been pushed up to version 0.6 with the addition of FreeBSD 7.1 support and removal of a long-standing bug that had pstree -a display no command line for processes that modified their own command line. In addition, I modified the output behavior so that spaces embedded inside arguments would display as spaces (instead of the previous \040 display) – this feature can be disabled by passing the -s commandline option to pstree.

I do not know if this release works on Linux, because pell is temporarily offline until I retrieve the box from the co-lo (or I get the time to build up a tiny Linux box to move the last backup on to, but it “should” work without too many complaints. I can’t guarantee that it will work on any Linux kernel newer than 2.0.28, though.

Fixing git’s wagon, part 2

Even after making git STFU about using repositories in my traditional manner, I was still having difficulties making things work. IN PARTICULAR, I ended up with copies of discount that had a master and and origin/master branch, and after doing any work on the machine with git 1.7, I’d end up with things getting pushed into that repository that were inaccessable except by pushing to the (git upstream, then deleting the repository and cloning it back.

Needles to say, this started getting very tiring. So when I realized that git 1.7 was contaminating my repositories with imaginary origin/master branches (and shoving those imaginary branches to my archive @ github,) I went back and revisited why my scripts ended up generating unbuildable configurations on FreeBSD 7.1 (answer: because sockaddr_storage wasn’t in netdb.h anymore, but in sys/socket.h instead, and I wasn’t checking there before telling git to emulate it itself) and, once I fixed that, I blew away git 1.7 and replaced it with the older and less doctrinaire release.

I realize that this is merely an invitation for trouble when the repository format for git is completely rewritten for their 2.0 release, but at that point I’ll merely revert back to only publishing release tarballs instead of exposing my daily development commits.

May 21, 2010

Friday Dust Mite Blogging™

Lords of all they survey

Dust Mite and mini-Mite gaze down at the dining room from a stack of papers on my desk.

May 20, 2010

Domestic vermin picture of the day

Creaky ancient Dorrie

Dorrie, in mid-skritch, on one of the chairs by my desk.

1 comment

May 18, 2010

Compare and Contrast (bicycle style (part 2))

Baja & MLCM

When I was out gallivanting around the countryside on Saturday a “new” bicycle was spotted at the Llewellyn rummage sale, and purchased for the princely sum of $5. It was in pretty good shape, considering that it looked like it had been parked unused for what looks like a good part of a decade. But it was pretty heavy (40-odd pounds,) and it had 26" wheels instead of the 700c wheels that are becoming the house standard. I didn’t think there was much to do about the weight, but it looked like I could fit a 700x28c wheelset into the fork and rear triangle.

So when I pulled it apart for cleaning, I did just that. OUT went the ancient fat-tire-capable steel (Wald?) wheels, IN went the newer (by 1 year) Matrix wheelset that used to be under my Trek before I xtracycled & generator-hubbed it (thus replacing the Maillard 5-speed freewheel that the Murray came with with a 7-speed Suntour freewheel) and, as an unexpected surprise, the weight of the bicycle shot downwards.

Right now, the fully-randoed MLCM weighs about 35 pounds (with one full waterbottle, a small collection of fud in the front bag, the bags, fenders, and the lights.) The 700c'ed Murray? 29 or 30 pounds, depending on scale accuracy.

And the Murray has a kickstand.

It will weigh more when I get done with it. It’s going to have fenders, brakes, and a porteur rack (because the destiny of any bike in this house is cargo, and I’m not going to xtracycle this already very long bicycle.) But it will still be nice and light compared to almost everything else I own.

May 15, 2010

YAFYE picture of the day

UP 2001, all tarted up in advertising livery

The lead unit of the longish container freight that was blocking Division Street about 5:30 this afternoon (forcing, after the stop for an obligatory picture, a two block detour to Milwaukie Ave so we could complete the latest run of the UGB200.bis brevet)

Advantages of having a routine.

Well, yes, it’s true that I’ve run the UGB200 and derivatives about six times (the one 650b DNF last winter doesn’t count as a full loop), and it’s true that this might be considered boring by people who don’t have my collection of mental tics (randonneuring is one of them, of course, but a lot of people have that mental defect so it doesn’t count) but, if you lose your cuesheet 15 meters into a 200km loop (and don’t find out about it until you’re another 500 meters down the road) it’s useful to have the routine because then you can do the entire R200 by memory instead of needing to refer to that now-vanished cue sheet.

Nine hours and thirty-four minutes


I wanted to go out for a little ride today, and asked on a local bikey mailing list if anyone wanted to go along. A couple of the fast boys were interested, so the ride was somewhat more energetic than my usual pace. By a hour and a half.

The gory details are:

  • 201.6 km
  • ~1200 meters elevation gain (and a similar loss, given that it starts and ends at the same place.)
  • 9h34 brevet time
  • 8h17 moving time
  • 15.1mph average speed (the lowest the average speed got was 14.9mph at the summit of Ridge Road between Lower Highland and Upper Highland roads, and the highest (after a reasonable distance) was 15.9mph at the Helvetia Road bridge over highway 26.)
  • 42.9mph top speed (dropping down the steeeep ramp on Casto Road about 3 miles west of Canby; this speed was almost matched dropping down Amiseigger Road and Thompson Road) thanks to just not bothering to touch the brakes but just letting gravity have its rough way with me.

I’m going to make Newberg into an open control, I think. Gaston is nice, but we ended up stopping at Chapters (hot chocolate – YUM!) anyway, and it would be a shame to have that receipt go to waste. And I didn’t remember that I wanted to bring some zip ties for the info control at Ridge Road and Upper Highland Road.

And, alas, I was too busy going like the dickens to stop and take pictures, except when we were coming down the last leg to Milwaukie Ave and saw a Yellow Menace locomotive painted in some commemorative paint scheme (Olympic torch 2001?) And by then the Pentax had disassembled itself on a bump, so I had to reinstall the batteries and reset the battery, thus costing me One! Valuable! Minute! Of! Brevet! Time!

I’ve put the pictures on flickr, all tidily dropped into a photoset for your viewing convenience.

May 14, 2010

Friday Dust Mite Blogging™

The understudy

Dust Mite has gone walkabout again, so I had to call in an understudy for this week’s picture.

Railroad picture of the day

BNSF 2705

BNSF 2705 switches the yard at the industrial park by Smith & Bybee Lakes at ~12:45 today.

Life on the river

The Heidi L Brusco @ the Ross Island bridge

The Heidi L Brusco shoves an empty barge under the Ross Island bridge around 1:30pm this afternoon.

Things that go snap in the night

Broken toeclip strap

I went out for a loop around east Portland this morning (Springwater Trail/Woody Guthrie trail/Marine Drive/Willamette/Springwater,) and, about the time I was turning from the Springwater Trail to the Woody Guthrie Trail, I realized that the right strap was a bit loose.

Imagine my surprise when it just fell apart when I tried to snug it. It turns out that the only thing holding the thing together was a single rivet, which did stay nicely riveted, but which managed to tear itself out of the webbing.

When I reassembled it, I left the rivet off and just sewed the thing together. The thread might fray apart, but it shouldn’t tear through the webbing while it’s in the throes of disintegrating.

May 12, 2010

Domestic vermin picture of the day

Three Cats Afeeding

The cats take a short break from their ongoing dominance wars to enjoy a tunafish dinner.

May 11, 2010

The joy of open source software (#2)

When I moved out of the co-lo, my plan was to rent a virtual server for secondary DNS and as a place to put the weblog and the rest of my website, but move mail home so I didn’t have to chatter across the wire to retrieve and send mail.

So I set up a copy of postoffice at home, put a secondary mx on virtual gehenna, tweaked the configurations to properly mxpool, and settled back expecting I’d not have to do any sort of work on the mail front for quite some time. Silly me. Of course something would have to go wrong; and in this case, the “go wrong” was that any mail going from my secondary mx (and, as it turned out, a largish population of external web servers) to the main postoffice would just not show up if the mail body was >1024 bytes long.

Test messages, no problem. So I didn’t see it when I was doing connectivity checks. But real messages would either (a) just never materialize or, worse yet, only partially materialize (in the form of truncated headers if sent from postoffice or nothing at all if sent from a copy of sendmail that batched everything up in one big buffer and shot it down the wire when it was done.) And after a considerable amount of debugging (including writing mail to the support desks at the local phone company and the people who are leasing me the virtual server asking if they were doing any sort of mail filtering/blocking) I decided that “something” in the network was just dropping packets if they were punched down the pipe too quickly (this I verified by modifying postoffice to do a 1 second delay after every thousand bytes of message, which converted mail sending from mysterious timeouts to happy data processing.)

It wasn’t the Apple Airport that I’m using as the home switch, because I can shovel mail across it at full speed without any packets disappearing. It wasn’t every external site, because my mail from the iBob list, the ORRando list, and the markdown list was all getting here without complaint. But some sites, and that included virtual gehenna, would never be able to send mail if the body of the mail was over 1k long.

There aren’t too many things to blame. I can, I suppose, try to blame the routers that Qwest uses, but if they were in the habit of dropping mail I’d see commentary about it online. So, no, probably not them (and if it WAS qwest, I’d have seen many more connection timeouts what with the amount of spam coming in from compromised machines) and that leaves only one thing remaining; the little Linux machine that acts as a bridge between the DSL line and my network. So I’ve sent a note out to Qwest asking if there are any firmware issues with the thing, and if there aren’t how much it would cost to replace it with a different crappy little Linux bridge box.

And in the meantime I’ve moved my mail over to virtual gehenna. Oy. This gives me the encouragement I need to implement STARTTLS in postoffice and vm-pop3d, but this is not something I want to implement with a gun being waved about my head.

I hate computers.

May 10, 2010

The joy of open source software

A few years ago, after B*tm*v*r went insane and rudely pulled the plug on all of their open source users, I switched over to Linus Torvald’s git because it was the only the version control system that worked (close to) the same, plus was written in C instead of some thrice-damned vanity language that wouldn’t work on some of the older machines I use for development. It’s (obviously) a Linux program, which meant that it didn’t work out of the box on anything other than modern Linices, but with a couple of days work I was able to wrap my around it and get it to compile on SLS Linux, FreeBSD 4.5, and MacOS 10.0.4 without fuss or bother.

And then I happily used it for quite a while, building up a circle of repositories on my server farm, doing development on any of the machines and just pushing the changes around to the other machines to keep everything in sync.

You can guess where this is leading, can’t you?

When I finally moved out of my flaky co-lo, I replaced gehenna with a virtual server running a more recent version of FreeBSD, and, rather than try to install git (which doesn’t build because gcc is convinced that the system header files are trying to redefine sockaddr_t (but it’s not going to fucking tell me where this alleged redefinition is happening. Oh, no, that would make it easier to program in C and keep me from coding in P*th*n or whatever other t-dvl the FSF is shilling for this week)) I just grabbed git off the ports heap and installed it instead.

At first, it was fine; I could push out changes from pell & downbelow and run my automated unit tests without fuss, muss, or bother, so everything seemed okay.

But then something flaked out inside postoffice and I ended up doing a little bit of coding on the new virtual gehenna to figure out why. A few days later, I tweaked something in postoffice on downbelow, turned around to push the changes out to the other servers, aaaand…

error: refusing to update checked out branch: refs/heads/master
error: By default, updating the current branch in a non-bare repository
error: is denied, because it will make the index and work tree inconsistent
error: with what you pushed, and will require 'git reset --hard' to match
error: the work tree to HEAD.
error: You can set 'receive.denyCurrentBranch' configuration variable to
error: 'ignore' or 'warn' in the remote repository to allow pushing into
error: its current branch; however, this is not recommended unless you
error: arranged to update its work tree to match what you pushed in some
error: other way.
error: To squelch this message and still keep the default behaviour, set
error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

So I did a brief check online, and discovered that apparently the old behavior of push was a little bit too egalitarian for the new improved git core team, and that being able to push into a useful repository is now the moral equivalent of dumping diphtheria into the city water supply.

To hell with that nonsense:

--- builtin-receive-pack.c~orig     2010-05-10 12:23:21.000000000 -0700
+++ builtin-receive-pack.c  2010-05-10 12:22:00.000000000 -0700
@@ -351,10 +351,13 @@
            case DENY_REFUSE:
            case DENY_UNCONFIGURED:
+#if 0
                    rp_error("refusing to update checked out branch: %s", name);
                    if (deny_current_branch == DENY_UNCONFIGURED)
                    return "branch is currently checked out";
+                   break;

Dear git core team;

Thank you for offering to bolt training wheels onto my bicycle, but I already know how to ride the effing thing and I don’t need your nasty safety equipment in the least. I don’t care if the branch is “checked out” (didn’t that go out with CVS, or is CVS now the gold standard for those of us who can’t afford Clearcase?) when I attempt to synchronise it with the rest of the farm. If I can’t automerge it, I’ll just do it by hand the way I’ve been doing for the past three years.


May 08, 2010

Stratovolcano picture of the day

High contrast Mount Hood

I rode out to Sandy for donuts this afternoon, and it was clear, warm, and just hazy enough so that the volcano I saw didn’t look much like the volcano picture that came out of my Olympus (No handlebar bag on the Trek, so I carry a CBC instead of my Pentax.) So I “fixed” the picture before publishing it.

Domestic vermin picture of the day

Buckley on the sofa, Mavis in the window

A short feline cease-fire between Mavis and Buckley.

May 07, 2010

Friday Dust Mite Blogging™

Dust Mite rests on the sofa (arm)

It’s been a fairly laid back day today, and Dust Mite is spending most of it just sitting around watching dust float by.

Filthy commerce

A friend asked me to sew him a handlebar bag, which I was happy to do:

Tubular handlebar bag (#2)

I wasn’t sure how much to ask for it, but we’d been talking about Oregon brandies just before he asked, so I said that a nice bottle of brandy would be good:

Payment for a handlebar bag

I believe that it’s traditional to frame the first dollar you make when you go into business, but if I was to do the equivalent of that it would mean that I couldn’t actually deal with my brandy in equally traditional fashion.

Eh. I’ll just drink it and save the empty bottle for posterity.

May 06, 2010

Q&D project of the day

Pfaff test #1 -- rag quilt

My uncle-in-law has a Pfaff 130 sewing machine that I’m thinking of buying from him, and he is letting me use it for an evaluation run. I’m going to use it to sew up a couple of more handlebar bags, but I decided that a good first try would be to see how quickly I could crank out a small quilt.

And that would be 45 minutes to dig out my bags of fabric scraps, choose the ones I wanted, cut them to approximate squares, then go up to the attic to get more and do the same, then fire up the mighty Pfaff and let it nail them all together. I wasn’t fussy about seam matching (I wasn’t sure how well the sewing machine would work) but it’s nice in a sort of non-fussy magpie way. And holy goodness that sewing machine is nice – it’s much more heavy-duty than the Featherweight is; It blows right by the sort of fabric which has the Singer jamming up on the drop of a dime, and when the head tells the fabric it’s time to move that fabric just moves.

I believe I will be buying this sewing machine. I’ll be using it to make handlebar bags, so if people buy them I can use the proceeds to pay for it.

May 05, 2010

Might as well be hung for a sheep as for a lamb

Oregon Coast 600 (approximately)

It’s only 375400 miles in <4042 hours. And I think I’ve ridden about ¼th of the loop at one time or another. What’s to lose except the few remaining fragments of my sanity?

Update: It turns out that the night before this loop – the 21st – is also the night that some big student activity at Pacific University happens. Which means that there are no hotel rooms available in Forest Grove (or anywhere closer than about 7 miles away from the start of the loop) and I’d have to ride 25 miles out there (at 4am, of course!) so I could do a 375 mile death march. *sigh*

Update2: I’m not going to ride this 600. The pre-ride report sounds like it’s going to be for the fast riders only, and that’s not for me.

A useful feature

Using the lock loops on the handlebar bag

When I made the latest handlebar bag, I put loops onto the bottom of it so I could thread my bike lock through it when I go out shopping. There’s not much shopping on brevets, so those loops spend most of their time gently flapping in the breeze. Well, today I was thinking of taking the midlifecrisismobile out to the store before picking up the bears, so I threaded the lock in and headed on out. I didn’t actually get to the store, but I did manage to ride around for a while with the lock gently flapping in the breeze (and, more importantly, staying out of the way so I didn’t have to worry about it either jumping out of the handlebar and/or saddlebag, or rattling around on the frame.)

When I braze up the porteur rack and sew a front rack for it, I’ll need to figure out how I’m going to mount the lock. braze-on loops on the rack? fabric loops sewn around the rails? I dunno – I’ll figure that out when the time comes.

Now that’s something you don’t see every day

Yup, I'm enjoying myself even after 200km into headwinds

Even after riding 205km (and with another 195km to go before the day was done) I was still enjoying myself enough to drop my traditional grumpy scowl. Time to start planning for a 600km loop, perhaps?

–Photo by Lesli Larson

1 comment

May 04, 2010

Server relocation can be fun!

I’m in the final stages of moving my machines out of the co-lo that they’ve been sitting in for the past 12 years or so (the management there has been getting steadily more flakey, and I’d started planning on moving out a year or so ago, but kept putting it off because I just knew that the relocation would be more fun than I wanted) but finally got the contents of gehenna relocated to a virtual server at another site.

Fortunately my hardware is positively ancient, so I was able to find a cheap(ish; US$15/month for a virtual machine running under vmware) small disk but large bandwidth vendor who offered freebsd 7.1 slices on their VM. So that meant it was easy to pick stuff off my existing FreeBSD 4.10 machine and drop it onto the new 7.1 machine?

Oh ho ho ho. No. The curse of Open Source®©™ software is that it’s written to be multiplatform; you can run it under both Redhat and Debian Linux. FreeBSD is not either, which means that things like, oh, Apache won’t build properly (I tried to hand-build 1.3.42 and whatever top of tree for the 2.0 series were, and the only way they worked was if I statically built modules into them. And then after that I couldn’t get p*rl (needed for a third-party netsc*bbl* server that runs on gehenna) or php (needed for another third-party wiki that runs on gehenna, plus for some of the more chromey pages on my website.) So I had to use ports, which meant that I got to write 1gb of my 10gb disk off just to hold all the stupid gnu crapware that those three things used.

And then the mod_php4 that ports built wouldn’t work with pmwiki, because of the tiny detail of not being built with either session or pcre support. And after I sorted that out (by the simple expedient of going in and hand-editing the ports Makefile,) I discovered that my pstree program doesn’t work on freebsd 7.1 because the format of kvm_t and kproc_t have changed since the 4.x days and are just as well documented now as they were then (which is to say not at all; I had to sit down next to the #include file and make the changes from the sources before the thing worked.)

On the bright side, git built all by itself after I went in and told it in no uncertain terms that there wasn’t going to be any g*dd*mn python interpreter on my machine. And discount and annotations just worked, thanks to my sticking to a SLS linux box with gcc 2.7 as one of my primary development platforms.

I do not expect any subsequent server moves will be any less painful. I’m just glad that my web server is sitting on a new box (after hand-editing a couple of ports so that they’d actually work) and I was still able to get a few hours of sleep last night.

(And this evening I get to move the mail and news from pell to downbelow. Oh joy.)

May 02, 2010

On training

I don’t, as a general rule, train. I ride lots, because it’s a pleasant way to spend time and think about hard problems. But, insomuch as “ride lots” (™ Eddy Merckx) counts as training, I don’t think that riding 40 miles last week (35 of which were done on Friday) would count as particularly good training for running a R400 on Saturday.

I will try to get more sleep this week. If I’m rested, going out on the bicycle seems like a better idea.

It’s only 2 R200s. Back to back. And one starting at 5pm. Could that ever be a problem?

When I got out of the absurdly vicious headwinds around Silverton, I knew that I’d finish the loop. When I made it to the ~200km control a hour and a half up on the clock, I was even more sure that I’d finish the loop.

But when I reached Independence and starting saying “this is only as far as the ride up to Sandy for donuts, that’s up a flank of Mount Hood, and I do that on my trek all the time!” it was a done deal.

And it was. 22 hours 58 minutes, of which ~19h30 was on the bike and ~3h30 was parked at a succession of convenience stores while I ate a terrifying collection of food shaped objects to suppliment my traditional diet of potatoes and fruitcake (which was eventually lost at the bottom of my handlebar bag – a hazard of the deeper bag that I had not been previously aware of.) And I’m pretty certain it would have been two hours shorter if not for the pesky headwind that assaulted us for most of the first 250km of the loop.

And there were covered bridges in mass quantities, along with pleasant waysides, spectacular clouds, and traditional randonneuring photo opportunities to go along with the convenience stores and porta-potties (which I didn’t take any pictures of; sorry.)

Oh, yes, and there was the small detail of riding 250 miles, thanks to a bonus mile when we missed Gallon House Road and went sailing half a mile down Downs Road before realizing our mistake.

As usual, the ride started at a stupidly early hour of the morning (but as not usual, I did not start at an evenly stupider hour in the morning and ride out – I had been offered a room share by a fellow randonneur (as part of a nefarious plan to get me to ride a whole series this year, no doubt) and, thinking how flattened I looked and felt after the ride out to Forest Grove for the three capes 300k I didn’t take more than about a millisecond to accept – no, I rode out on friday evening (14.5 miles, including three climbs) and was able to wake up at the civilized-by-comparison hour of 4am and just wheel the mlcm down to the starting gate at my leisure.

At 5am, it was cold and cloudy, but not raining and not windy, so the group (40 people were signed up, and I think that everybody made it?) poured out of the La Quinta parking lot and, basically in a large fast-moving blob, thundered en masse down to the Boone Bridge, across the Willamette, and up onto Airport Road, where a light headwind sprang up and gently sorted the riders out into fast and slow groups (and these days there don’t seem to be very many slow riders left; by the time we were south of Aurora, I had the lanterne rouge firmly in hand, only briefly exchanging it with Lesli Larson (we’d previously decided to try and ride together, but she’s a much stronger rider than I am and I spent much of the first 200km tagging along in her slipstream) and/or John Vincent, who was riding his recumbent and moving very slowly on the climbs.) From Aurora to a dozen miles north of Sweet Home, the only othe riders we saw were a couple of people who started late, a group of people who got in a wreck and had to unbend a wheel before they could zoom on ahead of us again, and a couple of riders who abandoned at the peak of the windstorm just south of Silverton.

Windstorm? Well, it wasn’t exactly a windstorm, but the light headwind north of Aurora didn’t stay light. South of Aurora, it had graduated to being an irritating headwind, then an annoying headwind, and then after we were riding south past the Oregon Garden, to a soul-sucking devil of a headwind that slowed the three of us down to a crawl and had me thinking that if not for only being 30 miles into the ride a DNF would have been a wonderful alternative to this endless pushing of me and my bicycle into this ceaseless tormenting wind. Fortunately it was a localized headwind. By the time we reached the convenience store in Sublimity, the wind had reached its peak, and by the time we staggered onto the first ramp on Cole School Road, it was back down to being an annoying headwind.

And this just left Cole School Road, which has three ramps; a moderate short ramp (50 feet at 6%?), a steeper long ramp (250 feet at 8%?), and a ridiculous long ramp that goes up 200 feet at a 20% grade (much like the Corbett ramp south of Nebraska St.) Normally, none of those ramps would be an insurmountable opportunity, but I’d been beaten flat by headwinds and ended up walking a little bit of the second ramp (I was creeping uphill after John Vincent when he stopped to walk his recumbent, so I grabbed the opportunity to walk along with him past the steepish part of that ramp), then MOST of the third ramp (I’d run down the approach to the ramp as fast as I could go, but only made it up about 60 feet before I found myself down to 40", standing, and stomping as hard as I could to get additional inches. Foo on that; I jumped off the bicycle and pushed the silly thing the rest of the way up to the top of the hill, where Lesli was waiting patiently for the ground sloth patrol (John was even further behind, but remember he’s riding a recumbent; even after having to climb both of those hills he still passed us before we reached the bottom of the hill on Richardson Gap Road.))

The Scio control was a very welcome break, and I loaded up the handlebar bag with a large collection of food shaped objects before we rolled on south to Sweet Home (which was also a very welcome break; Despite eating constantly between Scio & Sweet Home, I was still literally faint with hunger by the time we rolled into the Thriftway and were able to sit down for a proper lunch.)

And then we crawled up one last pair of hills (pausing briefly at a convenient porta-potty near the Crawfordville covered bridge,) crested the pass into Lane County, and rolled into the 200km control at the Mohawk Post Store at 5pm, where we scrounged fud shaped objects and turned around for our trip back to Wilsonville.

Into a headwind. Again. The promise of a tailwind that we had been chasing for 200km down the valley was rudely withdrawn in the form of increasingly nasty winds that, like the ones around Silverton, increased in annoyance up until the control at Harrisburg, where they changed first into crosswinds and then just vanished, leaving us becalmed for the last 100 miles of the loop. (And by then it was getting dark; I didn’t get any pictures after the Earnest covered bridge aside from one last Rivendell & MLCM portrait at Harrisburg. If I win the lottery I’ll have to investigate modern point and shoot cameras so I can get small form factor, high ISO, and good zoom lenses.)

With the headwind gone, the ride was a lot easier. But John Vincent, who had been slowed down by headwinds and hills, was no longer slowed down, and bridged ahead to group of faster riders who we’d played leapfrog with once just north of Sweet Home, but who were also taking advantage of the still evening air to leap ahead as if they had been shot out of a cannon.

And north of Harrisburg a bank of clouds rose in the west, which blocked the evening sun and made night fall with an almost audible *crash* while we were still on the loooooooooooooong Peoria Road leg.

And then we passed the faster riders from two paragraphs up when they stopped to reflectorize themselves, and played leapfrog with them until just north of Donald, where they stopped and Lesli and I just kept going, never to see them again. (They weren’t the only fast group we overhauled; we passed another bunch at a convenience mart just south of Salem – from the looks of things some of them had /completely/ run out of food and were frantically trying to correct that horrible situation. They passed us just north of Salem, but then a half dozen miles later we passed them walking their bikes, so I guess someone must have had leg cramps and had to walk them off. Ouch. It’s good that the whole group stopped; having had to walk off some leg cramps by myself out on Mount Hood in the middle of the night gives me a whole new appreciation to the concept of safety in numbers.)

I feel extremely fortunate that Lesli and I planned to ride the brevet together. I’m not a particularly constant rider, but Lesli is basically an inexorable force on a bike – she just kept moving along at 13-15mph for every inch of the way, and being able to pace her kept me from fretting over my (very unhappy after the Silverton headwind incident) aching legs for the last 200 miles of the loop, and by the last 40 or so miles, when we were sailing exhaustedly through the stygian darkness of an Oregon night, I was feeling very happy about the whole business of a R400, even one that tried it’s best to pound me flat right at the start.

Nobody really likes 400km brevets, and I can see why. It’s an awful long time on the bike, and unless you’re one of the fast riders you’re going to be spending several hours (and maybe an entire night) riding through the countryside at night. But (and it may just be rando amnesia taking effect) it’s pushing the whole thing to a higher level. A R200, even at my non-fast pace, is a day trip that I can (assuming I’m the permanent owner) set up on a moments notice. A R300, if I was fast enough, would be a /long/ day, but still a day that at most would take a hour of twilight while I charge in towards the ultimate control.

I’d have to be the sort of person who thinks it’s a moral failing to not finish a R600 in 20 hours to do a R400 during the day. And I’m not – and will never be, because that would involve bike-racy amounts of suffering and I don’t do suffering at all graciously – that sort of person, so the R400 brings the additional challenges of navigating at night to the vast puzzle game that is randonneuring.

And on top of that, it’s a gateway drug to the more insanely stupid longer loops, where you need to try and wedge sleep in alongside riding a 600-1400 kilometer loop with the clock ticking.

I’d do this loop again at the drop of a dime. And I’d do a fleche if I was asked, because I made it through this whole ridiculous thing without getting really tired at all. And if there were any other slow riders doing it, I’d jump at a R600 so I could get a series finished before my 50th birthday rolls around.

Oh, and as for the ritual lamentation about defects and equipment failures, well, um.

  • the closure on the handlebar bag is difficult to fasten and unfasten one-handed. Future bags will either need a toggle fastener or some sort of elastic cord that hooks around a post.
  • I need to put a cleat next to the cue sheet holder, so I can clip a flashlight to it and read cues when it’s dark. I had to clip the lego guy flashlight to the trailing edge of the holder and then the light wasn’t that great on it.
  • It’s hard to turn the light on on the Garmin 205 when you’ve got a couple of pairs of gloves on.
  • I think I packed a bit too much food – I need to carry a bit more of a mix of things instead of just potatoes (ate two of them), fruitcake (at ¼th of the cake, or ~3000 calories worth) and science diet. It’s not so much that I can’t stand eating it, but it tends to vanish under a layer of fud shaped objects and the flotsam from when I pull things out and rearrange them.
  • I only carried a 55mm prime lens on the pentax, so I had to resort to using autostitch to assemble full pictures of close big objects.

NO flats.

NO chain derailments (that I didn’t do on purpose.)

Did I mention that I’d do it again?

(Oh, yes, and I took peeectures too)