This Space for Rent

May 26, 2017

Friday Dust Mite Blogging™

Tandem mite

Balancing between two types of bicycles

May 25, 2017

A little jig (not of despair)

Rail fixture dress rehersal

A rail-setting fixture to position the central rails of a rack at ~4" apart and, more importantly, at the right position on the platform instead of where my lying eyes tell me they should be (I have spent too much time on too many racks melting out one central rail or another because what looked good to my eyes at brazing time turned out to be WAYTHEEFFOUTOFALIGNMENT™ when looked at by the gimlet eye of a caliper.) I will still have to do some eyeballing of the tombstone placement, but this will work better when I’m looking at the tombstone against a pair of known good central rails + a pair of sharpie marks instead of just a pair of sharpie marks.

May 19, 2017

Friday Dust Mite Blogging™

12 racks, 1 mite


May 18, 2017

Bagel truck

High-speed bagel delivery truck

It’s a very tight fit, but I can (barely) fit 16 bagels into my little red xpac rando bag.

May 12, 2017

Friday Dust Mite Blogging™

Mass Production Mite

Dust Mite & the perimeters of 11 of the next 13 racks I’m working on.

Trolley photo of the day

Blue/Yellow takes the curve onto the embankment leading to the new trolley bridge

Blue/Yellow takes the curve onto the line across the new trolley bridge. I’d stopped at the end of the embankment leading to the bridge (I was stripping off my raincoat because it wasn’t actually raining at that moment) when I noticed that there were two cars lined up at the station just north of the junction between the N/S and city loop lines, so I had to stay stopped and take a picture.

May 11, 2017

The joys of open source®©™ – bloat

The tarball I got for dnstracer-1.9, when picked apart, gives me the following file list:

size file
38 aclocal.m4
1 autom4te.cache
0 autoscan.log
76 config.guess
56 config.sub
288 configure
2 configure.scan
24 depcomp
14 dnstracer.8
86 dnstracer.c
6 dnstracer.pod
2 dnstracer.spec
3 dnstracer_broken.h
11 getopt.c
2 getopt.h
11 install-sh
18 missing
3 mkinstalldirs
1 stamp-h

The majority of the files here are the lovecraftian horror that is GNU configure, which is used to detect/set WORDS_BIGENDIAN and NOIPV6!

This is nonsense. There’s a grand total of one thing here that would benefit from an autoconfigure program (WORDS_BIGENDIAN, because basically every low-level networking program out there uses hton?() and ntoh?() instead of hand-tweaking byte order, so there really wasn’t much call for actually knowing what the byte order was and as a result the macros defining byte order are named different things and located in different files on different unices) and one configuration tweak that, arguably, is easier to hand off to configure to set.

Note, particularly, that is 14,000 bytes long. 14,000 bytes long for a makefile that is used to compile a program consisting of one (the getopt() here is for Windows, which apparently doesn’t have it) source module.

I looked at this last weekend (I wanted to compile dnstracer on a Centos 7 box), thought “this is bullshit”, and went on a configuration repair spree:

size file
14 dnstracer.8
87 dnstracer.c
6 dnstracer.pod
2 dnstracer.spec
3 dnstracer_broken.h
11 getopt.c
2 getopt.h

Note that 1) it’s 16 files, not 30 (4597 lines vs 12470 lines), that 2) dnstracer.c (the file that’s being built) is the largest file in the heap, instead of one of the many GNU configure support files, and 3) is 450 bytes instead 14,000.

May 10, 2017

Taking 650b to extremes

Every bike a gravel bike

Tubeless is a pretty normal 650b'ism, but fast narrow tires are not the norm for 650b machines in North America. The 650b Schwalbe One is a rare beast indeed; it’s not in Schwalbe NA’s catalog, and I ended up having to mail-order them from Germany (pretty much as I have to do with Confreries, but those come from France instead.) Canyon sells some 650b road bikes and fits them with these tires, so I strongly suspect that the tires will be produced about as long as the bicycles are made (and I will cry bitter tears when they go out of production; They don’t have the exact same “come to Jesus” feel that the Resist Nomad has, but they aren’t actively unpleasant on poor pavement and they disappear out from under the bicycle when the pavement gets good. They’re not nearly as wide as the Confrerie, so they don’t have the same sort of float on gravel that the Confrerie does, but they’re actually faster, at least in the 5-20 mile ride to and from downtown.)

On the SL23 rims I’ve got the tires are exactly as wide as the rims, so they remain ridable even when the pressure gets to an unpleasantly low 40psi (much like the Nomad 28s, except that the Ones get “plush” when the air pressure gets that low, but the Nomad just starts to ride like a normal bicycle tire instead of like being wafted around in the arms of the Almighty) which is sad because the SL23 is already out of production and the only Pacenti rims available for 650b are various disc-only MTB rims and historical reenactment silver ones.)

The saga of 650b in North America is fairly annoying; it’s now an MTB thing, so there are approximately 75,000 disc-specific rims out there, plus a handful of super-heavy touring rims (a 550gm rim should not be annoying, but the ZTR 355 & SL23 have completely spoiled me for rim weight) and 2-3 historical reenactment silver rims, all of which cost approximately as much as a house in the suburbs. You can occasionally get a Zac19 rim for cheap (and they are fairly light compared to the touring rims) but they aren’t set up for tubeless tires (I have run tubeless Confreries on the Sun CR18, which has basically the same interior shape, but it’s an annoying pain to get the tires to seat because you have to shovel a lot of air in really fast to push the beads across the smooth interior to the rim walls) but they aren’t an SL23. And I’ve got one machine with disc brakes, which is fine, but they’re harder to make forks for because the caliper leg needs to be reinforced so that braking forces won’t jack-knife them.

But I’ve got another pair of SL23s, a set of ZTR355s (laced into wheels with, alas, a 7-speed Shimano 600 freehub on one; I might be able to pop that hub and put a 8-speed freehub in its place, but if I can’t I’ll have to disassemble the wheel and rebuild it with one of my repaired White tracker hubs) and a fistful of Zac19s for the mountainhack, so my 650b judgement day is a little bit down the road.

May 09, 2017

Annoying Open Source®©™ feature of the day

Scons. Aka “makefiles are confuuuuuusing, so let’s replace them with python code.” In the grand scheme of things, it’s not the most mindboggling stupid fashion that has infested the Open Source®©™ world (The lovecraftian tentacular mess that is gnu configure is a strong contender for that, particularly when it’s used on a Linux-specific package like FUSE – why, yes, I want to run autogenwrapper→​autogen→​automake→​configure before I can run a make on a package that’s guaranteed by design to NOT BE PORTABLE) but it takes a particularly daft sort of navel gazing to think that having to install an effing python toolchain and then having to write code in that TDVL is in ANY way easier than having to remember to do tab indents.

Jesus, what a unspeakable bit of autoerotic software development.

A trailer full of air

A trailer full of air

Recycling 80 or so of the now-empty cans of fizzy water I bought a few weeks ago, plus a couple of bags of plastic clamshells and 3-4 beer bottles. Almost the most bulky load I’ve ever carried on the yak, but also almost the lightest load.

(shopping content: I bought a single tomato after I finished dumping all of the recycling into the cans for kids bin.)

May 08, 2017

Sunny-day commuter

Sunny-day commuter

Approximately 10 pounds lighter than the mountainhack, so it’s a lot less of a pain to shove up hills (It will only be about 8 pounds lighter if/when I install the pink planet bike 35mm fenders I’ve got lying around, but 8 pounds isn’t anything to sneer at)


Tubeless tire creep

Apparently it doesn’t matter if I use a tubeless ready tire & a tubeless ready rim – creepers gonna creep (when I apply the brakes) no matter what.

May 07, 2017

Hills are expensive

Making the rounds

It took me about 3h45 to go 100k when I rode out to the end of Reeder Road (on Sauvie Island) last week; it took me about 4h45 to go 100k when I rode out to Multnomah Falls this afternoon. Climbing is slower, and the downhill part after the climb doesn’t make up that time very well.

May 06, 2017

Trolley photo of the day

A northbound trail leans into the curve at Interstate & Mason

~32-year-old Type 1 #110 leads a northbound train up Interstate Ave this afternoon

May 05, 2017

Friday Dust Mite Blogging™

Ready for some framebuilding

Dust Mite waits for me to run up to Harbor Freight (new torch) & Airgas (bottles of oxygen & firegas.)

May 04, 2017

Now that’s annoying


I got home from downtown this afternoon to discover my garage door swinging idly in the wind. It turns out that it was swinging idly in the wind because someone had broken into the garage and stolen my brazing torch & my no-longer-used bernzomatic mini-torch (while leaving all the yard tools and bicycle frames I’d kept in there alone?)

Sigh. I guess this means that it’s time for me to get off my butt and tear off the front of the garage and replace it with an actual wall (and replace the cutaway on the roof so that the actual wall/door won’t get watersoaked and rot away like the current one is in the process of doing.) And also to buy a new torch, oxygen/acetylene tanks, and a metal case that I can bolt to the floor, then lock them into.

But as for today; brb, off to the hardware store to buy a new lock.

May 02, 2017

Railroad picture of the day

Meeting EPT 100 along the Springwater Trail

I was coming back from downtown Portland as the working Eng! was heading down the ramp towards the East Portland interchange.

Apr 29, 2017

It’s starting to become a traditional photo spot

Clothing optional Mountainhack

Stopping for a photoshoot at the (entrance to the) nude beach

Apr 28, 2017

Friday Dust Mite Blogging™

Still life with fruit, boxes, and Dust Mite

Box Full o' Mite

Apr 25, 2017

The joys of open source®©™, part toomany

This last week I decided I’d shove my rpm reader/generator up to a new fractional release by tweaking the makepkg binary to generate rpm v3 format packages. I first just updated the on-disk data structure to v3 format (with a magic number at the start of each dictionary) but didn’t implement signature generation, because it didn’t seem to be mandatory.

Hah, no such luck. But that’s only a minor problem; I would simply implement md5 checksums because they’re simple to implement and they’re fairly resistant to a non-technical attacker (I was running under the logic that once I got this working then I’d be able to fit in ‘PGP’ – actually gnuPG, because that’s the only free implementation these days – and be able to sign the packages if they found a cure for mortality and I could pull Mastodon out of the grave for modern hardware.)

The “documentation” for RPM says that the md5 checksum is for the header (but not the signature header if it’s a v5 signature) and payload. This, apparently, is not actually what it is; I’d modified xrpm so I could extract both the header + payload (xrpm -Dd: -D extracts the header, then -d extracts the payload) into a separate file, so I could tuck those two things in a safe place and hand-verify checksums. So I did this with an actual redhatcentos rpm, only to discover that the md5 checksum (at index 1007 in the signature dictionary) was not the same as the md5 checksum of the header+payload (or header+compressed payload, or header-sans-signature+payload, or header-sans-signature+uncompressed payload.)

I checked the rpm source code. Fucking mistake; it’s like the more opaque parts of discount on speedballs. Hundreds of tiny little functions, all alike, larded up with what looks like some sort of legacy lint configuration commentary, and all, needless to say, pretty close to completely unreadable. No, the only way I’m going to be able to figure out what’s being generated is to make a dinky little rpm that installs nothing, then write an automated check script that walks the thing byte by byte doing every possible variant of an md5 checksum until I can make a checksum that matches what the horrible reference code puts into index 1007. (I would not be surprised one bit if the checksum included parts of the signature dictionary, or if it salted the md5 sum with something stupid to discourage third-party reverse engineering.)

But it’s ~180mb of sccs on github, compared to xrpm’s 1.9mb, so it’s got to be 100 times as confusing. (And OF COURSE it uses the now-traditional three layer shitcake that GNU configure has become, just to ensure that trying to compile a fully debugged version and trace just exactly what’s being written into the md5 checksum generator won’t be happening unless you’ve gone back for a second helping of that lovely Open Source®©™ Flavor-Aid.)

At least xrpm itself can still pick apart current rpms, for whatever good that does in a world filled with GNU configure, Cmake, and other abominations in the eyes of G-d.

Apr 24, 2017

Railroad picture of the day

A flock of P&W geeps run light along Division St

A set of P&W geeps run light along Division St, heading north towards the Steel Bridge (and then across NW Portland and back onto P&W rails in Linnton?)


Obéir c'est trahir, Désobéir c'est servir