What I did over the past week XXXXIV


  • Upgraded shaftnet to Fedora 33. I thought it went smoothly, only to discover six hours later that incoming (or outgoing) mail wasn't working. Three hours later I finally worked out the root cause; the antivirus scanner had disabled itself and that silently took down the mail server. What a mess..
  • One of my PVC-pipe-speakers took one tumble too many. Fortunately I was able to repair it using... PVC glue. It's a good thing too; otherwise I'd have to spend about $20 for new pipe fittings.
  • Fed the burn barrel two more loads of yard trash


  • Oil changes and coolant top-offs on the truck and WRX.


  • A lot of cleanup to old/duplicated gerrit accounts. Found a bug in upstream gerrit in the process!
  • The usual patch reviews

Photo Organizer:

  • Fixed a long-standing printing bug where embedded ICC profiles were being ignored


  • Silence spurious INFO output in BACKEND_STATS_ONLY modes
  • Support built-in-self-test print generation on the Mitsubishi D70 and its siblings.

What I did over the past week XXXXIII


  • Upgraded 3 more systems to Fedora 34.
  • Had some goats over to do some landscaping
  • Minor yard work, including gutter cleaning. The burn barrel is now 2/3rds full of ash and new charcoal.


  • Updated the bug tracker to Flyspray 1.0-rc10
  • Reviewed a whopping one patch


  • Cleanups in the early probe/attach code

Truth through fiction

Buckle up, it's time for more navel-gazing introspective wankery!

Every now and then you come across a book that grips you in a way that leaves you feeling a sense of loss (and well, lost) when you turn the last page.

Yesterday, I finished Cemetery Road by Greg Isles. It had it all; believable, ordinary characters acting in ways that made sense, protagonists and (nominal) villains alike, wrapped up in a world that carried so many self-consistent details to make me wonder if the story was at least partially autobiographical. And the emotional punch of a Mack truck.

But now I must digress.

I used to be a voracious reader. If I'm honest it was mostly about escape, immersing myself in other folks' imaginary worlds that were somehow much more real, making more sense than the one I was inhabiting.

I quickly developed a preference for science fiction, mainly the "indistinguishable from magic" dreck that remains the reason the genre is still lumped together with Fantasy, but there was something intangible about certain stories or authors that stuck with me.

In college (and beyond) my reading dropped way off due to the realities of quasi-adult life, but at some point afterwards I (re-)discovered two things; audio books and compilations of short stories. So my "reading" picked up again, mostly consumed during 20-minute commutes or the occasional road trip.

These consisted mostly of serials, with their established characters and worlds and their well-trodden escapist adventures (and/or descents into darkness), but as time went on I'd increasingly mix in more standalone books by unfamiliar (to me) authors across a wider variety of genres, plus the occasional short story anthology.

In hindsight, there have been several core themes to books (or more accurately, stories) I've really liked -- at its heart, science fiction is philosophical in nature, exploring the human condition via "what-if" speculation, but the dives beyond the boundaries of mind and self are what still get me tingly.

As I've (presumably) matured into middle age and my general awareness (both of my self and the world about me) has grown, the scale and scope of my own possible futures have shrunk. I don't know how much I wanted to change (or escape from?) the world via some sort of grand adventure, but I've come to recognize that "adventure" is really just a childish way to say that you did something, it affected people, and you learned something along the way.

So even a trip to the grocery store can be an adventure, and perhaps more importantly, I already have, and continue to, change the world.

Which brings me to Cemetery Road.

Cemetery Road was one of those random mix-ins. It's cliche, but I really did pick it up due to its cover, and put it on my audio player despite its generic-meh "death and dark secrets in a southern town" plot synopsis, because there seemed to be something more there.

It turned out to be a deeply personal story; of the importance of family and escaping the shadows of our parents; of accepting our own truths, flaws and self-betrayals; of love, pain, and forgiveness; of good works and the passage of time. But most of all, it is about about middle age and growing up.

... Not bad for a book that takes place over just six days!

You don't need speculative science fiction to explore the human condition. You don't need epic, world-shattering supernatural battles between good and evil. You just need ordinary people living their ordinary lives.

Don't fall for a magic world
We humans got it all
Every one of us
Has a heaven inside
  -- Kate Bush

Ordinary people. Like you. Or me.

Go in beauty.

What I did over the past week XXXXII


  • Upgraded 3 systems to Fedora 34. More to go
  • Discovered that I likely have moles in my front yard. Between the fornicating owls outside my bedroom, the pair of red-tailed hawks across the street, and the black racer hiding in the leaves near the front door, I don't think it will be around for long.
  • Arranged to borrow some goats to clean up several large patches of poison ivy. Prep work done, goats are due to arrive Tuesday morning


  • Updated Gerrit instance from 2.16.x to 3.1.x
  • Security improvements on infrastructure
  • Minor formatting fix in the IRC log viewer
  • More bug/patch review
  • Fix some GCC11-related warnings
  • Finally put the iPod iFlash data corruption bug to rest
  • Removed several (very) obsolete targets that haven't compiled in a decade


  • Started integrating support for HiTi CS-2xx card models

Photo Organizer:

  • Fixed an regression on imports

What I did over the past week XXXXI


  • Cleaned out the gutters during a lull in a torrential downpour
  • Pressure washed the rest of driveway and unsuccessfully tried to lift the oil stains on the street left by the RTV900
  • Took apart the washing machine to discover the source of a rattle, which turned out to be a magnetic haematite bracelet. Also swapped out the pump motor since I already had everything apart
  • Fully disassembled the dryer in order to clean out accumulated lint


  • Washed the truck for the first time since I bought it.. 9 years ago. This was a learning experience with using the pressure washer
  • Found a water leak in the WRX that appears to be due to debris in the trunk drain channel


  • Fixes for the ALSA volume controls


  • Further HiTi P510-series fixes
  • Bug fixes on other HiTi models
  • Reworked how USB VID/PIDs are defined

What I did over the past week XXXX


  • Properly cleaned the garage workbench of debris going back four months
  • Emptied the last of the pre-reflooring box-o-stuff in my home office
  • Installed an 8" exhaust vent (and 740CFM fan) for the garage. It's currently switched with the attic lighting but I will change that once I figure out a sane way to drop a switch into the garage


  • On the RTV900, replaced the broken parking brake switch, the rusted-away throttle return springs, and the beginning-to-fail fuel stop solenoid
  • Pressure-washed the mildew off of the truck's bed mat. Nasty.


  • Bug triage and patch review
  • Volume limit setting wasn't respecting decimal places properly
  • Fix a stack corruption issue in the list scroll bar code
  • Enabled easy use of AddressSanitizer in sim builds
  • Rework how the Eros Q (and clones) handle software-based volume scaling
  • Make sure Eros Q keeps screen awake when mucking with the scroll wheel
  • Workaround for the very-hot 6Vpp EROS Q/K line out
  • Workaround for the mildly-hot 4.3Vpp xDuoo X3 line out
  • Fixed iBasso DX50/DX90 filesystem regression and properly handle hot-swap of the SD card


  • Fixes for the HiTi P510 series, getting closer to being able to print

Photo Organizer:

  • Make sure EXIF tags are stripped off of generated thumbnails

What I did over the past week XXXIX

After several years of procrastination, I finally ran this blog through a spell-checker, resulting in a truly embarrassing number of corrections.


  • Fixed the filament sensor on the 3D printer; it survived a 2-hour print of a more complex shape. Now only the bed proximity sensor is shot.
  • Pressure-washed nearly all of the driveway. Ran out of hose, so the last ~15ft and oil stains in the street will have to wait a bit longer.


  • Forgot to tighten the oil drain plug on the RTV900. Oops!
  • Discovered that the crankcase vent on the secondhand valve cover I put on the RTV900 isn't working properly, and the screws holding down the diaphragm cover on both the old and "new" one refuse to budge. It does seem to be getting better but I should probably plan on a new one.


  • More patch reviews
  • Helped fix some problems with cache invalidation on PortalPlayer-based devices
  • Fixed a stack overflow on the Toshiba Gigabeat-S that prevented boot up
  • Minor build system quality-of-life improvements
  • Added ability to disable/lock the touch pad on the Linux M3K port
  • Stabilization efforts with the very creaky Wiki: Purged all of the TWiki remnants and got rid of the TWikiCompatibility plugin, fixed up a lot of URLs to Rockbox addresses, and other cleanups
  • Upgraded the gerrit and forum instances to close security holes
  • Black-holed a lot of IP ranges that were collectively pounding the server; it's already made a noticeable improvement in bandwidth usage


  • Minor fixes to cutter control on DS620, DS820, and QW410
  • Progress towards continuous panorama support on the DS820 and DS620

What I did over the past week XXXVIII


  • Got my "new" inherited 3D printer working. Two sensors are flaky; after bypassing them and re-calibrating everything, it successfully created a test object. As I don't have any projects in mind beyond establishing that this thing was basically operational, this machine will get relegated to the back burner for the time being.
  • Fired up the recently-rebuilt pressure washer and used it to clean off the very mildewed path to the front door and the large pad in front of the garage. The spinny scrubber thingey did wonders, though it was not quite enough to lift the hydraulic fluid stains off the concrete. That's probably going to take some chemicals...


  • The RTV900 lives! All of the parts (and tools) I needed arrived early, so I reassembled everything over the weekend. It fired up without any fuss, so I put it all back together.


  • More patch review, including a native FiiO M3K port!
  • Added the bits needed for an M3K UISim build
  • Added the M3K builds to the build farm and theme site
  • Tweak build system to not regenerate autoconf.h unless necessary
  • A few cleanups in makefiles
  • Generic read alignment bounce buffer in the FAT code, and enabled its use by all MIPS and rk27xx ports


  • I was loaned a Fujifilm DX100 for some low-level evaluation. I know it's essentially a re-branded Epson SureColor D700, but likely with a unique inkset and possibly command protocol tweaks. I'm not sure what direction this will take, but figuring that out is kinda the point here. In the mean time, I've managed to shoehorn it into my office and will start poking at it as time permits.

The RTV900 lives again!

Today, the RTV900 left my garage under its own power, no worse for the wear after ingesting a nitrite glove.

I got lucky; there was no damage to the head, valve train, or piston; the bulk of the glove was stuck to the underside of the valves of the second cylinder, with a little bit still wrapped around the valve stems. Here's what came out.


The partially disassembled D902 head. One set of valve springs is off to the side, but I left the rest in the head. I also didn't remove the injectors or glow plugs as there seemed no need, but everything else is off:


And the top end of the block still in the RTV:


As all the parts (and tools) I needed arrived by Saturday, I decided to go ahead and start putting everything back together. This included:

  • Clean up any remaining glove material on the valves/seats
  • Valve springs & retainers on cylinder 2
  • Mating surface cleanup on the head
  • Mating surface cleanup on the block (including some nasty fused crud)
  • Intake and exhaust manifolds, including new gaskets and anti-seize
  • Replaced the bolt that snapped off when removing the exhaust manifold
  • New head gasket, then head, and tightened all bolts to spec
  • Push rods and valve rocker arm assembly, torqued to spec
  • Replacement valve cover (original one broke due to a seized bolt), with a new gasket and plenty of anti-seize
  • Reattached the glow plug bus bar, cleaning up all mating surface
  • Blew out fuel lines and reconnected them, but left one end loose to make bleeding easier
  • Reattached the muffler, with plenty of anti-seize on the bolts
  • Fuel stop solenoid (very important on a diesel!)
  • Alternator bracket and fan belt
  • Several coolant and breather hoses
  • Air filter housing (let's not make this mistake twice!)
  • Filled it up with clean oil
  • Connected the battery
  • Crossed fingers and toes

I cranked it until fuel started oozing out of the injector lines, then tightened them down. The motor fired up instantly and sounded like its usual loud clattery self. At this point I shut it down, filled up the radiator (with fresh 50/50 antifreeze), and let it run to warm up and circulate the oil.

While it was warming up, I bled the air out of the hydraulic steering, finally bringing my original repair to its conclusion.

Once the motor warmed up up enough for the cooling fan to kick in (demonstrating a lack of leaks), I reassembled the rest of the cab while letting the motor run to properly break in the head gasket:

  • Center cover
  • Side covers
  • Seat belt latches
  • Seat belts
  • Seat base
  • Seat back (using a zip tie to replace the fastener that broke off
  • Floor mat (which shrank, so it's only secured on one side now. wtf..)
  • Access panel behind the air filter housing
  • Steering wheel (flipped 180 so the third spoke points up, finally resolving one of those little annoyances)

Then I shut it down, cleaned up my workspace, and put away any remaining tools. The next day, after the motor was good and cold, I re-torqued the head bolts:

  • Remove glow plug bus bar
  • Pull the valve cover (and breather hose)
  • Remove rocker assembly
  • Torque all 14 head bolts to spec
  • Reattach rocker assembly, torque to spec
  • Reattach valve cover (& breather hose), torque to spec
  • Reattach glow plug bus bar

After making sure the valve cover was not leaking, I moved everything out of the way and the RTV900 emerged from my garage under its own power. A quick lap around my yard in 4WD mode showed everything acting as it should, with no lasting damage except to my pride. And wallet:

  • All five hydraulic hoses for the steering system
  • Second-hand valve cover
  • Top-end gasket set
  • One valve cover bolt
  • One exhaust manifold bolt

This pile of parts came to about $420. I also picked up a valve spring compressor tool for about $30, and some additional portable utility lighting that I've wanted for a while anyway.

But I also used a bunch of other stuff I had lying around:

  • About 1 gallon of hydraulic fluid
  • 3 quarts of 10W-30 oil
  • 1/2 gallon of antifreeze
  • PB blaster, WD-40, anti-seize, thread locker, and more zip ties than I care to mention
  • Lots of nitrite gloves, all but one of which stayed outside the motor!

Additionally, I discovered a broken throttle return spring, and the parking brake warning switch went kaput when I was reassembling everything. Those are now on order (about another $30 including shipping) but won't get here for about two weeks. I also need another two quarts of hydraulic fluid to top off the power steering reservoir.

But these are minor problems for another day. The partially-rusted floor is more concerning, but that too will have to wait.

Meanwhile. It did occur to me that the various stages of this project would have been good to film, or at least take proper photos at significant stages. But manipulating a camera when smeared with any manner of gunk isn't terribly appealing, and I don't think there's enough of an interested audience to make the effort of shooting (and editing!) video worthwhile.