This Space for Rent

Sep 29, 2010

Riding home from work


It’s not the most direct route home, but it does the trick.

Sep 27, 2010

Domestic vermin picture of the day


Buckley takes a little nap in the cardboard box house that Silas made for him.

Sep 26, 2010

Cycle chic fail

My regular pair of +4s were in the wash because they had picked up a bit of an aroma after my speedy ride around the Verboot Sausage route yesterday, and my emergency pair of +4s were also in the wash because I wore them when I went out for bagels this morning and got rained on for my trouble.

And I needed to go to Trader Joe’s to pick up dishwasher soap, snacks for the bears and some at work food for me. “Your riding clothes are in your closet!” chirp the cyclocouture websites, so I took a look.

Blue jeans. Eh, they’ll have to do; I’m not going to wear my suit to go shopping.

So I put my jeans on, dragged the xtracycle out of the back room, and headed off on one of my more-or-less direct routes (that takes the easy, if somewhat longer, climb up the eastmoreland bluffside) to Trader Joe’s and back.

Oh my god I thought I was going to die.

I tend to favor form-fitting clothes, but the jeans ended up sticking to my legs and being way more formfitting that I could even imagine tolerating. And denim doesn’t, as a general rule, breathe worth crap, so by the time I got home I was dripping with sweat and the jeans had to be peeled off and tossed into the wash.

So I must have been going really fast, eh, and not adhering to the cyclochic ideal of riding really slowly. Uh, no. My normal average speed for taking the xtracycle up to Trader Joes and back is something on the average of 13-14mph. Today it was 11mph.

So I ended up riding extra slowly and sweating as much as I would have if I’d been riding under a deadline. The drowned rat look? SO HOT!

I’ll stick with my +4s, thanks.


Psychedelic cat tunnel

Buckley retreats

photo credit: Silas Wright

Sep 25, 2010

Out on the line (preriding the preride for the Verboort Flat Tire Extravaganza!)

downtown Snoozeville

This year I’m one of the organizers for the Verboort Sausage Populaire, so I thought that riding out to Forest-effing-Grove, riding the loop, and then returning would be a good way to get (something close to) my second 200km loop of the month as well as getting, hopefully, a chance to ride the thing without the torrential downpour and countless flat tires that made my last attempt a somewhat less than pleasant experience.

So I sat down last night, plunked the bicycle into the repair rack, replaced the tires with a pair of continental gatorskins, finally ziptied the dynamo taillight into place, loaded the handlebar bag with science diet, set the alarm clock for 6am (I was planning on a somewhat later time, but I had to get back home before 5pm) and went to bed.

This morning, despite the agonising screams of my common sense, I woke up when the alarm told me to do so, dressed, ate some breakfast, then hopped onto the mlcm and headed for the Sellwood Bridge and points west. There was a heavy bank of fog along the Willamette, so the trip across the bridge was done in a grey cloud, but when I reached the west side of the river and climbed up the bluff (via Taylors Ferry->La View->Corbett->Custer) I climbed out of the fog and into an absolutely clear sunrise.

Burlingame sunrise

(La View seemed like it was a fairly gradual climb when I went up it at 3:30am on my way to the Three Capes R300 but it turns out to be much steeper when I can actually see it. But it’s still much less steeply graded than the lower stretches of Corbett, and it doesn’t take me up higher than Barbur like the route through Riverview cemetery does. And once I’ve reached Corbett, it’s only 5-6% grades up to Fulton Park, and that puts me onto the ex-Red Electric ROW which is much less enthusiastically graded all the way up to the junction with the Beaverton-Hillsdale highway (and then it’s all downhill from there.)

But, alas, as I went downhill I noticed first that it seemed to be colder on that side of the hill and, secondly, that the fog was still squatting over the valley once you got out past Oleson Road (and this fog stuck around for a /long/ time, too; I didn’t break clear of the fog until I was well north on Jackson School Road.) This made for a fairly uninspiring trip out to Forest Grove (24.43 miles & 95 minutes from home to the Grand Lodge, including a couple of stops to wipe the condensation from my glasses) and a high-speed grope through extra-heavy fog (with quite a few stops to wipe the condensation from my glasses, even though the fog was heavy enough for that not to make much difference) until I was back into Hillsboro and enjoyed several fog-free stretches as I rolled eastwards towards the first transit control at Longbottom’s Coffee.

I was moving along fairly quickly (the first 70 miles were at a 15mph clock average) so I was fairly close to Longbottoms when I started to see several large groups of cyclists coming the other way. I’m fairly certain that they were all Portland Velo members out for their regular saturday loop(s), because just as I turned up 235th for the loop around Longbottoms (I wasn’t planning on stopping, because it was cold and wet and I was on a deadline) I passed the last group of riders which included another local randonneur, all dressed up in her Team Bag Balm jersey. We waved at each other, and then chatted briefly when I overhauled that group about 5 minutes later and rode along with them until we reached Sewell Road and I turned north to run through exploding tire alley.

Sewell Road is a pretty crappy road, and it drops you off on Meek Road, which is even crappier (Meek Road is where I ran over something that exploded and lightly shredded my rear tire (and replacement inner tube) last time I rode this loop, so I treaded very cautiously along this segment. Fate smiled on me, because I reached Jackson School Road with all of the air still in my tires.

Two sentinel trees on Jackson School Road

Jackson School road was very foggy for a long time, but then I dropped down into a small valley just north of the Oregon Electric railroad crossing and by the time I started climbing out of the other side I’d cleared the fog, and from that point on almost the entire trip (except for a mile or so around North Plains) was done under a cloudless sky.

Dairy Creek road (and the misnamed Fern Flat Road – it’s a road, and there are ferns around it, but it’s not flat!) are very nice when it’s not raining. Sure, the steadily increasing grade as you wind uphill to the end of the pavement at what used to be Snooseville plays wickedly with your average brevet speed, but once you reach that control and turn around gravity will cheerfully help you get some of that average right back again (I was averaging 15.3mph when I turned onto Dairy Creek Road for the trip up to Snooseville, was down to 14.8mph when I ran out of pavement, and was back to 15.2 by the time I was back to downtown Mountaindale) provided that you don’t end up losing your bicycle into one of the impressively nasty potholes that Fern Flat road is paved with. And from that point on, it’s all bumpy for the next 30 miles. Mountaindale Road goes up and down 4-5 times between Mountaindale and the aptly nicknamed “Frogger Junction” with highway 26, then up and down 3 times between Frogger Junction and highway 47, and then, after a roll through Banks, Cedar Canyon road does its own version of being a rollercoaster before it dumps you onto highway 6 for the mileandchange ride alongside high speed traffic until the turn off (and climb UP) Stafford road, which deposits you onto the hilly but trending downwards Strohmayer/Kansas City Road.

And there’s a barn along the Kansas City part of the road that’s been decorated with what looks like a hundred or so pairs of antlers. I didn’t see that one last time around, thanks to the rain and the flats, but it’s every bit as impressive as the Orrando page blurb says it is.

The visitors center for the Catholic church complex in Verboort

And then I turned onto Kemper Road, which goes directly east until you have to go south on Visitation (it’s officially a “right turn” on the cuesheet, but if you keep going directly ahead it will be onto a DEAD END GRAVEL PATH, which is probably not what anyone would think is the right route to take at mile 62 of a 62.7 mile populaire.) And then the preride was done, and all I needed to do was get home.

Before I set out, I was worried that I might have to cut the loop short for time. Ha Ha. It’s amazing just how fast I can finish a loop when I don’t have to deal with flat tires in the rain. Last time, it took me about 7h20 minutes to get around this loop, but this time it was about 4h18 minutes, and it would have been faster except that the science diet failed me in Banks and my average speed dropped from 15mph down to under 13mph for the last 15 miles of the loop.

And, alas, I didn’t get 200km; I was thinking of looping through downtown and taking Barbur all the way out to Bertha & the Beaverton-Hillsdale highway, but was worried about timings and took the most direct way instead. So even looping through downtown (and riding the Springwater Trail from there into Sellwood, including the 4 blocks of brand new not even paved yet trail from Umatilla to Linn) only gave me 119.8 miles (in 8h48 minutes, thanks to a couple of stops for fud in Cornelius and Portland; I made 100 miles in 7 hours and a handful of seconds) instead of the 124.mumble miles I needed for a R200.

All of the pictures are here. And now I need to sleep.

Sep 24, 2010

Friday Dust Mite Blogging™

Dust Mite lookout tower

Dust Mite avoids the savage cat.

Sep 23, 2010

Life on the river

A tiny diesel-powered sternwheeler runs up the Willamette

A little excursion boat races me up the river towards home.

I have a torch and eventually I’ll know what to do with it….

Midlifecrisimobile decal study

Until then, of course, the mlcm will continue to accumulate the small forest of zip ties I’m using to fasten everything onto it (including a dynamo taillight, which is waiting for a free 20 minutes to ziptie across to the back of the bicycle where I’ve bored a mounting hole in the rear fender for it.

This saturday the plan is to pre-preride the Verboort Flat Tire Extravaganza! (~200km when I include the ferry move from Sellwood to Forest Grove and the more circuitous ferry move back into town when I’ve finished turtling around the loop (hopefully without the traditional handful of flats)) but on sunday I might sit down with my little hobby torch and try to braze some pieces of scrap steel together, and then turn around and braze the pieces of the mlcm’s front rack together. And if that works I’ll pull out the gaspipe frame and see if I can braze things onto it. And if that works, I guess that means I’ll need to repaint the mlcm, because it won’t look quite as nice with large chunks of the paint stripped off for brazing on various mounting points and reinforcements so I can attach the front rack, the lights, and route the wiring without having to use zip ties, rubber cement, and/or duct tape.

(And I need to find a place where I can get decals made, because I need proper decals instead of the ones that are on the frame right now.)

Sep 22, 2010

Picture of the day

Llewellyn hallway

Llewellyn elementary school at about 18:30 today.

Delaying my trip downtown

A tugboat approaches the hawthorne bridge

The Western Comet is back on the job, shoving barges up and down the river at just the right time to strand me on the Hawthorne Bridge during my ride down to work.

Sep 21, 2010

Cute baby picture of the day

Russell & Silas work on their homework

It’s homework time in the OK Corral.

1 comment

Sep 20, 2010

Railroad picture of the day

ATK 48 zooms towards the Springwater Trail overpass

Sometimes it pays to screech to a stop when I see a green signal just south of the ex-Portland Traction overpass over the SP Yellow Menace mainline. This time around the southbound 1815 Cascades wasn’t moving all that fast, but it was still moving too fast for the CBC.

Sep 19, 2010

Domestic vermin picture of the day


Mavis drowsily sits on the living room rug while I attempt to take her picture with the CBC.

Sep 18, 2010

It must be fall

The New Seasons rain god

I was planning on riding the Hills to the Yeah! R200 today, but the people I wanted to ride it with begged off because they’d just returned from a long bike camping trip and were, not surprisingly, exhausted. Just as well, because after about 4 hours of sunlight this morning the clouds rolled back in and it started to rain.

And it’s warm, too, so when I threw on my rain vest and took the trek down to the big big big store, I ended up bathing in my own sweat and getting just as wet as I would have been if I’d not even bothered to take the vest along. Gahh.

1 comment

Sep 17, 2010

Friday Dust Mite Blogging™


Waiter! There’s a Mite in my shoe!

Return of the prodigal Eng!

Dead SW8(?) cab view

The new working Eng!, which had been moved down to Canby for several years, has finally returned to Portland. It’s not in the best of shape (various railfan websites report that it had failed and was stored down there, but attracted vandals) but I believe the plans are to rebuild it and then repaint it back into its original Southern Pacific paint scheme.

Sep 16, 2010

(distant and somewhat blurry) Railroad picture of the day

A W&P/P&W freight crosses Milwaukie&Clinton&11th&12th

My plan this morning was to ride to work via 17th, Powell, and 12th until I reached Harrison and could go across to the Hawthorne bridge, but just as I turned the corner onto whatever the street is called between Powell and Clinton (Milwaukie? 12th? Mileleventwelve?) a southbound P&W train came hustling along.

So instead of riding up to Harrison I instead went down to the river and took 4th to the Hawthorne bridge onramp, but before I did that I dragged out the CBC and managed to coax a picture or two out of it before the lead engines completely vanished.

Picture of the day

Sunset over the mall parking lot

The clouds broke apart this evening for just long enough to give a fairly spectacular sunset.

Sep 15, 2010

Domestic vermin picture of the day

mavis sleeps some more

Typical cat configuration.

Sep 14, 2010

I don’t know what they are, but they’re certainly pretty

Blue Flowers

Every spring, these flowers (and a corresponding patch on the other side of our front steps) shoot out masses of glossy green leaves, which live for about a month and then fall over dead. Three or four months later, after the leaves have appropriately fertilised the soil, these flowers spring up, blossom, and then fall over dead within about a week and a half.

It’s a pretty terrible place for most plants – there are a couple of sweetgum trees and flowering bushes that keep the front steps in perpetual shadow – but these odd little flowers seem to enjoy it.

Sep 13, 2010

Chomp! goes the bicycle chain

When I was in the throes of setting up the drivetrain on the MLCM I managed to derail the chain several dozen times. The vast majority of those times were derailed off the crankset, either into the frame or into the pedals, but there were a couple of time where I was trying to wind upgrade where the chain derailed – at a very slow speed – off into the spokes of the rear wheel.

I wasn’t moving fast, so I didn’t fret very much about it, and eventually I worked it out so that the chain wouldn’t derail nearly as much anymore (by moving to a chainguard+chainring, plus – alas – ditching the biopace for circular chainrings so the chain wouldn’t pulsate so much.) But when I was on my way home this afternoon, I heard a metallic ping as if I’d ridden over something that got hurled up against the frame of the bicycle, and then, after hustling up Division St to i205, I started to notice a bit of a pulsing in my rear brake as if it was going out of true. And, finally, when I turned off onto the i205 path, I started to hear a little tick tick tick coming from the rear wheel.

Every other time I’d heard a ticking from the rear wheel it meant that I’d picked up a staple, nail, or other sharp pointy object that was engaged in the slow process of burrowing through my tire to reach the soft underbelly of the inner tube. So I ground to a stop, rolled the MLCM onto its side, and looked at the wheel.

No nails, no staples, but I did notice that one of the driveside spokes had snapped off about a inch away from the head. So I wound the long part of the spoke around a couple of other spokes and continued on towards home. When I got home, I pulled the rear wheel, extracted the offending spoke, replaced it (with, alas, a spare front spoke, which is about 3 threads too short. I have a bicycle with a disc brake generator hub, so each side of each wheel uses a different spoke length), then realized that every other driveside spoke had gouges in it where they’d been chomped by the chain.

So I’ll probably need to trot off to the LBS and get them to rebuild that wheel (or just to pull a spoke, measure it, and buy a handful of replacements and rebuild the wheel by myself. It looks like it’d cost about $30 to have the wheel trued (and the spokes replaced), so if that included spoke cost it would be a better deal than doing it myself, but if it was $30 plus spokes it’d be a lot cheaper to do it by myself.)

Cute baby picture of the day

Silas and my hat

Silas tries out my straw hat.

Sep 12, 2010

Pretty flower picture of the day

A tiny patch of mint flowers

f1.8, ISO 800. The *istDS doesn’t deal well with high ISO, as you can tell by the background noise.

1 comment

Sep 11, 2010

Behold the mighty llama!

Three curious llamas

There are quite a few farms around here that keep herds of llamas, and it’s apparently now llama haircut season, because all of the llamas I’ve seen in the past couple of weeks look like these ones do.

This trio is not as jaded as the ones I saw on Ridge Road last weekend, for no sooner did I stop and unlimber the camera than they came strolling on over to take a look. Perhaps it’s the xtracycle that interests them?

Railroad picture of the day

TCRY 25, dead in train

Tri-Cities & Olympia #25 – an ex-C&S SD9 – trails a set of Yellow Menace locomotives as they tug a long train south past the Springwater Trail overpass at the southern edge of Portland.

Sep 10, 2010

Friday Dust Mite Blogging™

Dust Mite & Brooks Saddle

My trek may be a little small for me, but it’s much too large for a Dust Mite.

Sep 09, 2010

More tiny industrial railways

(Actually the same industrial railway as before, but this is a different photo angle.)


Pretty flower picture of the day

L6 flash flower

It wasn’t dark when I took this photo, but the flash certainly made it seem like it was dark.

Sep 07, 2010

Baptism by water

The traditional post-labo(u)r day rainstorm

Around 16:30 today the skies opened up and it started dumping down rain. Not that it was unexpected – in Portland, it is traditional that it starts raining right after labo(u)r day – but, alas, I’d ridden the MLCM in to work today and I needed to ride it home.

By the time I squelched through my front door I was pretty much wet from head to toe, despite the ridiculous excuse for a raincoat that I was wearing.

glub glub

1 comment

Sep 06, 2010

Photo disaster of the day

OPR 1202 heads downtown

It was a sunny day this afternoon, but, alas, I’d left the flash turned on on the CBC, so what ended up coming out of the camera after I attempted to take this picture of #1202 (heading up the ramp, then north towards downtown) turned out looking as if I’d attempted to fix it with Photoshop.

No, I didn’t – what you see is what the pinhead-sized sensor on the Nikon L6 thought you should get.

More bee pictures!

harvesting time

A honeybee takes advantage of a sunny afternoon to pick up some supplies for the hive (which, I suspect, is located a couple of blocks south of here in a hollow tree along 17th.)


Pretty flower picture of the day

Red Sunflower with bonus honeybee

The bears and I walked over to Llewellyn School this morning to see if the summer renovations were finished in time for the school year (which is tomorrow, and, no, the renovations are not complete; there are no longer any play structures there) and when we came back we walked by a stand of sunflowers which just had to be photographed.

I didn’t have the *istDS in hand, but I did have the (latest incarnation of the) CBC, so I was able to satisfy my optical compulsion.

Sep 05, 2010

I sing the praises of the cheap bicycle tire

After I gave up on using 650b wheels on the MLCM, I first replaced them with the pair of el-cheapo Cheng Shen tires ($12 for the pair, and the puncture resistance of wet kleenex was thrown in for free) I’d purchased for the “are 700c wheels faster than 650b?” ride test, and then with my spare pair of xtracycle tires (Pasela + Vittoria Randonneur) after the second time in a week where I ran over something and punched holes in both of of my tires. But the xtracycle tires are both 28mm (nice for carrying heavy loads, but possibly overkill for what I consider to be a heavy load) and have a pronounced tread; the latter is screaming overkill for my bike riding (the only case where I’ve found a tread to be useful is when there’s snow on the ground, and, alas, the tread on the VRs and Paselas isn’t enough to work when the snow gets deep enough to encase the bottom part of the tire. There was a week last year where I didn’t ride at all because there was a layer of icy snow at the base of the snowfall, and my tires would sink into it and spin on the ice. A pair of Nokian A10s would probably do the trick, if I could fit them into the bicycle frame, but I don’t think any conventionally treaded tire that would fit under the trek would actually work.)

So, in december I went looking around online for bicycle tires, and (aside from the usual crop of people recommending $100 tires that “last 2000 miles!” – thanks, but I’d bought a nice pair of Ruffy Tuffy tires that lasted me about 2000 miles before one got punctured in too many places during the Verboort Flat Tire Extravaganza! last fall, and the other had the sidewall shredded by a bottle when I was in the middle of doing an in-town errand a couple of weeks later; $96 for the pair makes an expensive two months+change of riding) saw a couple of recommendations for the (expensive at list price, but it’s Nashbar so they’re almost always on 40-50% sale) Nashbar Duro tire. The tires happened to be on sale, so I bought a pair, stuffed them onto the bicycle in January, then bought another pair in February after I’d put 600 miles onto them.

Sometime in April I swapped out the rear tire because it had gotten a fairly severe gash through the sidewall (it had actually cut all the way through the tire, but, oddly, had not punctured the inner tube; I only discovered it when I was moving the tire over to a new rear wheel a week or so before the first running of the Eden’s Gate 400k, and I swapped the front tire some time in May because it was starting to look a little bit worn.

But since then I’ve ridden the bicycle somewhere over 3000 miles under the same tires, and aside from a few flats and the complete disappearance of the ornamental herringbone tread, they’re still happily wheeling along.

They’re creeping up on the milage I got from my first pair of Vittoria Randonneur tires, which were at about 5500 miles before I wore them down to the protective belt under the tire surface, and they’re now head and shoulders above the milage I got from the much-more-expensive Ruffy Tuffy tires.

Not bad for a cheap 290 gram folding bead tire. I should think about putting a pair of them onto the xtracycle.


Sep 04, 2010

My fastest slow R200 of all time

When I rode the UGB200.bis today, I noticed two things. First, I wasn’t really moving along that quickly, and secondly, when I don’t tarry at controls that makes up for a lot.

It’s a permanent, of course, and not even an “official” permanent, so I can make up my own organizer rules as I go. So today I didn’t even bother to stop at most of the controls (I needed to stop at the info control at Ridge Road & Upper Highland road so I could write down a couple of info questions, and I stopped for food and nasty sports drink in Canby and Gaston) but instead took photos (which are nicely datestamped for the skeptics) which cut my time-at-controls down to about 25 minutes (and, of course, I made up for that by doing lots of stops for photos – my total stopping time was 44 minutes and a few seconds.)

I averaged about 13½ mph moving speed, which isn’t particularly speedy, but when combined with the ridiculously short time I spent stopped (for one reason or another) it meant I was able to go front sidewalk to driveway (20 feet apart if I took a direct route, 125 miles apart if I don’t) in 9h53. The only better time I’ve done on this loop is when I chased a couple of (much) faster friends around it at 15.2 mph last May, and that was only 20 minutes faster than today, because even though the moving time was 55 minutes less we made up most of it by being very slothful about moving through the controls.

And everything “just worked” today; no flats, no derailments, nothing falling off or shattering (though I’m going to need to reload the headset, because I get some alarming creaks when I row the MLCM up a steep ramp), just the bicycle carrying my old and increasingly creaky body around a familiar loop at a relaxed rate of speed.

There are a couple of interesting notes about the route these days:

  • first, the Springwater Trail is being worked on from 128th out to Jenne Road, and today it was piles of gravel and a scraped clean subsurface. On tuesday it might be new asphalt, or it might be large holes gouged out of the path.
  • Secondly, the city of Canby is rebuilding Knightsbridge Road, which means that today there was no road there, just a 6-8" deep layer of soft gravel which was interesting to ride the bicycle through.

And in the interesting incidents category, I had a run-in with a wasp when I was on the Springwater Corridor – the poor thing was just flying along when I rammed it with my thumb, and, as they tend to do, it immediately stung me on the second joint of said appendage.

Unfortunately for it, it managed to get its stinger stuck in my skin (despite what all the reference materials say about wasps) and when I vigourously shook my left hand to get the goddamn thing away from me, it left its stinger and the back of its abdomen stuck into me as a souvenir. I would imagine that it spent the last few seconds of its life writing a very hostile warranty claim against the Death of Wasps, demanding that the defective stinger be replaced by one that actually works as a wasp stinger should.

As for me, my thumb swelled up like a ballon, but deflated within a hour. It still hurts where the wasp stung me, but at least it’s a normally sized hurty thumb. I should probably pay $50 to the doctor’s office to have them look at it and tell me whether I need to go out and get an epipen and a round of desensitizing treatment against wasps or not. (Given the number of wasps and bees I’ve run into this year – one wasp that flew into my shirt and stung me a couple of times a few months ago, a couple of bees that flew into my helmet and got drowned by the sweat, and this one – I’d pretty much have to follow a suggested desensitizing treatment, because it would be unpleasant to have a severe allergic reaction when I’m 100 miles the other side of the butt end of nowhere.)

On a more cheery note, it appears that after about 2.5 years of obsessively riding I’m starting to get used to hills. The ridiculously steep ramps up Ridge Road (and elsewhere) on this loop didn’t completely drive me out of energy. I’m still fearfully slow winding my way up them, but I’m not completely exhausted when I reach the top. This is a good thing if I’m going to do any reasonably long deathmarches, because most of them include hills, more hills, and yet more hills, with the degree of elevation and slope depending only on the sadistic leanings of the route owners.

1 comment

Railroad picture of the day

The 1815 northbound Cascades delays me

I rode the UGB200.bis again today, and by happy coincidence I reached the railroad crossing at Thurman & Naito just before the 18:15 Cascades did. (When I got there, no train was to be seen, but I hadn’t seen a train all day and I wasn’t going to let a .lt. 10 hour loop time stop me from stopping to see a train.[1])

[1] I did actually end up rolling up to my front door with only 9h52 on the clock, but still!

Sep 03, 2010

Trolley picture of the day

Red-Yellow sails on by

When I was coming home from work tonight, I reached Naito & Harrison just when Red-Yellow arrived. So when the light changed, I whipped across and yanked out the camera so I could get a picture of it as it rolled southeast towards the (still woefully underoccupied, but at least it has made some well-connected developers even wealthier) SoWhat district.

Friday Dust Mite Blogging™

Dust Mite goes shopping for school supplies

Dust Mite helps me pick up a few last minute school supplies for the bears.

New Code!

Discount has been, after an embarrassingly short amount of time since the previous release, pushed up to version 1.6.8 with the addition of one new and oft-requested feature; strikethrough, which is implemented in the common extension format of ~~two-or-more-tildes-marks-the-spot~~

I’d rewritten backtick handling for 1.6.7 (and then tweaked it for 1.6.8) so it was fairly easy to go in, fire up the chainsaw, and refactor that bit of the code into sawdust, so this was a change that was about 45 minutes of coding and writing test cases, then three days of putting into use on [tsfr] and [my main web page] to see if anything exploded spectacularly (which it didn’t.)

strikethrough is turned on by default, and cannot be turned off during configuration. You can turn it off at runtime by passing the configuration flag MKD_NOSTRIKETHROUGH (-fnostrikethrough or -fnodel to the markdown command-line program) and it will be disabled if you run in STRICT (MKD_STRICT or -fstrict) mode.

In addition, the tweaks to the backtick handler have backticks closer follow the reference dingus in that you need to have at least as many opening ticks (or tildes) as closing ticks, and excess opening ticks are enclosed in the <code> span.

As a little something extra, I reworked the ->..<- handler to generate xhtml-friendly output – instead of the (now depreciated for no good reason) <center>..</center> output it used to do, it now spits out a styled paragraph in the form <p style="text-align:center;"></p>.

This is likely to be the last release in the 1.x series, because I have run out of flag bits and need to break the published interface to accomodate a 32 bit flag argument so I can add 6 more flags. So if you get it while it’s hot you can enjoy a hot steaming cup of legacy™ New Code!

Sep 02, 2010

xhtml wagon repair

Problem: Youtube video embed code uses <embed>, which has been declared obsolete in xhtml (along with <font> and <center>, which have been depreciated in favo(u)r of css.) This means that my attempt to xhtmlify tsfr founders on the rocks of the imported-directly-from-google embed code.

There are plenty of web pages suggesting ways to xhtmlify youtube embeds, but, alas, none of them provide handy scripts. Sure, some of them provide web tools to do the xhtmlification (and then there’s the alistapart method, which is just weird – I’m sure it’s lovely to force the browser to update the flash plugin to the latestandgreatest, but I don’t care about that) but none of them provide a script that I can use from a command line.


#! /bin/sh

# slurp up the original script, break it up into lines

tr '<>' '@\n' | (
    while read tag rest; do
        case "$tag" in
        @param) eval "$rest"
                [ "$name" = "movie" ] && MOVIE="$value"
        @object)eval "$rest"

    if [ "$MOVIE" -a "$height" -a "$width" ]; then
        cat << FOO
<div style="border:1px solid black; background:888;
            width:${width}px; height:${height}px;
            text-align:center; margin:0 auto;">
    <object type="application/x-shockwave-flash"
        <param name="movie" value="$MOVIE" />

I’m not exactly sure whether this will work with IE at all (I don’t run windows, and the only time I have a windows machine available is when I’m working, and those machines are universally locked up inside netnanny firewalls that prohibit access to youtube) but it does seem to work well with the mouse-by-committee that is Mozilla Firefox.

At least so far. And the script gives me a good starting point for the conversion process.


At least this one is in shallow water.

An offshore oil platform exploded and was burning Thursday in the Gulf of Mexico about 80 miles south of Vermilion Bay, with some workers reported in the water.

Sep 01, 2010

Railroad picture of the day

OPR 1413 nose view

A nose view of the new (ca. 1960) EPT GMD1.

Life on the river

Thomas pushes a barge towards the Morrison Bridge

Thomas the tugboat pushes a barge towards the Morrison Bridge at about 9:20 this morning.

Code bloat

When I started writing Discount, I made all of the extensions selectable by #define. Well, this turned out to be a bad idea, so over the years I started tweaking the code so that I could turn features on and off at runtime. This project isn’t actually finished yet, but I’ve run into a teeny problem, in that I use a single 16 bit integer to hold flags, and I’ve now got 16 of them.

So what have I got?

flag what
0x0001 don’t do link processing, block <a> tags
0x0002 don’t do image processing, block <img>
0x0004 don’t run smartypants()
0x0008 don’t allow raw html through AT ALL
0x0020 process text inside an html tag; no <em>, no <bold>, no html or [] expansion
0x0040 don’t allow pseudo-protocols
0x0080 generate code for xml ![CDATA[...]]
0x0100 don’t process header blocks
0x0200 Expand tabs to 4 spaces, not the compiled-in default
0x0400 disallow tables
0x0800 forbid strikethrough
0x1000 do table-of-contents processing
0x2000 compatability with MarkdownTest_1.0
0x4000 make into a link even without <>s
0x8000 paranoid check for link protocol

(now, you might say that “oh, no, but integers are 32 bits” but I’m afraid that I’ve got a pdp-11 emulator here to tell you you’re wrong. And I’ve still got 6 or seven features that need to be turned on by default and then switchable by flag off. I could always just go for the trivial solution and have flag 0x0010 (MKD_STRICT) turn every extension off, but that doesn’t give me the sort of fine granularity I want to be able to have.)

So I’m going to have to break the interface after I release 1.6.8 and make all of the int flags arguments and fields into long flags. For 99% of the users out there, this probably won’t make any difference (does the iPod use 32 bit ints? I suspect so, but I can’t verify it because my (jailbroken) iPod touch doesn’t have a working set of C compiler libraries and thus I can’t get discount to compile on it) but the few, the proud, the retrogrouches who still use their pdp-11s to run their web servers would be very displeased to have discount silently break out from under them.

So (1.6.8++) is going to be 2, for some values of two. And maybe while I’m in the throes of breaking the interface I’ll strip out some of the meant-for-internal-use-only flags and force people to use the new(er) function calls that should be the only things that use those flags.