This Space for Rent

Sep 20, 2025

Friday Dust Mite Blogging™

Dust Mill chills
Dust Mite chills with some pie crust

I had my flu & pneumonia vaccines on Tuesday, then the latest round of Covid vaccine on Thursday, and they all caught up to my on Thursday night, leaving me laid out all today. I finally got enough energy to make up some pie crust at about 11:30, and Dust Mite is standing guard while it chills so I can make a(nother) peach pie tomorrow.

Sep 18, 2025

Railroad picture of the day

A southbound P&W train led by a long-hood-forward GP38

A short P&W freight led by one of their GP38s – running long hood first – comes screaming by me at 12th & just south of Clinton. This train must have been going about 40mph (running ahead of a southbound Cascades, maybe?) and after I took this picture I had to clamp down on my rando bag to keep everything from being sucked out by the slipstream.

(I was outside of the loading gauge, but in all honesty not far enough. I should have been north of that spraypainted line on the street, but I am old and foolish now and stopped in my tracks to take pictures when I saw the headlight pop into sight at the curve west of the ORHF’s shop/museum facility.)

Sep 17, 2025

There are still a few Type 1 interurbans in service today.

A type 1 leads an eastbound (Airport?  Gresham?  I didn't catch the headboard because my iphone was flipping out and thinking I wanted to take a movie instead of a photo)

One of three that I saw when I was going out to St Vincents & the Beaverton branch of the portland clinic today.

(After several days of climbing the eastern side of the West Hills, dying repeatedly on the climb, I decided that since I was going to St Vincents as well as TPC I’d ride up to Lloyd Center, take the trolley under the West Hills, and proceed from there. Less riding (27 miles today) but more trolleys.)

Sep 15, 2025

Stopped by a train during errands last week

The North end of a southbound train
Not gonna mention the railroad name, but it’s currently the most fascist one in the USA

Sep 12, 2025

Friday Dust Mite Blogging™

A Mite & a pie
The day got away from me, so here are at midnight with the traditional mite belly up to a pie :-)

Sep 08, 2025

Second patch of the week!

Adding extended attributes and percentage widths & heights to image links exposed a delightful Discount bug that’s been there since I put amalloc in 17 years ago.

The problem was that the amalloc() function (#defined to just malloc() in amalloc.h) was using the libc calloc() to grab memory, and calloc() helpfully by design initializes the memory to nulls, which just happens to be what I need to null terminate strings by default.

This was “great” for me, and I probably had a reason for doing it, but there exist malloc implementations (which are exposed if you built discount w/o amalloc) that don’t initialize the memory unless you ask for it, and which often aggressively initialize that memory to something other than null.

So I changed amalloc to initialize the new buffer to 0x8fs and boy did the discount test suite have things to say about this!

It’s allegedly fixed now (I try to explicitly null-terminate Cstrings and to explicitly use calloc() when I need a buffer for structures) and it out there as Discount 3.0.1.2.

I’m sure I’ll find some other places where I was making assumptions about amalloc, but the obvious ci-killing places seem to be gone for now.

Sep 07, 2025

A dyke & her bike, explosively

Explosive dyke, explosive bike
At the old National Guard artillery range (now the Sunrise Corridor)


First patch of the week

After releasing Discount 3.0.1 it didn’t take more than 3 days for someone to discover that I’d forgotten to null terminate three strings, and their cc + libc ended up being far less forgiving of that than the various cc + libc collabos I had were.

So Discount is now at version 3.0.1.1, which is identical to 3.0.1 except for three new null terminations.

Sigh.

Sep 05, 2025

Friday Dust Mite Blogging™

Dust Mite blood pressure
Taking Dust Mite’s blood pressure (0/0)

Sep 04, 2025

Trolley picture of the day

A northbound train blocks my path at 99e & 17th
I was going up to Legacy for a pre-Big Yeet consultation when I was stopped by a northbound train from Milwaukie.


New Code!

Discount has been rolled up to version 3.0.1.2, and, whew, where do I begin?

  • I ran out of slots in the original bitmap flags structure, so I dumped it and replaced it with a new flag blob accessed through a flag pointer. This broke the entire published interface and required the update to version 3 (this is why it took me over 3 years to implement it; I needed to test the code to within an inch of it’s life and between that and transitioning it just ate up time like you wouldn’t believe!)
  • Because I changed the mkd_flag_t structure and replaced it with a blob, the old flags are now a pointer and using the mkd_flag_isset(), mkd_set_flag(), and mkd_clr_flag() functions I introduced during the end of the run for version 2.x.x is now mandatory unless you’re fond of core dumps.
  • The way I’d originally implemented HTML5 (if that’s even a thing anymore?) support was to have a global structure that I allocated once and then you were stuck with it forever (and had to deallocate the structure whenever you stopped using the library otherwise it would leak memory), so I fixed that for v3 by moving the html5 details inside the MMIOT (activated by setting the flag MKD_HTML5) so it will automatically be deallocated when you are done with a document without affecting other MMIOTs.
  • Github user mwfont-csl suggested (and provided a patch – which, alas, I couldn’t use because github doesn’t seem to have a way to export patches by themselves?) adding support for fractional sizes on images as well as pixels sizes (so, 40%×40% instead of 40x40 pixesl), which I worked into the code using mwfong-csl’s original code as a reference.
  • mwfong-csl also provided a patch to do extended attributes on links and image links, via putting those attributes into a {...} bracketed block immediately after the link. As before, I couldn’t figure out a way to export just a patch from github, so I worked it into the code using their original code as a reference.
  • Annoyingly, netbsd11, broke the implementation of isspace() by putting in a version that dumped core if the input character was outside the ranges of EOF or 0x00..0xff (I deliberately use the word broken because it broke the principle of least surprise, which either nobody cares about or is trying maliciously to stop people from using C anymore.) Fortunately could patch around this misbehavior by detecting it in configure.sh and telling the compiler (clang and gcc; dunno about other compilers) to make the default character unsigned.
  • There are also a few of memory leaks remaining, and I fixed a couple of them before this release.

As usual, don’t be surprised if running this code makes your computer phase into another dimension, or, less excitingly, melt down; it’s been working for me™ but that’s no guarantee of success elsewhere. Do note that you need to recompile everything from scratch to use the new code, because I’ve kept the old interface around (but not actually accessable yet because I didn’t manage to set up compatibility flags correctly), internally named the new published interface with a v3 prefix, then hid it from the user by #defineing all the v3mdk… functions to mkd…

And don’t forget to check all of your code that uses flags; since flags are now a blob, you need to allocate the flag structure (with mkd_flags()) before attempting to use it, and you must never try to do bit manipulation on them because they are now a pointer to an black box!

But anyway, New Code™ ready for your downloading enjoymentmirrored on github as well; download it today for an exciting tomorrow! :-)

EDIT: I forgot to null-terminate three strings, which my ci network didn’t catch :-( So instead of 3.0.1 it’s now 3.0.1.1 !

SECOND EDIT: My paranoid malloc code was returning buffers initialized to nulls, which hid even more strings I’d not null-terminated (as well as two structure allocations), so I had to fix that and make 3.0.1.1 into 3.0.1.2

Sep 01, 2025

Trolley picture of the day

A northbound train on the viaduct south of downtown Milwaukie

A northbound train made up of two SD-600s in the new blue with a traction orange stripe paint scheme crosses the viaduct south of downtown Milwaukie late this afternoon.

Aug 29, 2025

Friday Dust Mite Blogging™

Mite & beans
Mite & beans

Aug 22, 2025

Friday Dust Mite Blogging™

Dust Mite watches the clock
Watching the clock

Aug 21, 2025

Turkee

A closeup of the Art Museum turkey
Maryhill Art Museum appears to have a turkey in residence. So I had to take her picture.

Aug 15, 2025

Friday Dust Mite Blogging™

A somewhat blurry dust mite & slice of cherry pie

The only picture of dust mite I managed to get after a long time fighting with the camera & upload process. This is pie #14 – another cherry pie from an abnormally long pie cherry season. Not that I’m going to complain, oh no, but the freezer is starting to get filled with frozen pie cherries :-)

Aug 11, 2025

“decaf” shepherd’s pie

Pie 11 after baking

Pie #11 is a crustless shepherd’s pie with mushrooms, soybeans, and (fresh farmer’s market) carrots. Crusts are delicious, but they triple the calories in the pie and it’s all fat and starches, which have been helping me maintain my pleasing pear shape, which I don’t want because I’ve outgrown too many of my skirts (I, selfishly, don’t want a muffin top or having the wasteband of the skirt digging into my waist.)

Fortunately, a crustless pie is perfectly cromulent, and if I lose my mind and eat the entire pie it’s only about 900 kcal.

This makes a really simple recipe; dump 3 cups of chopped mushrooms into a greased (w/ spray oil) pan, layer with 12 oz of soybeans, then a cup or so of thinly sliced carrots, and top with mashed potatos (I use Bob’s potato flakes to make them; 2 2/3 cup of potato flakes, 3 cups of water, 1 cup of oatmilk, and a teaspoon of salt – going the potato flake route means I can pour the potatoes onto the pie before they fully congeal) and then bake at 350 for 70 minutes.


Two more pies (from last week)

Pie 10 (and the remains of pie 9) after baking

Pie #9 was a shepherd’s pie, and it was half gone before pie #10 (a cherry/peach pie) came out of the oven, but pie #10 was gone before pie #9 was.

Aug 08, 2025

Friday Dust Mite Blogging™

Dust Mite poses with me at formstonehenge in Maryhill, WA

Dust Mite came with us when we went to Maryhill this week. And, yes, it was pretty windy there, particularly around Sam Hill’s formstonehenge, which is an absolutely ridiculous brutalist replica of the stonehenge on Terf Island.

Aug 03, 2025

Number eight in a series – one more shepherd’s pie

Eighth pie after cooking

Another shepherd’s pie, this one with mushrooms, peas, and carrots instead of vegan meat & peas. The crust is pretty hard (I made a ball of crust last monday, didn’t get around to cooking with it until wednesday, and then we were first down at Silver Falls, then there was a birthday pie & the mekons) but still tasty, and man the filling is so much tastier than the vegan meat I’d used in the last one.

Aug 01, 2025

Friday Dust Mite Blogging™

Ticket Mite
Dust Mite is coming with us to the Mekons concert tonight.

—30—

SILENCE=DEATH orc@pell.portland.or.us