Coding 2025-12-24

By Max Woerner Chase

When I was trying to squeeze in work on the conlang workflow around writing the roundup (it end up going the other way around), I knew I was working with untested draft code, so I was ready for anything. Except for nothing. There were an astonishing number of ways for my code to simply fail to have an effect, from applying the wrong drift lexicon, to using the wrong metadata, to failing to update metadata.

Now that I've gotten through many issues (and I'm skeptical that I got all of them), the main thing I'm aware of is that the current design is super slow. Basically, right now it fires up a separate sound change process for each noun, which means that there's a slowdown of at least an order of magnitude. I can claw this back to almost the current speed using some kind of pooling mechanism, but this seems like scaling will overwhelm it. I think the "right" solution is to figure out a reversible way to intersperse the morphologically derived sounds in with the base sounds, in such a way that the structure can be recovered following the sound change. This could be done by putting the root pronunciations first, then traversing the children, and then using a custom iterator instead of zip. Let's see if I can throw this together quickly.

...

Okay, I didn't time it, but I remember it being much worse last night, and also the code is mostly clearer now, so let's move on.

...

Okay, after a bunch of back-and-forth with Brassica, I've gotten sound changes that do something. Not quite enough for my taste, but I need to take a break from it for a bit. So, let's try to remember where I was with the prompts.

Ah, I was on day 52, and I was kind of laser-focused on the case stuff, which means that there's other stuff that I'm sort of behind on. I'll have something workable to start with if I can fill out all of the roots I still need.

...

Okay, the roots are filled out, but I forget what to do for the derivations. I'm going to let this sit for a while tonight.

...

All right, let's take a look at the current state of things. I know that I'm deriving these different words from nouns, and I want to perform the derivations before the declensions, but after fusion. With the current (dire) state of things, that means that I want to run a "particle filter" drift lexicon on eagle-lexicon-combined.toml, along with some form of erosion, creating eagle-lexicon-particles.toml, then include that into eagle-lexicon-combined.toml to create eagle-lexicon-with-particles.toml, which should be used as an argument where eagle-lexicon-combined.toml currently is.

...

All right, I slapped on a low-effort word change, and it mostly worked, but I uncovered some more breakage in the existing sound changes, so now I have to fix that.

...

All right, that's enough "all right". I patched up the sound change stuff, and there's more work to be done, but I'm well enough through day 52. I peeked ahead to day 53, and I can do that tomorrow, except that the noun inflections are a little unpredictable, which was kind of the point, but it makes writing up the specific declensions hard.

Anyway, I want to wrap this up.

Good night.