site banner

Tinker Tuesday for December 30, 2025

This thread is for anyone working on personal projects to share their progress, and hold themselves somewhat accountable to a group of peers.

Post your project, your progress from last week, and what you hope to accomplish this week.

If you want to be pinged with a reminder asking about your project, let me know, and I'll harass you each week until you cancel the service

1
Jump in the discussion.

No email address required.

HOCK GEAR PREP

Got lighter Travers CS boots instead of GRs, three sizes too large. Will create mockup of Slentite insole (14mm thick) from foam; test fit this, then order Slentite once I've gotten these things down to size.

Please ping me: next week, I hope to have cut my insoles and ordered the Slentite.

Had a busy New Years but I managed to get some work in. The latest version of the app is deployed, but it didn't quite go without a hitch, as I had to scramble to fix some issues stemming from discrepancies between sqlite and mysql. But it works!. The old data is migrated, and everything else works pretty damn snappy. I have to decide what to do next, either I'll go back to importing data from Substack, which is what got interrupted before I went on this whole refactoring tangent, or I'll add some AI-automated tagging, and/or image description for categorization and easier search, which is what I found myself wishing for recently.

How have you been doing @Southkraut?

Happy new Year Arjin!

I made good use of the holidays and really got to grips with procedural geometry. I now have subdivided icospheres which I can freely sculpt and paint via code. They don't look like much yet; I still need to write tools for the sculpting and painting, and creative logic that actually uses those tools, and some assets (chiefly shaders) that make them look like I want them to look. But the foundation is laid, and works, and actually works a whole lot faster than what I had in other engines. C++ has its advantages.

Originally I had planned, at this stage, to get into variable resolution meshes, but I'm postponing that for the time being. I would need it for realistic-scale planets, but it's a big technical rabbithole, and I just come climbing out of one those, and I know myself - I will sink months into it with nothing to show for it until it's completely done. So instead, I'll scale the planet down for the time being.

Which means that my next immediate tasks are

  1. Write some tools and creative logic to sculpt & paint some placeholder terrain.
  2. Make sure the terrain works nicely with collisions and physics.

So that I can actually make some things happen.

Other technical rabbit-holes I need to take care not to fall into:

  • Data-driven terrain
  • Simulated planetology
  • Premature performance optimization

But generally speaking, I'm happy. Things work.

I plan them, I implement, I debug furiously, and then they work. Life is good.

Trying some recipes again:

  • Savory puff pastry rolls. Dice and partially caramelize a small white onion, about 10 min high heat, 20 min on low. Toss in and brown at high heat a pound of ground / minced lean beef or turkey, drain off any excess grease. Add salt, pepper, garlic powder, chili powder, and cumin to taste, optionally throw in a tablespoon worchestershire sauce or throw in and simmer off a quarter-cup of sherry, port, or red vinegar. Once crumbly and well-browned, turn off heat and immediately transfer to a plate with paper towels on top and below. Prepare two puff pastry sheets, unroll, but keep them as close to fridge temperature as possible. Scoop half the meat-and-onion mix in a flat line along one of the short edges of each puff pastry sheet, at least a half-inch in, and spread it shallow. Apply a line of 2- to 4-ounces of goat cheese, sharp cheddar, or pepper jack cheese, very shallow, along the same axis. Roll each sheet back up. Cut each puff pastry roll into pinwheels, six-eight per roll. Place onto parchment paper on a baking sheet, apply an egg wash. Cook at 450 F for 25-30 minutes. Serves four to six people, best served with a hearty salad, roasted vegetables, and a chutney or mustard sauce. You can put these into hand pies or more complicated shapes, but the roll works a lot better imo and are much easier, even if it's a bit messier. It's not quite as interesting a result as the chicken-and-cheese-and-apple pie, but it's been a lot more acceptable to most other people.
  • Bobotie (sp?). Ground beef/turkey, onion, spice as above, toss in some curry powder to your preferences. Add a half-cup chutney or jam, four slices of white bread torn into tiny pieces, and either a cup of unsweetened applesauce or a cored and diced large apple, optionally a half cup of raisins, dried cranberries, or dried cherries. Layer into a baking dish. Bake at 350 F for 30 minutes. When that's almost done, mix three eggs, a cup of half-and-half (or a half-cup of cream and a half-cup of milk), a tablespoon of tumeric in a bowl, and beat the everliving shit out of it. Pour on top of the meat in the baking dish, cook for another twenty minutes. Most Official Recipes say add bay leaf, but even as someone that loves bay for rice, it doesn't seem to do much here. Serve with rice and some greenage, but expect three servings for most eaters.
  • This recipe modifies to work in a rice cooker surprisingly well -- I basically just pan-fried the chicken in its marinade instead of partially-cooking it in an instant pot -- though I don't think it would have passed an authenticity test. Still pretty good, and outside of the (looooong) marinade time, a lot easier than I expected.
  • Lazy man's burritos mix. Pan-fry a pound of boneless skinless chicken, allow pan to cool, then dump in drained pre-cooked kidney or pinto beans and a cup of salsa (salsa verde and peach salsa work weirdly well, but even your standard gringo salsa does fine). Simmer for thirty minutes covered on low heat, adding water if it starts to dry out. In a separate pot or a rice cooker, cook three cups rice in four cups water without rinsing the starch off, drain, and then dump the chicken-salsa-bean mix. Mix aggressively, let sit and cool for ten minutes to let the rice absorb as much as it can and get as sticky as possible. You can go really nuts with this recipe in a slow cooker, and it's great and gets rid of the pan-fry step (and can let you use bone-in chicken)... but it takes six hours and a crock pot. Either way, serve on a tortilla or lettuce wrap with iceberg lettuce, a sharp cheese, top with sour cream or greek yogurt and a drizzle of the remaining salsa.

I've been melting my brain with leetcode. Some highlights.

I really enjoy doing a Topological Sort, or Kahn's Algorithm. Almost every graph problem I see, I take a minute and have a think if it can be solved with a topological sort.

I took a day to really try to understand Monotonic Stacks or Deques, because on the face of it I couldn't grasp what they were doing at all. But after manually stepping through a few examples of the algorithm on paper it clicked. Been redoing a bunch of stack problems seeing if they can be solved with a Monotonic solutions.

Floyd's Cycle Detection remains a blind spot for me. I mean, I get it, but I often fail to perceive that a given problem can be reinterpreted as a cycle detection problem.

Solving shortest cost problems in a graph with a minheap was something I'm not sure I ever learned in school. I always remember doing that with a breadth first search queue.

I wonder if that had anything to do with learning all this in C/C++ without any standard template libraries. If we wanted to use a minheap to solve a problem, we would have had to code one up ourselves, and I'm not sure we were taught that in undergrad. Least I never was. Doing the leetcode problems in modern languages, or even C++ with STL seems mostly to be a matter of picking the right data structure off the shelf and solving the problem with it and/or having heard of the algorithm you never would have come up with yourself.

Also, having been a software engineer for 20 years already, it has me looking back over my career. Over all the stitching together of off the shelf libraries I've done, wondering if at any point I could have done a better job with any of this. The answer is absolutely not.

Ah well.

Whenever I do coding interview training I have to brush up on min heaps and try to think of whenever I would could have used them and the answer is: never.

Deques on the other hand, maybe 7 times in the last 30 years. But it's never been performance critical enough to matter.

You'll see minheaps a bit under Dijkstra's algorithm in the networking and -adjacent spheres, but it's so well-known as the Default Solution for those use cases you're either going to have it under several layers of abstraction, or you're really doing something weird. I've had to hand-build it once, and I don't think the end product ever actually hit anywhere outside of a toy environment.

Oh. Okay I've used a min heap once in my life in that case. I somehow forgot. Probably because it was a pairing heap whereas all of the coding interviews that ask you to hand write one want to see an array based binary heap.