(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 18, 2024)
Markus Gärtner interviewed Ron Jeffries, co-author of the Agile Manifesto and Coach of the first Extreme Programming team. Ron reflects back on the past 20-or-so-years of Agile Software Development and dares to look ahead on things to come.
(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)
Another quick look for something needing improvement.
(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 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 7, 2024)
Imagine a world, a game, a server, a client. Imagine all of us creating a programming world in which people can learn from experience and from seeing what we have done.
(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 3, 2024)
A cartoon from Mastodon inspires some thoughts.
Practices ]
(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?
(Jul 18, 2024)
Well, naked pairs, still, but I've used up that title. Brother Bill raises a question. I think we're OK. Let's try to implement the idea, whatever it is. Result: it goes very nicely.
(Jul 17, 2024)
Still not as interesting as it sounds, but this morning I plan to hunt down some naked pairs. I foresee some issues. And what about that pending issue from yesterday? Results: a bit long, but some shape emerges.
(Jul 16, 2024)
I've found some Python code for Sudoku techniques. I do not like it. But it'll be useful, I reckon, even though we aren't likely to copy it.
(Jul 15, 2024)
Reflection on how things are going makes me think we need to change direction a bit. Can we manage it without rewriting a lot of code? Can we keep all or most of our existing test working? Let's find out.
(Jul 14, 2024)
We already know of one more 'smart' technique that we might apply, but it seems a bit tricky. And how can we provide a 'menu' of techniques to be applied? Is this Big Design Up Front?
(Jul 13, 2024)
Let's fix that reminder test and set up to allow us to select techniques. A bit of progress, and raggedness tells me I need a break. It's artificial, it's intelligent, and it's not AI.
(Jul 13, 2024)
Let's try to put some intelligence up in this thing. Not artificial, mind you, though it will involve code. Spoiler: Works well and we learn a bit.
(Jul 12, 2024)
Tomas provides a clue. Whatever might we do with it? Ideas, experiments, and a decision not to go ahead with the ideas ... yet.
(Jul 11, 2024)
This thing just keeps on giving. I want to check something out. Result surprises me and I'll need to do some more thinking. Got good ideas? Let me know!
(Jul 10, 2024)
Is this a game of Sudoku, or a game of Columbo? I keep finding things to do! Fewer classes, a bit more clear ... but a few more lines of code.
(Jul 9, 2024)
It has been a while since I looked at the Sudoku code. I don't have anything in mind for it, but let's see what we can find just by looking.
(Jul 4, 2024)
I've thought of an object that we probably need. Let's find out. Result: A very pleasant refactoring sequence leading to a design that I prefer. Click to find out why.
(Jul 3, 2024)
What does all this have to do with real programming? We'll begin with last night's FGNO and go wild from there. We mention Iceland, and the age of the universe. Onions. Easter eggs.
(Jul 2, 2024)
I've come up with something that I think will be much nicer for computing the base positions from which to fetch our rows, columns, and sub-grids. A little refactoring does improve things, I think.
(Jul 1, 2024)
Let's review the code and the "project", to see what, if anything, we can conclude.
(Jun 30, 2024)
My theory is that once the sub-grid calculation is added to the Puzzle, we should be able to solve a 9x9. Let's find out.
(Jun 29, 2024)
The trivial test for my initial solver sketch passed. Will it hold up? Let's find out.
(Jun 28, 2024)
If the code agrees with me, I think I'd like to sketch a tiny solver this morning. Let's see if that's feasible. (Spoiler: It is.)
(Jun 26, 2024)
Let's see about getting the column, row and sub-grid for a given array index.
(Jun 26, 2024)
We spoke of Sudoku at FGNO, and my 'failure' with it, and with me, apparently, the failure of TDD, Extreme Programming and all of Computer Science.
(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 25, 2024)
I'm not sure I'm done with this XST experiment, but I've come to some conclusions that I want to set down. Having done that, maybe I'll know what to do next.
(Mar 26, 2024)
Mistakes? Technical Debt? Better ideas? All the above?
(Mar 25, 2024)
OK with that out of my system, what shall we code today? It goes so nicely, until oops.
(Mar 25, 2024)
I'm not out of ideas, but I am out of directions, and my momentum is low. What shall I do?
(Mar 23, 2024)
The swirl that is my life leads me to think about duplicates and such. Very speculative musings, no conclusion. Sort of Captain's Log Stardate 77691.1.
(Mar 21, 2024)
The statistics code is much better now. But a little widget might be just the thing. Turns into a medium-sized widget, but I think it's an improvement.
(Mar 21, 2024)
The statistics code runs, but is written in 1960's style—yes, I DO know what 1960's code looks like—and needs improvement. An interesting series of events with a fine result.
(Mar 20, 2024)
Commonly, when we group data by some criteria, we desire summary information about the groups: counts, totals, averages, and so on. We take a couple of nice steps before my brain is fried.
(Mar 19, 2024)
Yesterday's experiment with `group_by` seemed very successful. What does it tell us about what we're doing and what we should be doing? Bit of a retrospective.
(Mar 18, 2024)
Let's try an experiment, along the lines of my sketch at the end of this morning's article. It goes very well. Very well indeed!
(Mar 18, 2024)
I'm here for another step on the way to the grouping operator. I have at least one new realization going in. More than one coming out. Some code progress as well.
(Mar 17, 2024)
Time to push a bit further on the grouping operations. I don't get far before realizing that I need to break away and try again later. Not great, but good.
(Mar 16, 2024)
A bit of research into the past of Extended Set Theory suggests an interesting possibility for the future, and provides the joy of working something out on my own. Includes some possibly amusing history about how primitive man created such documents.
(Mar 15, 2024)
I'm continuing directly on from the preceding article, to create my XGroup implementation. It may turn out that a break was needed. We'll see.
(Mar 15, 2024)
This morning I'm working toward a join operator, by way of a grouping operator. I have vague ideas, and need some help from my code.
(Mar 14, 2024)
Fancy as my new streaming select is, I think it's, well, not quite the thing. Easily replaced, but do I need to pivot? I surprise myself.
(Mar 13, 2024)
OK, new rule, we're going to read XFlatFile sets into memory. Should we refactor to this new result, or TDD a new class? Let's refactor. Works quite well!
(Mar 13, 2024)
It's 0415 and I am thinking about buffering. I create an XSet with a billion records in it. Python does not sneeze.
(Mar 12, 2024)
The thing about learning is that when we have sucked most of the learning juice out of some fruitful idea, there is often work to be done to get the thing finished. We have at least two of those hanging fruits right now. One of them has an interesting effect!
(Mar 12, 2024)
The Powers That Be have invited me to discuss the risks around this Python XST effort, on the assumption that it is anything other than play.
(Mar 11, 2024)
There's no doubt that we can create sets or set operations that stream their results, avoiding creating large temporary sets in memory. There are issues to think about. First experiment works!
(Mar 10, 2024)
In which, your intrepid author considers times now and times then, assessing whether and how to adjust what we do with XST given the new reality.
(Mar 9, 2024)
A check of our list of ideas leads to discoveries, to key decisions, and to reflection on the realities of software development. Quite a span, as perhaps it always should be. Interesting article reference included.
(Mar 7, 2024)
Ran across this. Rather nice. Then I took one more step. Off a cliff. Fortunately, I didn't look down.
(Mar 7, 2024)
We've been working on calculated fields. Let's see about getting them built into sets. Yucch! I touched a debugger.
(Mar 7, 2024)
Our work on calculations raises some longer-term concerns about large dataset and statistics. Are we in big trouble?
(Mar 6, 2024)
Let's fetch values from XST records for our Expressions. I expect this to go smoothly. It does. We discuss small steps. No, smaller than that.
(Mar 5, 2024)
I have a bit of time, with distractions. Let's see about error conditions in our expressions.
(Mar 5, 2024)
We need to work on assignments and field values. I was thinking values, and then we do assignments instead. That's where the path looked best.
(Mar 4, 2024)
We'll take some steps along the expression path. I'm slightly questioning part of what we have. The path is zig-zag but leads to a good place.
(Mar 4, 2024)
Spikes for the expression parsing have taught us enough. Let's see how we can best move from the spike code into decent production objects. There's one somewhat large issue: symbols. No, two: data types.
(Mar 3, 2024)
Back to the interpreter. Shall we try the lambda thing again, or something else? Lambda seems fraught. Partial function FTW.
(Mar 3, 2024)
We can parse a simple expression. Let's sketch the expression interpreter. Bear gives us a nip, but we have progress.
(Mar 1, 2024)
I think I'll break down and do expressions. I'm thinking a simple Dijkstra-style parser will do the job for us. Let's see if we can find a simple way to develop one.
(Mar 1, 2024)
Suppose we want a set where one element is the sum of two others. What about calculating a scope? I am interrupted and then spot a squirrel.
(Mar 1, 2024)
Somewhat enlightened about how early XSP systems worked, there are a few ways we might go. I need too reflect on possibilities and pick a direction.
(Feb 29, 2024)
Study of some ancient scrolls leaves me thoughtful, and a bit disappointed.
(Feb 27, 2024)
You probably do not want to read this. I'm writing down my thoughts, in the vain hope of figuring out what they are and what they should be. Dave Childs was kind enough to send me some links to articles and other materials about XST. I include them at the end of this article, for reasons. The materials gave me some things to think about.
(Feb 26, 2024)
I was whining earlier about the difficulty of writing tests that assert about elements inside a result set. A thought has come to me.
(Feb 26, 2024)
I want to work on some indexing operations. Along the way I rediscover XFlatFile's existing scope set feature. Just what we need. Or is it? Includes a judicious rollback.
(Feb 25, 2024)
Laurent challenged me to find a better, more elegant formulation for getting the correct re_scoping set from a provided renaming set. I thought I had it. Then I thought I hadn't. Then I thought I had.
(Feb 24, 2024)
We have a long-form cardinality method. Let's use the len function and require it as part of the implementations.
(Feb 24, 2024)
Let's look around and see what we might do. I'll even make a list. Jira is an abomination upon the land.
(Feb 23, 2024)
I have received a bug report! This is great news! Someone is paying attention!
(Feb 23, 2024)
Putting a specialized rename into our flat set showed us that the symbol table there is quite ad hoc. Let's make it more like a set. (Turns out: no.)
(Feb 22, 2024)
Since the Flat sets know their field names once and for all, we could use a better rename that doesn't copy the data. Simple enough, rather nice.
(Feb 22, 2024)
If there was a kind of set that was expressed as a function, we could possibly pipeline operations, reducing memory impact. Is that possible, and is it a good idea? So far, maybe not.
(Feb 21, 2024)
What if a function IS a set instead of returning a set? This might be significant.
(Feb 21, 2024)
We try and succeed in implementing an XFlatFile that refers only to a subset of the file. This is a big deal!
(Feb 21, 2024)
I'm working on the idea of an XFlatFile that only reads a defined subset of the file. Am I working without a net? Not really.
(Feb 20, 2024)
Plus wasn't the right operator for union. Let's update that and then a few other operators.
(Feb 20, 2024)
I had thought that I'd work on the flat data. My thoughts led me astray, to a glimmering of a possibly good idea. So I'll just code something cute to finish the morning's work.
(Feb 19, 2024)
Thinking about rename in the Flat implementation leads to discovery of an interesting defect, and some thinking about use of the powerful generality of set theory.
(Feb 19, 2024)
In an astounding flurry, we are going to build a rename operation.
(Feb 18, 2024)
Childs has defined two "re-scope" operations. Let's see if we can implement one of them, and if we're glad we did.
(Feb 18, 2024)
We'll start with a simple removal of the requirement for implementations to implement `__contains__`. After that, we'll see. (And that's not what happens.)
(Feb 17, 2024)
In your absence, I made a simple but significant change. I had an interesting idea. And an important observation. And more.
(Feb 16, 2024)
We make some progress on our flat files, but progress is slow and there are a lot of words here. Best skim or skip?
(Feb 15, 2024)
Let's see about getting set creation sorted. We need to be better able to create sets with any possible base implementation. Deep confusion ensues.
(Feb 15, 2024)
To process flat files, we want to avoid leaving a file open, and we don't want to open it a zillion times. Do we have to invent buffering? Perhaps not.
(Feb 14, 2024)
Our experimental tests one flat records look good. Let me report on my off-line work, and then let's see what's next.
(Feb 13, 2024)
Let's get started on a flat-file-focused form of set. We make a bit of progress.
(Feb 13, 2024)
I want to begin by thinking about storage: how do we best produce specific memory / file formats? The article turns out to be pure speculation, but perhaps useful speculation.
(Feb 12, 2024)
Having prepared better than we did yesterday morning, let's proceed with wrapping our `frozenset` with a class of our own.
(Feb 11, 2024)
Let's have another try at wrapping our `frozenset` in an object that will work for us. Things go much better ... so far.
(Feb 11, 2024)
I make some useful initial observations, and then, well, I crash and burn. And mix a metaphor.
(Feb 10, 2024)
I think that this morning, I'll take a small step toward having more than one implementation of a set's data.
(Feb 9, 2024)
If I'm going to get serious about this Extended Set Theory thing, a tiny bit of design thinking seems to be in order.
(Feb 9, 2024)
It is 0253 hours. I have a report and another report.
(Feb 8, 2024)
Lets do `project`, as in projection, as preparation for trying a generator approach to set expressions. This part should be easy.
(Feb 8, 2024)
There's a thing I want to do with this XSet stuff, and I don't quite know how to do it. I need to better understand iterators and generators.
(Feb 7, 2024)
In which, we report on a nifty little thing, and then, well, I don't know yet what I'll do. Some concluding remarks on what it is that I do here.
(Feb 6, 2024)
In which, I show you what I'm dealing with, and mention an insight.
(Feb 6, 2024)
In which, I realize that I have made a mistake.
(Feb 5, 2024)
Let's see how we can select records from an XSet, using the `restrict` operator.
(Feb 5, 2024)
I propose to push a bit further on the use of Python frozenset to do a little Extended Set Theory. I mention symmetric difference!
(Feb 4, 2024)
Some random reading, and the messing about that I've done in the FAFO series, leads me to want to explore Extended Set Theory in Python. I do not expect it to be useful but it might be interesting.
(Feb 3, 2024)
A little planning on what I might like to do. No code, just thoughts. Wow, "slug" has a lot of meanings.
(Feb 2, 2024)
Joy projects. Impact. Transclusion?
(Feb 1, 2024)
Thinking about simplicity, generality, abstraction, and the FAFO data. A tiny but possibly important insight.
(Jan 31, 2024)
Zoom report. Simplest thing that could possibly work.
(Jan 30, 2024)
Too far is far enough. Not quite too far isn't.
(Jan 29, 2024)
A "database" to work with.
(Jan 29, 2024)
A Pythonista experiment makes me think. Time permitting, I'll build some files.
(Jan 28, 2024)
Having given Hill some bizarre advice last week, I propose to "Fool" Around and Find Out some things about the idea.
(Jan 26, 2024)
Wherein we consider some advice given to GeePaw Hill at a recent FGNO session.
(Jan 5, 2024)
Thinking about software, economics, and the things I care about.
(Dec 16, 2023)
I plan to implement a Game Over screen soon. The first one will just display GAME OVER. But could we build a somewhat smart attract mode? One that learned to play the game? Let's think.
(Dec 16, 2023)
How many ways can we think of to do a thing? How can we decide among them? CW: Ignorant Savages.
(Dec 15, 2023)
We'll make sure that our tests check the production generator function, but mainly I want to talk about small steps and TDD.
(Nov 18, 2023)
I want to muse today about Small Steps and how they affect me. I owe GeePaw Hill a pat on his cute little head for helping me focus on them.
(Sep 12, 2023)
The Invaders team has encountered a troubling issue, and have been making some troubling decisions. We need to explore this and deal with it at its root. Spoiler: It's not the programmers. People over process.
(Sep 11, 2023)
Why do we work as we do? How might we improve? We look back at our process and practices in the large. We accidentally invent "Agile".
(Aug 30, 2023)
We can only improve total productivity by improving people and processes. Re: A post from Kent Beck and Gergely Orosz. [cw: "Intercourse"]
(Aug 23, 2023)
Last night, some topics came up that I'd like to consider a bit this very early morning.
(Jul 27, 2023)
It's OK to care about programming. It's OK not to care much about what your company is trying to accomplish. No, really, I'm serious.
(Jul 14, 2023)
I do not love that phrase, but I do love programming.
(Jun 20, 2023)
Does everything have to be easy? What about hard things?
(Oct 10, 2022)
First, some thoughts on TDD.
(Sep 12, 2022)
Some Twitter chatter and a moment of not knowing what I wanted to code this morning has led me to think about what people should do.
(Aug 24, 2022)
When we make two changes at once, there are four possible outcomes, and three of them are bad!
(Jul 28, 2022)
Perhaps the biggest mistake in XP and Agile ...
(Jul 25, 2022)
Usage changes. Language is usage. Language changes, not necessarily for the better, in my opinion.
(Jun 8, 2022)
Tuesday night's Friday Night Coding Zoom has hooked me. This is the beginning of the result of that hook.
(Jun 3, 2022)
Some thoughts after another pleasant conversation with Colin Hammond of ScopeMaster.
(Jun 2, 2022)
If in fact I'm done, for a while at least, with the dungeon program, what shall I do and write about. Your input welcome.
(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?.
(May 20, 2022)
Estimation and a tiny bit of code. ScopeMaster took up my challenge.
(May 18, 2022)
I don't like estimates in this world. Perhaps you do. If so, and you're so inclined, pick up this challenge. I'll tell you everything I know to help you.
(May 17, 2022)
This morning, I plan to write about COSMIC Function Points, Agile Practices, Civility, and Kindness. I can't wait to find out what I have to say.
(Apr 13, 2022)
The experiment i did yesterday deserves a bit of commentary. Something to think about.
(Mar 17, 2022)
Here, some thoughts raised by yesterday's Agile Alliance Zoom thing.
(Feb 27, 2022)
In which: Our intrepid author attempts to find some use for the FP library he has been toiling on for over four hours.
(Feb 26, 2022)
Today, for your delectation, I offer: the Library Trap! (Update: I looked at XSet2.)
(Feb 25, 2022)
Let's see if we can find a decent way to provide filter, map, reduce functions in Codea Lua.
(Feb 24, 2022)
Kent Beck is writing about 'tidying'. It's a whole patch of delicious strawberries, and I highly recommend them.
(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.
(Feb 15, 2022)
One 'reason' why folx don't want to learn technical practices seems to be that they expect no benefit. Sometimes that's more about futility than actual benefit.
(Feb 12, 2022)
Some developers show little or no interest in learning practices that could make their lives better. I'd like to understand that.
(Feb 10, 2022)
Wandering off. Spinning down. Fading out. My projects here have a habit of that. What does that say about me, about you, and about our work? And krill? Really?
(Feb 8, 2022)
There are signs and portents. What are they telling us? Is this death--or is it perhaps a rebirth?
(Feb 3, 2022)
I'm taking a couple of on-line comments as writing prompts today. Let's see what we get.
(Jan 29, 2022)
Agile Software Development is about people working together. For that to happen, it helps to be kind, respectful, and helpful. Let's talk about that.
(Jan 28, 2022)
I'm pressing forward with the Lispy thing, but I have some concerns. I find it difficult to think about but I think I have an angle. (Spoiler: It's a wrap!)
(Jan 25, 2022)
TDD is too big a lump to be a good strawberry. Today I'm playing with TDD to try to find a bite-sized goodie. I expect not to accomplish that.
(Jan 24, 2022)
Technical Practices, Craft, Excellence, Improvement, Ease, Joy. What ARE you talking about??
(Jan 21, 2022)
A Twitter exchange yesterday and today has given me today's topic. I love it when not having a plan comes together. (Hm. Societal impact is similar ...)
(Jan 17, 2022)
GeePaw Hill is workin on an idea. I urged him to publish his thoughts because I knew it would help him to make things concrete. Also I wanted to comment here.
(Jan 17, 2022)
I wasn't really planning to write about Sudoku again, but here we are.
(Jan 13, 2022)
It's not the method. It's not the framework. It's your unique assemblage of innumerable small things that work together toward success. And some larger things: the people.
(Jan 12, 2022)
It's Wednesday. At last night's Friday Zoom Ensemble, we talked about Jam. I am inspired to put down some thoughts. Bottom line: On-line strawberry, not raspberry. (Updated, more links.
(Jan 11, 2022)
Just a bit more playing with the Lispy Calculator to while away a few minutes in the afternoon.
(Jan 11, 2022)
Thoughts and observations. Stuff and nonsense.
(Jan 10, 2022)
I'm going to push forward with this LISP / Scheme dialect. I'll begin by explaining why, and why not.
(Jan 9, 2022)
It's still the weekend, so I'm going to follow Peter Norvig's Python LISP Implementation a while and see where it takes me.
(Jan 8, 2022)
It's my weekend and I'll try if I want to. You could try too if it happened to you. Spoiler: This takes a very weird turn. Final line: Your move, Bill!
(Jan 7, 2022)
I guess there's nothing for it but to figure out how to rewrite, i.e. refactor, a set operation based on the existence of helper structures. But how? I have ideas but are any of them any good?
(Jan 6, 2022)
Bill Wake is trying to get me to think in terms of trees. I don't want to, but he does have some good ideas. Thanks, Bill!
(Jan 5, 2022)
Today I plan to experiment with creating some form of expressions that might be optimized. I expect to stumble a lot. Come along, point, and laugh.
(Jan 4, 2022)
No, not smiles and frowns. Algebra. At this moment I don't think much code will be done today. Feel cute, might delete later.
(Jan 3, 2022)
It's 6 AM and I have an idea. This could be very good or very bad.
(Jan 2, 2022)
I don't love the interface for adding functions into an XSet. And I want to add them 'one level in'. Will hilarity ensue? Probably not, but something will happen.
(Jan 1, 2022)
Some HNY thoughts, and more on the function as an element idea. Joy, philosophy, code. What's not to like?
(Dec 31, 2021)
I was thinking before I got up about median and mode. Then I had a truly marvelous idea.
(Dec 30, 2021)
I want Lua tables to be more useful as XSets. There's a hard way. But the current design also offers an easy way. (The answer will surprise you. It surprised me.)
(Dec 29, 2021)
I'm on a path to make ordinary tables behave like XSets. But first, I have to figure out how this thing actually works! Much musing, then some code.
(Dec 28, 2021)
I have in mind small things for today, starting with an interesting and confusing mistake left over from yesterday.
(Dec 27, 2021)
No, I'm not hearing voices. But the code does tell us things, just like any working material. We need to learn to listen. Today, we listen and the result is good.
(Dec 26, 2021)
A look at the code. Maybe a bit more on stats. P.S. I learn something and ditch almost all the code I wrote this morning.
(Dec 25, 2021)
It's Christmas, I'm waiting for the household to wake up, and I enjoy what I'm doing. Perfect holiday so far!
(Dec 24, 2021)
Today I plan to get grouping and summing working. Who knows, it might happen. If not, there's always tomorrow or my birthday.
(Dec 23, 2021)
Let's think about what the current drafts of summing and grouping tell us about our system. Then code (anyway).
(Dec 22, 2021)
Today, rather than make any deep progress, I plan to work on something I consider interesting, sums, averages, and grouping. I promise to publish this even if it explodes. (It doesn't, quite.)
(Dec 21, 2021)
Transformations, optimizations, and the relationship between OO and XST. Got some thinking to do. You get to watch, if you're tough enough. At least a tiny bit of code.
(Dec 20, 2021)
Step by step, inch by inch, slowly we turn long searches into more direct accesses.
(Dec 18, 2021)
I don't want to get stuck in a never-ending series of new setops: there won't be much learning there. Where's the beef?
(Dec 17, 2021)
I'm sure a lot of you have been saying 'Yes, but what about tuples?', or 'Why XST anyway?'. Today, we address those fascinating concerns.
(Dec 16, 2021)
Let's work on those new operations a bit.
(Dec 16, 2021)
Short morning today. I have a tentative plan for indexes. I'll scribble some sets. Might code.
(Dec 15, 2021)
Last night's Zoom Ensemble netted me a few ideas. I'll start exploring those today. Hilarity or perhaps something good will ensue. I can't wait to find out.
(Dec 14, 2021)
Further reading leads me to think about design, and design motivation. Castles in the air. Or underground. Good stuff happens.
(Dec 13, 2021)
In conversation with Bill Wake and with the Internet, I have an idea for something to try. And I'm just about ready to assess where we are and where we should go.
(Dec 12, 2021)
I'm not sure whether this will be useful, but Bill Wake gets the credit if it is.
(Dec 11, 2021)
Bill Wake was trying to hammer an idea into my head. I must think about that. And I have a small idea of my own.
(Dec 10, 2021)
Time to work on the actual restrict operator for CSV, since the pattern-maker experiment was a success.
(Dec 9, 2021)
There's no way around it, I've got to work on the fast restrict today. Might not finish. We'll see.
(Dec 8, 2021)
Getting started with CSV data. And reporting a conversation.
(Dec 7, 2021)
Reflection leads me to focus a bit more on set operations, and less on internal methods. Does this call for a new layer? Also: real technical debt! Updated with idea from Carl Manaster!
(Dec 6, 2021)
I'm going to try to create pipelines using coroutines. I think they may make for a more expressive interface. I turn out to be partially right.
(Dec 6, 2021)
How do you design a thing like this, Brain? Same as everything else? Or not?
(Dec 5, 2021)
I was puzzling over an issue with 'union' and gained an insight that either I've never had, or that I had lost. Whee!
(Dec 3, 2021)
I found the easy way to build an iterator in Lua, so we'll do that and see whether it improves the code as much as I think it will.
(Dec 2, 2021)
I think I'm going to start on restrict today. There are some issues around atoms.
(Dec 1, 2021)
Last night I understood how to do something with XST that I've not in the past been able to do. So let's talk about why XST is interesting and what one might do with it.
(Nov 30, 2021)
I have a random idea about the data structure for sets, so thought I'd give it a try.
(Nov 30, 2021)
Save me, I'm thinking about Extended Set Theory again.
(Nov 12, 2021)
Just because I think I should do SOMETHING, I think I'll improve how CodeaUnit displays results on the screen.
(Nov 10, 2021)
I'm going to try to build a 'fluid interface' feature for Codea's graphical style capability. Why? I don't know.
(Nov 9, 2021)
Let's improve CodeaUnit a bit. But first, what's the deal with iOS shortcuts? An odd report on an odd morning.
(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 15, 2021)
What's the deal with Jira? Is it a bad thing, or the worst thing?
(Oct 13, 2021)
We were thinking about words for code. Let's consider these. New! Improved! Now with more words!
(Oct 10, 2021)
Today, I'm going to try a fun exercise to demonstrate Codea's translate, scale, and rotate.
(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.
(Sep 7, 2021)
Another in my continued attempts to come to terms with what Scrum is rather than what it could (and should?) be.
(Sep 4, 2021)
Satire? Idiocy? Monkeys? Why not all three?
(Aug 25, 2021)
Again today, I take my writing prompt from GeePaw. I have a good purpose in mind. (Added: Dammit. I didn't expect to end up here.)
(Aug 23, 2021)
Is it useless marketing BS? Certainly there are issues. [CW: language, systemic racism/sexism]
(Aug 15, 2021)
When someone shows you who they are, believe them the first time. -- Maya Angelou
(Aug 10, 2021)
I've had a reply from the Chief Product Owner of the Scrum Alliance.
(Jul 19, 2021)
Jeff Patton writes about the importance of outcomes. Yes, and ...
(Jul 17, 2021)
I've think I've figured out the disconnect between my view of the Scrum Developer priorities, and those of the Refactoring Team who created the new CSD track.
(Jul 16, 2021)
Responses from Scrum officials to my recent Scrum articles here and on more private slacks have not been favorable. I think I'll sum up and move on for now.
(Jul 13, 2021)
I've chosen a large windmill at which one might tilt. Could we, of good heart and great skill and courage, fix Scrum? If so, should we?
(Jul 10, 2021)
The End Scrum Now site, a bit of a rant, raises important issues. Let's explore some of them.
(Jul 5, 2021)
Herewith, some remarks pro-Scrum, and a reminder that Scrum is not as good for developers as it might be. Even some advice to developers.
(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.
(Jul 2, 2021)
A week ago, I posted a Scrum-related survey. Today, the results of that survey, and my comments.
(Jun 24, 2021)
Scrum asks for an Increment every Sprint. Of all the Scrum rules, this one is most important for developer success and survival.
(Jun 18, 2021)
A few(?) more thoughts on the battle between Scrum and Software Development. A review of some past thoughts, and some of today's.
(Jun 17, 2021)
The Scrum Alliance mission? Let's talk about that. Fail better.
(Jun 15, 2021)
As often happens, this article didn't go where I expected. I hope you like where it went.
(Jun 1, 2021)
What are you doing, Ron, how do you do it, and most of all, WHY?
(May 6, 2021)
I was going to move back into the dungeon today, but realized I wanted to talk about what I learned doing the ominoes exercise. Here goes ...
(May 5, 2021)
It is of course necessary to display yesterday's polyominoes, for our viewing pleasure.
(May 4, 2021)
The Zoom Ensemble folks have been playing with polyominoes. I can't resist embarrassing myself by trying them.
(Apr 11, 2021)
Alistair found some ancient estimate for a KWIC program and challenged folks to implement it. I'm picking up the challenge.
(Apr 6, 2021)
Every time these organizations stamp out a new ScrumMaster, there are programmers somewhere whose lives will be made worse.
(Jan 15, 2021)
Some thoughts on the world as I see it today, in 2021, from my privileged vantage point as an old white guy in the USA.
(Oct 28, 2020)
Today, some code review. No big plans. We'll see what we see. I expect to mention Beck's Four Rules.
(Oct 27, 2020)
We'll look at using invader count as a flag to start a new rack. I don't promise to change it.
(Oct 26, 2020)
I don't feel very bright this morning. Let's see if I can prove it.
(Oct 23, 2020)
I have an idea and I can't wait to try it out. Niagara Falls.
(Oct 23, 2020)
Today's plan: Code review, and targets of opportunity. Short morning, just one new class.
(Oct 22, 2020)
Displaying two player score. Beyond that, we'll see.
(Oct 21, 2020)
Attract mode needs to be turned back on. Maybe we should show both players' scores. What about those buttons?
(Oct 20, 2020)
Let's do more on the two-player game mode. We're probably getting to the hard part.
(Oct 19, 2020)
It's time to start on the two-player option. I have ideas but not precisely a plan.
(Oct 18, 2020)
A lesson from history, a surprise refactoring, and, apparently, a sermon.
(Oct 16, 2020)
Not really, but the saucer is looking to score.
(Oct 14, 2020)
A Slack conversation brought up the question of why I do ... the things that I do.
(Oct 13, 2020)
The Agile Manifesto says that working software is the primary measure of progress. What does that mean?
(Oct 9, 2020)
Users observe the need for more racks of invaders. That's going to get ... interesting. Also Game Over if they reach bottom.
(Oct 8, 2020)
I've convinced myself that a global would be a better way to handle constants than the singleton. Kill your darlings.
(Oct 7, 2020)
Users have detected a problem. Users, do you hear me? Users!
(Oct 6, 2020)
Improving zombie behavior. Sound adjustments. Maybe more. Maybe less.
(Oct 5, 2020)
Let's take a look at a simple attract mode. Zombies!
(Oct 4, 2020)
More with Singletons. And distractions. And no singletons.
(Oct 3, 2020)
Improving our Singleton and using the idea elsewhere.
(Oct 2, 2020)
There's no reason to think that I'm smarter today than I was yesterday, but I am a bit more experienced.
(Oct 1, 2020)
Touch to Start has me thinking that attract mode might be within reach. Things go Very Wrong.
(Sep 30, 2020)
Saucer Scoring, then whatever makes sense to me at the time.
(Sep 28, 2020)
Another day of improv. Let's see what looks worth doing. (Wow, a factory object!)
(Sep 26, 2020)
What shall we do today? I honestly don't know.
(Sep 26, 2020)
Remarks on a Twitter comment from Jez Higgins.
(Sep 25, 2020)
Another defect. I'm starting to feel ... afraid. That's not a good sign.
(Sep 24, 2020)
This isn't Houston, but we definitely have a problem. And it's not a new one. And I'm tired of it.
(Sep 23, 2020)
Things we might do. And I'm thinking about conditionals. The next trick may surprise you.
(Sep 22, 2020)
I have an idea. Let's find out if it's a good idea.
(Sep 21, 2020)
Maybe some tuning. Do we need more start-up settings? Should the test results disappear? What about a FireControl object?
(Sep 19, 2020)
The world is burning, and I'm really just trying to ignore reality, but in addition, I've made a mistake. Another mistake, that is.
(Sep 18, 2020)
If nothing else, you have to admire me for getting over 100 articles out of ancient video games. Let's do another today.
(Sep 18, 2020)
A couple of interesting articles crossed my virtual desk yesterday. Links and some reflection within.
(Sep 17, 2020)
Better scaling, then more with the saucer, I guess. Plus whatever opportunities we spot.
(Sep 16, 2020)
More with the saucer, that's my plan.
(Sep 15, 2020)
I know the voices in my head aren't real, but they're sure ticked off at me for the past few days of messing up.
(Sep 14, 2020)
Well this goes entirely not as planned. Double Arrgh.
(Sep 14, 2020)
In which our intrepid author makes a grievous error: disagreeing with Kent Beck. Or does he?
(Sep 12, 2020)
No, not space pirates all of a sudden. I released a fatal defect yesterday. What's up with that?
(Sep 11, 2020)
A couple of small changes to CodeaUnit and my CUBase template. Then let's see what we can improve about Space Invaders. (Saturday: Arrgh, a defect!)
(Sep 10, 2020)
More to do with bombs, especially targeted ones. We need some refactoring as well. The results may surprise me.
(Sep 9, 2020)
I think today we'll work on the bomb timing, and targeting the rolling bomb. Often, what I think will happen is what actually happens.
(Sep 8, 2020)
Let's continue the bomb dropping logic. Our current design can't do what's required.
(Sep 7, 2020)
Speed indicator; Bomb dropping order; Free player, maybe.
(Sep 5, 2020)
Some recovery from repo problems, some work with the clock, whatever else seems right.
(Sep 4, 2020)
The web site with sounds came back, so I'm scarfing them down and starting to install them. Should be mostly straightforward, he said. Except when my repo locked up.
(Sep 3, 2020)
If you're like me, you're wondering what space invaders eat. The answer will surprise you.
(Sep 2, 2020)
Let's damage shields from below, and try to continue small steps toward 'better', whatever we mean by that.
(Sep 1, 2020)
Let's make missiles explode, and continue improving this design.
(Aug 31, 2020)
I want to figure out why this program makes me feel bad. Then do something about it.
(Aug 27, 2020)
Some improvements. But first, a word about less technical matters, the book `x + y`, by Dr Eugenia Cheng.
(Aug 27, 2020)
A bit of planning, a bit of action.
(Aug 26, 2020)
Let's get a start on scoring. This should be easy enough. But--when is too much way too much?
(Aug 26, 2020)
I woke up this morning certain that some of my bitmap calculations were STILL off. Something has to be done.
(Aug 25, 2020)
A bit more exploding. I'm going to continue to let things get messy.
(Aug 24, 2020)
Let's do some damage
(Aug 21, 2020)
It's my ball and if I want to play with it you're not the boss of me.
(Aug 20, 2020)
One of these two things is not like the other ...
(Aug 19, 2020)
If the world isn't flat, how come these invaders keep falling off the edge?
(Aug 18, 2020)
Today we'll try to fix the collision logic to accommodate our origin changes, and to make the invaders explode.
(Aug 16, 2020)
I've moved the good iPad into the TV room and while waiting for our Sunday festivities to start, I'll set up the project's bitmap assets.
(Aug 14, 2020)
Having decided to move to CORNER mode from CENTER, we've got some work to do. I'm hoping this one isn't interesting.
(Aug 13, 2020)
Is it worse luck when Friday the 13th comes a day early? Or a near miss? Time to dig further into bombs failing to miss shields. (Added Friday: It was worse luck.)
(Aug 12, 2020)
I had no plan. Now I have a plan. Check code clarity, then work on shields. Things go ... oddly
(Aug 11, 2020)
Maybe make the invader bombs do some damage? Or what?
(Aug 10, 2020)
My plan for the day is to retrain myself by reading this code that I've not touched for two whole days, and then to see about moving things forward. My guess: invader missiles.
(Aug 7, 2020)
I think today I'll work on making the invaders march back and forth. Right now they just march forth and forth and forth ...
(Aug 6, 2020)
A friendly demo of shield damage techniques leads to an examination of an interesting coding approach. I need to figure out what I think about it.
(Aug 5, 2020)
It's 6 bloody AM and I'm programming. What's up with that?
(Aug 4, 2020)
Let's see about extending our square invaders game-like thing to be a bit more like a game.
(Aug 3, 2020)
Twelve articles and no product. What's up with that?
(Jul 22, 2020)
In the real game, the invaders' missiles eat away at the shields. How can we duplicate this effect?
(Jul 21, 2020)
An experiment and some planning. Then even some doing.
(Jul 20, 2020)
Learnings from the ancient scrolls. What shall we do about them?
(Jul 18, 2020)
This one is mostly for the record, if it goes as planned. I'm just going to import some more bitmaps. I recommend against reading this.
(Jul 17, 2020)
Let's see what happens if we try to refactor our little spike into something reasonable.
(Jul 16, 2020)
A bit of an idea about marching, and thoughts about spikes.
(Jul 15, 2020)
I need an idea. Representation is important.
(Jul 14, 2020)
I'm wondering how to move these invaders. Let's do an experiment.
(Jul 13, 2020)
Dave1707 from the Codea forum shows a much better approach to converting the bitmaps.
(Jul 11, 2020)
Importing Invaders. How hard could this be?
(Jul 10, 2020)
I'm having so much fun with Asteroids that I thought I'd look at the old Space Invaders game. I'm sure I'll learn something.
(Jul 9, 2020)
Let's clean up that level handling a bit.
(Jul 8, 2020)
Unfortunately, we need to take things to whole new levels. This'll be fun. (Later: not as interesting as some, but it has its moments.)
(Jul 7, 2020)
Let's get some more modernization up in this baby. I'm sure it's the only reason we aren't selling millions.
(Jul 6, 2020)
Let's see about reducing a Singleton or two, and maybe some more modern graphics.
(Jul 6, 2020)
Our marketing people have a challenging request: modernize the look of this game.
(Jul 2, 2020)
It could happen: I've figured out a good way to handle these callbacks.
(Jul 1, 2020)
We'll continue our code review, with particular attention to our tweens, especially that tricky one.
(Jun 30, 2020)
I feel like reviewing some code. What I learn? Kill your darlings.
(Jun 29, 2020)
We're nearly done here!
(Jun 29, 2020)
Some tweaks to hyperspace seem in order, but I feel that this thing is nearly done.
(Jun 27, 2020)
Enhance Hyperspace?
(Jun 26, 2020)
Perfect saucer shots and a start on hyperspace.
(Jun 25, 2020)
Let's put in some options.
(Jun 25, 2020)
Let's clean up the Aimer and look around. I think we need options.
(Jun 24, 2020)
I really want to crack missile targeting. I've made some observations.
(Jun 22, 2020)
Two things go right. One thing goes horribly wrong
(Jun 20, 2020)
Free ships. Beyond that, maybe some reorganization? No, more like confusion.
(Jun 19, 2020)
Let's finish up the small saucer, and how about testing it this time?
(Jun 18, 2020)
Ships Remaining Indicators. After that, who knows?
(Jun 17, 2020)
After some discussion of things we might do, we decide to do GAME OVER. The results will surprise you.
(Jun 16, 2020)
Run tests automatically, dribs, drabs, and oddities. Pretty calm.
(Jun 15, 2020)
Today I plan to give the saucer the ability to aim its shots. I anticipate zero trouble.
(Jun 13, 2020)
A bit of planning and a bit of doing.
(Jun 12, 2020)
Not really an answer, but just a bit of fun.
(Jun 11, 2020)
Some sound, and saucer needs to stop helping so much.
(Jun 9, 2020)
Let's do collisions. And try to TDD them.
(Jun 9, 2020)
We move saucer and ship in the direction of our new scheme, and get rid of the cloning of the collection. Also took a nice walk.
(Jun 8, 2020)
We made a number of useful changes last time. Let's harvest some value.
(Jun 8, 2020)
I'm sure my double dispatch approach will work fine. But the pattern seems simpler than that ...
(Jun 7, 2020)
Some thinking and working on collisions. Is Ron converting to London School???
(Jun 6, 2020)
I've determined that it's time to collapse some 'technical debt', in small, incremental steps.
(Jun 6, 2020)
We need to improve collision detection. I think we have to do it in one go.
(Jun 5, 2020)
I think this afternoon I'll just push a little further on the saucer. Maybe make it dangerous.
(Jun 5, 2020)
I've decoded how to draw the saucers. Let's see about making them fly. That will require some research.
(Jun 4, 2020)
Some rationale, an experiment, some learning, some protection.
(Jun 3, 2020)
We start asteroids on the edge, which gives us an edge on refactoring.
(Jun 3, 2020)
A new approach to steering. And an apology.
(Jun 1, 2020)
I found some better recordings of the Asteroids sounds. And it's time to trigger new waves.
(May 31, 2020)
Stereo, because I can.
(May 30, 2020)
Based on the 'learning' from #25, let's just make bigger buttons.
(May 30, 2020)
Today I decided to experiment with improved controls. The experiments, um, succeeded oddly.
(May 29, 2020)
New ship, new sounds, learn new tricks, amaze your friends, confuse your enemies. Apply now! UPDATED!
(May 28, 2020)
I think today we'll do waves of asteroids. And some tests.
(May 27, 2020)
I've made yet another mistake. Will the embarrassment never end?
(May 27, 2020)
I reckon it's time to kill the ship when it's hit by an asteroid. I have a clever way to do it and a direct way. Which is best?
(May 26, 2020)
I'm feeling like coding a bit this evening. So stand back.
(May 26, 2020)
Thinking about tests and refactoring. The boss wants a feature.
(May 25, 2020)
I think it's time to move more toward objects. Part of our mission is to decide what we like. And: 'No large refactorings!'
(May 25, 2020)
I thought I knew what we had to do today but I was a bit mistaken. We need more, and better thinking ... and code.
(May 24, 2020)
Just arriving 'at work' this morning, I'm thinking we'll make the Ship move. We need a safe place to land first. EDIT: Arrgh, a defect!
(May 23, 2020)
A report on last night, and a 'major' refactoring. P.S. There is no such thing as a major refactoring.
(May 22, 2020)
A quick report on a short project last night, then let's try to get something nearly playable.
(May 21, 2020)
I looked up tween and my tween example and it seems like just the thing. Let's find out.
(May 21, 2020)
First, I'm really feeling the need to improve this code. But maybe it's too soon to do good work? Plus explosions.
(May 20, 2020)
Displaying different shaped asteroids is nice, but we have an issue of size we might work on for a bit. And let's split them!
(May 20, 2020)
Having converted the 6502 asteroid shapes to Codea style, let's plug them in. This design is starting to bug me, and we'll think about that too.
(May 19, 2020)
Dave1707 offers a much better idea for the conversion of Asteroids graphics into Codea. Let's explore it.
(May 18, 2020)
I found the definitions of the asteroid shapes in DVG language. Let's draw them in Codea.
(May 17, 2020)
I spent last night decoding some graphics chip code on computerarchaeolgy.com, and I managed to draw an Asteroid in the classic style. Today, a look at what I found out. Updated: New Resource.
(May 16, 2020)
I've decided how buttons should work. It only remains to make it so.
(May 15, 2020)
To move forward with this project, the ship needs to be able to move forward. And turn. And fire ...
(May 14, 2020)
OK, Asteroids doesn't have a horizon, but today we'll start on the ship. Shouldn't be too hard: it's a triangle.
(May 13, 2020)
I needed to test some floats the other day. Let's improve CodeaUnit to help with that.
(May 13, 2020)
Today we'll clean up the code a bit. It really needs it.
(May 12, 2020)
Today I decided to draw two square asteroids at random angles. All's well that ends well, but I did get confused.
(May 11, 2020)
For something to do, and because it might be helpful to new Codea users, I'm going to implement an homage to the old Asteroids game.
(May 5, 2020)
The Gilded Rose 'kata' exists in many languages, but I've not seen Codea Lua. Maybe I should fix that bug. This is pretty boring. Skim, don't read. Needed for the record.
(May 2, 2020)
Some final thoughts on the Gilded Rose exercise. Well, final for now ...
(Apr 30, 2020)
To round out a dozen, we simplify things a lot. Too much? What do you think?
(Apr 29, 2020)
Experiment with lambda.
(Apr 28, 2020)
Today I think I'll double-check that double-decrement issue. Then I want to see if we can combine those two parallel if nests.
(Apr 27, 2020)
Some really nice progress today ... and one open question.
(Apr 25, 2020)
Dave Nicolette mentioned on Twitter that he was wondering whether a Mob Programming Gilded Rose kata, using Arlo Belshee's 'Read by Refactoring' would make a good video. That gave me an idea.
(Apr 24, 2020)
We're on a path more like re-implementing the program than refactoring it. That's a concern. Can we do better?
(Apr 22, 2020)
Today I plan to move the Conjured item code to the new scheme, and see what that tells me. Something will probably go wrong.
(Apr 21, 2020)
It's noon on Tuesday. I've whiled away the morning. Let's try to make a bit more progress on this code.
(Apr 20, 2020)
Monday, Monday ...
(Apr 18, 2020)
Are we doing it right? Are we in trouble already?
(Apr 17, 2020)
It's April 17th. It's snowing. We're on lockdown. Let's look at Gilded Rose and see what we might do that would be interesting.
(Apr 16, 2020)
Chet, Amitai Schleier, and I played with the Gilded Rose exercise the other day. I think I'll write about it a bit, starting from scratch. [edited]
(Mar 22, 2020)
Wow. Shapr 3D is neat! I wish I could use it. It's so cool I might warp my process just to fit it into my plans.
(Mar 18, 2020)
This may be the most powerful most frustrating 3D application ever created.
(Mar 17, 2020)
To create reasonable creatures or vehicles, I'd need a decent 3D object creation tool. Ideally, since this is an iPad project, an iPad app.
(Mar 11, 2020)
I am supposedly on a course to make the Orc stay within bounds of our little world. Today might be the day ...
(Mar 9, 2020)
It's probably time to work on behavior, so I want to take a bit of time to look forward at what we might do, might not do, and probably won't do.
(Mar 8, 2020)
It's Sunday. My long-suffering wife is prepping for the upcoming election. On my own, I decided to spike motion for my game creature.
(Mar 7, 2020)
I've decided a bit about the 'game' I'm writing in Codea. This should keep me off the streets for a while.
(Mar 3, 2020)
I've been reading examples and searching the web about terrain generation and I'm ready to start sharing. Brace yourself, this gets pretty random.
(Feb 28, 2020)
I feel I've got my feet firmly on the grass, dirt, and bedrock, and I can see what I'm doing. Time to become confused again.
(Feb 27, 2020)
I think I nearly have a solid place to stand: a tiny application that I understand pretty well. Today we'll clean it up and see what's next.
(Feb 25, 2020)
There's trouble, my friends, right here in river city. Is this little project serving my needs? Am I about to break through to the other side ... or to break through the ice and freeze?
(Feb 17, 2020)
We're at a fairly clean point right now. There are a couple of small topics in the code to consider, but we need to figure out a plan for what's next.
(Feb 17, 2020)
Owing to driver error, I lost all my code versions for the Orc program. We'll speak of recovery and then move on.
(Feb 11, 2020)
In response to some question on the codea.io forum, Dave1707 showed me a neat trick with text. It taught me something, and raised some questions.
(Feb 10, 2020)
Despite its great value in the hands of experienced TDDers, the uptake is slow and the practice is often hard to sustain. What's up with that?
(Feb 7, 2020)
The bird experiment worked pretty well. Now it's time to clean it up and consolidate what we've discovered.
(Feb 5, 2020)
I've made a couple of objects move, in two different ways. I figure that topic is spiked. What should I look at next? This session is gonna be rambling, I'll wager.
(Feb 4, 2020)
Today I'll build a different kind of creature, who moves differently from the Orc. The idea is to build up an understanding of where the design needs improvement in terms of flexibility or clarity.
(Feb 3, 2020)
Today I'll review the code, and think about whether to build in some object thinking. I want to ... but should I?
(Jan 31, 2020)
Last time I managed to make a fairly simple Codea Craft program draw an Orc standing on (or near) the floor. Today I plan to make him move a bit, and then to see what I've learned.
(Jan 30, 2020)
Yesterday I managed to move an Orc, by hacking a sample program. Today, let's try to do a clean version to consolidate our learning and ask ourselves some questions. Maybe even begin to answer some ...
(Jan 29, 2020)
I begin trying to make sense of Codea's ambitious and powerful Craft components.
(Jan 20, 2020)
>Alex Bunardzic has been part of a rambling Twitter thread about TDD and people who object to it. One of his concerns is that TDD proponents agree that TDD isn't always appropriate but don't say when. Let's explore that.
(Jan 18, 2020)
I tweeted this on the 18th, in response to something left frustratingly vague by one of my dear colleagues, which caused me to think more deeply about what they said.
(Jan 8, 2020)
Some folks who don't know TDD, and some folks who should know better, have been describing TDD in ways that don't match what I experience. Herewith, some thoughts.
(Jan 8, 2020)
In a Twitter conversation a week or so ago, I was asked to do a TDD video, to show how I do it. A video isn't within scope just now, but here's an article with real TDDed code in it.
(Nov 28, 2019)
A Medium article with an interesting mix of observation and questionable opinion inspires me to write what I hope will be the same. 😈
(Nov 25, 2019)
Despite my concerns about experienced coaches advocating against practices that are often quite useful, there are a few things where I'd at least advise great caution.
(Nov 24, 2019)
Some thoughts from Twitter on 'technical debt', what it is, what it isn't, and why we avoid it.
(Nov 24, 2019)
Why do we do that? One word: Productivity
(Nov 24, 2019)
A number of blogs, tweets and emails have crossed my 'desk' lately, gently or strongly advocating against some generally well-thought-of practices. I'm troubled by that.
(Sep 15, 2019)
This article expresses, in written form, the talk that Chet Hendrickson and I gave at the deliver:Agile conference.
(Sep 12, 2019)
A private note from GeePaw Hill, and a tweet from Brian Marick inspire me to mumble a bit about mindfulness and collaboration.
(Sep 10, 2019)
When I was blurting about the Increment as the most important thing, just the other day, GeePaw Hill mused about collaboration as the most important thing. Today, I'll muse on that and his notion of makers-making-made.
(Sep 5, 2019)
If you are not producing working, running, tested usable software in every single Sprint or iteration, you are not [yet] 'doing' Agile, you are not [yet] 'doing' Scrum.
(Aug 29, 2019)
A question on AgileMentoring.com triggered this little article. Perhaps repetition is the mother of something ...
(Aug 24, 2019)
Kate chats with people at the KALE Society meetup. They discuss some small issues and then one big one. Test Doubles come up. Darts are thrown.
(Aug 5, 2019)
A bit of a screed about naming, triggered by a super idea from Dan Terhorst-North.
(Jul 6, 2019)
We're here to discuss whether Agile ideas fit in with fixed-scope efforts. We'll look at Agile values, principles, frameworks, and practices. The answer is that Agile works just fine.
(Apr 13, 2019)
A couple of people asked me to list all the technical skills required in order to do Agile Software Development. I can't do that, but I can do this.
(Apr 2, 2019)
YAGNI can be a legitimate way to go fast at minimal cost. Skimping on the practices that support YAGNI? That's a mistake. Technical Debt? Not the same thing.
(Mar 31, 2019)
Some words and pictures about the various notions of 'technical debt', or, as I like to call it, wishful thinking.
(Mar 26, 2019)
A recent idea from an Organization That Should Know Better suggested that use of a standard story card format was a good idea. I tweeted 'wrong'. However, Chet and I talked about the subject a bit this morning.
Practices ]
(Mar 25, 2019)
Probably not a good thing to say. Possibly a good thing to think about.
(Mar 13, 2019)
A lovely post by GeePawHill led to a Twitter conversation about up front design, inspiring this article.
(Mar 4, 2019)
First some refactoring - then some behavior.
(Mar 4, 2019)
I decide to follow Braitenberg's approach a bit more closely, driving the wheels at different speeds rather than rotating the vehicle.
(Mar 4, 2019)
Let's Turn - making our little guy turn. And see the comments on Gross Hackery at the end of the article.
(Mar 4, 2019)
I'm playing in Codea with 'Braitenberg Vehicles', just for fun. I'll be sharing what I do with you all.
(Nov 27, 2018)
Agile transformations have little, if anything, to do with Agile Software Development. Let me hook up some connections for you. Bit of a rant here ...
(Nov 26, 2018)
Another tweet-storm, this one about slicing from top to bottom of the software. Slicing provides value, and information, sooner.
(Nov 3, 2018)
I was asked on Twitter what I meant when I said 'Simple, not easy. There's a difference.' I have no idea what I meant then, but here's what I think just now.
(Jul 9, 2018)
A chapter from 'Software Development, How I'd do it'.
(May 10, 2018)
The above was the title of my talk with Chet Hendrickson at deliver:Agile. I'll update this with a link to the talk when it is published. Meanwhile, here are some thoughts.
(Apr 12, 2018)
Where do we place the responsibility–surely not blame–when things don't go well on a Scrum team? Who's responsible for taking action? (A bit of something I wrote on Twitter, lightly edited.)
(Apr 3, 2018)
I'm not finished ripping Scrum a new one, but I don't want to come off all negative. So let's talk a bit about what I'd like to see done.
(Apr 2, 2018)
We've spoken often before about the backlog. Let's get down and dirty today. Delenda est backlogus or something like that.
(Mar 29, 2018)
If your factory pollutes the river, you're supposed to clean it up. If you plant kudzu to combat erosion, you are responsible for its destruction of everything in its path. If you swallow a spider to catch the fly, and die when you swallow the horse, of course -- it's on you.
(Mar 28, 2018)
The Sprint causes serious problems in many Scrum installations. What are some ways to mitigate those problems?
(Mar 27, 2018)
Let's consider the Scrum Sprint. What's the strongest case we can make against it? It harms people, how's that for a case?
(Mar 27, 2018)
In the spirit of inquiry, fairness, and a generally bad attitude because it's raining, let's consider how strong a case we can make against Scrum. It might be fun.
(Mar 22, 2018)
These articles about hills to die on are in response to a continuing trope on Twitter and elsewhere, to the effect that X is bad, or Y is better than X, and therefore don't do X do Y. These are amusing, provocative, and rather frequently ... mistaken.
(Mar 21, 2018)
When are Sprints a good idea, when not so good? What are their values, and their costs?
(Mar 20, 2018)
Bashing of Scrum (and other methods) is a common form of Internet Entertainment, and not without reason. Some of the concerns are more accurate than others. Choose carefully which hill you want to die on. In this series we'll explore some hills.
(Oct 27, 2017)
We keep re-reading about the FTP object, and re-learning how it works. Then a week later, we've forgotten.
(Oct 19, 2017)
Last time we zeroed in on the FTP capability of our new cut at my 'iPad' project. Today, I'm hoping we'll TDD an FTP object.
(Oct 10, 2017)
Against all my best judgment, we decide to 'start over' on this tiny product.
(Oct 3, 2017)
We've not done work on this for ages. Tozier and I try to figure out what's up.
(Sep 21, 2017)
Just a bit of reflection after two weeks off. Next week, I hope we'll actually do something. Today I remember the Boy Scout Refactoring Rule.
(Sep 7, 2017)
It has been a week since Tozier and I last worked, and I spent most of the time under repair. I'm thinking we'll work on the date-sensitive stuff. I'm mostly wrong.
(Aug 29, 2017)
Chet has me nearly convinced to move my site base to Dropbox. Today we'll talk further about that and about moving the product forward.
(Aug 25, 2017)
I decide to spike a bit on folder and file manipulation.
(Aug 24, 2017)
When this article appears, it will have been processed by our new (MVP) iPad Transfer Mechanism. 'Thank you for pressing the self-destruct button.'
(Aug 23, 2017)
Tozier and I learned something about habitable code yesterday. Topics may include bits of Confirmation Bias and fragments of Coding Morality.
(Aug 17, 2017)
You'll meet them where they are. You'll work with them where they are. And when you leave, they'll still BE where they are.
(Aug 15, 2017)
I thought today we'd work on the triggering mechanism for the iPad build. Instead something important happened! (Clickbait)
(Aug 4, 2017)
I'm wondering, today, whether the Increment could be the driver for all 'Agile' software development.
(Aug 3, 2017)
If I were a REAL product owner, I'd be pressuring the hell out of my team right now. So I will. How did that work out, Ron?
(Aug 1, 2017)
We'll try to focus on building features today, but there are lurking issues in those magical incantations we do about Dir and FTP classes.
(Jul 31, 2017)
Today, let's talk about cadence. Iterations, Sprints, to have them or not, that is the question.
(Jul 28, 2017)
Thoughts about Technical Debt
(Jul 28, 2017)
Time to do some work after the heavy refactorings involving quantum mechanics. Let's see if we remember how.
(Jul 26, 2017)
I was asked a question about one of today's modern approaches to Agile software development. Here are some general thoughts.
(Jul 25, 2017)
In this short session, we inch forward and wind up in a better place. Not THAT better place. I just mean the code is better.
(Jul 20, 2017)
What's next for the iPad project? Refactoring, it turns out.
(Jul 13, 2017)
We knew last Thursday that we had an issue with folders and folder names. A week later, we dig back in.
(Jul 12, 2017)
An innocent email question leads me off into wildness and chaos. What's new with you?
(Jul 6, 2017)
We really hope to get from end to end today. You won't believe what happens next. Unless you're paying attention.
(Jul 4, 2017)
Tozier and I shoot again for end to end on the iPad project. What happens next? As I write these words, I don't know either.
(Jun 30, 2017)
We're clearly closer than we were, and it feels very close. But not as close as we thought.
(Jun 28, 2017)
Bill and I decided to do a bit more on the iPad publication project. You won't believe what happened next. Unless you expect trouble.
(Jun 26, 2017)
What if I were to create a new software development framework? I'd never do that, but if I did, what might I do? Let's find out. Let's talk today about Whole Team.
(Jun 25, 2017)
Terms seem important to me today. (Revised 2017-07-05: Techniques)
(Jun 25, 2017)
Some Notes on the theme "If I were going to create a new framework, what would it be?".
(Jun 20, 2017)
Today Tozier and I will do a Quick Design Session and start TDDing something that will, I hope, turn into the actual app.
(Jun 16, 2017)
In which we suddenly realize something about Tozier.
(Jun 15, 2017)
Tozier and I start with some Ruby code for FTP or something.
(Jun 14, 2017)
Tozier and I try some things.
(Jun 10, 2017)
I'm told the iPad is the new Mac, or something. Anyway, it'd be nice to be able to write articles on the iPad and get them on my web site without lugging around my Macbook.
(Feb 19, 2017)
I've been trying to learn a 3D drawing program. Yesterday I noticed that I was working but not learning.
(Jun 27, 2016)
Some interesting tweets make me wonder: if I were creating a method today, what would it be?
(May 27, 2016)
Over the past few days, an ancient twitter thread accidentally revived, talking about how you don't need quality code when you're just validating assumptions. What do the ants have to say about that?
(Dec 18, 2015)
I was asked a question via email and liked my answer enough to write it up. I hope you like it too.
(Nov 3, 2015)
A Twitter thread gets me thinking about Mock objects and whether they're more than just a matter of personal taste.
(Nov 2, 2015)
Let's try this again. The previous article was not clear to all readers. I suppose this is often the case with my work but in this case I thought I'd try again.
(Oct 30, 2015)
At the time of the Agile Manifesto, we all did the best we knew. Here's something I wish we had done. (Revised)
(Oct 18, 2015)
The Backlog is an essential artifact in Scrum. It may also be the root of serious dysfunction.
(Oct 12, 2015)
Generalizing from a few results isn't proof. In this article I'm going to prove that by generalizing from a few results. Wait, what?
(Jul 29, 2015)
If we can't build software well, all our Agile is for nothing.
(Feb 13, 2015)
Content from XProgramming has been moved to this site. Some brief retrospective thoughts.
(Oct 7, 2014)
Robin Dymond asked me to write about making stories small. Well, there's this.
(Apr 1, 2014)
My friends and colleagues in the #NoEstimates circles have some good ideas, as I've commented elsewhere. I'm left, though, with a couple of concerns.
(Mar 27, 2014)
The Agile Manifesto says "Deliver working software frequently". Learn to do that. The rest will follow.
(Aug 23, 2010)
At the Agile Developer Skills course at the Raikes School, I commented that we don't usually test accessors. But we test everything. Is this a contradiction?
(Aug 5, 2010)
Jon Bettinger has found a failing test! Excellent!
(Aug 4, 2010)
My critiXXXXX advisors expected a more function-oriented solution. Here's something a bit better, perhaps ...
(Aug 4, 2010)
Philip Schwarz provided a nice-looking implementation. Let's look at it and try to build on his ideas.
(Aug 3, 2010)
I've been working with Scala a bit, just to learn what it is. I've found it interesting, if frustrating. Here is a bowling experiment.
(Mar 8, 2010)
Uncle Bob Martin comments on "Developer Certification WTF?" in a recent blog entry. Let's talk a bit about developer quality, and some things that are being done about it.
(Mar 6, 2010)
Choose your tools wisely, that they allow for the development of your skill.
(Mar 5, 2010)
Jim Shore has written a short item with the above title. Let's think about it a bit.
(Dec 23, 2009)
There are essential practices in Scrum and Agile. Not because we say so. It's the nature of the beast.
(Apr 10, 1998)
They're not XP's rules, they're the team's rules.
(Apr 8, 1998)
(Mar 24, 1998)
The C3 project team has voluntarily adopted a large number of practices. Every team member follows these practices closely. We have found that designing, coding, and testing in a consistent way means that the team becomes quite well integrated and that team members know just what they can expect from each other. Software quality is kept more uniform, and at a high level.
(Mar 23, 1998)
A few times during the project, a team took on a task and did not complete it within the iteration. They wanted to complete the task and kept it for the next iteration. This generally turned out to be a mistake.
(Mar 23, 1998)
There is some written documentation for the software, more commonly interpreting requirements than documenting design. Sometimes we document an approach to some particularly difficult area. We "never" document code.
(Mar 23, 1998)
We do use class comments to describe what a class is for, and sometimes how it works. We probably don’t do this often enough, and we probably don’t keep them as up to date as we should.
(Mar 23, 1998)
In general, we do not comment our methods. Beck teaches that a comment is used to indicate that a method is not yet finished. That’s how we use them.
(Mar 23, 1998)
Simplicity + Communication + Testing = Aggressiveness
(Mar 23, 1998)
We use CRC card design almost exclusively. Developers, managers, and users are all comfortable with the cards, since they are non-threatening. Moving the cards around makes it easy to describe how classes work, and it is easy to throw a couple of cards away and create new ones if the design isn’t working out.
(Mar 23, 1998)
Here are a few of the key code formatting patterns we use. The names and some of the examples are from Kent’s book.
(Mar 23, 1998)
Never underestimate the power of inspecting and changing things with Inspectors. Perhaps your GemStone database is messed up: a bunch of People have excess Parts in certain Bins.
(Mar 23, 1998)
We call the combination of frequent release with tests at 100%: continuous integration, relentless testing. The result is rapid progress and a system that always works better than it did the day before.
(Mar 23, 1998)
We all code to the exact same standards. We name our classes and methods the same way, we format code the same way.