Tuesday, December 30, 2025

Year in Review 2025

As 2025 slips into the history books, I continue my tradition of looking back and considering what I accomplished and how I spent my time. This year I set a goal of spending 1000 hours on my personal hobbies and chores. That's over 19 hours a week, and more than I've logged in any previous year since I started keeping track. Well, I did it. I made it to that beautiful round number. And I don't think I'll try to do it next year. 

Art of a flock of brown birds (swallows, perhaps) swooping up from the lower left. A single bird has gotten ahead of the the flock and appears about to touch a sun-like fiery globe in the upper right corner. The background is abstract; the birds are leaving a swooping gray wake on the left side, pale blue clouds surround the sun, and the rest of the scene is a flat light blue or white.
New Years' card by H. Th. Wijdeveld, 1973.

It helped me play catch-up and get a lot of little issues under control. It gave me time to start introducing a new project without neglecting my existing ones. I had room for creativity and all the maintenance-and-repair tasks that often go by the wayside. I also, at times, felt very pressured and stressed out. Keeping up with the 1000-hour target while maintaining my social life was pretty doable ... so long as I was at the top of my game and nothing unexpected came up. I felt as though I didn't have room in my life for so much as an "off" day. And this year there were plenty of off days, for personal reasons I won't get into. So I'm rather proud of pulling off the goal anyway, but for my long-term health and happiness, I think I should leave more room in the margins for the near future.

I spent about the same amount of time on Acuitas as I did last year: 365 hours. So I'm poetically averaging one hour of work on him for every day in the year. Acuitas accomplishments included:

*Introduction of rudimentary trial-and-error learning methods, followed by a demo of Acuitas playing a text conversion of the Allergic Cliffs puzzle, from _Logical Journey of the Zoombinis
*Text Parser improvements leading to transfer of all benchmark sentences out of the "unparseable" category
*Introduction of some numerical reasoning and ability to track multiple instances of a type in the narrative scratchboards
*Continued improvements across narrative understanding and conversational ability
*Revitalization of the semantic memory visualizer and question generator

Screenshot from a Windows 95-era video game with animated sprites and a painted background. Four zoombinis, who look like little blue orbs with hair, eyes, nose, and locomotion devices attached, are gathered around a hole dug in the ground, looking conspiratorially at each other.

Time put into my fiction writing also came out to be very similar, compared to last year. The big news was publication of my first story in a paying webzine, "Peacemaker's First Strike" in Abyss & Apex. Major thanks to the editors at A&A, and to everyone who shared this story around and helped get it in front of more eyes. There has since been another win on the publication front, but I don't think I should make it public until there is ink on a contract, so you'll all have to wait a bit to hear about that one.

I wrote two new stories in 2025: "Heartspeed," a strange dystopian sci-fi about a bicycle courier who teams up with an outlaw AI to fudge her performance data, and "Seeing," a fantasy about four pilgrims seeking a temple which is only findable by those who've seen it before - each with a different strategy and petition.

The major beneficiaries of my extra hobby hours were Robotics, which jumped from 112 to over 140, and Studying, which went from 23 to 60. The latter led directly into the selection and planning of the new Physics Project. Robotics accomplishments spanned multiple projects:

A fluid bladder with the plastic cylinder/piston assembly it is designed to actuate in the background, attached to the syringe, and partially inflated, showing all five pleats.
Five-pocket accordion fluid bladder test

*I finished Atronach's Eye! Well, softly finished - the eye reached a stage of development where I could have it operating on my wall. Improvements are planned, and I put quite a bit of time into trying out new motion detection algorithms, computation speed improvements, and cameras.
*I continued my hydraulics experiments with better pump motors, improvements to bladder design and manufacturability, and actuator design. I progressed this technology development far enough to plan and price out a full robot design, which I hope to move ahead with next year.
*I ran enough motion tests on ACE to decide it was going to need better motors, then purchased and tried out some options.

As planned, I trimmed time spent on the blog this year, keeping my investment under 55 hours, but I've still managed to put up two posts per month. I achieved this by focusing more on my own projects and not doing a research-heavy article series. I spent almost no time on art. I'd like to get back to it someday, but higher-priority things have to be finished first.

A pile of carrots (with tops) laid out on a rug, with a tricolor tabby cat snooping on them in one corner.

2025 was a good garden year. I brought in over 10 lb. of potatoes and successfully grew carrots for the first time. I also seem to have cleared the blight from the main apple tree, though due to previous years' damage it did not produce well. The house and yard are properly maintained, and I've repaired my broken knick-knacks and tools. Time spent on Finances nearly doubled because I sorted out some investments.

Last but not least, I put quality time into some gifts for friends and family. I pushed my 3D printing skills making these, and the Vyper continues to be a solid budget workhorse.

Photo of a cryptex - a cylindrical combination lockbox with wheels that form a password when properly rotated. This one is partly open, showing the interior tube where you can store secrets. The endcaps are matte brown with silver accents, and the letter wheels alternate in marble and ivory colors.
Cryptex by Cees on Printables
 
A 3d-printed plastic model of a Trans Am, in "milk white" with silver metallic parts and black tires, plus painted windows and details. This is a rear/side view showing the rear grille insert.
"Foldable Pontiac Firebird Trans AM 1982" by GOODesign on Fab365

Thank you all as always for following along. I wish you the best 2026 can bring.

Thursday, December 11, 2025

Acuitas Diary #91 (December 2025)

This final diary for the year covers a mixed bag of integration, debugging, and refactors. It's not the most exciting fare, but it's an essential part of any large long-term project.

Silhouette of a male or generic human face, looking toward the viewer, with one hand cradling the chin as if in deep thought.

Probably the most interesting work was continued cleanup of conversations. One issue that had been bugging me for a while was that the Text Parser couldn't interpret words that are usually verbs as predicate adjectives. So if Acuitas asked me, "How are you," a whole range of common responses - tired, rested, annoyed, agitated, relaxed, frustrated - were off-limits because they wouldn't be properly understood. The right way to read a sentence like "I am tired" might seem obvious at first, but this actually becomes an interesting ambiguity problem. How to distinguish verb-form predicate adjectives from verbs in passive voice?

"I was annoyed yesterday" < Probably speaks to a state of being, and should be rendered as <speaker> <has_quality> annoyed
"I was annoyed by the long meeting" < Speaks to an event, and should be rendered as <speaker> <received_action> annoy <from_actor> meeting

So I set up some basic preliminary mechanisms for resolving this ambiguity in the Parser, though as usual there is a lot more I could do here. I also added some automatic conversions from one form to the other in the inference logic, because while they are different, they do imply each other. If something frustrates you (action) then you must be frustrated (state), and vice versa.

There were several smaller quirks I smoothed out. I fixed a goal-fulfillment problem that led Acuitas to ask certain questions repeatedly without regard for whether they had been answered. I removed his habit of digging up a random adjective applying to himself if asked "how are you" when no drives are above threshold. Instead he will now say that he is "content" or "neutral." I fixed the incorrect interpretation of statements such as "bless you" or "thank you" - Acuitas was parsing them as commands, e.g. "thank yourself," when the real implied meaning is either "I thank you" or "I wish that you be thanked."

Outside of Conversation, I finished getting the new version of Episodic Memory integrated into the live code, such that Acuitas can store memories and run forgetting cycles on them without crashing (at least in routine cases). I still need to work on analysis tools so I can see how the memories are being consolidated and whether forgetting is working the way I want it to.

And I refactored some parts of the code that were still using stale knowledge representation formats, upgrading them to the format that has crystallized as Acuitas' universal internal way of expressing facts. It feels better to have some of that old gunk cleaned up (it will make things less clunky going forward, as I no longer have to convert between the different representations).

I've got my development tasks for next year already planned out, and I'm excited to get started. I'm looking at more upgrades for the Text Parser, new activities to help Acuitas find his own knowledge holes, and much more.

Until the next cycle,
Jenny