(Aug 20, 2026)
We'd like the dungeon picture to fill the window out to the edge. I'm not as quick as some ideal person who wasn't here, but I think I've got a handle on it.
(Aug 19, 2026)
... I don't think I've ever actually claimed to be good at this. Let's try, I don't know ... simplicity?
(Aug 18, 2026)
Let's take a look at displaying Dot's inventory in some reasonable way. Some spiking yields a bit of insight. Tout le monde déteste l’IA.
(Aug 17, 2026)
As soon as I figure the quest giver is done, I get a request for a new feature. Great! Tout le monde déteste l’IA.
(Aug 17, 2026)
We'll begin with a look at the new Denizen-related code. Refactor a bit. Add a flower. Tout le monde déteste l’IA.
(Aug 16, 2026)
Before working out that validation idea, let's commit the good bits. Surprise Idea: The search for joy for everyone must never be abandoned.
(Aug 16, 2026)
Again with the weird hours! Elaborating an idea from a more civilized hour yesterday. Tout le monde déteste l’IA.
(Aug 15, 2026)
Weird hours again, but very interesting spike. Have a look! Tout le monde déteste l’IA.
(Aug 14, 2026)
Regrettably awake at 0445, I look for something to code. Tout le monde déteste l’IA.
(Aug 13, 2026)
I entertain myself by seeing how to improve the `bee` ContentFactory method. Tout le monde déteste l’IA.
(Aug 13, 2026)
As I dozed off, I had an Idea. We'll think about that and then find something to do. LLM note. Important(?) closing. Tout le monde déteste l’IA.
(Aug 12, 2026)
In a few more steps, let's provide some class methods, and the one-time-thru version of Sayer. Added P.S. Tout le monde déteste l’IA.
(Aug 12, 2026)
I was fiddling with the Denizen. I have a small need and a small idea. Small steps to nice outcome. Tout le monde déteste l’IA.
(Aug 11, 2026)
A small idea about the Denizen state machine. Tout le monde déteste l’IA.
(Aug 10, 2026)
I feel some tiny objects coming on. I plan to let them come. Tiny objects FTW.
(Aug 10, 2026)
Even working incrementally, I think it's too soon to be generalizing the Bee Denizen. Discuss, decide, do.
(Aug 9, 2026)
Working on Denizens seems interesting enough to keep me going. Let's see what we might do. Some discussion of how we generalize here chez Ron.
(Aug 8, 2026)
I'm tired of this program, or at least the work we've been doing. What might be more interesting? Definitely contains bees. Possibly important summary.
(Aug 6, 2026)
We need to get the boundary behavior right. This may mean I have to understand my code. Long, but rather nice.
(Aug 5, 2026)
A surprise requirement challenges me. They want the minimap changed substantially! Tout le monde déteste l’IA.
(Aug 4, 2026)
Shall we add more capability, or consolidate? I think we'll add. Callooh! Callay!! Tout le monde déteste l’IA.
(Aug 3, 2026)
Today, we'll decide if this is a Spike to be tossed, or a good enough base from which to proceed. Tout le monde déteste l’IA.
(Aug 2, 2026)
This morning I'll try to spike in a Section for the Scroller. I'll waste 90 minutes. This afternoon, I'll win! Tout le monde déteste l’IA.
(Aug 1, 2026)
Found an Arcade example that seems like just the thing. Tout le monde déteste l’IA.
(Aug 1, 2026)
Another cut at the mini-map. Tout le monde déteste l’IA. ... and yet ...
(Jul 31, 2026)
Let's try a spike for a mini-map. Not at all sure how to do it. Tout le monde déteste l’IA.
(Jul 31, 2026)
I do the wrong thing, then do the right thing. I tick myself off. I take a break. Tout le monde déteste l’IA.
(Jul 30, 2026)
The DungeonViewMaker seems to me not to be quite the thing. Let's do better. Tout le monde déteste l’IA.
(Jul 29, 2026)
I'd like to make the KeyPress code simpler. Here's something that works. Do we like it? Yes, but we don't love it. Tout le monde déteste l’IA.
(Jul 29, 2026)
Stepping is working. Let's make it more nearly right. I think an object is called for. Tout le monde déteste l’IA.
(Jul 28, 2026)
This morning, we'll try to put stepping into the dungeon creation. Tout le monde déteste l’IA.
(Jul 27, 2026)
Let's take some steps toward stepping visually through dungeon creation.
(Jul 27, 2026)
I had in mind to do some pleasant Making App additions to the program. I'm afraid that the code may not agree. Result: whining is never really wasted.
(Jul 26, 2026)
Having made my point about refactoring, I think we need a longer view ... and a longer view. Just some planning and a couple of pictures.
(Jul 25, 2026)
A tiny article about one tiny change. Some thoughts on whether it matters. Tout le monde déteste l’IA.
(Jul 24, 2026)
If we were to combine our formerly three now two sprite lists into one, would we lose some duplicated code?
(Jul 24, 2026)
The split between making the view and running it is working. Now we get to make it a bit more right. Result: quite pleased so far.
(Jul 23, 2026)
I'm just gonna go for it. If it works, I'll claim it, if not, there's always reset. It works! Wow!
(Jul 23, 2026)
This exercise has me hooked. I'm still engaged with getting DungeonView pared down until it looks ... much better. I'd say perfect, but there is no perfect: only better.
(Jul 22, 2026)
We'll remain on the quest to simplify DungeonView a bit longer. I did some things last night, and we'll do more this morning.
(Jul 21, 2026)
Let's move on_key_press out of DungeonView. Down to 146 lines, from 226 just a few commits ago.
(Jul 21, 2026)
If there was a feature I wanted, I'd do that. There isn't, so we'll look for some more small but significant improvements. Fiddling while Rome burns? Why not?
(Jul 20, 2026)
Looks like there are a couple of methods where our new Cameras object could help out.
(Jul 20, 2026)
... a simplification. At least one more instance variable should disappear. I wonder, though ...
(Jul 19, 2026)
I was watching Antiques Roadshow, as one does, when it came to me that a tiny object might be just the thing for DungeonView. Let's find out.
(Jul 18, 2026)
I've decided to commit this and refactor. Can always reset if I have to. General rule: try always to move forward.
(Jul 18, 2026)
OK, let's do the thing we love: find something to improve, and improve it. Shall we start where we left off? Result: Not as joyful as some days.
(Jul 18, 2026)
About programming. A few thoughts on what I do, and why I enjoy it so much.
(Jul 17, 2026)
Writing a note to ask for ideas, I got an idea. Let's see what happens with it. Result: I think it turns out nicely.
(Jul 17, 2026)
Received wisdom and personal experience tell me to cover built-in collections. Here's why.
(Jul 16, 2026)
Resource designation is awkward, and I think we're loading them multiple times. Let's see what we can do about this. Arcade helps out!
(Jul 15, 2026)
I have one. Very small but I think it'll make things just a bit nicer. We'll see.
(Jul 14, 2026)
I have an on-line meeting that I can pay only small attention to. Herewith, a report on whatever tiny changes I find.
(Jul 14, 2026)
Let's see if I can tire myself out with code. I enjoy crafting code and ain't no oligarch-feeding resource-consuming job-stealing computer program gonna take that away from me.
(Jul 13, 2026)
Let's see about removing those skulls from the path. Currently we just remove the sprites. This is more tricky than it might be.
(Jul 13, 2026)
We're on the hook for extending illumination, and we need some way to remove the Necrotic Path of Skulls.
(Jul 12, 2026)
Let's get back to work on displaying the path to things. We need a different Flooder setting for sure.
(Jul 11, 2026)
I have a bit of time where I can't concentrate deeply but can probably do some easy things. A new class reduces DungeonLayout.
(Jul 11, 2026)
We need to deal with the illumination issue in our breadcrumbs feature. Should be easy. Need to quell a rumor first.
(Jul 10, 2026)
OK, let's learn how to do the thing we already did. I plan to go in Very Small Steps. The morning's spike pays off, it seems to me.
(Jul 10, 2026)
I've thought of what may be a fun idea for the game. Let's talk about it, maybe do some of it. Spike written, thought about, tossed.
(Jul 9, 2026)
I need a little something to do. Here's something that could be done. Better code, not as easy to understand as it might be.
(Jul 9, 2026)
We'll glance at Flooder, to see if it needs any improvement (it surely well), then improve it. (Brief oblique cut at LLMs, oligarchs, etc.)
(Jul 8, 2026)
We need to improve Flooder, to allow constraining it to follow legitimate pathways. I am expecting it to be straightforward.
(Jul 8, 2026)
An upcoming feature demands a capability we don't have. Let's improve the Making App a bit. A good first step.
(Jul 7, 2026)
Knowing the fix, let's install it properly. Then maybe an idea.
(Jul 6, 2026)
Let's fix the defect. Bear bite costs me two hours.
(Jul 6, 2026)
No, a DEFECT, and a serious one. All hands on deck! Red Alert! OWOOGAH OWOOGAH!
(Jul 5, 2026)
With a reasonable design, reasonable changes are generally reasonably easy. So keep the design reasonable.
(Jul 4, 2026)
... if we can gin up something that's kind of fun. I have a simple idea that seems promising. Turns out to be Very Pleasing!
(Jul 4, 2026)
I see one more thing that needs doing. And then I propose that we have a little fun. What am I saying, programming IS fun for me. CW: Brief LLM excursion.
(Jul 3, 2026)
Let's figure out the new interaction feature, test, and do it. Success but with a reset and a general feeling of clumsiness.
(Jul 3, 2026)
We improve some code, reduce overall size and breadth of interfaces, make things better. CW: Brief LLM-"AI" remarks.
(Jul 2, 2026)
The recent refactoring around Layout and Cell gave me a very appealing idea. Let's discuss and quite likely try it."What kind of person wears Louboutins into a dungeon anyway?"
(Jul 1, 2026)
This afternoon I want to explore some alternative notions around the Cell topics raised this morning. Very promising results!
(Jul 1, 2026)
Speed report, and I noticed what looks like Feature Envy. Let's see where it leads. One serious mistake, quickly corrected. Very nice result. Some speculation.
(Jun 30, 2026)
We have a tricky problem ahead of us, but first: the tests are too slow. Nice result, very pleased.
(Jun 29, 2026)
Rested, I feel ready to do the passage-generating code. I'll TDD what I can. Maybe random seed will help.
(Jun 29, 2026)
I have a somewhat complex idea about passages, but a simpler scheme might work. Let's find out. Anticlimax: I stop just before the thrilling conclusion.
(Jun 28, 2026)
Some thoughts on how I work. It takes me a while to get there. If I got there. There must be an idea in here somewhere.
(Jun 27, 2026)
Some ideas about doors, and with luck, a bit more code.
(Jun 26, 2026)
With Content in good enough shape, I think doors can be next on the agenda. (I delete 235 lines from this article.)
(Jun 25, 2026)
A quick report on removing the old content objects in favor of the new. It goes quite well.
(Jun 25, 2026)
I think that the animated spikes are the last challenge for the new content scheme. Are we up to it? Let's find out.
(Jun 24, 2026)
I was going to say 'work', but this isn't work, it's fun. I continue to be pleased.
(Jun 23, 2026)
Not even that devious: this seems like a decent idea for the simplified Content. Decent progress.
(Jun 22, 2026)
I think we can do without the `info` object entirely. Let's find out. Bear takes a nibble but I think we're OK.
(Jun 22, 2026)
The new scheme for Content seems to be working out well. Remaining are two concerns ...
(Jun 21, 2026)
I think he's got it! We'll find out. Also: design documentation. Results: very favorable.
(Jun 20, 2026)
I think the new Content scheme isn't good enough. Planning to reset. Might save the tests.
(Jun 19, 2026)
This morning we made something work. Will it support everything we now need? Why didn't I ask that first?
(Jun 19, 2026)
With respect to Leonard Cohen, I want it simpler, not darker. Let's see what we can figure out. I am pleased.
(Jun 18, 2026)
I feel that I'm in a bit of a hole and still digging. Let's see how we might turn this around. We find ways to keep our oppressors off our backs.
(Jun 17, 2026)
I've made a notable change to PubSub, with more to come. Keyword arguments. Small apology for poor testing. We'll do better.
(Jun 17, 2026)
The new conditional-entry logic is clearly a hack. Let's provide a little improvement. Some thrashing. Method object. Satisfactory but not amazing.
(Jun 16, 2026)
While I'm in another world, let me muse about Content.
(Jun 16, 2026)
A few improvements, a bit of design thinking, and a plan takes shape. A good morning.
(Jun 15, 2026)
Let's give the spikes the ability to respond differently to control state, rather than the current fixed arrangement. Artisanal hand-crafted code, of course.
(Jun 15, 2026)
Still working on Lever-Spike connection. I was right not to panic yesterday, the snag wasn't a snag.
(Jun 14, 2026)
The spikes go up and down in the view. They need to react to a lever, and should also Deal Damage to Dot. We hit a snag, but do not panic.
(Jun 13, 2026)
Not the experimental kind, the stabby kind. Though there will surely be experimentation involved.
(Jun 13, 2026)
Let's add a Lever to our content objects. Herein, I make a prediction. Will I be correct? This one is darling, and I'm not going to kill it.
(Jun 12, 2026)
With the new event modifier, I think we can completely eliminate the button_pressed event.
(Jun 12, 2026)
I have in mind a caller-id feature for PubSub. Good time to do this, when users are few. Bears arrive unexpectedly.
(Jun 11, 2026)
I found a 1x1 transparent PNG. Let's use it for AppearingContent. A sweet little improvement.
(Jun 11, 2026)
I see opportunities for consolidation. Can we take advantage of them? Let's see. We change something unexpected. Is it too clever? Nahhh!
(Jun 10, 2026)
I think I'll try making the Button show up and down states. Sounds easy enough to spike something.
(Jun 10, 2026)
During a boring on-line meeting, I went ahead and put in the visibility logic. Let's see how things look now.
(Jun 9, 2026)
Dungeon content has aspects of model and aspects of view. Let's wrap it in a ContentView and then evolve to something more cohesive. Sort of Part I.
(Jun 8, 2026)
A few little changes to content this morning trigger some further improvement this afternoon. It's better than it was, and more capable too.
(Jun 8, 2026)
There's something not quite right about the design. Can we suss it out, or should we make it a bit worse? Lots of musing, very little code.
(Jun 7, 2026)
Sprites, yesterday and today. Refactoring the Content design, because Sprites.
(Jun 7, 2026)
Sometimes I'll refactor, over time, from design A to design B, and then decide to refactor back to B, or something very much like B. That's not a problem with the approach I'm demonstrating: it's a feature.
(Jun 6, 2026)
PubSub could hold onto objects that should be dead. Two attempts and much fumbling later, I've learned a bit but have no solution that I like.
(Jun 5, 2026)
Amid horrendous technical difficulties, I propose to build a Strategy-based content item. In an astounding plot twist, we drop the Strategy idea!
(Jun 4, 2026)
Having chosen Strategy over Mixin, we'll get down to doing it for real.
(Jun 4, 2026)
I made some changes to the scaling of images. I'll report on that, but what I really want to do is to eliminate some duplication. I surprise myself.
(Jun 3, 2026)
The 'art' that I have for the game comes at various scales. We need some way to accommodate that. Outcome: OK, but there's a tiny telltale scent of corruption. Squidgy.
(Jun 2, 2026)
A couple of little changes from yesterday. Mostly just speculation, vague design thinking. I create an abstract class and draw an up-button.
(Jun 1, 2026)
Yesterday's idea for selecting random tiles seems tasty. Let's try it. Is it a kind of Composite Pattern? Answer: a firm 'kind of'.
(May 31, 2026)
I made one new texture last night, on my iPad. So I think I'll point the game to the recently-purchased set.
(May 30, 2026)
There is Massive Duplication in my texture-finding code. I plan to remove that. It goes rather nicely.
(May 29, 2026)
Today I propose to change the Border code to return a 'meaningful' string rather than those 0-15 integers. I figure I can handle something that tricky, probably.
(May 28, 2026)
We've agreed that our current borders scheme works, but isn't quite what we need. Let's see how to make some progress in how we make this dungeon. This pass, we prepare the soil.
(May 28, 2026)
Having 'done' borders, I'm learning what I want. 'Making App' vs 'Shipping App'. A bit of philosophy, a bit about why I write these words.
(May 27, 2026)
I have a bit of time this afternoon. Let's see what we might do about borders that would be better.
(May 27, 2026)
I found some of my favorite tiles and did an experiment yesterday. We have some interesting work ahead. We spike a border!
(May 26, 2026)
I have no idea what we might do this morning. I'm sure I'll have at least one notion quite soon. Things get a bit weird.
(May 25, 2026)
Let's deal with some of the PubSub issues and needs.
(May 25, 2026)
Things happen. People have to know about them. What shall we do about this?
(May 24, 2026)
A small improvement; a confession. I wind up thinking in public about how I live. CW: LLM-AI, Jesuitical
(May 23, 2026)
Based on a thing I did yesterday, I have an idea that I think will be quite nice. BorderedText, good yesterday and gratuitously better today.
(May 22, 2026)
I'm not sure what I'll do this morning. Look for something that interests me, I guess. We follow our nose. Refactoring for fun and profit.
(May 21, 2026)
We'll glance at the scrolling code, see what we can improve, and use it on our existing treasures.
(May 20, 2026)
Let's experiment with scrolling text. A bit of thrashing but a fairly decent object emerges.
(May 20, 2026)
We have a thin treasure/inventory capability wired in. Let's review our notes and pick something to add. We add visible treasures and console announcements with just a little code.
(May 19, 2026)
We have some content that is fixed throughout game play, and some that varies. We're getting close to needing to handle that. Perilously close.
(May 18, 2026)
I have a bit of time at the keyboard. Let's improve the dungeon contents code a bit.
(May 18, 2026)
Let's take a look at what might be good next steps toward a game. I'd like to get to some code today. A second personality emerges from my mind, the PDP.
(May 16, 2026)
This morning I'm going to put a Camera2D into my dungeon and see if I can figure out how to zoom and pan and such. I am hopeful but also expect confusion.
(May 15, 2026)
Let's see what we can figure out about the Arcade camera. I think we'll look at an example, and maybe bash it a bit to see what it does.
(May 14, 2026)
I think Arcade is in place. Do we like it? Is the code where we want it? What are our longer-term ideas?
(May 13, 2026)
I've added in Dot and it's clear we have work to do. Result: 1000X faster.
(May 13, 2026)
I think we'll take a cut at converting from pygame to Arcade today. I have a tentative idea, and I'm prepared to fail spectacularly.
(May 12, 2026)
Let's explore the Arcade platform, which we plan to use in our dungeon program. Here's how I like to learn a new system: by example.
(May 11, 2026)
That `make_lines` method is horrid. Let's continue cleaning things up a bit, starting there.
(May 10, 2026)
Are we close enough to having the right Border classes to try to draw them? Let's take a look at how we might do that.
(May 9, 2026)
We want to change border calculations to create a permanent structure. We proceed with a few very tiny objects. I think it goes quite well, though the article gets rather long.
(May 7, 2026)
I think about my code while writing it, and at other times. Here's what I think today.
(May 6, 2026)
Let's look around, see what we might do that might improve things.
(May 6, 2026)
Cleaning up Cell fixed a big design issue. Now we are left with a smaller one. We'll see what we can do about that.
(May 5, 2026)
We're engaged in a long series of small steps, moving capability from the Cell up to the classes that hold onto Cells. The good news: small steps can be done over a long period of time. Bad: it is often not very interesting. Did not use the word "gallimaufry". Could have.
(May 4, 2026)
We couldn't get in the straightforward way. Is there a more sneaky way to do this? Tiny steps, many commits, very tedious. One semi-interesting refactoring.
(May 4, 2026)
Cells know what room they are in. What will it take to undo this? The bear gets really close to taking a bite today.
(May 1, 2026)
Should we start to address the Horrendous Mess™, or do something else? Something else: work toward removing room knowledge from Cell.
(May 1, 2026)
A short session Friday, another Saturday, and we have Cell disconnected from it container. A triumph of small steps!
(Apr 30, 2026)
I just want to do a little more this afternoon. Can we move `at_offset` yet? Yes. Just one more use of `current` remains.
(Apr 30, 2026)
We are making a Horrendous Mess™, and we're glad of it.
(Apr 29, 2026)
Just for fun, let's see about moving `find_path` into DungeonLayout.
(Apr 28, 2026)
We'll begin the morning adjusting more tests to use the new Layout idea. This iterative incremental stuff? It really works! The Niagara Falls Method.
(Apr 27, 2026)
I've had an obvious but seemingly decent idea. Let's try it. Here's my cunning plan ...
(Apr 27, 2026)
What happens when right in the middle of things, what seems like a much better idea appears? Includes: musing on the balance between code quality and shipping.
(Apr 26, 2026)
None of my notes on cards appeal. Let's look at the code and see what it suggests. Sort of an odd result.
(Apr 25, 2026)
I'm not up for a lot today. Let's review those methods that can optionally return `None` and see what we can learn, maybe what we can do. Results: acceptable if not entirely satisfactory.
(Apr 24, 2026)
I was thinking this morning, while trying not to get up yet, about the programmer, the programmer's code, and their care. As to my recent defect, I really don't see what to do better. Yet.
(Apr 23, 2026)
I've been chasing a serious intermittent defect for five or six hours. This is almost unheard of, due largely to the way I work. But I finally figured it out. Brief comments on LLM-"AI"
(Apr 21, 2026)
Five or six hours of slogging here. Maybe scan, maybe just read 'Found It!'.
(Apr 20, 2026)
Today I think we'll see about using Flood directly, perhaps removing the convenience method on Cell, but adding some to Flood.
(Apr 19, 2026)
An exchange with Bill triggers some ideas for the flood. It's 0330 hours. Let's see what we can do.
(Apr 18, 2026)
The `flood` method is my current darling. Should we kill it? Is it just too cool to live? Let's examine it.
(Apr 17, 2026)
Today we start by actually finding furthest points. We need also to remove the path map code. The morning goes well: geek joy FTW!
(Apr 16, 2026)
I think the new generator is working well. Let's see if we can improve the way it's written. A very nice refactoring sequence, if I do say so myself. Thanks to Bill for the nudge.
(Apr 15, 2026)
Let's see what's up with that new generator. I think it's about 0.75 done.
(Apr 14, 2026)
A nudge from a friend impels what seems like a much better idea. But appearances deceive: it's more tricky than I thought. We build an interesting new capability.
(Apr 13, 2026)
We have a test that seems to compute what we want. Let's try to see where it should go, and put it there.
(Apr 12, 2026)
I've had what seems like a good idea. Let's find out.
(Apr 11, 2026)
We're working on finding a cell that is maximally distant from a given cell. What are our next steps?
(Apr 10, 2026)
Sometimes we focus on the application, sometimes on the making of the application. We begin with making.
(Apr 9, 2026)
I think ensure_connected can fail. Let's prove it, then fix it.
(Apr 9, 2026)
Having completed the basics of the contents vs layout design, it's time to look around and see what needs improvement.
(Apr 8, 2026)
The FGNO OGs gave me some good ideas about my design: thanks, OGs. This morning I'll start following some of those ideas. I use test doubles!
(Apr 6, 2026)
Today, we'll start populating our dungeon. We'll start with an intrepid adventurer named Dot.
(Apr 5, 2026)
This morning, I think we'll look at some code. As a start, I have a question about Room. Brief LLM-AI digression.
(Apr 3, 2026)
I did a little off-article cleaning of Cell. We'll look at that. And I have an idea which may be good, or then again, not. Weirdly, things go better than expected.
(Apr 2, 2026)
Yesterday's closing idea looks good to me. Let me know what you think, if you care to. We find that we're not quite finished. A serious lesson is relearned. LLM-AI diversion at end.
(Apr 1, 2026)
With our new path deviation operation working, it's time to look at the code and see if it's asking for anything. We end with a seriously questionable choice.
(Mar 31, 2026)
We need the validity check in PathHelper. And I see how to generalize it. Which should be first? Updated: found a test.
(Mar 30, 2026)
Let's see if we can make PathHelper less bad, perhaps even make it better.
(Mar 30, 2026)
We still get straight paths sometimes. I have an idea ...
(Mar 27, 2026)
We can make most of our paths wander, except for the straight left-right or up-down ones. I've had an idea. Is it a good one? I decide to use a prior idea, in an interesting spike.
(Mar 26, 2026)
When last we met, we had just discovered a nice way to make a wiggly path. Since then, I've improved the code a bit. We'll look at that and then see what we see.
(Mar 25, 2026)
Our minimal paths are too straight for most purposes. Is there a nice way to make them adjustably not so good? Is 'adjustably` a word? It is now. A nice discovery arises.
(Mar 24, 2026)
Yesterday at session end, I tried to hack in a minimal-path idea. Failed. Today let's try to fail better.
(Mar 23, 2026)
It is certainly no surprise that the day after something first works, there is plenty of room for improvement. We'll be looking for some of those things this morning. We learn from a small step.
(Mar 22, 2026)
Let's finish up the path between suites and see what it looks like. I suspect we'll want to try to tune it.
(Mar 21, 2026)
Nothing deep here, I mean a path in the dungeon, not a way of life.
(Mar 20, 2026)
We are working toward making dungeon description easier. I think of it as creating a little language. Today, adding randomness, if my luck holds. It holds, and we belay the whole plan.
(Mar 17, 2026)
Well, dungeon CREATION. We'll start with a little refactoring. I remember why I recommend testing bug fixes.
(Mar 16, 2026)
Making a dungeon seems generally to require looping and even conditionals. Do we want special support for those?
(Mar 14, 2026)
Suppose we wanted to create many different kinds of maps. How might we make it easier?
(Mar 13, 2026)
We sometimes get rooms within rooms by accident. Let's see if we can do it on purpose.
(Mar 11, 2026)
FGNO had some ideas. I'm not ready to work on holes. What about paths? A weird solution emerges.
(Mar 10, 2026)
The new jaggy room shapes sometimes include holes. Makes me think about secret rooms. And, not unrelatedly, about paths. Just thinking, and an interesting experiment.
(Mar 9, 2026)
Now that we can have as many room shapes as we can imagine, let's imagine some. The results may surprise you. They surprised me, in a good way.
(Mar 8, 2026)
I veer into philosophy and LLM/AI, based on thinking about many small changes, and how they add to understanding.
(Mar 7, 2026)
I had a few moments and decided to do a round room. At which point I realized that something can be improved.
(Mar 7, 2026)
A common but rookie mistake needs fixing. Using the same RoomMaker to make multiple rooms engenders chaos. Today, as often happens, I don't do what I thought I might.
(Mar 6, 2026)
I have a bit of time and a bit of energy. Let's scavenge Room to make a RoomFactory.
(Mar 6, 2026)
Yesterday's work has been taken as an experiment in having different room shapes, via different room builders. today, Let's get started on the real thing. I have some ideas. That's never a good sign.
(Mar 5, 2026)
FGNO Wants Better Shapes. We do an inadvertent spike. Along the way we discover an issue in generate, and learn the difference between a square and a circle. A superior day!
(Mar 4, 2026)
Recording some small changes.
(Mar 4, 2026)
With a little help from my friends, I set out to smooth some rough edges. Lots of small things. Nothing to see here, aside from one excellent name change. A metaphor issue discussed at the end.
(Mar 3, 2026)
The PathFinder code now uses Cell.generate, but there are signs that make us wonder.
(Mar 2, 2026)
PathFinder uses `generate`. But there's work to be done. And let's talk about generalizing `generate`.
(Feb 28, 2026)
Now let's see if PathFinder can benefit from the new `generate` method on Cell. Saturday: absolute debacle. Sunday: perfect.
(Feb 28, 2026)
Let's look into a suggestion from @blackoverflow. Turns out to be a good idea needing a little improvement. (Minor edit, courtesy @blackoverflow.)
(Feb 27, 2026)
Our cell generator looks pretty good. Let's test it on a copy of our suite test, then see how to put it in play.
(Feb 26, 2026)
I think a generator might be an interesting way to do this flooding thing. Let's see if we can gin one up. And we can!!
(Feb 26, 2026)
Let's see if we can make our SuiteFinder object more expressive. Arguably, it needs it. Arguably, we'll go too far. Too far? We went hog-wild!
(Feb 25, 2026)
What we need here, I reckon, is Method Object. Let's try it. Oddly enough, that's actually what happens. There might be something better still ...
(Feb 25, 2026)
We continue the prior article's session in a new article but same session, refactoring another bit of code that could use a little improvement.
(Feb 25, 2026)
This code isn't very good. I'll tell you why, and we'll try to do something about it.
(Feb 24, 2026)
We'll start with a review of existing code, possibly clean up the border logic a bit. But we'll at least start thinking about "continents" and paths between them.
(Feb 23, 2026)
I think I'm ready to draw smarter borders. I have chunks of a plan. Green shoes.
(Feb 21, 2026)
Thinking about how we could detect rooms that are adjacent. Warning: contains Philosophy of Programming as this old guy does it.
(Feb 21, 2026)
My design fantasies and experiments need to stop. Let's do the periphery feature. I have an idea. Results are satisfactory.
(Feb 20, 2026)
Let's look around, get aligned, decide what to do, then do it. Well, we do a little, but not much. Have I learned anything? PSA: Eat the rich!
(Feb 19, 2026)
Let's try a different approach this afternoon. I have a good feeling about this one. Things go fairly well, but not fantastically well.
(Feb 19, 2026)
Yesterday's experiment successfully showed me that I had a terrible idea. Today ... a similar success!
(Feb 18, 2026)
I think I'll experiment with a kind of cell that has x and y but really only as data for display, using just neighbors to show relationships. This may get weird. Experiment succeeds: Not a good idea.
(Feb 18, 2026)
It feels as if my objects aren't helping enough. It's important to recognize that feeling and see what can be done about it. Think, speculate, sleep on it, try something.
(Feb 17, 2026)
Starting the game seems too slow. How much? Why? Measure. Measure better. Think. Realize something. Plus: help from a new friend.
(Feb 16, 2026)
OK, we made the change easier. Now can we do the change? Yes! Slow is smooth: smooth is fast.
(Feb 16, 2026)
Let's see if we can do this with good testing and really small steps. It could happen.
(Feb 15, 2026)
Some small refactoring steps, very small. One rollback, no idea what happened.
(Feb 14, 2026)
I want to complete the path finding, and I think some of these objects would appreciate being better designed. Includes: a Great Lie wasn't ... this time.
(Feb 13, 2026)
I feel sure that I know just what to do next with paths, but I'm not sure how to test it in a reasonable fashion. Results: Happy!
(Feb 12, 2026)
For a program with no point, there sure are a lot of interesting things we might do. I'll try to make these articles more useful.
(Feb 11, 2026)
While I like the new bordered look, I still don't like the rooms all packed together. I have an easy idea that comes with a puzzle.
(Feb 10, 2026)
Drawing a room looks good. Let's generate a whole space of them and see how the map looks. An interesting drawing, and a small curious effect.
(Feb 9, 2026)
Drawing a room looks good. Let's generate a whole space of them and see how the map looks. We'll want some design improvement along the way.
(Feb 8, 2026)
We're drawing a grid. Let's try drawing a room.
(Feb 7, 2026)
I want to be able to see what the rooms look like, so I guess it's time to bring in PyGame and get something displaying on the screen. I plan to cheat. Good result!
(Feb 6, 2026)
I guess I'll set up an approval test with a random seed. Then see if we can create a better test.
(Feb 6, 2026)
Still nerd-sniped by dungeon allocation, I begin to get a sense of an approach. Let's see what happens. Python fits my hand. What's your preference?
(Feb 5, 2026)
GeePaw Hill is undertaking a dungeon sort of thing, in Kotlin, using a very interesting room allocation scheme. So I was thinking, what if ...
(Feb 2, 2026)
Kind of at loose ends this morning. Let's look at the Game of Life code and see if anything comes to mind. Just some small changes, other than reorganizing the files.
(Jan 29, 2026)
... not necessarily most beautiful, but there seems always to be something to talk about even in simple programs like the Game of Life. Today we remove the façade.
(Jan 28, 2026)
Of the two approaches I've tried, I have a preference. Let's discuss that and align the code with my wishes. Takes two tries. So it goes.
(Jan 27, 2026)
Let's review yesterday's conversion of the Game of Life from an object-oriented design to simple functions. I have at least one idea already.
(Jan 26, 2026)
The Game of Life code is quite simple. What if we didn't use classes, just vanilla functions?
(Nov 14, 2025)
The ArcRod from yesterday defines the center and one end of a longer rod in 'real life'. I propose what would be called a hack if we did something like it in code. I stumble, but recover. Small steps FTW.
(Nov 13, 2025)
Past time to get back to the linkage. I'm glad I'm not on a deadline—other than the big one—and I don't know when that is. Anyway, let's add a link or two. Result: WOOT!
(Nov 3, 2025)
Studying the Walschaerts linkage, I think I see a path that my scheme can support. So let's see if we can inch into it.
(Oct 30, 2025)
Upcoming Components challenge us. XP has design thinking. Names are dropped. Brief descent to politics. Cute Video.
(Oct 28, 2025)
Bell Crank is kind of an inflection point. Let's see what we should do next.
(Oct 27, 2025)
Time for a new component, the bell crank. Not your regular crank, no, but a bell crank.
(Oct 24, 2025)
Maybe tables would be a useful way to express a linkage.
(Oct 24, 2025)
I've come up with a better way. At least I think it is. Herewith, a report. Green shoes.
(Oct 22, 2025)
We need an easier way to define a Linkage.
(Oct 21, 2025)
Give me an "AI" that cleans the bathroom and leave me to my art.
(Oct 20, 2025)
Log for the Record. Crash and burn. Read only if you want to see me confused.
(Oct 20, 2025)
There are two possible solutions for the ArcRod's position. We need to specify which one we want. Result promising but I'm sent back to the drawing board.
(Oct 19, 2025)
Tests notwithstanding, there's both satisfaction and discovery in animating the linkage. So let's do. (It works!!)
(Oct 18, 2025)
As much as I'd like to futz with the drawing code, I think it's time to continue work on the ArcRod. I'm goin' in!
(Oct 17, 2025)
Why, only yesterday, I thought I had made a mistake. Turns out I was wrong, I hadn't made a mistake after all!
(Oct 16, 2025)
Starting late today, might end early. Let's see if there are right-sized things to do. Good thinking, but the work does not go as I anticipated.
(Oct 14, 2025)
Today we do a very nice step by step refactoring to a Method Object. Quite pleasing, really. Yummy.
(Oct 13, 2025)
Long ago, Kent Beck described 'simple code' with four rules. One of them was about expressing ideas in code.
(Oct 11, 2025)
I'm making a small improvement to the ArcRod. I have a good reason for doing it, if I'm not mistaken. Then some renames, possibly improving things.
(Oct 10, 2025)
The upcoming component needs DESIGN. I hate when that happens. Let's talk about this. Something special happens!
(Oct 9, 2025)
I thought I might have done something, well, pretty silly. That particular concern turns out not to be the case.
(Oct 7, 2025)
Offline, I improved the Linkage collection rather nicely. Now we need a bit more improvement. Seems to be a pattern.
(Oct 6, 2025)
Am I losing my edge, if I ever had an edge? I realized something interesting about the evolving design. I decide my edge is no more dull than usual.
(Oct 5, 2025)
During my morning prep for being found alive again, I recognized an issue with my lovely new scheme. How troubling is it?
(Oct 3, 2025)
We need lots of small steps to unwind the previous design while moving toward the scheme of doing everything without reference to parent. It goes ... OK.
(Oct 3, 2025)
Moving toward everything running on `start` / `finish`, I think we need a place to stand. And not on a wheel. HOWEVER: Plan Dashed Immediately.
(Oct 1, 2025)
We reviewed the linkage program a bit at FGNO on Tuesday night. Some thoughts arose. My big lesson: Shut up and listen.
(Sep 30, 2025)
One nice thing about gentle refactoring is that often we get ideas for how to make things better. Today ...
(Sep 30, 2025)
One nice thing about gentle refactoring is that often we get ideas for how to make things better. Today ...
(Sep 29, 2025)
Let's carry on with changing the API of these classes. Where were we?
(Sep 29, 2025)
Let's see what else we can improve in our four existing components. I can name some things that I'd like to improve.
(Sep 28, 2025)
With four components in place, let's look at the code and see how it can be improved.
(Sep 27, 2025)
Let's do a simple piston this morning. I am hopeful that it'll be easy.
(Sep 26, 2025)
I'm very confident that our connecting rod is working properly. The code could use a little improvement.
(Sep 25, 2025)
Presumably, I "just" have to plug this function into a class and I should be good to go. We'll see. (Hmm, seems to have gone smoothly. What am I missing?)
(Sep 23, 2025)
One might think that what just happened was bad. In fact, I was recently reminded that it was quite normal.
(Sep 22, 2025)
In which, your intrepid author parameterizes a test. P.S. But not enough! But a quick patch saves me.
(Sep 22, 2025)
Time to start on the rotation part of this idea.
(Sep 21, 2025)
Let's keep inching forward, supported by careful tests. I want to get this thing right.
(Sep 19, 2025)
This is why I drew the pictures, but I am still Very Disappointed to find defects in my ConRod. Further disappointment follows.
(Sep 18, 2025)
I'm psyched to add another linkage component, but there are some issues in the code that could use improvement. What should we do?
(Apr 3, 2025)
Despite success coming up to speed on sockets, I'm not having fun. What to do? Resist fascism!
(Apr 2, 2025)
I think the bowling nerd sniping virus has worn off, so I suppose I have to look at the Robot World socket stuff again. Here's how I learn code I'm not familiar with. Resist fascism!
(Apr 1, 2025)
Let's take a quick look at our bowling scoring state machine. Just because. We find some nice improvements in this 'done' program. Also: Resist fascism, and take care of one another!
(Mar 31, 2025)
Duplication removal FTW. Also: Resist fascism, and take care of one another!
(Mar 31, 2025)
We're going to do the marks yet again! Why do I do this? And: a digression on "AI", and a very nice refactoring sequence. Also: Resist fascism, and take care of one another!
(Mar 30, 2025)
I think today we can do some work on the 'marks'. Also: Resist fascism, and take care of one another!
(Mar 29, 2025)
The One Machine to Rule Them All is going well. Today let's test total score and the small box values, if we get that far. Also: Resist fascism, and take care of one another!
(Mar 28, 2025)
... to rule them all. I thought this was too hard Now I think it's just right. Which is it? [Man bites bear!] Also: Resist fascism, and take care of one another!
(Mar 27, 2025)
I've been thinking about the second roll and I think I have a plan. Also: Resist fascism, and take care of one another!
(Mar 26, 2025)
FGNO discussion and yesterday's interruption cause me to start over. It's going well. Also: Resist fascism, and take care of one another!
(Mar 25, 2025)
Yes, actually. I've thought of a way to solve bowling scoring that is unlike any way I've done it before. Gotta try it. Sudden stop, see next article. Also: Resist fascism, and take care of one another.
(Mar 24, 2025)
I don't like the match-case code for the small boxes, although it works. The code that I had before was more likeable but incorrect in some details. What shall I do? I like today's result! Also: Resist fascism, and take care of one another.
(Mar 23, 2025)
Match-case for 10th frame seems too tricky. A state machine idea is gumption-trapped by a dash where there should be an underbar. Also: Resist fascism, and take care of one another.
(Mar 22, 2025)
I do not like the code that fills the small boxes. I have the time, and I'm going to keep trying. We get some good results. Not done yet. Also: Resist fascism, and take care of one another.
(Mar 21, 2025)
Scoring details aren't quite right. Long, tedious, more correct results, but I don't like the code much. Bear got a taste of me. Also: Resist fascism, and take care of one another.
(Mar 20, 2025)
I have a few moments at the code face, and see a couple of possible improvements. Also: Resist fascism, and take care of one another.
(Mar 20, 2025)
Musing on the process of making messy code habitable. Yes, refactoring has risks. So has messy code. Also: Resist fascism, and take care of one another.
(Mar 19, 2025)
Last night was FGNO. We spoke at length about this simple exercise. Herewith, some observations. Chet's blackmail plan thwarted. Also: Resist fascism, and take care of one another.
(Mar 18, 2025)
I can squeeze in one more session before tonight's demo. Can I add in two features and improve the code? Also: Resist fascism, and take care of one another.
(Mar 18, 2025)
Tonight is demo night. I need to be ready. We learn why we should never hurry: The Demo Is A Lie! Also: Resist fascism, and take care of one another.
(Mar 17, 2025)
An imaginary chat with my imaginary customer tells us what our next few steps need to do. Also: Resist fascism, and take care of one another.
(Mar 16, 2025)
Our weekly meeting last week spawned a new twist on an old problem: bowling. Also: Love one another.
(Mar 14, 2025)
Let's look at what we have, see how it can be improved, and decide what's next. Some nice refactoring. Also: Love one another.
(Mar 13, 2025)
Let's use the message length to decide when to respond. I think we can make this happen. Also: Love one another.
(Mar 13, 2025)
I'm glad I decided to take a break, because I have some smaller steps in mind today that I didn't have yesterday. Also: Love one another.
(Mar 12, 2025)
I've decided to start from a simple server from Real Python, and to evolve to something that makes sense to me. I have high hopes for this approach. Also: Love one another.
(Mar 10, 2025)
I'm inching toward a World server that I can drive from Python, Forth, or any language. Why is this taking so long? Also: Love one another.
(Mar 5, 2025)
We have a little game loop running, and it gets keyboard lines and echos them. Should we integrate something into the loop? If so, what? Also: Love one another.
(Mar 5, 2025)
I added quite a few words, and found some issues. But we also need some big features. How shall we proceed? Also: Love one another.
(Mar 4, 2025)
Our little typing spike leads me to some design thinking. Spikes often unblock the thought paths, and that happens today. Also a few lines of code and a much improved 'UI'. #StopTheCoup!
(Mar 3, 2025)
OK, I'll do the PyGame text pane. It seems to be the simplest thing that could possibly work Unfortunately, it's more than one small step. #StopTheCoup!
(Mar 2, 2025)
I know what I would like to accomplish next. If there's a way to do it, I can't find it. I need help, or a change in direction, or both. #StopTheCoup!
(Feb 28, 2025)
I feel that I've shown that I can program A Forth, but I don't really know how to program IN Forth. Time to begin to learn. #StopTheCoup!
(Feb 27, 2025)
#StopTheCoup! We need a FileProvider to feed us tokens from files. And we need file names, I suppose ...
(Feb 26, 2025)
#StopTheCoup! Let's go after those skipped tests. I think they just need recasting. All goes pretty well!
(Feb 26, 2025)
#StopTheCoup! We're working toward an INCLUDE word to read Forth from a file, where we'd save the definitions for whatever app we're writing. I think we need an inversion of control.
(Feb 25, 2025)
#StopTheCoup! Some thoughts on using compiled words for things like looping. Our next priority is loading definitions from files. How might we do that?
(Feb 24, 2025)
#ElonaldDelendaEst! Let's review the conditionals and looping. Let's think about what seems to happen when we do as we do. Let's think about more Forth and less Python.
(Feb 23, 2025)
#ElonaldDelendaEst! One pair of looping words is now using our new CompileInfo compile stack protocol. There is one more looping construct that needs attention. We create and remove duplication, making the program simpler.
(Feb 22, 2025)
#ElonaldDelendaEst! Applying 0BR, BR, and the new CompileInfo protocol in conditionals has resulted in simpler and more consistent code. Let's take a look at loops. BEGIN-UNTIL goes nicely. Just one small misstep.
(Feb 21, 2025)
#ElonaldDelendaEst! How do we add simplicity? By removing duplication and redundancy, and occasionally by generalizing specifics. Sometimes it takes a few tries.
(Feb 21, 2025)
#ElonaldDelendaEst! Now that CASE is stable, let's use what we learned elsewhere. I think we'll simplify things a bit.
(Feb 20, 2025)
#ElonaldDelendaEst! I test some CASE results. Looks good!
(Feb 20, 2025)
#ElonaldDelendaEst! Continuing the implementation of CASE-ENDCASE. I think we need to do the case-sys, collect the branch points, and fill them in. I believe we have nearly-right mechanisms in OF-ENDOF, and we'll use those and make them more right.
(Feb 19, 2025)
Our CASE-ENDCASE only needs its branches hooked up to work, I believe. I'd like to find a simple test for the actual branching words.
(Feb 18, 2025)
A few words with GeePaw lead me to envision an even simpler Collator. Let's see. (Very smooth refactoring to a different, possibly better version.)
(Feb 17, 2025)
It turns out that a bit more study would have shown me that I already did a trivial Sys object and put it in play. Let's normalize that and then move a bit forward. A small surprise, and a bit of improvement.
(Feb 17, 2025)
If I recall correctly, it's time to start patching branch locations in CASE. Let's see how we might do that. We get a really nice start, despite nearly a week of forgetting everything we knew.
(Feb 16, 2025)
It is a fundamental premise of my work that we can (nearly?) always refactor from a design that no longer serves to one that is better. Can I refactor from my previous OK Collator design to yesterday's most excellent one? Let's find out.
(Feb 15, 2025)
Third time's a charm, they say. New idea feels very good. Woot! It is!
(Feb 14, 2025)
Just a few small refinements, because I was sitting here anyway.
(Feb 14, 2025)
The new Collator seems very nice by my standards. Let's make it even better. 🎉 🎊 🍾 🥂
(Feb 13, 2025)
Yesterday's "diversion" wasn't a debacle, quite. The code solution is OK, but the development process not so much. Let's try again. Outcome: Redeemed! This is up to my standards!
(Feb 12, 2025)
Continuing Diversion. It's working. I am not proud of what it is nor of what I've done. We can improve what it is.
(Feb 12, 2025)
Continuing Diversion. It's just too long!
(Feb 12, 2025)
GeePaw Hill has proposed a little problem, and he'd like to see how some of us solve it. Here we go! Outcome: I get a nice solution, much as I imagined, but my process was quite poor. Weird.
(Feb 11, 2025)
I'm going to try some further work on CASE, keeping it simple. Just pushing it forward a bit, if I can. I think we get a nice increment. Odd approach to testing.
(Feb 11, 2025)
Today I plan to actually begin the coding of the CASE-Of-ENDOF-ENDCASE phrases. And I have a glimmer of a better way to do it. Will the glimmer become light ... or darkness? Wisely, for once, I stop while I'm ahead.
(Feb 10, 2025)
Let's start thinking about CASE-ENDCASE. Thinking seems important right about now.
(Feb 10, 2025)
Reader Laurent points out a problem. I was going to fix it today, by accident. Let's do it on purpose. And maybe we can get down to cases.
(Feb 8, 2025)
I'm not sure what to do next. I'll reflect on some ideas exchanged with GeePaw Hill and then pick something, probably something easy.
(Feb 7, 2025)
I'll begin the morning with a bit of 'design thinking' about how we might interface our Forth to a bunch of robots. During that we find and fix a bug! Er, defect.
(Feb 6, 2025)
I have a little time. Let's see what we can do. Many tiny changes produce improved code. Who knew? (We did!)
(Feb 6, 2025)
It is literally oh-dark-thirty, and I am awake. Time to work on Forth. Is there a larger lesson? Yes, I think so. Things go well!
(Feb 5, 2025)
FGNO observations suggest a radical change to my 'Forth' spec, which should improve the supporting design. We FAFO a bit. Looks good. No great strides.
(Feb 4, 2025)
I have at least two more things to do before this thing is even good for its initial purpose. And I have what I think might be an interesting idea. Kind of a ragged morning.
(Feb 1, 2025)
I think yesterday's experiment with a pure interpreter has told us enough to decide not to do it. We'll discuss that, what it implies about experiments, and then look at next steps. Result: We have REPL!
(Jan 31, 2025)
I did an evil thing last night. It is tempting me toward a hard right turn. Must think about this. After too long, I realize that I was distracted by the shiny thing and didn't see its fangs.
(Jan 30, 2025)
Yesterday's pleasant discovery suggests that reducing our two word classes to one should be easy. Then, if it works as I expect, we'll talk about woulda coulda shoulda.
(Jan 29, 2025)
I'm interested in reducing my two classes, Primary and SecondaryWord to a single object that will feel more like a classical Forth word. This will require some thinking and doubtless some experimentation. Result: I am pleasantly gobsmacked!
(Jan 28, 2025)
At this writing I lack a feeling of direction. I'll muse briefly on the causes of that feeling, then try to find something interesting to do. We explore, change a few things, get a few ideas, then wander off. Pride in our work.
(Jan 27, 2025)
I've been busy programming in another universe, and fretting on this one's decline. It's time to get back into this Forth diversion from the Robot World, itself a diversion from something or other. Brief reflection on the olden days.
(Jan 14, 2025)
A followup to yesterday's article 'Why does this work?', with questions and answers and some references to folks from whom I have learned.
(Jan 13, 2025)
A reader wonders why I seem never to dig a hole I can't readily get out of. It is curious, isn't it? If this article raises questions for you, please ask them! (More in subsequent article.)
(Jan 12, 2025)
Well, our creation of Heap yesterday went smoothly, but it was all we did. Let's review the Forth code a bit more and see what it might be wishing for.
(Jan 11, 2025)
Now that CREATE-DOES> works, and I am reasonably confident that I have it right, let's review the code and check out the concerns left open last time. A perfect morning. (Added: P.S.
(Jan 10, 2025)
This time it's going to work, I'm sure of it. I promise not to change the title, or the blurb up to the next period if it doesn't. (Results: As predicted! Out of the park! Yay, team!)
(Jan 9, 2025)
I come before you today armed with information, if not knowledge. We'll try some small steps toward what I think I somewhat understand.
(Jan 8, 2025)
I fully expect to fail this morning: I don't see how to do what I need to do. I'll try to fail in a way that sets me up for a win sometime soon. Result: Bah!
(Jan 7, 2025)
I just deleted this morning's entire article. On purpose. Here's why.
(Jan 6, 2025)
I think we'll do variables and constants today. I also feel a pivot coming on. Unless I'm just hungry.
(Jan 5, 2025)
Interesting though compiled immediate words might be, I decide that variables are more important. I experiment with a somewhat smart heap and then, suddenly, realize how much we can do with a very rudimentary heap. I think we're onto something good!
(Jan 4, 2025)
If we're to be able to define compiler words with colon definitions, we'll need better access to the word under construction. I see options, vaguely. And I need information. Design musing here, little more. TL;DR may apply. We have an amazing interlude. We end with a Dangerously Clever Idea.
(Jan 3, 2025)
After this morning's somewhat lackluster performance, I do a bit of off-line refactoring and now I think we'll do a Lexicon. Can't hurt, might help.
(Jan 3, 2025)
There's refactoring to be done, including, possibly, some Big Changes. What shall we do? How shall we proceed? (Results: Two small steps; much confusion.)
(Jan 2, 2025)
My "friends" have well and truly nerd-sniped me. We're going to digress to look at Forth's tiny primitives that can be used to build words like IF-ELSE-THEN and such. Spoiler: A lot of thinking, and then a tiny but significant SUCCESS!
(Jan 1, 2025)
I've come up with an interesting possibility for reducing method clutter. Let's see what we think. (We think we like it!)
(Jan 1, 2025)
And so, Forth. Here chez Ron, it's another morning with Python and Forth. Some new year wishes within. Read on. (Spoiler: As often happens, things do not unfold as I anticipated. No worries.)
(Dec 31, 2024)
Unless I am mistaken, which is often the case, this morning's refactoring is going to be fine, F-I-N-E FINE. And I do not mean the meme, I mean really fine.
(Dec 30, 2024)
I think our little Forth is working as so far intended. Let's improve the code. Some thought on the original Forth(s).
(Dec 29, 2024)
I think I see, vaguely, what needs to be done to get our Forth to accept any Forth string and execute it. I am hopeful, if not entirely confident. Spoiler: It works!!!
(Dec 28, 2024)
We need to change our little Forth so that it can 'compile' and execute any Forth code, not just compile definitions. I'm expecting trouble and will regroup in that case. Results: I do a little refactoring and decide to regroup.
(Dec 27, 2024)
I think I'll invent the famous Forth return stack and use it to create a new looping kind of thing. Curiously that's almost exactly what actually happens. I even do R> and >R, and then don't use them.
(Dec 27, 2024)
Some Forth planning, and then, I write a POWER word that is hard to understand, and that could have been a trivial primary. Plus Forth comments, because POWER really needs them.
(Dec 26, 2024)
Today is my birthday. To celebrate, I think we'll implement DO-UNTIL.
(Dec 25, 2024)
Today, before the celebration begins, we'll do ELSE. Then we refactor the code. It takes me three tries to get code that I like. Long article, mostly just pasted and re-pasted code with small changes. Unwrap when ready, if you celebrate in a truly odd fashion by reading this.
(Dec 24, 2024)
With any luck, we'll do THEN today, which will make IF-THEN work. But first, some feedback led me to a very interesting site.
(Dec 23, 2024)
OK, after those nice improvements, let's get started on IF-THEN. Really. We complete *IF with a few lines of code.
(Dec 23, 2024)
Today I believe we'll actually get IF-THEN working. But first, I want to mention an odd thinking mistake that I made. (Result: Good changes, no work on IF. Yet.)
(Dec 22, 2024)
I haven't forgotten about IF. It's just that tests would be a lot easier if I had literal numbers. This goes really well.
(Dec 21, 2024)
The main story is still IF. Ron has what may be a good idea. We'll divert for literals. Lots of thinking written down here. A bit of code; a bit of success.
(Dec 20, 2024)
Ready for the next step in implementing IF-THEN. Is this a debacle, or a successful spike? Very long. Somewhat confused.
(Dec 19, 2024)
Our next story is IF-THEN. How might we do this pair of Words? Triple, if you count ELSE.
(Dec 19, 2024)
I've made some improvements. And I have a concern. Longish article, probably a quick read.
(Dec 18, 2024)
I read about how IF works according to Loeliger. Weird. How should we do it?
(Dec 17, 2024)
We need many things in our little Forth thing. Let's try to get clear on what we're doing here, and what we're not. Bad forth code slows me down. But we're doing OK.
(Dec 16, 2024)
Our first experiments went well. Let's start an implementation that's more like the kind of code we like to write. [Result: I am delighted!] (Also lambdas!)
(Dec 15, 2024)
A bit of reading and thinking is beginning to give me a sense of direction. Let's talk about it, and maybe implement a little something. This is how I work: read, think, code, rinse, repeat.
(Dec 14, 2024)
With a little help from my friends, I begin to reach some clarity on what this idea is and is not, and on why Forth has a 'compiler'. HYPOTENUSE! Gesundheit!
(Dec 13, 2024)
Still very early days for the Forth idea. I'll report on what I've been reading, muse a bit, perhaps try some code, if I can think of anything I want to learn. Progress!
(Dec 12, 2024)
I'm going to take a hard right turn and see about giving the game a 'scripting language'. I am proposing a Forth dialect. This could get weird. (Oops, it's Forth not FORTH. Sorry, Chuck.)
(Dec 10, 2024)
It would be nice if we didn't have to duplicate message strings in the code and tests. We're not going to internationalize, but something better than copying the strings would be good.
(Dec 9, 2024)
There is something I truly dislike about the current request protocol. Speaking of messages, should they be better organized? (Yes)
(Dec 8, 2024)
Let's review our new action handling and see what needs improvement. We rename around a dozen or fewer things. Was it worth it? Toot me up and tell me.
(Dec 7, 2024)
Why do I do this? Joy, pure and simple. The sheer pleasure of doing something well, or at least better. Long article, but should be mostly scannable. We begin and end wishing you joy.
(Dec 6, 2024)
Let's try that possibly better idea. I think we can do it step by step, in a strangler kind of style. I think it's going to work out!
(Dec 6, 2024)
After yesterday's debacle minor hiccup, let's continue to do a bit of error handling. We do some good stuff and perhaps have a better idea.
(Dec 5, 2024)
I was just going to make a small change, and tests are failing. How did this happen?
(Dec 5, 2024)
How much does the way I work apply to Real Work? What is the future of the Bots World? And let's improve the messages a bit.
(Dec 4, 2024)
I'm still slightly troubled by the `messages` and `used_ids` attributes of World. Is Method Object our solution? Or is this already a Method Object? Hey! This stuff actually works!
(Dec 3, 2024)
I think I see a better way to express the World's handling of actions. Let's find out if I'm right.
(Dec 2, 2024)
We'll start with some more error handling. Where we'll go, no one knows.
(Dec 1, 2024)
"I am the cat who codes by himself, and all mornings are alike to me." Mostly, anyway. Well, similar.
(Nov 30, 2024)
We'll take a look at some small changes to improve the World class. If only we could refactor the Real World so easily. Maybe we can?
(Nov 29, 2024)
We'll continue on our quest to do better Python. Today, we will try a match/case using a dictionary. It might make for better parsing of the tiny language that Bots and World share.
(Nov 28, 2024)
I've had an uneasy feeling about the project. A kind reader suggested a book. The book suggests what my concern should be. In a long article I express concerns ... and alleviate them a bit!
(Nov 27, 2024)
Bot's behavior is pretty cohesive now. But its member variables vary variously. Should we improve that? Once again we almost work on that ... and then something else comes up.
(Nov 26, 2024)
Bot is not as cohesive as it could be. I plan to change it. To make the change easy, a lot of small steps remove about 40 percent of the class. Nice, but it did make the article kind of long.
(Nov 25, 2024)
We set out to do a little code review, maybe some light refactoring. We get a surprise, thinking something is broken. It isn't. We learn descriptors a bit better. We discover questionable code, no surprise there. We improve. We see more for next time. Standard day in every way.
(Nov 23, 2024)
Having abandoned the decorator thread for now, I propose to test-drive a forwarding mechanism based on descriptors. It goes quite nicely.
(Nov 22, 2024)
I found a very strong series of articles about Decorators. They make a good case that I'm doing them wrong. What do we think about that? We change direction.
(Nov 21, 2024)
The next step with Python decorators is a class-based decorator. As usual I'll take a quick look at things on the Web and then go my own way. Results are 'interesting': I need more reading, and what I've learned is captured in a test.
(Nov 20, 2024)
I'd like to learn a bit more about creating class decorators, using decorator classes. We'll write some more tests, and perhaps find some additional useful references. Fun! Learned something!
(Nov 19, 2024)
The votes are still out regarding whether my `__getattr__` forwarding is too clever or not. This morning, I'll at least do a little learning about class decorators in Python. Language Preferences. Fun. Trouble. Learning styles.
(Nov 18, 2024)
Something about the Bot class bugs me. Python must have a good way to do this. (We find a way. Is it good?)
(Nov 17, 2024)
Today we'll address the need to provide details for Bots to be created. We'll use a callback: it seems sensible to me.
(Nov 16, 2024)
What shall we do today, Brain? Same as every day, Pinkie. Try to improve the world.
(Nov 15, 2024)
We'll look at the list of things to work on, but yesterday's experience has sort of set me back on my heels.
(Nov 14, 2024)
The top of our list needs attention. A small concern leads to much better code. Ron talks himself out of something. Comments are clues.
(Nov 13, 2024)
We'll check our list again, to see what might be fun to do. I did get a glimmer of an idea that I'd like to explore.
(Nov 12, 2024)
We'll review our list and pick some steps toward our overall goals. We might even remind ourselves what those goals are. Or we might trust that we'll find our way.
(Nov 11, 2024)
We'll pick a next chunk of our new message format and put in in place. Will we get clear to the end? Probably not yet. Also: Pyto on the iPad.
(Nov 10, 2024)
Before taking our new message format forward, let's think about how we almost missed the improvement. "It's dangerous to go alone. Take this."
(Nov 9, 2024)
A wild idea has appeared! This one's so nice I rolled out of bed early to work on it.
(Nov 8, 2024)
Our message format between Bot and World is a naked JSON structure. That makes sense for messaging, but I don't like it for processing. I have an idea that I think will help.
(Nov 7, 2024)
The present state of the code leads me to think about its evolution, and in particular, whether evolving it as I did led to substantial 'wastage' in code or tests. The answer may not surprise you!
(Nov 6, 2024)
To entertain myself, I coded a new RequestBuilder object, much like the InputBuilder, but building a dictionary-list composite like the requests expect. Results were good. Herewith, my report, not contemporaneous.
(Nov 6, 2024)
Setting out to review the code, I discover my old InputBuilder experiment. I go one way then, the other, then back. An actual revert of a commit. No new code, but some useful thinking.
(Nov 6, 2024)
How can I possibly think and write about programming today? How can I possibly allow myself to think about anything else? More toward client-server.
(Nov 5, 2024)
The reason for setting myself this public 2X20 challenge isn't so that I can be embarrassed in front of everyone. It's because I need more practice on small steps. The downside of thinking one is particularly smart. Results: Good, but by the skin of my teeth.
(Nov 4, 2024)
I've challenged myself to work in small steps, supported by tests, integrating new code as soon as I can manage it. I think I see a path. Spoiler: Works very nicely! Lesson: Need less tension, not more!
(Nov 3, 2024)
Some thoughts on choosing small steps. I think it's always possible. Is it always the right way to go? I issue a challenge to myself.
(Nov 2, 2024)
Not a high school, no, just getting ready for client/server in our World. Much design thinking, just a bit of code, a small step in what seems like a decent direction.
(Nov 1, 2024)
I've learned a bit about C/S. Should we apply it to our Robot World? It's about Joy, dammit!
(Oct 31, 2024)
OK, I promised to test reading, and I'm gonna do it. I sort of have a plan.
(Oct 30, 2024)
I am questioning whether I need all this rigmarole, and whether I owe you some further testing of this "legacy" overly complicated Message Class. Just thinking today, code browsing, no changes.
(Oct 29, 2024)
Working to get this tutorial under test, we do a simple refactoring, so that we can test something in isolation. Trivial in this case, but a useful technique worth remembering and practicing. A wild rabbit appears!
(Oct 28, 2024)
A first quick start at some tests may help me get off the dime here. Can I trick myself?
(Oct 28, 2024)
I've reviewed the full app server example from RealPython. Rather than just run it here and work through the details of its operation, I want to get it under test. This promises to be ... interesting.
(Oct 26, 2024)
A brief report on study and what I learned, then a look at the server side. Where is the bright side? I'd like to look at that sometimes.
(Oct 25, 2024)
Today I plan to try to run and understand the second example in the RealPython tutorial. See how an old man learns about unfamiliar code.
(Oct 24, 2024)
It's time to bite the bullet, lightly, and do some real client-server experimentation. I started last night, on my iPad. Aside from that and a bit of reading, I am entirely ignorant about sockets. Let's fix that a bit.
(Oct 23, 2024)
I believe that the client-side code includes a Block class. I further believe that we have no use for it. Even further, I suspect there are tests that use it, which should not. Let's sort this out. Simple changes, nothing to see here. Refactoring works.
(Oct 22, 2024)
It almost seems like I can't work on the code unless I'm typing an article. I guess I just don't want you to miss anything interesting that might happen. No promises, mind you.
(Oct 21, 2024)
I said I'd spare you the tedium of improving the tests, but you deserve to see what kind of improvements I'm making. I do not know what sins make you deserving of that, but you can examine your own consciences.
(Oct 21, 2024)
The Knowledge class and its usage have something to teach us, I think. There are issues here that aren't uncommon. Perhaps some changes will spark ideas. Theme: battling entropy, battling chaos.
(Oct 20, 2024)
We'll take a look at the NewKnowledge prototype, but I think I'm going to go with it. No one here to talk me out of it, and I think the result will be much less cluttered. TL;DR: Not worth it. Fun, though.
(Oct 19, 2024)
I have an idea for that Knowledge class. Let's see if it Just Might Work.`
(Oct 18, 2024)
Let's take a look at the code today, looking for things that do 'spark joy' and things that don't. Intuition. Pattern recognition. Joy.
(Oct 17, 2024)
We should try to get our new WorldInput stuff into play pretty soon. But let's look around and see what comes to mind.
(Oct 17, 2024)
I want to discuss something that GeePaw and I were talking about: sloppy code. My sloppy code.
(Oct 15, 2024)
Let's see what additional tests and capability we need in our new little batch mode objects. What were yesterday's notions?
(Oct 14, 2024)
In client-server mode, I believe that the program will want to accept a batch of commands from a client, process them all, and return a batch result. We'll discuss briefly why, and then see about doing that.
(Oct 11, 2024)
Still on the quest of separating server things from client things, in small steps. I think we're down to just one issue, the item a Bot might be holding. We discuss refactoring vs rewriting.
(Oct 10, 2024)
OK, I forgot that World references Block class. That's why we read the code before estimating, if we must estimate. Let's break that connection. Result: small progress, but Bear Bites Man.
(Oct 9, 2024)
The demo went well. Someone spotted a dangling thread of connection between server and client. Let's fix that.
(Oct 8, 2024)
It's Tuesday, so tonight is Friday Geeks Night Out. I want to demo something new. Can I get it ready this morning? Surprisingly, yes I can!
(Oct 7, 2024)
The WorldEntity only supports Bots so far. It needs to support Blocks, and whatever other items our world might one day contain. We need a type designation. We run into just a bit of trouble. Long article, nothing to see here.
(Oct 6, 2024)
We consider things to do, pick what seems most urgent, deal with it. We have a decent discussion of estimation, planning, how to know if you're slowing down, and what to do if you are.
(Oct 5, 2024)
I'm really sure we'll get the WorldEntity at least built and tested, and very likely put into play. Or my name's not Bonzo Calrissian. A long road but a simple one. One skipped test and had to update the demo.
(Oct 4, 2024)
Armed with a bit less ignorance we'll try to create and use a new world-side entity. I have ... ideas. Result: This is why story estimation is so fraught.
(Oct 3, 2024)
No, not the fish. An idea about flavors of Blocks. Exploration, Spike, Rollback. Just fine.
(Oct 2, 2024)
We've had good luck with `take` and `drop`. Let's see if Map would like to help World with the `step` method. Some nice improvements ... and a GitGlitch.
(Oct 1, 2024)
In writing, folx refer to Plotters, who plan out the story in advance, and Pantsers, who "fly by the seat of their pants". Which am I? Which are you?
(Sep 30, 2024)
We are told that Colin Chapman used to say "Simplify, then add lightness". Can we do that today?
(Sep 29, 2024)
We have one known thing to work on. Some things to put on the list. And let's see what the code wants.
(Sep 28, 2024)
With World using a separate Bot instance, separate from the ones we use on our nascent client side, we can start making some simplifications. Let's look around. Results mostly good but not all good. Rat hole.
(Sep 27, 2024)
Woot! I believe we have a complete disconnection between the client bot and the world. The world is running its own bot and I'm sure we have no cross-talk. I provide some general observations about this long refactoring, and its general implications.
(Sep 27, 2024)
I do manage to make an important change this morning, but I had hoped for much more. Progress is really quite good but I had fireworks in mind, not just sparklers.
(Sep 26, 2024)
Let's move further toward separating the World side from the Bot side. There are options and issues.
(Sep 24, 2024)
GeePaw and I addressed a serious design error. I think we wound up in a decent place. Today will tell.
(Sep 23, 2024)
Experience, thinking, and a few words with GeePaw suggest some moves. I try some things, roll back, but think we're on a decent path.
(Sep 22, 2024)
Based on a few days' experimentation, lots of thinking, and some messages with GeePaw, I have a tentative plan for moving closer to client-server style. Things go nicely!
(Sep 21, 2024)
We try a mad idea. We discover things. We despair. We assess where we are. We get another idea that's not so good. We roll back. We refactor just the least bit. We do a tiny JSON test. The idea becomes useful. We criticize the code. We devise a plan. Wow.
(Sep 20, 2024)
Continuing changes toward client-server. We'll discuss my lack of a real plan. We'll discuss why what I want to begin on today is particularly irritating. Much thinking, little code. As it should be.
(Sep 19, 2024)
This morning, without any direct Python network communications experience, I plan to start pushing the bot world code toward client-server. Along the way, I'm going to think about what GeePaw Hill means by a Making App. We do make a small but nice bit of progress.
(Sep 18, 2024)
Last night, we shared some observations about the code. We shared some observations about how we pair. We even did a bit of nice work.
(Sep 17, 2024)
We have adjusted `can_drop` to check scent. Let's do `can_take`. Should be much the same. I'll force myself to test this one-line change.
(Sep 16, 2024)
I have a bit of time, and I'm going back in.
(Sep 16, 2024)
My demon-dispelling thoughts this morning turned up what I think is a very nice-smelling idea. I must try it.
(Sep 15, 2024)
I do like the result of my changes to the state machine. I didn't always feel good getting from there to here. Let's see what I might possibly have done better. My conclusion surprises me.
(Sep 15, 2024)
We begin to look back at the evolution of the Bots' state machine. In this article we'll quickly review the three ways we have represented the Bot state. In the next, we'll look at the process of getting from there to here.
(Sep 14, 2024)
This morning, tests for the final state class, Walking, then create the class and plug it in. Then, time permitting, I think we can simplify things a bit. And wow, can we! Early bird, meet worm. Used "rip-roarin'" in a sentence.
(Sep 13, 2024)
I plan to start with some direct tests for the state classes. I think that will be interesting. And I'm expecting to use a Test Double, which is quite rare hereabouts. Plus: Amazing Grace.
(Sep 12, 2024)
This morning, I plan to start moving more directly toward one class per state. I'll be borrowing an idea from GeePaw Hill. Any mistakes in what follows are his and his alone.
(Sep 11, 2024)
I'm going to continue with Knowledge and see about pushing it into the Machine. Should be pretty easy. (Spoiler: NEVER SAY THAT!)
(Sep 11, 2024)
Our little Bot just shouldn't be this complicated. It's not getting better. Time to regroup and change course.
(Sep 10, 2024)
Explaining the situation to you helps. Then I pick a good first step. The rest is history: Long article, small steps, excellent outcome. Good job, rubber duckie!
(Sep 9, 2024)
I promised to improve the state machine tests. I guess I'd better do that. There's probably some good news in there. I learn to listen to myself.
(Sep 8, 2024)
Alone again, naturally, as the song says. I propose to convert to a more robust form of state machine this morning. Results cheer me up a bit, sorely needed.
(Sep 7, 2024)
I propose to make some changes that I think make sense and that my cohort will not disagree with much, if at all, despite not sharing my concern. As GeePaw put it last night, f[ool] around and find out.
(Sep 6, 2024)
I want to try an idea that I have about the client-server aspect of our little program. ... wanders off mumbling ...
(Sep 5, 2024)
We have been ignoring the requirement that this must be a multi-client one-server program. We have done nothing about that, on purpose. I think we need a bit more thinking, if not doing, on the subject.
(Sep 4, 2024)
Bryan comes up with a perfect term for what we're trying to do. We simplify one bit, improve another, must about others.
(Sep 3, 2024)
I think I'm on my own this morning. Maybe I should just open my Zoom to the public. Anyway, today let's just scan the code and see what we can see and why we see it. Maybe even do something about it.
(Sep 2, 2024)
The famous GeePaw Hill plans to join me this morning, at some point. Until that joyous time, I'll think about things we might do. We do two good things and are faced with an unknown. Note: one more thing added.
(Aug 31, 2024)
I'm planning to pair with GeePaw this morning. I have some improvements in mind, and will start on those before pairing time. We gather stones together. Well past time, you ask me.
(Aug 30, 2024)
This morning, up at 0650 for some reason, I think I'll push a bit on the "vision" idea. GeePaw arrives and helps out.
(Aug 29, 2024)
I think I'm on my own today. Feeling kind of lonely. I'll see what I can figure out.
(Aug 27, 2024)
Woke up at 3 AM with an idea. Going to work on it. I have opened my zoom in case anyone else on the team wakes up. Pairing, as always, is tricky but rewarding.
(Aug 26, 2024)
I've opened my pairing zoom at 0640, hoping Bryan was planning to be up. Perhaps he'll turn up. Meanwhile I'll try to spike something useful.
(Aug 25, 2024)
It's 0645 on Sunday. Bryan shows up as I'm summarizing status, and we get a really nice effect with some truly simple code.
(Aug 24, 2024)
We simplify two classes by adding just a bit of capability to another. Still wondering how to write articles after the fact.
(Aug 22, 2024)
Some pairing has been taking place, without contemporaneous writing. I will explain what we have. No, it is too much. I will sum up. Includes remarks on working without a net specification.
(Aug 19, 2024)
An attempt at refining the concept of this multifarious idea we're hatching.
(Aug 17, 2024)
A tiny experiment in Python on my iPad has inspired me to try a spike this morning.
(Aug 16, 2024)
We've agreed not to cater to client-server at all, to the degree we can manage it. As a first start, we've removed the World-Client variant classes and will simply be working with Biots sending messages to the World, and the World sending messages back. We'll see how that goes. I have one concern. Well, one that I care to mention.
(Aug 16, 2024)
We made some progress yesterday, and I'll report on that. Before today's meeting, I am a bit confused about what we should do next. I get a truly scary idea.
(Aug 14, 2024)
Secretly, Bryan and I are starting work on 'Biot World', a start at the joint project our Slack has been talking about.
(Aug 14, 2024)
Another quick look for something needing improvement.
(Aug 13, 2024)
Let's see what else might use a little improvement.
(Aug 12, 2024)
Still looking at that 20 line class. Yes, I think it needs improvement. Am I serious? I think I am.
(Aug 12, 2024)
I think we're nearly done with Sudoku at least for now. Let's look at the code and see what we can say about it. We find an issue in the first 20 lines. Wow.
(Aug 11, 2024)
After a review of notes, we move component looping from one class to another, in seven very smooth moves. I forgot to commit two of them, but it was still quite smooth.
(Aug 10, 2024)
Let's review our notes and see what to do next. Is there a way to wrap this up semi-neatly? Quasi-neatly? Not yet, but progress is good.
(Aug 6, 2024)
I believe that our naked and hidden pairs code was reporting that it had changed things when it had not. That would be bad. Let's see about doing it better.
(Aug 5, 2024)
Before we plug in the new Techniques, let's work on the 'Making App' with a very small Logger. Very mediocre results this morning. Meh.
(Aug 4, 2024)
Let's review our list and see what needs work. I want to try super tiny steps today, just as a matter of practice. (cf. Charles Beaudelaire)
(Aug 2, 2024)
We seem to have working code for hidden pairs. It is not yet a suitable object: more of a working prototype. Let's step back half a step and assess where we are and what to do next. We narrowly avoid a bear bite.
(Aug 1, 2024)
I think we're ready to try to find a real hidden pairs situation and adjust the notes accordingly. I am sure we're going to find an interfacing issue that will be a bit interesting. Includes notes on 'think-squared'.
(Jul 31, 2024)
Soon, dear, soon. We have the ability to set up a test. Let's see whether that sketched Hidden Pairs idea will work. I think there is at least one more stop before we're there, though.
(Jul 29, 2024)
Now that we have our foot in the door with `find_candidates_pairs` tacking a condition function, what would we have to say to define hidden pairs? Spoiler: We improve our ability to test.
(Jul 29, 2024)
As I think about additional Techniques, I believe I need more help from my objects. I have an idea to try out. Well, part of an idea.
(Jul 28, 2024)
Well, the new 'lonely' technique needs better testing and maybe a better name. I really want to do an unneeded optimization. There is grunt work to do. PyCharm earns a biscuit.
(Jul 27, 2024)
If, in the candidates for a given component, a value appears in only one candidate list, then that value must be assigned to the corresponding cell.
(Jul 26, 2024)
I wonder whether it would be that difficult to have constant Component instances rather than creating them dynamically? Kent Beck haunts me.
(Jul 25, 2024)
Yesterday's work useless. Last three days generally ragged. Today, I'll try to be more focused and go for speed. See Kerth's Prime Directive.
(Jul 24, 2024)
Based on input from my betters, I work on a faster way to deal with Candidates. GeePaw puts a word to it. Probably the wrong word. I go off on a tangent and discover profiling. An odd morning, with some interesting discoveries and one nice tiny object.
(Jul 23, 2024)
Having come up with the word 'evolving', I am ready to tilt once more at the windmill. Will I succeed this time? Spoiler: Yeah but U G L Y!
(Jul 23, 2024)
Tomas has been nerd-sniped and is solving Sudoku with Haskell. I nerd-snipe myself, thinking about Haskell, immutability, and updating. Some learning, almost no progress.
(Jul 22, 2024)
The Naked Pairs (NAIAIS) technique seems to work. What should we do next? I feel that we should step away from the brute force solver.
(Jul 21, 2024)
Ron, you keep changing the design all the time! Why don't you just nail down the design once and for all, and move on?
(Jul 20, 2024)
Did you ever look at your code? I mean REALLY look at it? This is going to be good! And it is!
(Jul 19, 2024)
I thought that I had made a misteak, but now I think I was wrong. I refactor to very small methods. Too far? Not for me, what about you?
(May 3, 2024)
During our FGNO Zoom session, Ken brought up an interesting little problem. Let's play with it a bit. Gets a bit long, but it's really pretty light work. Fun effort, meant as such.
(Apr 8, 2023)
We should probably keep score. Shouldn't be terribly difficult. Just some text ... how hard could it be?
(Apr 7, 2023)
Let's add the help messages to the GAME OVER screen, and, time permitting, work on quarter insertion. I expect the first bit to be mostly tedious.
(Apr 6, 2023)
Let's clean up startup and maybe we can come up with a finite supply of ships and maybe even GAME OVER.
(Apr 6, 2023)
I think it's time for asteroid waves. Let's review stories. We create some questionable code and question it. It confesses and tries to reform. What do you think?
(Apr 5, 2023)
Let's do safe entry. Should I put this thing up on GitHub? No one has asked for that.
(Apr 5, 2023)
We'll review and refine the list of things to do and pick something. Doubtless fun of some kind will ensue. Loving PyCharm's auto-run of the tests!
(Apr 4, 2023)
Just some random cleanup, unless I get an easy idea.
(Apr 4, 2023)
Today's story is to make the missiles damage asteroids. But I have a larger question. P.S. I am the Cat ...
(Apr 3, 2023)
Let's see if we can make this thing fire a missile.
(Apr 3, 2023)
Our fun with delegation, plus an early call to breakfast meant that yesterday I didn't get to collisions. Let's work on that today. [Ron makes a rookie mistake.]
(Apr 2, 2023)
It's time for more features and less playing with drawing. This leads me to think about common behavior in motion and collisions. Ron learns something about inheritance and delegation!
(Apr 1, 2023)
Let's do to the ship what we did to the asteroids. And some thoughts about the future.
(Mar 31, 2023)
My search for why the window is double-sized caused me to observe that I can't scale my objects to arbitrary sizes. I think part of the issue is coupling, so that's interesting.
(Mar 30, 2023)
I noticed a graphical anomaly and think I can fix it. And another that confuses me.
(Mar 30, 2023)
One more tweak on the SurfaceMaker, then lets see about using it to make more asteroids.
(Mar 29, 2023)
I'm still pecking away at improving the surface creation. I'm wondering if my caching object, tiny as it is, is more than I need. We'll see. I think I should take advantage of the limitations of the current situation.
(Mar 28, 2023)
I have an idea, or some fraction of an idea. Let's see what we can make of it. (As often happens, I don't go where I thought I would.)
(Mar 28, 2023)
Some advice for a better way sends me scurrying to read about list comprehensions.
(Mar 28, 2023)
We don't even have 200 lines of code yet. How can refactoring make any sense already?
(Jul 25, 2022)
Usage changes. Language is usage. Language changes, not necessarily for the better, in my opinion.
(Jun 22, 2022)
Something in last night's Friday Coding Zoom struck me. I need to think about this and try it.
(Jun 19, 2022)
Let's review some code.
(Jun 8, 2022)
Tuesday night's Friday Night Coding Zoom has hooked me. This is the beginning of the result of that hook.
(May 27, 2022)
I was asked what I tell people to do that I don't do myself. The answer may surprise you.
(May 24, 2022)
We should have it. What should we do when we haven't?.
(Feb 24, 2022)
Yesterday's search for strawberries in the XST patch discovered problems. I want to at least double check what we did. TL;DR: It all works. Odd morning.
(Feb 23, 2022)
We're taught to 'make it work; make it right; make it fast'. We're taught that if it's hard to test, it's not right. Let's explore. TL;DR: No strawberry here?
(Feb 19, 2022)
Can we make our programming life immediately easier with this one simple trick? The answer may surprise you.
(Feb 16, 2022)
Some day--and that day may never come--it may fall to you to write the most important program of your life. Here's one man's example of how to do that.
(Nov 8, 2021)
Driven by some Slack chatter, I've been thinking about feedback. How does that fit into life, and into this little program?
(Nov 4, 2021)
Some refactoring, and some thoughts on a Twitter thread. And an odd surprise: the code says No.
(Nov 3, 2021)
Rules, rules. TDD rules, Beck Rules, OK. And a cat.
(Nov 2, 2021)
I'm just not up for going back into the Dung mines. Gonna put plain function detection into the stats instead. Also, random subtweeting. Also bear bites man.
(Nov 1, 2021)
At last, I get to apply Dave's scrolling thing. It's simple, and obvious, and I never thought of it. And a couple of stories of a great programmer.
(Oct 31, 2021)
This morning, I plan to add detailed method reporting to the full report. I am expecting no real trouble but have recognized a mismatch.
(Oct 30, 2021)
Let's get some output up in this baby. I plan to steal two good ideas while I do this.
(Oct 28, 2021)
I wonder what we could do about comments. They're tricky.
(Oct 27, 2021)
"If this is his idea of fun, he must be a laugh riot at parties." -- A Reader
(Oct 25, 2021)
Backward? Or forward? Which was it?
(Oct 24, 2021)
We continue working on our little 'Making App', because it's kind of fun. Today, I foresee a 'major refactoring'.
(Oct 23, 2021)
Let's do methods, and try to drive out some objects.
(Oct 21, 2021)
In the interest of variety, let's do some work for the makers here. Let's see how we can collect some interesting statistics from Codea programs.
(Oct 13, 2021)
We were thinking about words for code. Let's consider these. New! Improved! Now with more words!
(Sep 7, 2021)
Two ways of doing a thing appeared on the Codea forum today. I'd like to see whether we can transform the one into the other in small steps.
(Jul 23, 2021)
I mentioned that the dungeon program is boring me on Twitter and asked for ideas. Andreas asked about software design. Practice, folks, practice!
(Jul 5, 2021)
On June 19th, I sent this email to the CPO of the Scrum Alliance. I have had no reply. In a second article today I will offer some related ideas.
(Jun 10, 2021)
Let's pretend we care about that inefficiency in drawingOrder. Also a momentary loss of momentum.
(Jun 9, 2021)
I don't usually predict an outcome but today I think something good is going to happen. Let's find out.
(Jun 8, 2021)
Today, more refactoring to remove connections between dungeon objects and their tiles. And, as always, some thinking.
(May 31, 2021)
Let's set some direction. I'm concerned that I'm off track on what is of value to work on. Possibly it's residual fear from decades ago.
(May 29, 2021)
I think we'll do a bit more on our 'Making App', the part of our code that helps us make the 'Shipping App', the product we ship. (We decide to bless this effort.)
(May 28, 2021)
One more challenge in the class/method finder, then maybe we'll think about what we actually need in our Making App.
(May 27, 2021)
I've had an idea about a change--perhaps an improvement--to the class/method reporter. As I write this, even I don't know what happens next.
(May 26, 2021)
More work on our nascent Making App. Dave1707 has some interesting tricks in his programs. And we have a fine small example of refactoring 'legacy' code.
(May 25, 2021)
Dave1707 from the Codea forum provided an interesting program. I would like to bring it under control.
(Oct 14, 2020)
A Slack conversation brought up the question of why I do ... the things that I do.
(Sep 14, 2020)
In which our intrepid author makes a grievous error: disagreeing with Kent Beck. Or does he?