Category: All Articles
(Nov 29, 2023)
Design Thinking: There's this notion of "encapsulation" that I've heard about. And "cohesion"?
[ code-signs, python ]
(Nov 28, 2023)
What general notions might we draw from the past few days' work? What do you see that I do not?
[ code-signs, python ]
(Nov 27, 2023)
Saucer is still too complicated. I had an idea yesterday at close of session: a helper class!
[ code-signs, python ]
(Nov 26, 2023)
Drilling down was useful, I think, but let's take a look around for new code signs. We wind up working on names. Again.
[ code-signs, python ]
(Nov 25, 2023)
I think I see something that would improve the InvaderGroup logic. Let's find out.
[ code-signs, python ]
(Nov 24, 2023)
Let's have a look at the new code for invaders and edges, see what it's telling us, and do something about those hundred-plus calls. Bear bites man. Man survives.
[ code-signs, python ]
(Nov 23, 2023)
I promised to throw this spike away and do it over. Can we talk about this? Includes words like 'folderol' and 'bugaboo'.
[ code-signs, python ]
(Nov 22, 2023)
Let's try a spike that may lead to an improved version of our invader fleet logic. I promise to throw it away.
[ code-signs, python ]
(Nov 22, 2023)
A very strange session. Two hours of reading and thinking, one very simple change adding an enum, no major improvement. Wasted? Or valuable? I'm not sure yet.
[ code-signs, python ]
(Nov 21, 2023)
I propose to identify and discuss the things I see in code, what they make me think, and perhaps a bit about what I might do about them. This does not go as I expected.
[ code-signs, python ]
(Nov 20, 2023)
I've run into a small issue with the Sounds object. I think I have a solid idea for it.
(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.
(Nov 17, 2023)
Working on sound, we encounter an interesting refactoring, done in a very zen-like fashion. Small steps, add duplication until it resolves. This was really quite nice.
(Nov 16, 2023)
I have a somewhat more expressive way to, well, express what we did yesterday. Do we prefer it? Let's find out. Short, and sweet.
(Nov 15, 2023)
I propose to remove some if statements today. Why might we do that? Do we like the result? Readers may disagree. I might even disagree with myself.
(Nov 14, 2023)
I'm pleased that Invaders has been implemented without framework changes. And I see what I think is a desirable change. I learn otherwise.
(Nov 13, 2023)
I want to talk today about Programming by Intention, a notion I learned from Kent Beck and Ward Cunningham.
(Nov 10, 2023)
I woke up this morning thinking about a very invidious, nay, odious, nay, heinous comparison.
[ Social ]
(Nov 9, 2023)
Seeking something to do, I'm back on my Invaders [DELETED] again. I do tidying. It comes down to joy.
(Nov 8, 2023)
My mistakes make me laugh. I greet them as old friends. How do yours make you feel?
[ Strawberries ]
(Nov 8, 2023)
GeePaw Hill and I both noticed something odd about the Wordle words. Is it an inherent property of the game, chance, or intelligent design? Spoiler: It's neither!
(Nov 7, 2023)
There are far more important things going on in the world than my Python programming.
[ Agile-Related, Social ]
(Nov 5, 2023)
Herein, some comments on what I've learned playing with Wordle.
(Nov 4, 2023)
I've thought of a streamlined way to get the expected information values from the file data, and want to try another shot at parallelism.
(Nov 3, 2023)
I can't explain why, but I've decided it will be interesting to try the information theory ideas I've found on line.
(Nov 2, 2023)
Convinced that I can't make generating the SolutionDictionary fast enough, I'll explore pickling it.
(Nov 1, 2023)
I think yesterday we were limited by pickling. Who knew? First try: Debacle. Second try: Can't work, don't even try.
(Oct 31, 2023)
Today I want to try something new: concurrency. Includes: Thrilling Video.
(Oct 30, 2023)
I'm struggling to keep the shape of the solutions dictionary in my mind. Therefore I need something simpler.
(Oct 30, 2023)
Let's save some test time by saving some data. And let's look at the data to see what we can learn naively. Spoiler: I quickly ditch the caching idea.
(Oct 28, 2023)
I'm having trouble coming up with a real plan here. And I think I've squeezed everything I can out of `score`. I borrow an idea from GeePaw Hill.
(Oct 27, 2023)
I suspect there's a mistake in my scoring. We do some timing. We struggle for an idea. We resort to some bit twiddling. Do not read, that's my suggestion.
(Oct 27, 2023)
Trying to do 300 billion operations makes me think I should take a new angle. I need a better idea, or a computer that is 1000 times as fast as this one. A better idea may be possible ...
(Oct 26, 2023)
A bit of study tells me that my scoring algorithm is wrong, although there seems to be some debate about it. Then I have to figure out what to do next. I burn an hour of CPU time.
(Oct 25, 2023)
Our Tuesday evening Friday Geeks Night Out Zoom Ensemble is getting sucked into Ken Pugh's work with Wordle. I have caught the virus and am going to start a new Python project.
(Oct 11, 2023)
I have yet another idea for how to get rid of the conditionals in the saucer code. This one might actually be pretty decent.
(Oct 10, 2023)
I have an idea for how to get rid of the conditionals in the saucer code. It is a nasty idea. I must try it.
(Oct 9, 2023)
Time to look at the Saucer and see if it needs some improvement. I feel sure that it does. A very nice refactoring sequence appears.
(Oct 8, 2023)
It's Sunday morning and I have a little time to play. Let's see what's left for the Saucer.
(Oct 7, 2023)
Let's see what's left for the saucer and what we can do. It's late Saturday morning: maybe we won't do much.
(Oct 6, 2023)
We'll continue with the Saucer. We'll look at what's left and pick something. Includes thrilling video.
(Oct 5, 2023)
Yesterday I was running faster than my feet. Let's see how the Saucer code looks and how to improve its tests and the code itself.
(Oct 4, 2023)
Let's see about doing the saucer. How hard could it be? Well, not hard, but ragged and chaotic. I moved away from my A game for some unknown reason.
(Oct 3, 2023)
I think about screen layout. I look at the list of things to do. It's the Jira Trap!! It all seems so reasonable ... until it isn't.
(Oct 1, 2023)
My keyboard tray Jira is getting too messy. I'll clean it up and go to a much more high-tech solution. Also: a tiny tweak to screen layout. Also: robots
(Sep 29, 2023)
There's some duplication between the BottomLine and Shield. Enough to fix? Let's have a look. Outcome: This goes ever so nicely! Sweet!
(Sep 27, 2023)
I found a way to damage a Surface, given a Mask. I don't exactly like it, but it works. Now what?
(Sep 26, 2023)
Yeah, let's do the bottom line. Might be just the right size for the afternoon.
(Sep 25, 2023)
I think there are very few things left to do with Invaders. One of them is scoring.
(Sep 24, 2023)
More waffles, about the tensions between design alternatives for the Flyers. What if we were to open the doors as widely as possible? I think this is my last waffle on this topic. I like the outcome. Today.
(Sep 23, 2023)
I gave abstract method a chance, for almost 24 hours. I hated changing all my classes to implement all those pass methods. Let's try a different dispatch. Waffles?
(Sep 22, 2023)
Now that we have this metaclass, and now that we have this decorator, what shall we do? The answer may surprise you.
(Sep 19, 2023)
We continue learning decorators using tests. Our simple decorator doesn't handle parameters in the wrapped function. Lets figure out how to do that.
(Sep 18, 2023)
Never heard of him. Let's learn about decorators, using tests.
(Sep 18, 2023)
The Python "decorator" is less bizarre than metaclasses and might be just the thing for our needs. Let's try one.
(Sep 17, 2023)
There are surely ways to provide my `ignore` feature without using metaclasses. I can think of one. Maybe it will help me think of another.
(Sep 16, 2023)
Having found a way that I think will work, I'll try again today to install the 'ignore' capability. Hamsters. And success!
(Sep 15, 2023)
Today, I plan to install the new metaclass with the `ignore` feature. Result: Bears discovered deep in the bag of tricks. They bite. Later: I know what caused it.
(Sep 13, 2023)
Today, in the spirit of meta, I work on a metaclass for ignoring methods. I start on Wednesday and finish on Thursday. It's scary weird.
(Sep 13, 2023)
What shall we do today, Brain? The same thing we do every day, Ron. Find something interesting to do. Things get very meta ...
(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".
(Sep 10, 2023)
Let's do ReservePlayer. It has essentially no behavior. We'll TDD it anyway, and will be glad we did.
(Sep 9, 2023)
Thinking about how we'll replace a destroyed player has led me to a strange idea. Perhaps too strange, yet fascinating.
(Sep 8, 2023)
The words "time capsule" popped into my head last night. Have I told you my favorite thing about this program's design?
(Sep 7, 2023)
Bill Wake's comment suggests more use of the new Masker. Looks useful.
(Sep 6, 2023)
In which, a small object helps improve our code.
(Sep 5, 2023)
Part two, following P-247. Another idea. And we still have more opportunities to improve! Wait, SQUIRREL! Two of them!
(Sep 5, 2023)
In my quest to spend way too much time on ImageMasher, I have another idea. I should also mention why this exercise is a good one: changing code is our job.
(Sep 4, 2023)
Let's take a look at the ImageMasher. We'll see how far toward perfection (or lily-gilding) we can push it. We go a long way—and at the end I think I see still more that we can do.
(Sep 4, 2023)
It's oh-dark-thirty but I think I've got the answer.
(Sep 3, 2023)
An early idea got me up, to get it down, as it were. Too interesting for me to go back to sleep. Yes, I am strange.
(Sep 2, 2023)
I didn't see it on my drawing, I didn't see it in my code, but then I saw it in the code in my mind. The lessons today, oddly, are about dozing, and estimation.
(Sep 1, 2023)
I believe I'm close to understanding masks well enough to build a little object. Another test or two and then I hope to try something. Chaos may or may not ensue.
(Aug 31, 2023)
Before I try to improve the way the Shield adjusts its image and mask, I feel that I need a better understanding of how things work. We'll use tests to learn and record.
(Aug 31, 2023)
Some reflection, and an exchange with Rickard, makes me think that my lovely little Tasks object isn't as great as I initially thought it was. Let's think, code, think, and learn.
(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 29, 2023)
Let's do some tasks, now that we have the Tasks object. We'll see how we like it.
(Aug 29, 2023)
Not my ideas, mind you. Two good ideas from Tomas set me on a course for last evening and this morning. Are there rats in here?
(Aug 28, 2023)
Let's see if we can add lightness to our reminder facility.
(Aug 28, 2023)
My timing defects have caused some thinking, some of it mine. There might be a better way. (This is long, because there's a lot of design thinking. Then some rather interesting doing.)
(Aug 27, 2023)
There's a second "timing" defect in Invaders. This one is harder to forgive. Mea culpa. Plus: At least one other defect. And I allowed myself some fun writing this one, too. Same as it ever was.
(Aug 26, 2023)
Let's clean up the shields code and improve the damage. I've found a missing piece, the explosion part. A rather nice refactoring sequence ensues.
(Aug 26, 2023)
Let's clean up the shields code and improve the damage. I've found a missing piece, the explosion part.
(Aug 25, 2023)
It's 3 AM. The power's out, the phones are down. Of course I'm going to program a bit.
(Aug 24, 2023)
I have the facts. Let's draw four shields. Then shoot them a bit.
(Aug 24, 2023)
The Invaders game has shields, four of them. They take damage from invader shots, but are not destroyed in one go. This will be interesting. What do we need and what are some small steps?
(Aug 23, 2023)
Let's start transitioning away from inherited `interact` methods, making them abstract as originally intended. I'll try to devise a sensible way of proceeding,
(Aug 23, 2023)
Let's explore last night's matrix idea. There's got to be a pony lesson in here somewhere.
(Aug 23, 2023)
Last night, some topics came up that I'd like to consider a bit this very early morning.
(Aug 21, 2023)
If I'm right, which assumes facts not in evidence, this next step is going to be surprisingly easy. This often happens. There may be a reason.
(Aug 20, 2023)
I had an interesting realization about the shot patterns. And we have a hanging commit, some broken tests, and more to do before we are done.Things go well. Thoughts on small steps.
(Aug 19, 2023)
Let's find another small step toward invader shots. Maybe even more than one. Very long, I'm not sure why. And no commit at the end. Afternoon distractions. Not delight, just distractions.
(Aug 19, 2023)
Invader shots emanate from invader columns, according to a pattern. How are we going to do that?
(Aug 18, 2023)
Everyone needs them. Let's make that happen. Then, let's explode some invaders.
(Aug 18, 2023)
I think first I'll have the invader and player shots destroy each other if they collide. I had hoped for more. This caused enough trouble. Mostly resolved, I think.
(Aug 17, 2023)
I think today I get to start on the invader shots. How much of the original game's pattern must I follow? Probably it's too soon to ask. Squiggles!
(Aug 16, 2023)
There's reason to believe that there's an object in here. Let's bring it out. I feel I picked a poor path. How could I know?
(Aug 15, 2023)
At least two collision issues face me. One is how to stop the shot after it hits an invader. Another is that I see an object trying to be born.
(Aug 14, 2023)
Let's see about how to detect collision between the invaders and the player shots. I think we want to do actual bit overlap.
(Aug 14, 2023)
In response to a question from Bruce, I find myself looking askance at one of my darlings. Should I kill it?
(Aug 13, 2023)
We have a start at player shots. Let's get one on the screen .. and then off the screen.
(Aug 12, 2023)
I think I'd like to try the player shot. Names are becoming an issue. For once I do the right thing.
(Aug 12, 2023)
It's time to make the game look a bit more like a game. I'd like to think briefly about what to do and how to do it.
(Aug 11, 2023)
Having used the BitmapMaker in the game code, I envision a better way of using it.
(Aug 10, 2023)
I think the bitmaps are ready to be moved into the Asteroids-Invaders repo. I hope to actually use a couple of them in this session. Success! And an amusing mistake.
(Aug 9, 2023)
I've been pecking away at making the bitmaps for Space Invaders. Let's take a look at where we are. Gross ad-hocery and a lot of pasted data and bitmaps. Not very interesting, even for me.
(Aug 8, 2023)
There may be room for more refactoring in the fleet/group area. What even are those two objects? New CSS, consider clearing browser caches.
(Aug 7, 2023)
Let's continue to look at InvaderFleet and see whether some handy little objects might help us out.
(Aug 7, 2023)
It seems to me that InvaderFleet may be asking for some refactoring. Let's start with some thoughts on TDD, and a look at the tests and code.
(Aug 7, 2023)
I would really like to move this game along a bit. But there's a matter of scale that needs attention: the reversal points. And that fills the morning.
(Aug 5, 2023)
Let's continue with moving the invaders. We have some issues to deal with, and for at least one, I have no solution in mind. Lots of thinking tells me there's something funky in here.
(Aug 5, 2023)
I believe that I've made a mistake. This will not be my first, nor, I fondly hope, my last. CW: Contains brief Jira abuse.
(Aug 4, 2023)
This is kind of second-level speculation about what makes my program hard to understand and what might make it better.
[ understanding ]
(Aug 3, 2023)
Here I speculate and comment on why my decentralized asteroids game is difficult to understand.
[ understanding ]
(Aug 3, 2023)
It's time for a README file. Well past time, to be clear. And I have an ulterior motive, which will become apparent in due time.
(Aug 2, 2023)
Part of a short series on design, static vs dynamic languages, god objects, and our ability to understand the code.
(Aug 1, 2023)
Let's take the next steps to, um taking the next steps.
(Aug 1, 2023)
Bruce gave me a very nice idea: Bumpers! I think I'll try it.
(Jul 31, 2023)
I've decided to extend the Asteroids program to include Space Invaders in addition to Asteroids. I expect this to be—well—not easy but not too difficult.
(Jul 30, 2023)
We've managed to import some bitmaps and display them. It's time to start sketching and executing a plan. Then I ask myself a hard question, leading to a complete change of direction!
(Jul 29, 2023)
We do a quick bitmap experiment, and then create some alien surfaces from the original Space Invaders arcade source code.
(Jul 28, 2023)
Further setup for the record. PyCharm pleases me.
(Jul 28, 2023)
Today I plan to set up a new Python project. This one will be a Space Invaders replica. I'll say a bit about the idea, but this is mostly just a record of how setup went.
(Jul 27, 2023)
Somehow I am enjoying working on, refining, polishing this Asteroids game. I don't want to stop. I have at least two silly features in mind. And, are there still lilies to gild? We discuss inheritance. Basically done?
(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 26, 2023)
Is this program as perfect as I can make it? Is there anything left to do? When your best idea is spinning asteroids ...
(Jul 25, 2023)
Tomas Aschan inspires me to try an object. I don't think I'm going to do exactly as he said, but when this works, he deserves much of the credit. If, perchance, it doesn't work, it'll be Chet's fault. But it will work.
(Jul 24, 2023)
What if we made all three `draw` commands look alike?
(Jul 24, 2023)
On our quest to improve SurfaceMaker right out of existence, let's try a LinePainter object to replace it. Except that I change my mind almost immediately. Notes within on hints that I wasn't working ideally.
(Jul 23, 2023)
Now that we've improved SurfaceMaker, can we improve it all the way to nothing? Let's find out.
(Jul 22, 2023)
We've improved the SurfaceManager a lot. We'll do a quick review of that, and then see what we've missed. Why? It's good for us and for our organization. Late note: Ron was too clever.
(Jul 22, 2023)
I've implemented the SurfaceManager to allow callers to specify extra room for fat lines. That was not a good idea.
(Jul 21, 2023)
At the time I worked out how to draw the game objects, I was new to Pygame and all its works and all its pomps. We deserve better. Refactoring FTW!!
(Jul 20, 2023)
The screen objects are too big for the amount of screen space we have. We need a global change of some kind! (Turns out to be disappointingly easy.)
(Jul 19, 2023)
We'll start with some philosophizing, and then we'll do a review of the saucer's missile-firing logic. Fun is actually the point.
(Jul 17, 2023)
I have no particular goal in mind this morning — yet. We'll look at our recent work and then beyond it. My initial concern: Aliasing.
(Jul 17, 2023)
I'll record here short notes on things that I may choose to write more about in the future, on social topics. I plan to update it from time to time, and to change the date, sometimes.
[ Little Things, Social ]
(Jul 16, 2023)
I'm going to take another try at improving the ShotOptimizer code. Not because we really need to, but because we want to learn how to make code better. That's my story and I'm sticking to it.
(Jul 15, 2023)
I see the issue and fix it. An aliasing issue. I haven't had one of those for a very long time. Still no committed code change but some good ideas. Next time?
(Jul 15, 2023)
It's 0430 hours, commonly called oh dark thirty. I have a desperate need to clear my mind and get back to sleep. I try some things and settle on none. I learn some things but no net code change.
(Jul 14, 2023)
I do not love that phrase, but I do love programming.
(Jul 13, 2023)
This morning PyCharm and my code rubbed my nose in the notion that a "static method" signal may mean that the method in question really belongs on some other class. Let's explore that idea.
(Jul 13, 2023)
Today I think it might be fun to extract a SafetyChecker class from ShipMaker by refactoring. First I get a better idea, and then the code tells me what it really wants. Fascinating!
(Jul 12, 2023)
Just for fun, I add a cheat code. Might not be my last one.
(Jul 12, 2023)
It's funny how thinking about one thing can give you an idea about another thing. Just a little fun today.
(Jul 11, 2023)
OK, let's see if this baby will fit where we intended it to fit.
(Jul 11, 2023)
Because I injected a defect into my two-player game, and because it could be better anyway, let's make it better.
(Jul 10, 2023)
After all that happiness, I realized that free ships go to the wrong player in the two-player mode. Bummer. In fact: Dammit!
(Jul 10, 2023)
Let's review how we added a two-player mode to the game. Let's look at how it was done. Frankly, I am pleased. EXCEPT: A Defect!!
(Jul 9, 2023)
If things go roughly as I expect, we'll have the two-player game today. Sometimes things do go as I expect. It could happen. It DOES happen!
(Jul 8, 2023)
Yesterday, an idea. Today, an experiment. Your intrepid author is optimistic. Things go very nicely.
(Jul 7, 2023)
Let's think about a two player alternating game and how we might do it. A bit of design thinking seems to pay off.
(Jul 7, 2023)
I think the coin test is better than it was, but it isn't what it could be. Let's do better, just for the practice. I surprise myself with a challenge.
(Jul 6, 2023)
I thought this morning that I had broken the game. Why am I even doing this seemingly useless changing? How do you get to Carnegie Hall?
(Jul 5, 2023)
I'll just have a look in and see what might need a little tidying, then, shall I?
(Jul 5, 2023)
Zoom report. I notice a thing. What is to be done about it? Something nice. Repeating the Faulkner quote from yesterday.
(Jul 4, 2023)
Sensible thoughts lead me to wild speculation about the future of this tiny program. Who knew? Then, I create something nice: a Transponder!
(Jul 3, 2023)
Let's continue the scoring improvements, with a little help from our friends.
(Jul 2, 2023)
Working with Saucer has me thinking that scoring is unnecessarily complicated. Let's look into that. Isn't it amazing how much a tiny program like this one can be improved? And I didn't even try to do a poor job.
(Jul 1, 2023)
Saturday: Remove unneeded abstract method. Discuss design. Sunday: a nice refactoring series.
(Jul 1, 2023)
As small as this program is, it shows us examples of issues that arise in larger applications, and suggests similar changes to those we'd make in the wild.
(Jun 30, 2023)
I really don't like the fact that I am either too dull or too lazy to derive the quadratic targeting calculation. Either it goes, or I do, and I get to choose.
(Jun 29, 2023)
I'm just going to look at random bits of code and see what they suggest to me. Watch me if you care to.
(Jun 29, 2023)
Bill Wake gives me some thoughts about a static method. We'll look at that, and see what else may need a bit of improvement.
(Jun 28, 2023)
Last night, I showed my friends two largish methods. Soon, everything was different.
(Jun 27, 2023)
This morning, I woke up thinking something was broken. Fortunately, I was mistaken. Let's fix it anyway. Also, thanks to a reader!
(Jun 26, 2023)
This afternoon, I notice something that could be better. Let's see if we can find a bit of improvement.
(Jun 26, 2023)
The final of four articles covering a single refactoring session. It has gone ever so nicely.
(Jun 26, 2023)
We continue a long refactoring session. It goes so smoothly that it all happens in one stress-free morning.
(Jun 26, 2023)
I begin a long refactoring session. I'll split the article another time or two. I am a merciful person at heart.
(Jun 26, 2023)
Again today, I plan to make the necessary adjustment to missile velocity to improve targeting. Again today, I have an idea. (First of a few articles all reflecting one morning session.)
(Jun 25, 2023)
I've left in two tests that aren't testing anything, and I still want to improve targeting. Let's see what we can manage. (Answer: Not much. Final thought on story estimation.)
(Jun 24, 2023)
This morning I discover that the code doesn't do what I thought it did, nor what I now want it to do. Inching toward better.
(Jun 23, 2023)
The new targeting code seems to work, though I could not derive it. I want to refactor so that it makes more sense, and I have an idea for a bit more testing.
(Jun 23, 2023)
I get some good advice from a reader (!) and ten (unrelated) consider a demonic idea. I lift a solution from the Internet. Some nice little refactoring. A few tests. Saucer is deadly. Could be more deadly.
(Jun 22, 2023)
The small saucer should always target the ship, while the large one targets randomly. Let's see how we might manage this. The Gunner does know the saucer ...
(Jun 22, 2023)
I think today I'll put in the small saucer, because the game is already too hard for me.
(Jun 21, 2023)
Let's begin by getting rid of the Explosion Flyer, at least the Flyer part of it.
(Jun 21, 2023)
We think about our design, do a feature, recognize a potential concern. Not what I planned, but that always happens.
(Jun 20, 2023)
Must think about, maybe spike about, an idea from GeePaw Hill. How pure do I want to be, on what dimensions? In the end, "No!" and I'll tell you why.
(Jun 19, 2023)
Observations from Rickard. And let's remove some Flyer subclasses. I still think I've gone too far.
(Jun 18, 2023)
SaucerMissile must go: it is not bearing enough weight for the trouble it causes.
(Jun 17, 2023)
A Mastodon exchange with Rickard makes me wonder whether this program violates Kent Beck's "Rules of Simple Design". I need to think about this.
(Jun 17, 2023)
I think I've gone too far ... I discuss, speculate, wonder, and do not as yet know what to do. Ideas welcome, as always.
(Jun 15, 2023)
Yesterday's experience causes me to question a central design notion.
(Jun 14, 2023)
Last night, Hill observed something notable. We worked on it then, and I'll do more now.
(Jun 13, 2023)
Looking at Game, and it seems we can improve quite a bit. Great outcome, nearly perfect!
(Jun 13, 2023)
Let's go after Fleets and Fleet. There's too much there for what we need. And, perhaps, too little. Discovery: I like it!
(Jun 12, 2023)
What shall we do now? Think about splitting Gunner? Discover something different in there? Create a debug keystroke? Why not all the above?
(Jun 12, 2023)
I am slightly irritated by the fact that my lovely Gunner object would really benefit from an additional change.
(Jun 11, 2023)
OK, lily-gilding aside, what are we really doing to do with `nearest`?
(Jun 10, 2023)
I'm going to do the tiny object for the `nearest` code. I just want to see how it looks. Talk about gilding the lily.
(Jun 10, 2023)
I had an idea last night as I was dozing off. If I can remember it, I'd like to try it out. This turns into a long series of revisions of about ten lines of code. Fun for a Saturday.
(Jun 9, 2023)
As a lark, I plugged in the Gunner. Doesn't seem to work. Let's see what's up.
(Jun 9, 2023)
I've received a PR or two from Jani, and then on to more work on Gunner,
(Jun 8, 2023)
I am trying to do little things in a house full of banging. I found something possibly worth thinking about. And maybe I go off the rails. I'm not sure.
(Jun 8, 2023)
Some thoughts on the Alliance holding its conference in Florida, and on some surely well-intended remarks by their chairperson, on their blog.
[ Social ]
(Jun 8, 2023)
A toot from Jani led me to see the defect allowing ships to shoot themselves down. The question is what to do about it.
(Jun 8, 2023)
We are getting a new roof today. Might be hard to concentrate. Fortunately, I try never to need deep concentration anyway. Shall we work on Saucer today? We shall. (TDD really works nicely here.)
(Jun 7, 2023)
A couple of small changes, then we'll see what's next.
(Jun 7, 2023)
I did a bit last night. Let's see if we can finish the HG this morning. I bet we can, but then, I read ahead in this article.
(Jun 6, 2023)
Let me do a little background TDD here, see what I come up with.
(Jun 6, 2023)
I need all the help I can get playing this game and I'm thinking I'd do better if I could shoot down the Saucer's missiles. Also, some thinking, and hyperspace recharge cycle.
(Jun 5, 2023)
We want the game to start in "Attract Mode". Should be trivial. Shall we do a Seed? No, something more fun. Also: I make a mistake. Not the first time, just the most recent.
(Jun 4, 2023)
Jira is the name of the area on my keyboard tray where the yellow sticky notes live. It's getting messy. Let's see if there's anything on there we can scratch off, or if all else fails, actually do.
(Jun 3, 2023)
The Game knows the objects that need to be loaded into the mix to start the Game. Let's fix that up.
(Jun 2, 2023)
A Timer-related idea. I have a little time, let's try something. It goes very nicely, I think.
(Jun 2, 2023)
No, I mean REALLY look at it. Did you think I was finished with Thumper?
(Jun 1, 2023)
Did you ever look at your code, man? Like, really look at it?
(May 31, 2023)
I think we should break out the thumper logic into a Flyer and simplify Fleets accordingly.
(May 31, 2023)
This morning I have concerns about the order of events, and what they are. Let's see if we need more clarity there. It goes well. Important footnotes.
(May 30, 2023)
This morning I thought I'd clean up Fleets a bit. Is now the time for that?
(May 30, 2023)
As usual, what happens today isn't what I planned. I recognize a design issue, implement a very interesting test, then generalize what happened to consideration of real teams. Watch how my thoughts evolve.
(May 29, 2023)
We need a GameOver object and a Quarter object. Let's try one or both of those.
(May 29, 2023)
I think there's just one more smart Fleet to remove and then we can greatly simplify Fleets and its interface. I wonder what other specific Asteroids notions may be lurking in the upper levels.
(May 28, 2023)
I think I'll move to replace another Fleet subclass. People I trust are tired of Asteroids. I briefly address that concern.
(May 27, 2023)
While I believe that my preparation work the last few days has been valuable, it doesn't feel much to me like real progress. Today I want a better feeling. And I get it!
(May 26, 2023)
Some thoughts on tests and code, inspired by shipping a defect and by ideas from Rickard. And then some changes. I have a nice one in mind.
(May 25, 2023)
I think I can do better than I've done with the Fleets object. Let's think about it.
(May 25, 2023)
Let's start with a question from Rickard, and then have a look at the Fleets / Fleet setup, to find one or more small steps toward our desired design. ALSO: Big mistake! Released broken game!
(May 24, 2023)
Let's see if we can reduce accesses to the specialized lists in Fleets. As so often happens, the next step isn't in the direction I expect. That's OK.
(May 24, 2023)
I think I'll start by counting missiles in the Ship and probably Saucer. Then we'll see what's next. The thing is to keep stepping toward the larger goal. Some interesting [mis-]steps.
(May 23, 2023)
What additional special objects do we need, and how might they work?
(May 23, 2023)
Let's put the full interaction protocol in place, so that more of our special Flyers can operate.
(May 22, 2023)
While sitting in a mostly boring on-line session, I'll do some small safe changes.
(May 22, 2023)
I am going to do a thing, and then another thing. Don't tell Hill about the other thing.
(May 21, 2023)
I am oddly without a plan this morning, even my tentative sort of plan. Be prepared to read my sort of thinking. I hit a few bumps but not major ones.
(May 20, 2023)
We make more small changes in the direction of independent objects interacting to make the game emerge. Let's experiment with full interaction.
(May 19, 2023)
I'll do a small change, then see what comes to mind. As long as we keep moving in roughly the right direction, we're good. Thoughts on small steps.
(May 19, 2023)
As I move toward the decentralized model, I need some thinking about next steps. But first, an interesting test.
(May 18, 2023)
The double dispatch is doing its job. Let's see about cleaning up the references to fleets and whatever else comes to mind.
(May 17, 2023)
-ralization. Just a picture of the relationships of some of the objects to start. Then a question: a world record? Guinness, where are you? And then: progress!
(May 17, 2023)
Some detailed thinking on how to refactor to a decentralized model. With any luck, some starting code. But I do feel the need of the thinking part.
(May 16, 2023)
I really liked the "decentralized" version of Asteroids that I did in Kotlin. Thinking about doing it again, in Python. Refactor to a new design? Why not?
(May 15, 2023)
I've been perusing the ancient scrolls, i.e. the Github repo of the original asteroids code. Some notes on what I think I understand so far, then some code. Repeat. Success!
(May 15, 2023)
Let's put in some more sounds. I anticipate little trouble. Even here, we learn some interesting lessons.
(May 14, 2023)
TIL that I had my speakers swapped left for right. And how to do stereo in pygame.
(May 14, 2023)
As one would hope, sound generation in pygame is pretty simple. I managed to work out the basics all by myself. Well, myself and the entire Internet.
(May 13, 2023)
Let's see if we can make hyperspace more dangerous.
(May 13, 2023)
I need another distraction. What's in "Jira"?
(May 12, 2023)
I want to while away a little time. What can we find that's right-sized?
(May 12, 2023)
We'll continue plugging in the MovableLocation, but I think it may need a better name.
(May 11, 2023)
What if there was some sort of Position object?
(May 11, 2023)
We want to get rid of the GFragment class. To do that, we have to get a little head.
(May 11, 2023)
While I am OK with the subclass design, I think we can do better. Also "Replace polymorphism with data."
(May 10, 2023)
Just the before and after versions of the refactored Fragment classes. Lurvely.
(May 10, 2023)
I want to take a look at the explosion, especially the draw method and see how we can clean it up. Many many tiny steps FTW!
(May 10, 2023)
Today I plan to add gold to the gilded lily, in the form of still more enhancements to the Ship's explosion. Unjustified, but I plan to be amused by the result. And I am.
(May 9, 2023)
We have some rudimentary fragments. Let's make some better ones. I spend ages tweaking numbers.
(May 9, 2023)
I almost always have fun here, actually, but today let's explode the ship. That should be a good exercise for the Fleet-based design.
(May 8, 2023)
I have some loose end notes in my keyboard tray Jira. Let's have a look at some of them.
(May 8, 2023)
I learned something new, and apply it. Also I have an idea of my own. Will wonders never cease!?!?
(May 7, 2023)
Thinking about some design issues, some good, some maybe not so good. Seven footnotes, none useful.
(May 6, 2023)
We do a bit of review of the code today, and we find some nice improvements.
(May 5, 2023)
We'll finish up our refactoring of the checking methods down into Fleets and lower. Quite a few odds and ends, none of them difficult. A noticeable improvement to Game.
(May 4, 2023)
It's afternoon and I have some distractions. I'd be wise not to try anything, but maybe I can find some tiny safe steps.
(May 4, 2023)
We must be pretty close to done in our quest to move responsibilities down to Fleets, Fleet, and flyers. Also some generic Python thoughts.
(May 3, 2023)
Let's move some more Game responsibilities closer to where they belong. (It goes better this time!)
(May 3, 2023)
I was off my game yesterday, and want to do better today. I can't be smarter, but I can go slower. I think that, plus experience, will serve. (I still manage to get in trouble.)
(May 2, 2023)
Let's push more behavior down into the objects. There's plenty of room at the bottom. (I nearly interfere with the canine, but finally make a little progress. Don't read this article.)
(May 2, 2023)
Some of what I did last time needs improvement. This is no surprise, but, really, I coulda shoulda woulda done better. I forgive me.
(May 1, 2023)
Are there still easy ways to make use of our Fleets and Fleet classes? The remaining cases may be a bit more difficult. "Repeat, not quite the same way."
(May 1, 2023)
There isn't enough simplicity in here yet. Let's add some more.
(Apr 30, 2023)
Colin Chapman's motto at Lotus might apply here. Let's see if we can simplify this code. That will help us add lightness, I think.
(Apr 29, 2023)
I am concerned about an aspect of the design which is inviting mistakes. How might we address it? I surprise myself with a much simpler change than I had expected to make today.
(Apr 28, 2023)
In for a penny and all that, I do the Ship's spawning Timer, somewhat the same but slightly different. I mention a Fundamental Learning.
(Apr 28, 2023)
Now that I have my nifty timer object, I want to use it. Is there a rationale for this? I'll find one.
(Apr 27, 2023)
A test suggests that calling a method from the Timer works just fine. I confess that I find it a bit hard to grok at first.
(Apr 27, 2023)
Features are important, but I learn more from code review, so let's see what we can see. Timer object: Ron does not kill his darling.
(Apr 26, 2023)
There are things not to like. There always are. Let's find some and improve them.
(Apr 26, 2023)
After Hill's good advice yesterday, the Zoom group last night came up with something even better.
(Apr 25, 2023)
I don't know why I needed a hint for this test, but I'm glad to have had it.
(Apr 25, 2023)
The Saucer missile should usually be random, but sometimes aimed. Let's see about aiming. (It goes very smoothly, but I'm a bit light on tests.)
(Apr 24, 2023)
In the unlikely event that I shoot down the saucer, I'm supposed to get points. Let's make that happen.
(Apr 23, 2023)
The saucer's missiles just emanate from center screen. Time to fix that. I'm not sure how to test it. Oh, wait, I have an idea.
(Apr 22, 2023)
I kind of spiked something. I apologize.
(Apr 22, 2023)
Looks like it's time to deal with missiles and the saucer. It fires, and the ship can shoot it. Which should I do first?
(Apr 21, 2023)
My browser was open to the `random` page, and for a moment, my mind was open too.
(Apr 21, 2023)
The Saucer is a saucy little minx. Let's add some more sauce.
(Apr 20, 2023)
Continuing the saucer implementation in a second contemporaneous article, just to spare your eyes.
(Apr 20, 2023)
I remark on some things I learned from Rickard, and then get started on Saucer. I'm so successful that I had to split the article into two to spare the reader.
(Apr 19, 2023)
Let's see about pulling collision logic off into its own class. Should be easy, he said...
(Apr 19, 2023)
I may have casually been referring to the yellow sticky notes in my keyboard tray Jira as "stories". That's not consistent with my classic advice about stories. And my first-ever pull request!
(Apr 18, 2023)
Today I'll keep moving things into the Game object. Probably boring. One Learning: the current_instance trick was useful. Mentioned at the top for your convenience.
(Apr 17, 2023)
I'll just peck away at moving top-level fuctions into my game class. Tedious unless I get a clever idea. Very boring, do not read.
(Apr 17, 2023)
I think it's time to start moving the main loop code to an object. Very rambling and ambling flow this morning. Lots of thinking, small steps. One roll-back.
(Apr 16, 2023)
OK, let's do collisions differently and see what we think.
(Apr 16, 2023)
I'll pick something off the yellow sticky-notes Jira on my keyboard tray.
(Apr 15, 2023)
Let's see about displaying the available ship count, little ships in a row.
(Apr 15, 2023)
I've done what I intended with the billiards diversion. Let's see what we need here in Asteroidsville. Just small stuff. PyCharm impresses me greatly today.
(Apr 14, 2023)
Rightly called on my B.S., I strive to improve by running some timing tests on this tiny patch of code.
(Apr 13, 2023)
I'll point you to a fairly famous anti-clean-code video screed, comment on that, and explore the efficiency, or lack of it, in our little billiards program. I notice something surprising. And something important.
(Apr 10, 2023)
Rotation of vectors isn't second nature to most folks. Let's describe how my little Python billiard ball reflection program works.
(Apr 9, 2023)
Today let's review the code and improve it a bit. I think PyCharm can help with that. Same refactoring, four times!
(Apr 8, 2023)
We should probably keep score. Shouldn't be terribly difficult. Just some text ... how hard could it be?
(Apr 8, 2023)
For the next day or two, I'm going to do a little exercise on the game of billiards. Very simplified, of course.
(Apr 7, 2023)
Let's add the help messages to the GAME OVER screen, and, time permitting, work on quarter insertion. I expect the first bit to be mostly tedious.
(Apr 6, 2023)
Let's clean up startup and maybe we can come up with a finite supply of ships and maybe even GAME OVER.
(Apr 6, 2023)
I think it's time for asteroid waves. Let's review stories. We create some questionable code and question it. It confesses and tries to reform. What do you think?
(Apr 5, 2023)
Let's do safe entry. Should I put this thing up on GitHub? No one has asked for that.
(Apr 5, 2023)
We'll review and refine the list of things to do and pick something. Doubtless fun of some kind will ensue. Loving PyCharm's auto-run of the tests!
(Apr 4, 2023)
Just some random cleanup, unless I get an easy idea.
(Apr 4, 2023)
Today's story is to make the missiles damage asteroids. But I have a larger question. P.S. I am the Cat ...
(Apr 3, 2023)
Let's see if we can make this thing fire a missile.
(Apr 3, 2023)
Our fun with delegation, plus an early call to breakfast meant that yesterday I didn't get to collisions. Let's work on that today. [Ron makes a rookie mistake.]
(Apr 2, 2023)
It's time for more features and less playing with drawing. This leads me to think about common behavior in motion and collisions. Ron learns something about inheritance and delegation!
(Apr 1, 2023)
Let's do to the ship what we did to the asteroids. And some thoughts about the future.
(Mar 31, 2023)
My search for why the window is double-sized caused me to observe that I can't scale my objects to arbitrary sizes. I think part of the issue is coupling, so that's interesting.
(Mar 30, 2023)
I noticed a graphical anomaly and think I can fix it. And another that confuses me.
(Mar 30, 2023)
One more tweak on the SurfaceMaker, then lets see about using it to make more asteroids.
(Mar 29, 2023)
I'm still pecking away at improving the surface creation. I'm wondering if my caching object, tiny as it is, is more than I need. We'll see. I think I should take advantage of the limitations of the current situation.
(Mar 28, 2023)
I have an idea, or some fraction of an idea. Let's see what we can make of it. (As often happens, I don't go where I thought I would.)
(Mar 28, 2023)
Some advice for a better way sends me scurrying to read about list comprehensions.
(Mar 28, 2023)
We don't even have 200 lines of code yet. How can refactoring make any sense already?
(Mar 27, 2023)
I'm at a low energy point but maybe I can get an asteroid up.
(Mar 27, 2023)
My plan is to wrap the flight path, which I realized last night is 100x easier than I've been doing it. But I was reading about the Rect object ...
(Mar 26, 2023)
Let's just inch forward by making the Ship turn ... and inch forward. I think we basically know how to do this. (I do quite a bit of refactoring, an odd thing to do in a spike.)
(Mar 25, 2023)
I've learned two ways to make the ship transparent. One of them is a good way.
(Mar 24, 2023)
OK, let's fare off on our own here and see about drawing a ship. As I am new to Python, this will entail learning how to create a list or array or one of those things.
(Mar 24, 2023)
I've decided to work with Python a bit. I think I'll enjoy it as much as Kotlin, and I'll certainly enjoy being further away from Gradle.
(Mar 21, 2023)
Today I want to try to think about the decentralized version of this program, why I like it so much, despite that it is clearly harder to understand.
(Mar 19, 2023)
I typed in some code with one finger, iPad on my lap last night. Here's a report on how nicely it turned out.
(Mar 19, 2023)
Let's see if we can get this thing to cycle around on the screen. I think it's in hand now. (Didn't work, stopped in middle.)
(Mar 19, 2023)
I think that this morning I'll make the little circle drive around the big one. I could be wrong. (Added in Post: We get a test to run, but don't get to the drawing.)
(Mar 17, 2023)
Now for Something Completely Different: A Codea Lua experiment for Hill.
(Mar 16, 2023)
We have three versions for a reason: comparison of their designs. Let's do a bit of that today.
(Mar 15, 2023)
Let's give a splat to the Saucer and maybe to splits.
(Mar 14, 2023)
There's supposed to be a graphical effect when the ship explodes. Let's produce one.
(Mar 13, 2023)
Yesterday as I was summing up, I had an idea for a different way of handling the multiple shapes for asteroids. Let's try it.
(Mar 12, 2023)
It seems that it might be interesting to make the Asteroids spin. I don't think they spun in the original game, but hey this is the 21st century or something. But wait! You also get varied Asteroid shapes!
(Mar 12, 2023)
Today I am quite tired of Asteroids, and particularly tired of this version with its very weak structuring. The foregoing does not constitute a plan.
(Mar 11, 2023)
A bit of duplication starts me off this morning. A nice result, I think. YMMV.
(Mar 10, 2023)
We need to fix safeToEmerge and let's do zigzag. Features! Woot!
(Mar 10, 2023)
Let's get started on the saucer firing at the ship, which I think is the largest remaining "requirement". Added: My testing game is weak today.
(Mar 9, 2023)
I just noticed an opportunity for improvement. Will I stop at just one?
(Mar 9, 2023)
This code is hard to navigate. What can we do to make it easier? Nothing to see here except ... Squirrel!!
(Mar 8, 2023)
This morning we'll try to do the "safe emergence" feature for the Ship. I am filled with troubled antici ...
(Mar 7, 2023)
This morning I'll just continue applying the new Timer, plus whatever catches my eye. At least that's my plan here at the top of the article.
(Mar 6, 2023)
Let's start moving our new Timers into a separate table. That should be "easy".
(Mar 6, 2023)
OK, you talked me into it. Let's see about doing the System part of Entity - Component - System, just to see what it's like. Plastic Sliders??
(Mar 5, 2023)
Now that we've got the PluggableTimer working, let's make two that should be a bit more useful. Added in Post: You may touch the hem of my garment.
(Mar 5, 2023)
My "Jira" is some sticky notes on my keyboard tray. Maybe yours should be as well. Anyway there are some things we might do.
(Mar 4, 2023)
Let's think a bit about making a saucer timer and/or a ship timer, using our rudimentary component system. I think it'll be easy and perhaps educational.
(Mar 4, 2023)
Well, of course I've made a mistake, rather good at it in fact. But have I broken the saucer timing?
(Mar 3, 2023)
Let's see if we can shoot down the saucer. That shouldn't be too difficult, except that I can't remember what the score is supposed to be.
(Mar 2, 2023)
Let's compare the asteroid implementation in the flat version versus the centralized object-oriented version.
(Mar 1, 2023)
Let's just do some little things. Rotate the asteroids, maybe add in the other shapes. But no: A refactoring goes awry. Or agley, I don't know.
(Mar 1, 2023)
Last night we briefly discussed a comparison between my versions. Let's think about that. Alligator?
(Feb 28, 2023)
I think it's time to start on the saucer. What do you think?
(Feb 28, 2023)
There's duplication in the collision logic, and I manage to eliminate most of it with some very simple steps, almost all automated. Nice!
(Feb 27, 2023)
Let's do the drop in animation and the slowing down due to inexplicable friction in outer space's near complete vacuum. Ooo! A lesson unlearned! I wish I were more wise.
(Feb 27, 2023)
After yesterday's social concerns, I'd like to turn my attention back to happier matters, the kill-or-be-killed environment of the intrepid men and women who shoot down asteroids in the interest of humankind.
(Feb 26, 2023)
I feel the need to address intolerance, starting with two topics which I feel are related, "It's OK" and "Lives Matter".
[ Social ]
(Feb 25, 2023)
We're keeping score in our head. Let's display it. I fully intend to steal the code for this from another version. We also handle ship-asteroid collisions and provide respawn.
(Feb 24, 2023)
I've forgotten that the ECS technique provides for a bit of polymorphism. We need some and will soon need more. Let's see if we can make that happen.
(Feb 23, 2023)
Today I plan to implement the ship's flare. My reasons are not all good ones.
(Feb 22, 2023)
It's past time for some cleaning, and if I'm on my game, some tests.
(Feb 21, 2023)
Rather than clean up the code more, I intend to bash in asteroid splitting. This is not wise but should be amusing.
(Feb 21, 2023)
ECS is supposed to be more performant because of memory locality. Does memory locality matter on my computer? Let's try a simple way to find out. Also: We kill some asteroids.
(Feb 20, 2023)
I have some thoughts on Entity Component Systems design for this program, and perhaps in general.
(Feb 19, 2023)
I'm not sure what to do this morning. Maybe an asteroid. There are other options. Also: Beck's Rules of Simple Code.
(Feb 18, 2023)
Some design thinking leads the cat's servant to think we can improve our nascent ECS component.
(Feb 17, 2023)
I may be moving toward Entity-Component-Systems design. Let's find out. Further Cat Scripture.
(Feb 16, 2023)
Kotlin's `object` could help me clean up the globals a bit. Shall we allow it? Also: more Cat Scripture.
(Feb 15, 2023)
I think I'll do a bit of cleaning this morning, then maybe other things. I've been given an idea.
(Feb 14, 2023)
I just punched in some code to aim the missiles. Let me share it with you.
(Feb 14, 2023)
Today we'll start bringing things a bit more into a sensible structure. Just a bit.
(Feb 13, 2023)
Perhaps we'll try to fire a missile today. Unless something else comes up.
(Feb 11, 2023)
It seems clear that this 'flat' no-objects version of the game wants to know certain key objects. Let's see how we might deal with that.
(Feb 10, 2023)
The new flat version can draw a ship and an asteroid, both poorly. It can move them along the screen. Let's see if we can 'refactor' toward an actual design for the game.
(Feb 9, 2023)
Let's add a simple object type to SpaceObject. That should let us do drawing in a more generic fashion. Update: Found a better way.
(Feb 9, 2023)
I think we'll do a bit on the ship. That will require me to think a bit about coding standards up in this um program. In Post: This is actually getting interesting!
(Feb 8, 2023)
I often predict in these lines what I'll do, and only rarely is that what actually happens. today I don't even know what I'll try next.
(Feb 6, 2023)
I'm going to try Asteroids in a third fashion, this time more procedurally. I just want to see what it would look like.
(Feb 4, 2023)
I'm working toward some small improvements to the delegation code. I'm not sure it's worth it. I think we'll have to try it to find out.
(Feb 3, 2023)
I think there's a simplification to be had, and none of you people suggested it to me. TAP TAP. Is this thing on?
(Feb 2, 2023)
Let's keep simplifying and see what we can find. Let's work to eliminate the Collidable collection.
(Feb 2, 2023)
'Your scientists were so preoccupied with whether they could, they didn't stop to think if they should.'
(Feb 1, 2023)
In our Zoom meeting last night, I got some possibly conflicting advice. I have an idea for how to resolve the conflict.
(Jan 31, 2023)
It is not given to us to be perfect, nor to do perfect work. But this program, surely it's close? Let's talk about the value of tiny improvements.
(Jan 30, 2023)
Now that the Collision Strategies area all broken out, let's have a look and see what we think about them. Am I reversing yesterday's work? Yes, some of it. That's OK. (Ninth decade? Really?)
(Jan 29, 2023)
After an idea that doesn't pan out, we complete the installation of CollisionStrategy objects. We begin assessing what we like — and what's troubling.
(Jan 28, 2023)
We'll try another one of our CollisionStrategy things. I was hoping for some reuse but am not clear yet how to get it, nor whether its really worth it. I think we'll complete all four Strategies and then look around.
(Jan 28, 2023)
Delegation using Kotlin's `by` seems not to be quite the thing, though I believe I could make it work. I think that late yesterday I invented the Strategy pattern. Let's find out.
(Jan 27, 2023)
As promised, we'll discuss `by` delegation, but I now think that it isn't going to be as useful as I had hoped. I could be wrong, and — oddly enough — hope that I am.
(Jan 25, 2023)
Let's simplify some tests. I think we can get `knownObjects` out of Game.
(Jan 25, 2023)
Let's see how we like the look of the new GameCycler, and review how it went. There are things to do. Could we get more objects to be immutable? That would be interesting.
(Jan 24, 2023)
Let's move some more code over into GameCycler. We complete the Strangler!
(Jan 24, 2023)
Let's look at cohesion, duplication, and other considerations. Maybe we can get a bit more gilding on this lily.
(Jan 23, 2023)
I've gone back and forth on how much type information to preserve. Let's try to compare the two.
(Jan 22, 2023)
With the simpler SpaceObjecgCollection in place, it's time for Transaction. Do we just check out the old version? No, we do not. But why not? Also: You are waffling, sir!
(Jan 21, 2023)
I think we're ready to try the new simpler collision scheme, which is really the old collision scheme from before we started this centralized version. We'll discuss further whether this is a step backward or forward.
(Jan 20, 2023)
I really thought I was finished improving the centralized version, but these small changes will, I think, make things much simpler overall.
(Jan 20, 2023)
There's a lot to like about the centralized version, but this morning I realized that it's far from ideal. Let's explore why and what to do.
(Jan 19, 2023)
Let's explore some possibilities for improvement. Maybe we can even reduce some duplication. That would be nice. Added in Post: Almost a complete waste of time! Dammit! My hopes are dashed!
(Jan 18, 2023)
Last night, I made a change that I now believe to be a mistake. In fact, I did it twice. Further: We begin to draw a conclusion.
(Jan 17, 2023)
With changes to Transaction, I think I can get rid of most of the type checking in the system. I could be right ...
(Jan 17, 2023)
I think that code in Missile is a bit too clever. I may have a better idea. Let's find out. Also: remarks on Jira.
(Jan 16, 2023)
Let's rename all the `interactWithThisAndThat` to `interact`. I think that will reduce unnecessary noise. We'll see.
(Jan 16, 2023)
The new Interaction object is in place. Now let's work to unwind the calls through Subscriptions, moving toward simplifying the hierarchy. Added in Post: Woot!
(Jan 15, 2023)
Let's do interactions in our new type-sensitive style. Let's do it with an object. Let's test-drive the object.
(Jan 14, 2023)
Let's try replacing interactions all at one go. It might not be too difficult. In Post: I do it, it works, I roll it back.
(Jan 14, 2023)
I think we just have one more `finalize` to remove. After that, well, I hope not the Deluge. Also: Do you have a lessón for your minkey?
(Jan 13, 2023)
I'll take another run at finalize. I expect to succeed this time. I could be wrong.
(Jan 13, 2023)
Today, probably, we'll push on with making things more cognizant of type. Probably in Transaction. But let's think first. (Added in Post: we don't do what I thought.)
(Jan 12, 2023)
I'm rather sure there is no active use of the `attackers` and `targets` collections. Let's remove them.
(Jan 12, 2023)
We're engaged in a somewhat extended diversion in our centralization effort, aimed at making better use of Kotlin's strict typing. Let me explain.
(Jan 11, 2023)
Last night, in a stroke of good fortune, I was schooled by GeePaw Hill. I may have learned an idea, and I may be able to learn to apply it. Also, ducks, and an oblique reference to a koala bear. Added in Post: Nice result so far.
(Jan 10, 2023)
Let's experiment today with the sketched collision logic that I threw in a number of days ago. Maybe it has been long enough to see its flaws. Hypotenuse!
(Jan 9, 2023)
This morning, we Big Plan a bit, then do small changes. We're refactoring toward a new design: we're not doing a big rewrite. It's going quite well.
(Jan 8, 2023)
I think we can simplify things a bit by adjusting the hierarchy of our space objects, now that a number of subclasses have been removed. Let's see if I'm right. It could happen.
(Jan 7, 2023)
I had an idea the other day, something I should probably have done a while back, so with a little time this afternoon, I'll try it now.
(Jan 7, 2023)
I plan to wrap up the centralized version of Ship creation this morning, with the concomitant removal of two classes from the mix and the system.
(Jan 6, 2023)
I have a cunning plan for doing the ship insertion in the centralized version. I predict that this is going to be nice.
(Jan 5, 2023)
I have a little time. Let's try another experiment.
(Jan 5, 2023)
It's time to address centralizing creation of the Ship, including hyperspace. This is one of the more complicated bits in the game. (Ron keeps a spike. Shall we withhold his treats?)
(Jan 4, 2023)
I have a test that sometimes fails. I have no notion of how that can be happening. Let's find out.
(Jan 4, 2023)
As we centralize more and more code, the Game class is getting messy. Should we start to improve it now, or let it get worse before it gets better? Some thoughts about thinking.
(Jan 3, 2023)
I have a little time. Let's see if we can take a few small steps toward wave-making. Should be possible, I had it working yesterday.
(Jan 3, 2023)
Today, I was hoping to finish up the new centralized wave-making. But first I need to bring my testing up a bit. Added in Post: Includes Ron's Jira.
(Jan 2, 2023)
Today, I think I'll start on moving the WaveMaker logic into the game. There are issues.
(Jan 1, 2023)
I'll begin this new year as I ended the old one, programming and writing about it. Today, I think we'll work on score.
(Dec 29, 2022)
Now on a somewhat better build, I'll begin by redoing yesterday's changes, and then continue with the centralizing work. Bison?
(Dec 29, 2022)
Continuing to work on creating a centralized version of Asteroids, for comparison with the current decentralized design. Amazing the things I don't know how to do.
(Dec 28, 2022)
I think I can start on a collision detection thing. Shall I test it, or spike it?
(Dec 28, 2022)
An insight and an idea show me a way to approach centralized control. I think it'll be quite nice.
(Dec 27, 2022)
Let's try another way of decelerating to see if we like it better.
(Dec 26, 2022)
While I muse about a different design, there are a few things that we need to do, and I need something to distract myself. Things go oddly but turn out OK. Details in Summary.
(Dec 24, 2022)
Not that this version is exactly done, but I was thinking: Would it be interesting to start over and do Asteroids in a different style?
(Dec 19, 2022)
Going to try for a light morning, as I have an appointment. Let's check the checklist and pick some small but beneficial changes
(Dec 19, 2022)
Yes, I know there's a closed-form solution for targeting. Let's see if there's something simpler. But first, a bit more safety.
(Dec 17, 2022)
The Saucer can fire targeted missiles. Let's explore what we might do about that.
(Dec 15, 2022)
'When things get too complicated, add simplicity.'' Let's try that.
(Dec 14, 2022)
An issue in the design troubles me. I'm not sure whether it really should trouble me, but I think something needs to be done. I really find this hard to think about. I'll discuss why at the end. And I'll tell you what you should do.
(Dec 12, 2022)
The Kotlin game appears to me to have a different scale factor between asteroids and ship. I don't see yet what's going on. I discover that I've done a very poor job. Don't read this, it embarrasses me.
(Dec 9, 2022)
Can you believe that I forgot the flare of the ship's exhaust when it accelerates? No wonder I can't win this game.
(Dec 8, 2022)
The original game spawns more and more asteroids. I'm terrible at the game but I guess we need the feature. Just a little afternoon playing around.
(Dec 8, 2022)
The game should display some info about the keys to operate it. Not that I don't know, or the other person, but there might be one more person ...
(Dec 7, 2022)
When it's GAME OVER and we want to go again ... where do we put the quarter? A HARD DECISION: which way would you go?
(Dec 6, 2022)
I'd like to clean up ship emergence. I believe it can be more clear and if it can be, it should be. BONUS: A movie of the most interesting bug so far.
(Dec 5, 2022)
I think I've thought of a defect. Let's find out.
(Dec 5, 2022)
Best laid plans scarcely get past the first paragraph.
(Dec 4, 2022)
This morning, out of the blue, I plan to assess a core aspect of my Asteroids design: the subscription model. The conclusion surprised me. (Yeah, click bait. Skip to the end if you're that way.)
(Dec 3, 2022)
the OneShot and DeferredAction are looking for places to be used. It's 'small boy with hammer' time!
(Dec 3, 2022)
In which, our intrepid hero has yet another idea. Will this one be better, or just another idea?
(Dec 2, 2022)
Got this thing, might as well use it. Let's eliminate WaveMaker.
(Dec 2, 2022)
Where do ideas come from? I don't know. Where do they go? Into the code, of course.
(Dec 1, 2022)
The game is supposed to give you a finite number of ships. And it's supposed to be possible to earn new ships at certain levels of point score. How could my 'independent' objects do that?
(Dec 1, 2022)
Finalize existed because an object could be destroyed by another object. The unwritten rule now is that objects do not destroy other objects. Can we get rid of finalize?
(Nov 30, 2022)
I improved the Splats a bit last night. I report on last night, think about design, improve Saucer some more, and feel rather ashamed of myself. But good, too.
(Nov 29, 2022)
Let's have the saucer fire randomly. Should be about what I need for an afternoon session.
(Nov 29, 2022)
Let's give the Saucer some more capability. And a question/request to readers.
(Nov 28, 2022)
Too much duplication in colliding. Let's sort it a bit.
(Nov 28, 2022)
As much fun as I'm having with the odd simplicity / complexity mix of this program, it's time for a feature. We'll do the Saucer ... or at least start on it.
(Nov 27, 2022)
Still thinking about the essence of this design and what it implies. This time for the game, not the world. I am fascinated and love what it is ... and isn't. In a real sense ... it isn't a game at all.
(Nov 27, 2022)
Events of the morning cause me to reflect on what the odd design of my Asteroids program might tell us about life in general. Turning social, a bit. Observing, not deciding.
[ Social ]
(Nov 26, 2022)
I'm renaming Interactions to Subscriptions. IDEA helps. What else?
(Nov 26, 2022)
Now that all the SpaceObjects are broken out, we have duplication. Let's see how much and how we might improve things.
(Nov 25, 2022)
I think I'm ready to create a Ship class and remove SolidObject (or turn it into ship, whichever works. Let's do this!
(Nov 25, 2022)
I'd like to get my version of this thing closer to the state of Hill's, so that whatever changes he comes up with are easier to assess, and to learn from.
(Nov 24, 2022)
GeePaw Hill and I paired remotely for about three hours on the new 'Interactions' idea that I am borrowing from him. It went rather well, though differently than I had expected.
(Nov 23, 2022)
I feel that I understand something when I can do it, not when I can just use it. Let's try to learn Hill's latest idea.
(Nov 22, 2022)
I want to break all the Solid objects out into separate classes. Have not yet found a smooth way to do that.
(Nov 22, 2022)
An imaginary chat leads to a determination to push this design as far as it can go. Along the way I face an apparent fact.
(Nov 21, 2022)
In which our intrepid author expresses frustration and then gets down to making the program better.
(Nov 20, 2022)
Let's see if I can sort out the HyperspaceOperation a bit.
(Nov 20, 2022)
Fundamental theorem or not, implementation inheritance the tool of the devil or not, what we have is better than anything I can foresee. Full speed ahead! (Three false starts, then success.)
(Nov 19, 2022)
The Fundamental Theorem of Software Engineering is 'We can solve any problem by introducing an extra level of indirection'.
(Nov 18, 2022)
Hill has been learning the code with an eye to helping me understand why he is right and I am wrong. I fully support this and have some comments.
(Nov 17, 2022)
Having written up the theory of the game this morning, this afternoon I feel pretty certain that what's supposed to happen isn't really happening. We need to see what's to be done about it.
(Nov 17, 2022)
Implementation inheritance, or delegation? I've chosen the former in a fairly big way. Why? It seems that I'm evolving a sort of 'framework', and to make it do what I want, I think I need this inheritance. Some may disagree.
(Nov 16, 2022)
A change improves many objects. Summary follows.
(Nov 16, 2022)
Kent Beck has me thinking about cohesion and coupling. Let's look at the ShipMaker with that sensor turned on.
(Nov 15, 2022)
We replace ShipMonitor with ShipChecker and ShipMaker, about the same number of lines but far less intricate. A win.
(Nov 14, 2022)
Tidying. Why are we all setting asteroid velocity?
(Nov 14, 2022)
I'd like to push the new interaction scheme a bit further, returning something less basic than a Pair. A day to make the code a bit better.
(Nov 13, 2022)
Sometimes you just know you have a good idea. Sometimes you're even right. Is today one of those sometimes?
(Nov 12, 2022)
What if we run out of asteroids? What shall we do? Is a GameGod trying to be born? Sorry. Nope. Won't do that. Minor deities, that's one thing. One thing to rule them all? Nope.
(Nov 11, 2022)
I have dedicated the next portion of my life to implementing that cool hyperspace emergence rule. It means that I have to be able to count asteroids. So be it. But how? You'd think it'd be easy. It isn't.
(Nov 11, 2022)
Info from a viewer leads to a question. The answer leads me to a bigger question: Why didn't I think of that? THEN THIS ARTICLE GOES SIDEWAYS.
(Nov 10, 2022)
Let's do hyperspace ... and try to do it right.
(Nov 9, 2022)
My Zoom Buddies made an interesting observation. I choose to respond productively.
(Nov 8, 2022)
Things are a bit ragged here and there. Let's just trim them up a bit.
(Nov 8, 2022)
When things get bad in space, your ship has a hyperspace capability that will remove you from normal space and, after a delay, insert you back somewhere else. There is a chance that you'll not survive the attempt. Our mission today: implement this capability. There are issues.
(Nov 7, 2022)
Before a respawned ship appears, the game is supposed to check to be sure that it won't emerge colliding. How, in our distributed system, can we do that? At this writing, I do not know.
(Nov 6, 2022)
In Asteroids, after your ship dies, if you are allowed any more, a new one appears ... somewhere. Let's see how to make that happen.
(Nov 5, 2022)
No, not young people tweens. Tweens are little objects that do interpolation for us. I think we should have them. P.S. Dealt with that little lifetime issue.
(Nov 4, 2022)
It's 0500, way too early to be awake. I am awake. To keep the demons away, I think I'll see about narrowing the Flyer creation interface. As one does.
(Nov 3, 2022)
Hill tweeted something. Perhaps it had been mentioned at the Zoom Ensemble but if it was I missed it. It seems like a good idea. Spoiler: It was!
(Nov 3, 2022)
Options abound. further cleanup of Flyer seems prudent. But it might be fun to do the Splat. So many choices. Splat wins.
(Nov 2, 2022)
Looking at Flyer collisions, I wonder how it would look if it didn't look like it does. P.S. Two more little refactorings. Free of charge!
(Nov 2, 2022)
I think something needs to be done about the growing mess in the flyers. Let's take a look and see what we see. I'm trying to honor GeePaw's concerns ... and yet ... and yet, I go a different way than I anticipated, with better results.
(Nov 1, 2022)
It's about time ... to work on time. I think the code is telling me something, but I'm not sure just what it is. Shadows in the mist.
(Oct 31, 2022)
I have in mind some learning to do about Interfaces, and possibly abstract classes. I want to work on scoring, and I have in mind a way to do it with a flyer. Spoiler: He shoots! He scores!!
(Oct 29, 2022)
We have an interesting architecture going here, unlike any I've used in these games before. Let's see if it can go all the way.
(Oct 28, 2022)
What shall we do today, Brain? Let's see if we can get this baby under some semblance of control. Spoiler: It's ALIVE!!!
(Oct 27, 2022)
I believe I learned enough yesterday to make a good job of the ShipMonitor today. One question is whether to start over, or move forward. I make the right decision, of course.
(Oct 26, 2022)
I have what seemed, in the early morning hours, to be a good idea. Is it? Let's find out. ARRGH: What we may have found out it that it's too cute to live. HOWEVER: There may be a clean way out.
(Oct 25, 2022)
Let's get the display loop running on a Game instead of a couple of ships. Then I'll see if I can figure out the keyboard connection. Probably.
(Oct 24, 2022)
OK, I've seen it move. Should I plug in drawing for each element? Or test controls?
(Oct 23, 2022)
Creeping up on actually having to display some objects. Maybe I should just do it today?
(Oct 22, 2022)
We're like ten articles in on a video game with no video. This is rather interesting. I'll try to explain why.
(Oct 20, 2022)
I may not get much coding in today, but I have some ideas and will set them down in the few minutes before I have to head out.
(Oct 19, 2022)
The Zoom team 'might have done differently' but agree that current code isn't signalling very strongly how it wants to be. I guess today I have to add more of a mess.
(Oct 18, 2022)
This morning I'm wondering whether I made a mistake yesterday. Well, I must have made some mistake, but I have a particular possibility in mind.
(Oct 17, 2022)
It's lonely in outer space. We need some other stuff up here.
(Oct 17, 2022)
Space objects, as everyone knows, have a maximum speed limit. This morning, I plan to implement it.
(Oct 17, 2022)
Space objects, as everyone knows, have a maximum speed limit. This morning, I plan to implement it.
(Oct 16, 2022)
I seem to be zeroing in on an asteroids kind of game in this exercise. That's probably good, because I've done asteroids at least once before.
(Oct 15, 2022)
I managed to make a test work in the Ship project (its new name). Let's see what we can predict about a game design.
(Oct 15, 2022)
A growing list of questions, and hopefully answers, as I learn about Kotlin, IDEA, OPENRNDR, and all that jazz.
(Oct 14, 2022)
I want to play further with OPENRNDR. I've skimmed the docs. I'm impressed, and probably dangerous.
(Oct 13, 2022)
Yesterday, the OPENRNDR starting project ran on my machine. Today, before studying the system, let's take a look at the code and tweak it a bit.
(Oct 12, 2022)
This morning, I'm going to try to get OPENRNDR running with Kotlin on my machine. I've seen it done on a Mac and on a Windows machine. What could go wrong?
(Oct 11, 2022)
Let's see if we can figure out a clean way to accomplish yesterday's accomplishment.
[ kotlin ]
(Oct 9, 2022)
Two stories loom before me: some kind of a magic bridge, and darkness. One of these is easy.
[ kotlin ]
(Oct 8, 2022)
A periodic republishing of habits that I would like to have. New items at the top, but each issue includes all prior items.
[ Habits, Strawberries ]
(Oct 8, 2022)
I have in mind recreating, or ripping off, some special rooms from the old adventure. Ideally, I'll be able to build these with no new features. Whether we have all that we need, I'm not sure. We'll find out.
[ kotlin ]
(Oct 7, 2022)
In honor of the occasion, I think I'll sum up my current thoughts, feelings, notions, regarding Kotlin, IntelliJ IDEA, and all that jazz. I admire good work. These are good.
[ kotlin ]
(Oct 6, 2022)
Why am I putting so much wonderful capability into a game-making system that will never be used to make a game people will actually play? To tell the truth, I kinda lost track ...
[ kotlin ]
(Oct 6, 2022)
Sometimes something really simple is not obvious. This may be a case for pair and mob and ensemble programming.
[ kotlin ]
(Oct 5, 2022)
A periodic republishing of habits that I would like to have. New items at the top, but each issue includes all prior items.
[ Habits, Strawberries ]
(Oct 5, 2022)
Further thoughts on the past few days' transformation, followed by looking for similar opportunities.
[ kotlin ]
(Oct 4, 2022)
Can we remove the duplication of the action methods from World and Room? Let's try.
[ kotlin ]
(Oct 3, 2022)
What shall we do today, Brain? Same as every day, Pinky, try to create a world.
[ kotlin ]
(Oct 2, 2022)
It's 0420 and I have an idea. I figure never pass up an idea, so here I am at the keyboard.
[ kotlin ]
(Oct 1, 2022)
I think the Covid jab hit me this time. Just a short article. Anyway, it's Saturday, what do you expect? (We do stumble on a nice result.)
[ kotlin ]
(Sep 30, 2022)
Typing 'go blue' instead of something like 'go east' results in a runtime exception. I take exception to that. Let's fix it.
[ kotlin ]
(Sep 30, 2022)
Converting the enums to Kotlin's preferred rules. Published for the record, whatever that means. Probably means, scan or don't read at all. Nothing to see here, move on ...
[ kotlin ]
(Sep 29, 2022)
Just a bit more play with the Direction and Room enumerations and related code. Should I work out why 'e' doesn't work, or just make it impossible?
[ kotlin ]
(Sep 29, 2022)
I don't know quite what we'll do this morning. Something fun. Let's start by talking about good times.
[ kotlin ]
(Sep 28, 2022)
Often tiny changes can have very desirable effects. When that happens, it may be a sign that things are in decent shape.
[ kotlin ]
(Sep 28, 2022)
Feeling rather done with Gilded Rose, I take another look at the text game building code. There are issues.
[ kotlin ]
(Sep 27, 2022)
A periodic republishing of habits that I would like to have. New items at the top, but each issue includes all prior items.
[ Habits, Strawberries ]
(Sep 27, 2022)
It seems to your faithful author that we've done nearly all we can with the Gilded Rose. We'll take a final look. Or maybe not final. Who knows?
[ gilded-rose, kotlin ]
(Sep 26, 2022)
I want to try another approach to the product-type lookup. I have to try it to see if I like it.
[ gilded-rose, kotlin ]
(Sep 26, 2022)
We'd like a better way of getting from an items name to its type. We'd like it to be bullet-proof, but not difficult to manage.
[ gilded-rose, kotlin ]
(Sep 26, 2022)
A periodic republishing of habits that I would like to have. New items at the top, but each issue includes all prior items.
[ Habits, Strawberries ]
(Sep 25, 2022)
I was glancing at yesterday's article last night, and noticed some truly odd code that IDEA generated for me. We'll start there, and I have some improvements in mind.
[ gilded-rose, kotlin ]
(Sep 25, 2022)
I'm going to start keeping track of the 'resolutions' I make as I program. I'm sure some of these are generally applicable but I'm working in Kotlin as I start this list.
[ Habits, Strawberries ]
(Sep 24, 2022)
We are supposed to implement a new feature in the Gilded Rose program. Let's do that ... and let's take a look at where we are ... and where we might go. (Final: We go somewhere rather nice!)
[ gilded-rose, kotlin ]
(Sep 23, 2022)
The point of a kata is that we do it again and again, practicing to get better. This isn't really a kata, but it's somewhat like one. (Outcome: Two points to GeePaw.) (UPDATE: Not a bug! Woot!)
[ gilded-rose, kotlin ]
(Sep 23, 2022)
I do some microtests. Didn't even take an hour, including writing.
[ gilded-rose, kotlin ]
(Sep 22, 2022)
Let's see if we can wring a bit more out of refactoring the Gilded Rose. (Some wiggling back and forth to slightly better code.)
[ gilded-rose, kotlin ]
(Sep 21, 2022)
Articles 76 and 77 are a long, tiny-step refactoring. Here, we'll preview where we started and where we wind up.
[ gilded-rose, kotlin ]
(Sep 21, 2022)
Yesterday the FGNO / Zoom Ensemble played with the Gilded Rose. This morning we'll look at it here.
[ gilded-rose, kotlin ]
(Sep 20, 2022)
Mostly I plan to solve the water problem this morning. But I'm wondering about concision. When is enough too much?
[ kotlin ]
(Sep 19, 2022)
Two small changes for your amusement. UPDATE: No, three! Thanks Christian!
[ kotlin ]
(Sep 19, 2022)
Wrapping collections keeps the tricky stuff inside and offers nice clean easy stuff on the outside. That's why we do it, right there.
[ kotlin ]
(Sep 18, 2022)
This morning I plan to encapsulate my map of Item instances, and show why I think it's a good idea. In addition, I'll clarify what I mean by 'always' and 'never'.
[ kotlin ]
(Sep 17, 2022)
Yesterday's work on using the DSL turned up some issues. None of them surprise me—but that doesn't mean I know how to deal with them. Or ... do I? (And: I seem to be feeling whimsical.)
[ kotlin ]
(Sep 16, 2022)
Let's do some world-building, with tests. OK, I admit it: no tests yet. Barely made it work.
[ kotlin ]
(Sep 16, 2022)
Let's fix one of those 'lateinit' variables. They're definitely a code smell.
[ kotlin ]
(Sep 16, 2022)
Some things seem to me to be happening at the wrong time. One issue is the GameResponse. Another is in building the world. What ever shall I do? (I 'discover' TODO.)
[ kotlin ]
(Sep 15, 2022)
There's not really much left to do here, if my purpose is to build a DSL for Zork-like games. That's a big problem. Today: A nice refactoring in tiny steps.
[ kotlin ]
(Sep 14, 2022)
Let's make some progress toward Room actions. Some fairly nice refactoring and feature addition in here. Includes: praise for IDEA and Kotlin.
[ kotlin ]
(Sep 13, 2022)
Let's see if we can untangle things a bit in and around Imperative, Phrase, and the like.
[ kotlin ]
(Sep 12, 2022)
Back to the Phrase-matching find. I'll grow it incrementally this time ... and it works! Life is good.
[ kotlin ]
(Sep 12, 2022)
OK, with that off my chest, we can do some code. Let's keep after Actions and the associated items. Things do not go as I expect.
[ kotlin ]
(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.
[ Practices, success ]
(Sep 11, 2022)
I think this morning's thinking was good enough to deserve a chance. Could my thinking be wrong? It has happened before.
[ kotlin ]
(Sep 11, 2022)
In which, our intrepid hero realizes that while thinking is good, clear thinking is better than muddy thinking.
[ kotlin ]
(Sep 10, 2022)
A really nifty idea collapses. Yet, I ain't bovvered! Come read and find out why.
[ kotlin ]
(Sep 9, 2022)
Let's do a bit more on the SmartMap, and then try to get it in play. (Spoiler: It works nicely! I am pleased.
[ kotlin ]
(Sep 8, 2022)
I have what I think is a very nice idea. Let's talk about it and then start working toward it. Is this BUFD?
[ kotlin ]
(Sep 7, 2022)
Now I'll try adding something to my actions collection, first in regular code, then tomorrow I'll try to add the capability to the DSL.
[ kotlin ]
(Sep 7, 2022)
Let's look at the Actions in the new Imperative. Advice from my betters suggests I could do, well, better.
[ kotlin ]
(Sep 6, 2022)
Let's make the Actions in the Lexicon do their job. There are some issues ... do we resolve them? We do and it's great! A big lesson is relearned.
[ kotlin ]
(Sep 4, 2022)
This time around, I'll plug the Imperative into the game, or know the reason why I couldn't. I'm hoping for the former. (Spoiler: works!)
[ kotlin ]
(Sep 4, 2022)
Let's find more small steps toward replacing the old Command idea with Imperative. I have in mind providing a Lexicon in the existing structure.
[ kotlin ]
(Sep 3, 2022)
I want to move the testing bits for Imperative back down to the test branch, segment, section, whatever it's called. IDEA impresses me.
[ kotlin ]
(Sep 3, 2022)
This morning, I want to try a different way of mating the new Imperative to the existing scheme. First, I'll have to figure out what that scheme is, and whether there's anything in it to like. I suspect there is.
[ kotlin ]
(Sep 3, 2022)
Let's put this in context. No, I'm not explaining. We're going to put all this into Context. Includes Shiny Squirrel pattern.
[ kotlin ]
(Sep 2, 2022)
A bit more work with the new Imperative. In reviewing the code, I'm not sure what else it needs to do the job. After a bit of testing and enhancing the tables, I'll think about whether and how to use it.
[ kotlin ]
(Sep 1, 2022)
This morning I plan to share some early thoughts and perhaps turn them into code. (To enjoy this article, please set your expectations to 'I wonder how Ron might go from a vague dreamy idea to something that might actually be useful'.)
[ kotlin ]
(Aug 31, 2022)
I think I'll experiment a bit with a Command object and its context. I'm not sure where this will lead. Perhaps to the bit bucket.
[ kotlin ]
(Aug 31, 2022)
Some interesting insights from last night's Zoom inspire me to morph my design. A lot of thinking, a little coding. A decent direction, I think.
[ kotlin ]
(Aug 30, 2022)
Today's plan: plug in the new parser. We'll need to refine it just a bit, but I'd like to get it in play this morning. Best laid plans ...
[ kotlin ]
(Aug 29, 2022)
It's 0525. I want to begin to try something before actually starting my day. This may go somewhere interesting, or crumble to sand in my hands. (Spoiler: I think it went rather well.)
[ kotlin ]
(Aug 28, 2022)
Refactoring in the direction of what we think we might prefer. Beck said: Make the change easy, then make the easy change.
[ kotlin ]
(Aug 27, 2022)
A little refinement, and then let's press forward on Picov Andropov objects.
[ kotlin ]
(Aug 26, 2022)
At a more civilized hour, I have an improvement in mind. And it's really time to start doing something about inventory. And, curiously enough, I am rather successful.
[ kotlin ]
(Aug 26, 2022)
It's 0415 and I'm awake, with what seems to be a good idea. Is it a good idea to program at 0415? That remains to be seen.
[ kotlin ]
(Aug 25, 2022)
Let's push the Spike in a little deeper. I've got some ideas for how it could be quite nice. Good ideas? We'll find out.
[ kotlin ]
(Aug 25, 2022)
Yesterday, in an astounding flurry, I made a magic word open a lock. I also made a bit of a mess, which is partly good but probably mostly bad. Today, I set out to improve the code—and the feature. (As usual, that's not what happens.)
[ kotlin ]
(Aug 24, 2022)
I want to set up a test world where you have to say a magic word to open a door, or something like that.
[ kotlin ]
(Aug 24, 2022)
When we make two changes at once, there are four possible outcomes, and three of them are bad!
(Aug 24, 2022)
Still working toward the View displaying our new 'say' text. Might make it this morning.
[ kotlin ]
(Aug 23, 2022)
I think the next thing I need is for a message to come out in response to a command. We need an extension to GameResponse. (For once, reverting would have been the wrong thing to do ... probably.)
[ kotlin ]
(Aug 23, 2022)
I have some design thinking to report, but my hope for today is to have an operating grate somewhere in the world. I manage a good first small step.
[ kotlin ]
(Aug 22, 2022)
I need smaller steps. The Game sends the command to the current rRoom. But the World knows the rooms, and neither the Game nor the Room do. Let's try passing the World to the Room.
[ kotlin ]
(Aug 22, 2022)
In order to find out what our DSL should be like, I propose to code up a few scenarios 'by hand'. I make some progress but not as much as I'd hoped for. Lost thread. Reverted. Good man!
[ kotlin ]
(Aug 21, 2022)
Now that the game can be played, more or less, it's time to think of some scenarios that we need our DSL to support.
[ kotlin ]
(Aug 20, 2022)
Inching forward. Pretty sure I can make a TextField work. Final Result: The Game is Playable!
[ kotlin ]
(Aug 20, 2022)
There must be text things in JavaFX/TornadoFX. Everyone has them. How hard can it be? Wow, I hate being ignorant. But I love learning!
[ kotlin ]
(Aug 19, 2022)
How bad is it when you actually EXPECT your own article to be boring? I'll do my best to say something interesting. Includes a very long sentence and a small but important win.
[ kotlin ]
(Aug 18, 2022)
Time for a little planning, and some worrying. How far can I go before making this thing somehow playable? How far should I go? Bonus: A devil duckling!
[ kotlin ]
(Aug 17, 2022)
I wonder what we can do about output without actually having a way to play the game ...
[ kotlin ]
(Aug 17, 2022)
I'm psyched after two consecutive sessions with some success and no big troubles. What could possibly go wrong?
[ kotlin ]
(Aug 16, 2022)
Let's parse a bit more of the DSL (Dungeon Scripting Language?) and then see what happens. I have high hopes, tempered by decades of experience.
[ kotlin ]
(Aug 15, 2022)
Let's try something specific with the DSL builder idea. I have in mind a text game like ADVENTure or ZORK.
[ kotlin ]
(Aug 13, 2022)
In which your intrepid author suddenly realizes something, and decides to do something he rarely does.
[ kotlin ]
(Aug 11, 2022)
I want to understand DSLs and builders. First, I have to figure out how to make a new project with tests in it. I anticipate an onset of grumpiness as I learn new things.
[ kotlin ]
(Aug 10, 2022)
I have tidying to do, and some stories to implement. At this writing (0815), no actual plan.
[ kotlin ]
(Aug 9, 2022)
So few lines, so many design questions. We'll work more on Ship motion. (I manage some whimsy. Must be getting more comfortable with IDEA/Kotlin.) P.S. Learned a thing.
[ kotlin ]
(Aug 8, 2022)
OK, let's see if we can code up an operator in this baby. Overall Result: Much more comfort.
[ kotlin ]
(Aug 8, 2022)
Let's plug away, learning IDEA, Kotlin, and whatever, while also seeing how much TDD we can do on an essentially graphics-oriented game.
[ kotlin ]
(Aug 7, 2022)
First some grumbling, then an idea for something useful that I've not done before.
[ kotlin ]
(Aug 5, 2022)
I'm inching forward in my learning of Kotlin and TornadoFX. Progress is happening, but so slowly that I can't write as I usually do.
[ kotlin ]
(Aug 3, 2022)
We've all agreed to fork the repo. I'm on my own, more or less, and already confused even though I haven't even started.
[ kotlin ]
(Aug 2, 2022)
After more than a little hassle, my colleagues and I have a Kotlin shell that we can pass around. Today, for fun, I'm going to try to write some tests and code.
(Jul 28, 2022)
Perhaps the biggest mistake in XP and Agile ...
(Jul 26, 2022)
There is a sticky note on my desk needing attention. Let's attend to it. I have a small concern. Also: smaller steps pay off.
(Jul 25, 2022)
Usage changes. Language is usage. Language changes, not necessarily for the better, in my opinion.
(Jul 24, 2022)
I wonder why I'm doing what I'm doing. Meanwhile, requirements changes to the robot's radar result in some design issues.
(Jul 23, 2022)
I've decided to deviate from the spec to make my work with this example more interesting (to me). I anticipate no real difficulty with this extensive set of changes.
(Jul 22, 2022)
Today I have to find a way to do it right ... and light. How little can I do while still improving the code?
(Jul 21, 2022)
I think we need to improve the map display a bit. We'll spike, and that's going to prove a point that I made yesterday, I hope. Or disprove, in which case we can laugh at me hahaha.
(Jul 20, 2022)
My Customer (me) wants the radar screen rotated to forward = up. The developers (me) are happy to oblige. P.S. Came back later for the thrilling conclusion.
(Jul 19, 2022)
Maybe we need a bit of console display. And I'm sure we'll find some code to improve. Foraging, basically.
(Jul 18, 2022)
Let's not allow movement into obstacles, and maybe penalize moving into pits.
(Jul 18, 2022)
I have an idea for something that might be better. But that's not my reason for being here. (And should all ojbects be written for their own convenience? Yes, and ...)
(Jul 17, 2022)
Let's slide in the remaining callbacks, and see what else we can see before brekkers.
(Jul 16, 2022)
My Inner Eddie says we may be in big trouble. Let's find out. ClickBait: Absurd claim at the end.
(Jul 14, 2022)
In which our intrepid author takes on important notions while scarcely mentioning the actual topic at all, hoping to enlighten himself while offending no one. Tall order.
(Jul 12, 2022)
Oddly, I take as today's writing prompt, a strange tweet from a person of curious name.
(Jul 11, 2022)
Let's see if we can get the new connection object to run as if it were on a thread, even though we don't have threads. That should be amusing.
(Jul 10, 2022)
More on TCP/IP. A realization that might have come sooner, but today's OK too.
(Jul 9, 2022)
I've been trying for days to get a decent TCP/IP socket connection working on the iPad, apparently for my sins. So far, I've failed miserably. Today, Saturday, another try.
(Jul 5, 2022)
More on server code. I have an idea. Should I try it? Answer: no.
(Jul 4, 2022)
I think we have only one hard problem remaining. Let's see what we can do about that. MORAL: Don't be like Ron's brother's brother.
(Jul 3, 2022)
Well, I don't know. A bit more on motion. Maybe a start on scan/look? Oh and a better look for the robot?
(Jul 2, 2022)
Let's turn around and go backward, and see whether we begin to see some improvements to how we do these things. RELEARNING: I need smaller steps.
(Jun 30, 2022)
Moving toward standard request-response. Seems about time. But Never would be better. ALSO: A very brief introduction to industry standards of completeness.
(Jun 29, 2022)
I've made a mistake. Or I'm about to make one. Or both. Certainly not neither.
(Jun 28, 2022)
Today we work further toward accommodating the 'spec'. I think we'll focus on the robot status. I think I may rediscover why something is a good idea.
(Jun 27, 2022)
We need to make the robot-world communication a bit more like the spec, and a bit more like client-server. Then we can make more progress. ERRATUM Near the end.
(Jun 26, 2022)
More on the JSON connection. I think I see something symmetric, if not actually easy.
(Jun 25, 2022)
The spec requires us to communicate using JSON. It's time to get started with that. As I type this I wonder something ...
(Jun 24, 2022)
TCP. I think I know what I did wrong yesterday. If I can make this work, it'll help me TDD the server's main loop. Bonus: Kitty!
(Jun 23, 2022)
Let's try more than one connection. Do I need coroutines? Let's try without. LEARNING: I seem not to be able to have multiple connections within this one program.
(Jun 23, 2022)
I'm spiking TCP. Not writing the article as I go. Instead, I'll record bits of progress and what I may have learned.
(Jun 22, 2022)
Something in last night's Friday Coding Zoom struck me. I need to think about this and try it.
[ refactoring, tdd ]
(Jun 21, 2022)
OK, sockets. At least for a little while. And a conversation with myself. No, I'm OK, really. And thanks to Dave1707.
(Jun 20, 2022)
Let's start by talking about design. Software design. I definitely don't know anything about any other kinds. Interesting thoughts interwoven with vague mumblings.
(Jun 18, 2022)
Try again. Fail again. Fail better. Been down so long, it looks like up to me. Summary: Much better.
(Jun 17, 2022)
Let's see about helping the robot understand the new 'look' tables. I feel sure that I'm going to want an object up in this thing. The outcome may surprise you.
(Jun 17, 2022)
Today's demo day. We're good to go, but I think we can do better. Anyway, gotta do somethin'. Anti-Spoiler: I decide not to spoil the code for the sake of maybe a feature.
(Jun 16, 2022)
Rotation Matrices? Why not, might be better. Let's spike. Warning, this is gonna get a tiny bit mathematical.
(Jun 16, 2022)
Awakened by a strong rainstorm, I decided to get up and watch it. I'll code a bit while I do. I'll try to think before, during, and after coding.
(Jun 15, 2022)
So many good ideas. But we need to ship it. We'll talk about that—and get ready to do it! UPDATE: Walking skeleton works!
(Jun 14, 2022)
I think we're ready to draw something. How can we make the drawing more testable? I have a p-baked idea, for small p.
(Jun 13, 2022)
First we do a Lens. Then an amazingly smooth, very long, step by step refactoring. I'm proud of this one!
(Jun 12, 2022)
I have a bit more time and an urge to do some code improvement. Let's see what we can do to make all this a bit easier.
(Jun 12, 2022)
A bit of musing about the world, a bit of planning, a bit of coding. It's Sunday, so this will probably be short.
(Jun 11, 2022)
Working toward a 'walking skeleton'. I think I know what I'd like it to be.
(Jun 10, 2022)
What do skeletons have to do with robots? Could there be more than one skeleton?
(Jun 9, 2022)
Day 2. I did watch a couple of GeePaw's videos. Good news. Thinking ensues. Concerned about Knowledge.
(Jun 8, 2022)
Tuesday night's Friday Night Coding Zoom has hooked me. This is the beginning of the result of that hook.
(Jun 6, 2022)
Completing a refactoring makes a feature easier. Unless I'm wrong, but I'm not.
(Jun 5, 2022)
Apparently not Done-geon. Those missing tests for that trivial code bug me. There's something to learn in here. LATER: A very nice outcome!
(Jun 4, 2022)
Unable to do nothing, I made a 'simple' change to the Dungeon program. It works ... and I don't like it. Later: Sometimes doing the right thing doesn't work out.
(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.
(Jun 1, 2022)
Countdown to ... what, exactly? Let's check the yellow sticky notes. Time for a break from Dungeon?
(May 31, 2022)
Let's clean up those free-hanging functions just for fun. It'll make things just a bit better.
(May 31, 2022)
I think that today I might get all the Decor specified for all the dungeon layers that are supported. That's an estimate, and I could be wrong. (Spoiler:not wrong, and some nifty refactoring.)
(May 30, 2022)
Let's work again, on controlling the dungeon layout. My objective this morning is to define at least one level's Decor. I'm extending the story based on feedback.
(May 28, 2022)
This one's gonna be rambling. A design idea keeps coming back to me. I feel that the program would be much better, if ...
(May 27, 2022)
I was asked what I tell people to do that I don't do myself. The answer may surprise you.
(May 26, 2022)
Up-front Design? In Agile? Sure, let's do some. I call it 'thinking'.
(May 25, 2022)
More on improving control over Dungeon creation. And a RAT. And a bear bite, kind of.
(May 24, 2022)
OK, with discussion of ease out of the way, let's get some ease up in this Decor.
(May 24, 2022)
We should have it. What should we do when we haven't?.
(May 23, 2022)
I start out to think about that clever trick and my plans for Decor. Then I change direction based on what I've learned. This has important implications for estimation, COSMIC or otherwise.
(May 22, 2022)
Let's work on the Spike aimed at creating DungeonObjects. Uh oh: Something too clever has been done here!
(May 21, 2022)
Still working on better control over creation of Dungeon Objects. I think I'll do a Decor factory method this morning. I can't think how to test it. The Internet helps me.
(May 20, 2022)
Estimation and a tiny bit of code. ScopeMaster took up my challenge.
(May 19, 2022)
Let's start on the Dungeon Object allocation story. I think we'll start in the middle, or near the bottom. So far, no takers from the pro-estimation folx. UPDATE: Hammond has done CFP for the story! Details tomorrow.
(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.
(May 14, 2022)
Some thoughts on something GeePaw said. And I think we'd better complete the fixing of the publish situation. What is `the best we know how`?
(May 13, 2022)
Friday the 13th. That bodes well, always my lucky day. Besides, it was yesterday where I interfered with the canine. (Oh No! He did it again!)
(May 12, 2022)
Time to pick something to do. This always surprises me. Late update: THIS IS NOT GOOD. WE HAVE A MAJOR SHIPPED DEFECT!
(May 11, 2022)
Today I'm going to try to learn something. I wonder if I'll learn what I set out to learn, or something else.
(May 10, 2022)
Loose ends. Finding little things to do. Generalizing from few cases and many years. Delenda Chicago est.
(May 9, 2022)
A bit of thinking and doing with the `publish` feature. Small changes, much thinking.
(May 7, 2022)
'Nothing at all', the game says. What's up with that? And various musings.
(May 6, 2022)
Colin Chapman of Lotus said that to add speed, you must 'add lightness'. Can we add some simplicity up in this dungeon?
(May 5, 2022)
Let's apply some of the ideas from D3 in the curreent Dungeon program. We'll see whether they're a step toward a better design.
(May 4, 2022)
I'm wondering whether I need the complex publishing approach that I'm using in the Queue. Only one way to find out: reasoning fails me. (As always, I wind up somewhere else.)
(May 3, 2022)
More work on the new event-driven scheme. I hope to get to an interesting problem today.
(May 2, 2022)
What have I learned in this Dungeon Crawl? What would I do differently? I've decided to find out.
(Apr 30, 2022)
Yesterday, testing something required my code to be a bit less smooth than I'd have liked. Today I have an idea that I think is going to be quite fine. It's not even too clever.
(Apr 29, 2022)
We need to talk. We need to code, as well. And we need to test. A nice result, a better commitment.
(Apr 28, 2022)
Let's check our stories along the way to better control over the trash, er, treasures in the Dungeon.
(Apr 27, 2022)
What do we do when we find two classes that are rather similar? We make them more similar, of course! (That''s not what happens.)
(Apr 26, 2022)
More work on improving the ability to place Dungeon Objects. Today I want to look at Decor and Loot. What will really happen? I never know until I get into the code.
(Apr 25, 2022)
I saw an interesting contagion-related graph on Twitter and decided to do something like it.
(Apr 25, 2022)
Another run at the current Big Story. Need to find something that will lead me away from confusion rather than into it. Might have to think. Might even have to draw a picture.
(Apr 23, 2022)
More on providing control over placing things in the Dungeon. I'm thinking about changing my mind, but I might change my mind about that. (Spoiler:Bear bites man.)
(Apr 22, 2022)
We're still prepping for the story about better control over what goes into the Dungeon. Some things remain that I'd like to clear up. And a small story!
(Apr 20, 2022)
The FNCS has spoken regarding the defect. I do some smoothing. Multi-signature method? Possibly. I ain't bovvered.
(Apr 19, 2022)
I have shipped a defect, and a serious one. What happened? How could I have avoided it?
(Apr 18, 2022)
Planning Meeting. I'm not sure what to do today, but have some ideas.
(Apr 17, 2022)
Pushing the object further down. What does he mean by that?
(Apr 15, 2022)
Let's look at some of the 'story' cards I've saved up and see what we might work on.
(Apr 14, 2022)
Just a bit more tidying, as Kent Beck puts it. Soon, new features or something. But today is not that day.
(Apr 13, 2022)
The experiment i did yesterday deserves a bit of commentary. Something to think about.
(Apr 12, 2022)
My plan for the day is to find a place to try out my clever idea, so that we can look at it in place and decide whether to allow it. Will it stay in?
(Apr 11, 2022)
A bit of Internet dispute about cleverness. When is code too clever to live? I have an example in mind.
(Apr 8, 2022)
A couple of working diagrams. Here's why I think rough diagrams are quite often good enough.
(Apr 7, 2022)
Drug-free, our intrepid author looks upon his works. Does he despair? (Spoiler, No, Mikey likes it!)
(Apr 6, 2022)
Today: Recovering from a couple of days on Nyquil. Is my brain operating?? We'll see.
(Apr 1, 2022)
I think we'll look at some of the methods that analyze the dungeon as part of building. I'm hoping for a good idea to pop up. TL;DR: Ron is out of kilter, copes, then stops before doing damage..
(Mar 31, 2022)
Back to tiny steps, if I possibly can. And you know what? I bet I can.
(Mar 30, 2022)
My side quest to move dungeon building out of Dungeon class continues. What monster shall I slay today? Let's find out. (Stress level too high. A clue.)
(Mar 29, 2022)
Continuing separation of building from running. Today, narrowing the scope of Tile. An idea for a better way of doing it. A good idea? I'm not sure.
(Mar 28, 2022)
Last time I had part of an idea. Today I have a larger fraction of the idea. Let's see if we can get all the way.
(Mar 25, 2022)
Pecking away to reshape things more to our liking. Small steps in roughly the right direction, that's the ticket.
(Mar 24, 2022)
Are we missing some layers in the Dungeon? The classes, not the places.
(Mar 23, 2022)
Reducing the span of concern for Tiles. Seem like a good idea. Will it be too difficult? Let's find out. (Spoiler: Almost, but not too difficult.)
(Mar 18, 2022)
There's probably a bit more to do on isolating dungeon building from dungeon running, but the low-hanging tasty fruit has mostly been harvested. As for larger design improvements, I am at a loss. That may be a good thing.
(Mar 17, 2022)
Here, some thoughts raised by yesterday's Agile Alliance Zoom thing.
(Mar 14, 2022)
You'd think that software developers would realize that they are prone to error. Yet we are often more opinionated than we probably should be. Here's my opinion on that.
(Mar 11, 2022)
Let's look at what we've done and see what might be next on our quest to separate building from running the Dungeon.
(Mar 10, 2022)
Let's do some more opportunistic refactoring toward DungeonBuilder. And I have a few thoughts to think about the direction I've taken.
(Mar 9, 2022)
Here are just a few of the unsolicited favorable comments I've received about 'The Nature of Software Development'. Some drawings included.
(Mar 8, 2022)
More gentle refactoring in the general direction of DungeonBuilder. No Monty Python reference intended.
(Mar 6, 2022)
Still trying to drift in a good direction. So far we've just barely improved, if at all.
(Mar 4, 2022)
Oh Hell, let's just do something in roughly the right direction.
(Mar 3, 2022)
Time to set a tentative direction and move that way. I am daunted before even starting. No code today.
(Mar 2, 2022)
I found myself wondering what I'd do with this program if I started over. I shouldn't do that. But what I could do ...
(Mar 1, 2022)
Today I plan to just look for some small opportunities to improve the code. I will be particularly looking for ways to use my fp primitives, and to improve them to make them more useful.
(Feb 28, 2022)
I'm disappointed, at least so far, that my 'functional programming' capability seems not to be helpful in the Dung[eon] program. But maybe there's still hope.
(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 22, 2022)
Further thoughts on the river, the hill, and the nature of reality. I don't know why I wrote this. It's just here in today's part of the big integer.
[ Little Things ]
(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 11, 2022)
I don't know whether this is good or bad, but it's an interesting trick.
[ Agile-Related, Codea ]
(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 9, 2022)
In my thinking about Strawberries, I'm wondering what issues folks have with Scrum, good or bad. Please tell me. I'll mention some ways here.
(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.
(Feb 1, 2022)
Today I learned a new term. Maybe better/worse than 'Dark Scrum'. (TL;DR: If it isn't joyful, we're doing it wrong.)
(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 20, 2022)
Let's consider the implications of small-step development on our three shadow views of the program. (Includes Sarlacc.)
(Jan 19, 2022)
Yes, short feedback cycles are good. But is the trick of the trade 'small', rather than 'short'? The answer will not surprise you.
(Jan 18, 2022)
Working software is at the core of success with agile methods. Let's remind ourselves about that.
(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 15, 2022)
I know what you're thinking: 'Is this four rules or only one?' Well, to tell you the truth, in all this excitement, I kind of lost track myself. You've got to ask yourself one question: 'Can I use this?' Well, can you?
(Jan 14, 2022)
We're here to replace raspberry jam with strawberry jam. We need those delicious nodules of flavor and value.
(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)
I didn't do the best possible thing in this morning's XST article. Here's what I think about that.
[ Agile-Related, Social ]
(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 28, 2021)
I have a mad scheme for making an object move using applyForce and momentum. (Arrgh, results suggest that we need to file a bug report.)
[ Codea, codea-craft ]
(Nov 27, 2021)
An experiment by Dave1707 inspires Ron to figure out what's really going on with applyForce. Will he succeed? The answer may not surprise you.
[ Codea, codea-craft ]
(Nov 26, 2021)
Ooo, an accidental play on words. We're going to change our cube's direction, but also the direction of these articles.
[ Codea, codea-craft ]
(Nov 25, 2021)
On this day of thanks, I'm moved to think about all the -isms that seem to plague us, and how to deal with them.
[ Social ]
(Nov 24, 2021)
We've learned how to move things using code. It turns out that Codea can handle moving them for us, for fun and profit.
[ Codea, codea-craft ]
(Nov 23, 2021)
I think we need to learn about Craft physics so that we can tutorialize something about it. This turns out to be a bit of fun.
[ Codea, codea-craft ]
(Nov 21, 2021)
Here's how you really do that. An improved design for our entities.
[ Codea, codea-craft ]
(Nov 19, 2021)
In this tutorial, we'll make our cube move around the 3D volume a bit, then improve how it looks. And we'll improve how we look at it.
[ Codea, codea-craft ]
(Nov 18, 2021)
Converging on a plan, I decide to do a series of tutorials. Herein, an explanation of what I mean and intend, and the first one.
[ Codea, codea-craft ]
(Nov 16, 2021)
I'm setting out to learn, again, about Codea's 'Craft' capability, its 3D voxel-based facilities. Today, I'll talk about my reasons, ambitions, and look at some code.
[ Codea, codea-craft ]
(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 20, 2021)
One small improvement. Then I want to consider the bigger picture: if I were starting over, how would I do this program differently?
(Oct 19, 2021)
Late start today. Not sure what to do. Try the hex map again, I guess. Feeling meh. But it works!
(Oct 18, 2021)
Let's continue to prepare the Dungeon class to work on hexes as well as square tiles. I expect no real trouble. I look forward to learning why my expectations will not be met.
(Oct 17, 2021)
I have in mind a fun small win on the path to hexes: a multiple dispatch. If nothing else, you may be surprised at what I think is fun. (And I do get in the weeds a bit along the way.)
(Oct 16, 2021)
I said I wasn't going to write an article today. Was I wrong? I want to just look around. And some thoughts on self improvement.
(Oct 15, 2021)
I found the defect, and I think I can fix it. Let's find out. Then I rationalizeXXX explain something.
(Oct 15, 2021)
What's the deal with Jira? Is it a bad thing, or the worst thing?
(Oct 14, 2021)
I'm thinking of adding a shark to the game that you can only escape by jumping over it. Today, however, a bit more on Maps.
(Oct 13, 2021)
Already wrote one article today. Not sure about this one. Probably I'll find an acorn somewhere.
(Oct 13, 2021)
We were thinking about words for code. Let's consider these. New! Improved! Now with more words!
(Oct 12, 2021)
Well, I guess there's nothing for it but to forge ahead getting a hex map to draw. I rather regret committing to this idea.
(Oct 11, 2021)
Can I make a hex map in the game yet, or do I need more than a couple of changes? I don't know. Let's try to find out. Spoiler: Not great, not horrible.
(Oct 10, 2021)
Today, I'm going to try a fun exercise to demonstrate Codea's translate, scale, and rotate.
(Oct 9, 2021)
Today my cunning plan is to try to make the Map the primary container of Tiles, and the tiles collection secondary.
(Oct 8, 2021)
My commitment for the day is to be using the new Map objects for something in the actual game. I think I see at least a couple of ways to go. Spoiler: It's in!
(Oct 7, 2021)
Today I'm going to start plugging the new Map classes into the actual Dung program. I expect a little chaos. For large values of 'little'.
(Oct 6, 2021)
Let's keep on drilling. Real soon now, we'll have hexes in the game.
(Oct 5, 2021)
Another idea? A possibly better idea? We don't pay you to think, we pay you to do.
(Oct 4, 2021)
I promise, I'm nearly ready to plug in the new hex coordinates. There's just one more thing that I want to do ...
(Oct 3, 2021)
In Agile, there's no design. Everyone knows that. So why is there so much design in Agile, and how can they go so fast?
(Oct 2, 2021)
No, not really. Cartesian coordinates, perhaps. Yesterday I was optimistic at session end. How will I feel today? Let's find out.
(Oct 1, 2021)
Frequent readers know that I try to keep my code well-organized and well-designed. No one is perfect. Well, I'm not. Today we face mistakes.
(Sep 30, 2021)
Today I'll do the first experiment, or a few of them, putting hexagonal tiles into the Dung program. I expect this to get really messy, but with luck, we learn a lot.
(Sep 29, 2021)
Today I want to step back and write about screen transformations, translate and rotate. They are fairly natural to me, but some folks are not so familiar with these powerful tools.
(Sep 28, 2021)
In a fit of madness, I decided to try to convert the square-tiled Dung game to use hex tiles. Let's see how well my theory of programming holds up. Just inspection and planning today.
(Sep 26, 2021)
I have to face facts: I simply enjoy writing code and making it better.
(Sep 25, 2021)
Today we'll talk about why no one should do what I've been doing the past few days, and intend to do for a few more.
(Sep 24, 2021)
Bill Wake found an interesting site about hexes (not the magical kind) and now I'm not sure what I want to do.
(Sep 23, 2021)
Let's push this Hex spike a bit further, see what we can learn. Come on, it'll be fun. You can hold my beer. Well, chai.
(Sep 22, 2021)
An idea from the Zoom Ensemble last night has caught my attention. Let's explore it.
(Sep 18, 2021)
Notes on getting up and running on my new Mac. Probably not an interesting article, I'm writing it as a letter to the future me.
[ rj.com ]
(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 22, 2021)
Events in a few worlds lead me to write a few words about how we treat each other.
[ Agile-Related, Social ]
(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 28, 2021)
I think that today I'm going to write about joy. I have no idea where this goes. Walk with me ...
(Jul 23, 2021)
I mentioned that the dungeon program is boring me on Twitter and asked for ideas. Andreas asked about software design. Practice, folks, practice!
(Jul 20, 2021)
I'm bored with this program. What shall we do about this?
(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 8, 2021)
That Temporal Coupling bothers me. What are some ways to resolve it?
(Jul 7, 2021)
I believe that I have fallen into my own trap, Could this be the end of our intrepid hero? Click on in and see.
(Jul 6, 2021)
Just button highlighting, I guess, unless we see something interesting. Ooo, joy! Some tests!
(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 4, 2021)
No idea what I'm going to do this morning. Or too many ideas. Let's find out.
(Jul 3, 2021)
One nice thing. One at a time. One nice thing at a time is enough.
(Jul 2, 2021)
A week ago, I posted a Scrum-related survey. Today, the results of that survey, and my comments.
(Jul 1, 2021)
Let's try our new FSM and query logic in the Horn Girl NPC. Watch Jefries add mass duplication and then reduce it!
(Jun 30, 2021)
Those words came up in our Zoom Ensemble last night, and they're part of my theme this morning.
(Jun 29, 2021)
Fantastic day! Completely augured in. Recovered. Brilliant.
(Jun 28, 2021)
OK, I like the Finite State Machine, but I don't like it enough. What can we do to make it better?
(Jun 27, 2021)
Let's get some tests directly on the Finite State Machine. Maybe give it a little shot of YAGNI.
(Jun 26, 2021)
Let's do an experiment with a Finite State Machine, to get a sense of whether we want one.
(Jun 25, 2021)
Extremely Artificial Intelligence: Let's see if we can give our NPC some rudimentary smarts.
(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 22, 2021)
Let's try to finish moving InventoryItem to publish-subscribe, and maybe centralize Item creation. And look for Watch This near the end.
(Jun 21, 2021)
Are you wondering why i don't start a new program? There are reasons. Also: let's take the Bus.
(Jun 20, 2021)
Maybe I'll fiddle some more with InventoryItem, Loot, and Decor. Depends what time breakfast is.
(Jun 20, 2021)
Some consolidation and refactoring is what I have in mind. What will I really do? At this moment, I have little or no idea.
(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 18, 2021)
I just want to program a bit after all the screed-writing. No promises on what I'll do or whether it'll be any good at all.
(Jun 17, 2021)
The Scrum Alliance mission? Let's talk about that. Fail better.
(Jun 16, 2021)
I'm at a loss to find anything interesting to do. But I bet I can find some code that could be improved. Thinking about an idea from Bruce Onder leads in an interesting direction.
(Jun 15, 2021)
As often happens, this article didn't go where I expected. I hope you like where it went.
(Jun 15, 2021)
Well, with that musing out of the way, what shall we program today?
(Jun 14, 2021)
Today I have in mind an improvement to Announcer, because I think it'll be nice and will give us something to wonder about.
(Jun 12, 2021)
In which our intrepid author muses at length and decides to keep on keeping on. And to do some random stuff, no doubt.
(Jun 11, 2021)
Some odds and ends, a nice feature, and a bit of trouble. And the most distracting thing ever!
(Jun 10, 2021)
Let's pretend we care about that inefficiency in drawingOrder. Also a momentary loss of momentum.
(Jun 9, 2021)
I don't usually predict an outcome but today I think something good is going to happen. Let's find out.
(Jun 8, 2021)
Today, more refactoring to remove connections between dungeon objects and their tiles. And, as always, some thinking.
(Jun 7, 2021)
Two starting ideas: Quest, and removing duplication in the dungeon objects. These are not unrelated. And: as so often happens, we go in a surprising direction.
(Jun 5, 2021)
Maybe some wind for my sails. A need for better notes. An idea from Bryan's experiment with Unity. A thought about apps without programming. Everything is hopeless. Not necessarily in that order.
(Jun 4, 2021)
I am really tired of this game. I think I understand why. Is there anything I can do about it?
(Jun 3, 2021)
Doors, or I'll know the reason why! Just in: Ron bites bear!
(Jun 2, 2021)
Let's advance the game, and try to advance our 'making' tech at the same time. This just in: Bear bites Ron.
(Jun 1, 2021)
What are you doing, Ron, how do you do it, and most of all, WHY?
(May 31, 2021)
Let's set some direction. I'm concerned that I'm off track on what is of value to work on. Possibly it's residual fear from decades ago.
(May 29, 2021)
I think we'll do a bit more on our 'Making App', the part of our code that helps us make the 'Shipping App', the product we ship. (We decide to bless this effort.)
(May 28, 2021)
One more challenge in the class/method finder, then maybe we'll think about what we actually need in our Making App.
(May 27, 2021)
I've had an idea about a change--perhaps an improvement--to the class/method reporter. As I write this, even I don't know what happens next.
(May 26, 2021)
More work on our nascent Making App. Dave1707 has some interesting tricks in his programs. And we have a fine small example of refactoring 'legacy' code.
(May 25, 2021)
Dave1707 from the Codea forum provided an interesting program. I would like to bring it under control.
(May 24, 2021)
Turns out we do a number of small but nice, and somewhat interesting, things. Not much stumbling, sorry. I know you love to see me mess up.
(May 23, 2021)
Let's press on a bit with our learning level. And, I have an idea that may be a bit difficult to implement. Let's hope so.
(May 22, 2021)
'With a little help from my friends', my tests are now fast. All of us are greater than any of us. This is important.
(May 21, 2021)
A bit more on the Learning Level, I think, but I'd really like to make some progress on untangling some mistakes, er, learning opportunities in the code.
(May 20, 2021)
Let's put some announcements in the rooms of the learning level. That should be easy, and it should give us a sense of how designers might want to work.
(May 19, 2021)
I think today I'll work on room announcements. I have a partial idea.
(May 18, 2021)
I have yet another idea about how to handle switching between developer and player modes. This might be what Bruce Onder was talking about.
(May 17, 2021)
Variations on an Idea from the Wild Blue Onder. No success.
(May 17, 2021)
I guess we'll work on the Learning Level, but honestly I'm getting a bit tired of this project. Must think about that.
(May 16, 2021)
A random idea for an interesting dungeon layout may give me some more insight into the tools needed for designed dungeons.
(May 15, 2021)
Still making a place for our new designed dungeon capability to stand. What I'm about to do may surprise you, and raise questions.
(May 14, 2021)
Let's take another swing at moving dungeon creation out of GameRunner. We'll focus on creating our learning level's layout.
(May 12, 2021)
Untangling the knots. Let's see if we can clean up the coupling between GameRunner, tile, and their friends.
(May 12, 2021)
Working toward the Learning Level. Is it time to start on our 'Making App'? We do start. Then we revert.
(May 11, 2021)
Planning the Learning Level. We need to do a bit better than our usual small feature ideas here. Get some shape up in this b- baby.
(May 10, 2021)
The business people--me, with my business hat on--want to be able to better define levels in the game. The tech people--my other hat--get to figure out how to do this.
(May 8, 2021)
We need puzzles. How do we address a big problem like 'puzzles'? Same way you eat an elephant.
(May 7, 2021)
After a brief digression to build polyominoes, we are back in the dungeon. I'm beginning to wonder why. And: Why XP is The Way.
(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.
(May 2, 2021)
I shipped a defect yesterday. And there was a test for it! What happened?
(May 1, 2021)
More about the crawl. But let's see if we can get the Mimic animated the way we'd like. Unfortunately, these two ideas are not unrelated.
(Apr 30, 2021)
Spikes. My Darling Crawl. And a simple change generates many reverts.
(Apr 29, 2021)
Will this thing never end? More on the Mimic. User(!) concerns. Pluggable behavior.
(Apr 28, 2021)
I'm dismissing my desire to convert to mesh for animation. Let's get that Mimic hiding.
(Apr 27, 2021)
Dave1707 wrote a nice demo showing how to get project information in Codea. Let's think about what it tells us. No code, just think
(Apr 26, 2021)
More with the Animator. Maybe we can get it plugged in today. That would be nice.
(Apr 25, 2021)
Improving the Animation idea. Moar cohesion, less coupling. At least that's the plan.
(Apr 24, 2021)
We're animating our Mimic. Naturally, that leads us to thoughts of coupling, cohesion, and Beck's Four Rules. Naturally.
(Apr 23, 2021)
A bit of a tricky issue today. We want our Mimic to have different animation sequences, depending on what's going on. No other Entity does this at present.
(Apr 22, 2021)
I 'created' new art for an open chest. Then let's see if we can make the Mimic behave differently depending on its mood.
(Apr 21, 2021)
Convert Chests to look like Mimics. Look for other interesting things to do. Short morning today. But some progress.
(Apr 20, 2021)
Let's let the Mimic be oversize. Oh, that works nicely!
(Apr 18, 2021)
Today, for fun, I decided to give Decor better query messages. And it was fun.
(Apr 17, 2021)
More work on untangling the objects. Perhaps we'll find some interesting refactoring. Maybe a feature?
(Apr 16, 2021)
We'll start with the garbage collection issue and move on from there. We should be able to remove all Floater's references to GameRunner--if nothing else goes wrong.
(Apr 15, 2021)
Let's drive the bus a bit further. And, I've seen a suggestion for a slightly different angle. We should consider that. Ohhh and a garbage problem!
(Apr 14, 2021)
Let's catch a bus and see what happens. Maybe it will take us to the WayDown.
(Apr 13, 2021)
Once more, into the breach ... is it good luck when Friday the 13th falls on a Tuesday? I may need some good luck.
(Apr 12, 2021)
First, some planning. Then we consider why it's hard to test this thing. What will we decide? I don't know yet. P.S. Turns out to be one of THOSE days.
(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 10, 2021)
Deleting tests, not writing tests. A moral issue? Hardly. Also an interesting discovery about InventoryItems.
(Apr 9, 2021)
Some cleaning, I expect. And a user(!) has discovered a defect!
(Apr 8, 2021)
I guess we're going to have to plan a bit today. Maybe a bit more fun with the new more intelligent Decor?
(Apr 7, 2021)
It's interesting how one idea leads to another. I'm sure I have too many ideas now, but some of them seem interesting. The dungeon objects come to life!
(Apr 6, 2021)
Every time these organizations stamp out a new ScrumMaster, there are programmers somewhere whose lives will be made worse.
(Apr 6, 2021)
After getting my blood flowing with a bit of a rant, let's see if we can get a venomous creature up in this ... place.
(Apr 5, 2021)
I hesitate to say that we'll work on poison and antidotes, the way things have gone, but one of these days it could happen. Is today that day? Click to find out.
(Apr 3, 2021)
Musing on Technical Debt. A very interesting series of tiny commits leading to an important change: my invariant.
(Apr 2, 2021)
We have a defect to fix, and, I suspect, a lesson to re-learn. Then, maybe we'll look at poison and antidotes. And liddle lamzy divey.
(Apr 1, 2021)
I think today I'd like to get started on Poison and Antidotes, and on eliminating death from the dungeon. Is that what I'll do today? Maybe. One never knows, do one?
(Mar 31, 2021)
With a handle on pre-planned dungeon layouts, we need to decide what to do next. Have we squeezed all the juice out of this program yet? No real code today, just one little experiment.
(Mar 30, 2021)
Marketing makes an impossible demand. Can we make it possible? If not, does that mean incremental/iterative doesn't work? Is 'Agile' wrong???
(Mar 29, 2021)
Let's make icons in the Inventory do things. Pick something easy, it's Monday up in here.
(Mar 28, 2021)
A good idea from Bruce. Let's move toward it. I have no real idea how to start.
(Mar 27, 2021)
Ron, why do you write this stuff? And let's get that Pathfinder guy working better.
(Mar 26, 2021)
There's a defect! Also, I'd like to do something about creating a monster who leads you to the WayDown. And there's inventory. But first, the defect.
(Mar 25, 2021)
Let's do some work on inventory items and touch to use. That should be amusing in its fashion.
(Mar 24, 2021)
I'm starting to wonder if we have all the juice out of this program, but there sure is a lot that we could still do. Let's consider some options.
(Mar 23, 2021)
Second shot down. Slices looking good. What shall we do today?
(Mar 22, 2021)
Now that we can slice images, let's see what it takes to plug them in. I'm sure we'll need to adjust how things work.
(Mar 21, 2021)
Images, free stuff, ideas, random thoughts. It's Sunday, cut me a break!
(Mar 20, 2021)
Some planning, then something. Come find out with me. I have no plan for the morning.
(Mar 19, 2021)
I really want to make some progress on the creatures that hang around the WayDown. But first, I am going to write a Coda on CodeaUnit and my simple toolset.
(Mar 18, 2021)
I want to get a creature to lead us to the WayDown. And I feel the need to improve the campground. Also St. Gertude. And, as often happens, we don't go where I expect. Neat outcome, thoughl
(Mar 17, 2021)
Top o' the morning' to ya, and I think we'll be starting on a set-piece today. Unless I change my mind. Also, some ranting about Definition of Ready.
(Mar 16, 2021)
More pathfinding, that's the plan. Testing is likely to be harder than doing.
(Mar 15, 2021)
I think today I'll try some pathfinding. And, yes, I have a story asking for it.
(Mar 14, 2021)
It's Pi Day, Sunday, and I think we'll take a look at our new Strategy object with fresh eyes, if we have any.
(Mar 13, 2021)
What we need here is a Strategy. Well, not so much need. Want.
(Mar 12, 2021)
Thoughts on throwing things away. And let's move these monsters.
(Mar 11, 2021)
A bit more on Monster movement. I'm not certain the implementation is correct. After that, I'll think of something.
(Mar 10, 2021)
Thoughts on 'Tiny Habits', maybe a change to Monster behavior, maybe poison.
(Mar 8, 2021)
It's International Women's Day here at the dungeon, so let's see whether we can give the Princess the ability to heal.
(Mar 5, 2021)
I noticed something significant last night. Something I don't recall ever really thinking about before. Of course, in 8 decades you forget a lot ...
(Mar 4, 2021)
Today we'll follow up a good idea from an idea source that is new to me. I expect that we'll have an interesting and desirable outcome. Interesting, at least.
(Mar 3, 2021)
Will this thing never end?? Let's take a small cut at inventory.
(Mar 2, 2021)
Implementation inheritance? Why not? A challenge to my betters.
(Mar 1, 2021)
Some small cleanup items. Then ... I don't know, I'll have to wait and see what I do.
(Feb 28, 2021)
Today, I'm going to create a new class to deal with Monsters. And I'll tell you why it's OK to do that. And it'll be in tiny increments!
(Feb 27, 2021)
Hide the WayDown. Make the spikes spikier. A new test, and a smarter DeferredTable improves some code.
(Feb 26, 2021)
We have to set a trap in a hallway. Let's make that more efficient to do. Also, we don't do it in the more efficient way after all. Also invariants. Also: Ron defines 'should'.
(Feb 25, 2021)
I have traps in mind, and smarter monsters. Is that what the day brings? One never knows, do one?
(Feb 24, 2021)
Monster levels should be easy. Then I wander off into code improvement.
(Feb 23, 2021)
Let's get items properly distributed. After that, some leveling, perhaps. I don't know. I'll have to wait and see what I do.
(Feb 22, 2021)
I feel the need to make Dung a bit more like a game, with levels and such. Let's start pushing in that direction.
(Feb 21, 2021)
A second cut at TDDing the music players. Simple isn't easy.
(Feb 20, 2021)
I decide to redo the music playing logic with TDD. Results are mixed.
(Feb 19, 2021)
Music? And then, idk, something else. Maybe refactoring? Poison?
(Feb 16, 2021)
Combat and the Crawl have been kicking my tail. This does not please me, even a little bit. I'm sure the difficulty is at least partly due to a poor description of the problem, leading to poor solutions. Today I win.
(Feb 15, 2021)
Let's clean some code. Let's also try to make combat more interesting. Let's also try to stay out of trouble. Is that so much to ask? (As usual, the plan changes before long. Also, trouble.)
(Feb 13, 2021)
A new day dawns. New chai. Consolation from the Zoom Ensemble. Technical debt. And another run at combat.
(Feb 12, 2021)
Wow, he's really dragging this one out, isn't he? Let's do some more Combat, round this out a bit. Later: Things go very wrong. This is a debacle.
(Feb 11, 2021)
Let's work a bit further on combat. I'll start with something easy, but there are some possibly tricky roads ahead. (Plus, Ron comes out against death.)
(Feb 10, 2021)
Let's see how far we can push this 'little language' we're making for combat. I should try something tricky next, to be sure the idea can bear weight.
(Feb 9, 2021)
More on Combat. I have now been advised by my betters on how, possibly, to test this thing. I may have an angle.
(Feb 8, 2021)
Let's start on our new combat logic. But first, those failing tests ...
(Feb 7, 2021)
Now for some magic. How can we get screen effects synchronized with the information crawl? You won't believe this cunning plan!
(Feb 6, 2021)
Everyone thinks they know how I should do combat. There are issues that daunt me. I'm sure there's a pony in here somewhere.
(Feb 5, 2021)
Last night I found a rather embarrassing defect. Fortunately, there are probably lessons to be learned.
(Feb 4, 2021)
More on turn-based. Let's try converting Encounter to a combat round, or writing a new combat round. Or something else.
(Feb 3, 2021)
Input from Bruce. And our turn-based implementation isn't quite good enough yet. I'm not sure what to do about that.
(Feb 2, 2021)
In my roles as Product Owner and Chief Game Designer, I have thrown me in my role as Programmer a curve: We want me to make the system turn-based.
(Feb 1, 2021)
Let's do some more user input. And some planning, not necessarily in any particular order.
(Jan 30, 2021)
You know that thing where they ask you for something no one ever thought they'd ask for? They just asked for it.
(Jan 29, 2021)
Let's talk about some design aspects, starting with the new DeferredTable. Then we'll follow our nose. But there's kind of a paradox.
(Jan 28, 2021)
Let's try a more conventional approach to our deferred collection. First, some words on why it's a good idea.
(Jan 27, 2021)
Let's reach deep into the bag of tricks, and see whether we like what we find there.
(Jan 26, 2021)
Let's use the new Loot object for Health and Keys. That should test the concept and drive out some nice clean generality. (N.B. Plan changes one page in.) Worse yet: hours of confusion!
(Jan 24, 2021)
Just some little things. There may be nothing interesting to see here. One never knows, though, do one?
(Jan 24, 2021)
A tricky graphics issue. And about those walls. Is there a problem?
(Jan 23, 2021)
Let's try the wall data. This calls for a slightly different scheme, I think.
(Jan 22, 2021)
An interesting problem. Is there a clean solution, or do I need a bigger hammer?
(Jan 19, 2021)
Why do I almost always do something other than I planned to do yesterday? It's a mystery.
(Jan 17, 2021)
Some display work. Then let's start on treasures. I have a cunning plan ...
(Jan 16, 2021)
Damage display, and what about showing attacks? I have a few weak ideas ... WARNING: Big movie files.
(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.
(Jan 14, 2021)
Mostly some thinking and planning about behavior. Maybe some code. Now: with movies!
(Jan 13, 2021)
Let's finish up and clean the coroutine message floater, and purge the unused tabs. Then make all the tests run. Then, stick our head up and look around.
(Jan 12, 2021)
More on Encounter coroutine version. Rationalizing not doing much more TDD. Will he be sorry?
(Jan 10, 2021)
I'll save you some reading and trash the first version of this article. I will sum up. Then I'm going to try a coroutine. Hold my chai.
(Jan 9, 2021)
More work on Encounter. I still want the fighters to separate after a round.
(Jan 8, 2021)
Today, more work on combat encounters. I have in mind separating the fighters.
(Jan 7, 2021)
Fortunately, I have programming to distract me. But there's too much going on in there, too. Also: a rather large mistake.
(Jan 6, 2021)
Let's display Encounter results before we enhance it further. This may become tricky, but let's hope not.
(Jan 5, 2021)
More thinking and doing on combat encounters. Can we avoid turn-based?
(Jan 4, 2021)
I'm sorry--I have to do some planning. Then maybe some code.
(Jan 3, 2021)
Tweak attributes. Make some tentative decisions on combat.
(Jan 2, 2021)
Let's try again today to improve the character sheets. I have a new idea. That rarely goes well.
(Jan 1, 2021)
Character sheet for the player today, then a daunting bug, er, defect.
(Jan 1, 2021)
Thanks for visiting! If you value what I do, here are some ways you can support my work.
(Dec 31, 2020)
Probably my last article of 2020. Some thoughts on these articles, and the design of OO programs. Perhaps a character sheet for the Player.
(Dec 29, 2020)
More work on Character Sheets, and a feature idea from Twitter follower WR. Nothing interesting happens.
(Dec 28, 2020)
Levels, treasures, or character sheets, that is the question. The answer is only a bit interesting. One good bit tho.
(Dec 26, 2020)
Monsters. We need more monsters. Bigger, badder monsters.
(Dec 25, 2020)
While I wait to see whether Santa came, I want to enhance Monster movement a bit. This will require the TileArbiter table and code to change.
(Dec 24, 2020)
Not a political idea, but perhaps it should be. But I digress. Let's do on-screen controls.
(Dec 23, 2020)
Let's do some more with the TileArbiter, including plugging it in to actual game play.
(Dec 22, 2020)
If at first you don't succeed, try something different. Sorry, no pics or movies today. Just code.
(Dec 20, 2020)
Probably not THE answer but maybe some small ones.
(Dec 19, 2020)
Brute force FTW, a sound in the silence, and ... I don't know what else yet.
(Dec 18, 2020)
Lighting? Better lighting? In a DUNGEON??? Are you serious?
(Dec 16, 2020)
Double dispatch! Chet will be so proud. Or jealous. And Keys!
(Dec 15, 2020)
It's time to put some game-playing features into this thing. That could lead anywhere, but I'm hoping today at least will be easy.
(Dec 14, 2020)
More refactoring: I want more habitable code to work in. Maybe one tiny feature.
(Dec 13, 2020)
Too many notes. Just refactoring today, with reasons why.
(Dec 12, 2020)
More pushing things to Tile. I'm required by law to publish this but I'm not required to like it.
(Dec 11, 2020)
Today I'm interested in learning something about how far to push the 'tile' design. Join me.
(Dec 10, 2020)
Maybe give the monsters a bit of volition. Maybe place them randomly. Maybe some screen controls. Who knows, I just write this stuff.
(Dec 9, 2020)
I believe that the dungeon should have some monsters in it. Let's take a cut at that. Also, I provide an overview of how it works.
(Dec 8, 2020)
I think we should refocus the design a bit, for improved graphics. This promises to confuse me.
(Dec 7, 2020)
Let's limit the Princess's view of the dungeon. I know one way to do that. Let's think of at least one more.
(Dec 6, 2020)
Two nice little things. A short report. Thanks to GeePaw for one of them. A weird explanation for the other.
(Dec 5, 2020)
I'm fairly satisfied with room and hallway generation. It's time to work on what the screen looks like in play.
(Dec 3, 2020)
It helps if your tests actually check something. Sounds like a good idea, let's try it.
(Dec 2, 2020)
Current plan is to move forward from the little tiled-space experiment, evolving it into a playable game. If I'm right, we should see faster progress. It could happen.
(Dec 1, 2020)
A New Hope, from a New Direction. Yes, that's right, I'm thinking about starting over. Could this be a good idea?
(Nov 28, 2020)
Another run at moving into the new hallway rooms and back out again. Fortunately, as I mention at the end, my purpose isn't to show you how smart I am.
(Nov 27, 2020)
Session was a total loss. Do not read: Still working on letting the Princess get out of room one. After creating doorway-hallways as rooms, we're getting close.
(Nov 26, 2020)
So many things to be thankful for here on Thanksgiving. One small one, I hope, is the Rectangle. Then, a wild Andrew appears!
(Nov 23, 2020)
I guess I should work on putting a player in the room and moving her about.
(Nov 18, 2020)
A new, possibly better idea about room tiling. That may be enough for the day. We'll see.
(Nov 17, 2020)
More like a game, step by step. There's arithmetic involved. I hate that.
(Nov 16, 2020)
There's a bit of tidying up I'd like to do, but I think we have to start making this act more like a game.
(Nov 14, 2020)
The Zoom Ensemble met last night. Our 'work' gave me some ideas. Plus we have an issue to resolve.
(Nov 13, 2020)
My plan, the day notwithstanding, is to get door markers drawn and, with luck, improve the design. But I'm not sure that's what I'd advise.
(Nov 12, 2020)
I wouldn't call them ideas, exactly, but I have some things I want to try.
(Nov 11, 2020)
Is there a difference between creating a better design and discovering one? I think so.
(Nov 10, 2020)
Some thoughts on consistency, clarity, abstraction, and efficiency. A LOVELY REFACTORING!
(Nov 9, 2020)
Feature or improved code? Maybe a feature spike? Who knows, not I.
(Nov 8, 2020)
My recursive pathfinder doesn't work as I thought it did. This cannot endure.
(Nov 7, 2020)
Today I think I need to deal with tiling, or decide that we can do without it.
(Nov 6, 2020)
I've become aware of some issues, as should be expected in a new venture. The question is what to do about them.
(Nov 5, 2020)
Most of what I did yesterday was dreck, detritus, dung. Not very good at all. I plan to revert today and figure out a new plan.
(Nov 4, 2020)
I can't face reality, so I'll keep working on this little imaginary world. At this moment, no idea quite what I'll work on.
(Nov 3, 2020)
Today, I think, separation of the primeval blob of rooms.
(Nov 2, 2020)
Some pals are Zoom-mobbing on a dungeon program that one of us was working on. I'm gonna try one in Codea.
(Oct 30, 2020)
I asked myself, and Twitter, a hard question the other day. Today, I'm going to try to answer it.
(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 10, 2020)
This morning, rather than toil over the scattered bodies of evil but admittedly cute space invaders, I'm minded to talk about privilege.
(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 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 30, 2020)
Adam Savage (@donttrythis) posted a marvelous video of his attempt to build a giant brass nut and bolt. It reminds me of software.
(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 10, 2020)
I'm going to try to write today about social concerns. It would be easier to write about Asteroids, and I'm sure I'd be better at doing that.
[ Social ]
(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)
Some tweaks to hyperspace seem in order, but I feel that this thing is nearly done.
(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 need to say a bit about what's going on in the world today, and to confess how it's affecting me.
[ Social ]
(Jun 1, 2020)
I found some better recordings of the Asteroids sounds. And it's time to trigger new waves.
(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 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 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)
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 20, 2019)
A Twitter conversation and some reading has triggered some new, and probably some old, thoughts on estimation and the #noEstimates tag and meme.
(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.
(Jun 17, 2019)
... to ScrumAlliance.org, Scrum.org, and the Scrum Community at large
(May 23, 2019)
I like to say that I may have invented story points, and if I did, I'm sorry now. Let's explore my current thinking on story points. At least one of us is interested in what I think.
(Apr 19, 2019)
There was a thread on Twitter talking about Agile being anti-management. No, it's much more radical than that.
(Apr 15, 2019)
Sprints, Iterations, Cadences, Continuous Flow. Planning sessions, daily scrums, retrospectives, increment reviews.
Are these all, in the end, overhead to be eliminated along the way to some Agile Nirvana?
(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 11, 2019)
This is a small excerpt from The Nature of Software Development. It's a good reminder of some ways to think about value.
(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.
(Feb 28, 2019)
Scrum is founded in the belief that self-organizing teams can figure out what they need. When true, this is sometimes not sufficient. And sometimes, particularly in software development, it seems not to be true.
(Feb 27, 2019)
Let's talk about what responsibility we have for those who never take a course from us, read our books or web sites, or even see our tweets. I think we have rather a lot.
(Feb 26, 2019)
I wrote this in response to some tweets from an esteemed colleague, who I think is a bit less sensitive to dangerous ideas than I'd prefer our 'thought leaders' to be.
(Feb 21, 2019)
Another little tweet-storm about estimation. I think it's useful and not as easy to use as some people think it is.
(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)
A short little thing that I tweeted recently. I think it's about transformation and 'Agile Leadership Training'.
[ Dark-Scrum, success ]
(Nov 26, 2018)
Another tweet-storm, this one about slicing from top to bottom of the software. Slicing provides value, and information, sooner.
[ Practices, success ]
(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.
(Oct 26, 2018)
Are Imposition and Dark Agile both bad? Yes. Are they the same thing? No.
(Oct 7, 2018)
I tweeted about the SCOTUS situation. Seems I need to make myself more clear.
[ Social ]
(Sep 26, 2018)
Some early unfocused thoughts around original XP practices and what I might say today.
(Sep 17, 2018)
I'm not going to define a new framework, and don't think I should redefine XP, as it's not my baby. But I was thinking ...
(Aug 17, 2018)
I tweeted a storm about responsibility when 'Agile' doesn't go well. Here we'll unroll it and say a few more words.
(Jul 25, 2018)
Yesterday, I tweet-improvised the following thread. I had intended to write it up later as an article on my site, and here it is. It received a number of replies and comments, and I'll address some of those here as well.
(Jul 20, 2018)
There's a lot of whinging going on about imposing 'Agile' methods and practices. These whiners just don't know how to do imposition correctly. Me either, but here's what I'd try.
(Jul 19, 2018)
People have been telling me for years that Scrum is not an Agile Software Development Framework. I should have paid more attention. It's still good stuff, though.
(Jul 11, 2018)
A discussion of my personal values in the light of way too many 'well-reasoned' but mistaken notions on diversity.
[ Agile-Related, Social ]
(Jul 9, 2018)
A chapter from 'Software Development, How I'd do it'.
(Jun 24, 2018)
I'm writing a thing for GitHub Pages, so I decided to write a thing for GitHub Pages. Yaks all the way down!
[ Erors, Little Things ]
(Jun 11, 2018)
Last night I had an interesting dream about files and folders ...
[ dreams, set-theory ]
(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 20, 2018)
I watch The Expanse to force myself to exercise. Today this quote hit me pretty hard.
(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 9, 2018)
You're probably wondering what I've said about estimates and the NoEstimates movement. Well, wonder no more. (bumped)
[ estimation ]
(Apr 6, 2018)
Just a few words about why I publish all these words, going over and over the same topics again and again, repeatedly and repetitively.
(Apr 6, 2018)
On the Agile Mentoring Slack group, Jack Caine and I were discussing what it means to be Agile. I wound up writing something like this, and wanted to share it more broadly.
(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.
(Feb 27, 2018)
To meet the deadline, all the software has to work on that day ...
(Jan 23, 2018)
There's a lot of noise going on on the Twitter just now, about starting with Scrum, with kanban, or with nothing. Here are some thoughts.
(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.
(Oct 2, 2017)
A blog on hiring for 'merit' has come across one of my input streams today, and I've decided to share a few thoughts on that subject.
[ Social ]
(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 8, 2017)
Responding to a mistaken TDD flowchart.
(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.
(Sep 6, 2017)
Mike (GeePaw) Hill storified about sense of urgency and an acronym RAMPS. I like what he said and will muse upon it.
(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 10, 2017)
In which a really fascinating little study piques our interest and suggests some thoughts. Please, I mean no harm here.
(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 21, 2017)
A number of tweets and posts this week point out, correctly, that if we don't think about what we're doing, Scrum and Agile won't work. Apparently people need this reminder.
(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 12, 2017)
A couple of things passed by my Twitter last week and I'll try to comment briefly on them. For values of 'briefly'.
(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.
(Jun 5, 2017)
Thoughts on the state of Scrum and Agile. Pressing harder isn't the point at all. Bit of a rant, really.
(May 25, 2017)
Some thoughts about kinds of people, kinds of words, and kinds of hair and clothing. We need to come together.
[ Social ]
(May 10, 2017)
If you're like me (as of last week) you haven't read this book. I recommend that you do so, right away.
(May 9, 2017)
I had an idea relating to my habit of 'Programming in Public' with all my mistakes, errors, bobbles, fumbles, and goofs showing. Why not write a book (again), with different languages and problems? Interested? Let me know.
[ Erors ]
(Apr 24, 2017)
Based on our Scrum Gathering 2017 talk, we discuss the impact on real software development of growing focus on the 'enterprise'.
(Feb 19, 2017)
I've been trying to learn a 3D drawing program. Yesterday I noticed that I was working but not learning.
(Oct 17, 2016)
Possibly not the best stance to take on, if you can manage it.
(Oct 5, 2016)
Time was, you got a spec, got browbeaten into saying you'd do it in 6 months, then got mostly left alone for 6 months. Now, they get to **** with you every ******* day!
(Sep 13, 2016)
Good frameworks are deep. Quick-entry courses sell well. It turns out they sell TOO well.
(Sep 8, 2016)
Scrum is good, when done as intended. Otherwise it can be oppressive and dangerous to developers. Let's study: Defense Against the Dark Arts of Scrum.
(Jul 9, 2016)
A twitter conversation got me thinking about the extent to which Agile ideas are intended to support small improvement, or to disrupt things.
(Jun 27, 2016)
Some interesting tweets make me wonder: if I were creating a method today, what would it be?
(Jun 24, 2016)
A foray into Google App Engine turns into a Tibetan adventure with Bos grunniens. No real lesson is learned.
[ Agile-Related, tdd ]
(Jun 21, 2016)
Mike Vizdos and I are starting a new Slack team and we invite you to join us.
(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?
(May 24, 2016)
Tozier and I did a little work on the ants experiment. Lessons are beginning to be learned.
(May 17, 2016)
Tozier posed an interesting problem today, and we decided to work on it at the coffee shop.
(Apr 21, 2016)
I found this picture of a roulette wheel. I wonder how hard it would be to make my little game use it.
(Apr 20, 2016)
Let's finish wiring up our second pass at Jim Jeffries' roulette example, and see what we can see.
(Apr 19, 2016)
I felt I owed it to myself to do Jim Jeffries' roulette exercise, this time with more tests. You won't believe what happened next. (Sorry, I have a click-bait virus.)
(Apr 18, 2016)
Jim Jeffries (no relation) proposed a TDD exercise / challenge. I took it on. The results may surprise you. (Sorry.)
(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.
(Dec 8, 2015)
Some twitter leftovers got me comparing Scrum and [Kk]anban. Are they Agile?
[ Agile-Related ]
(Dec 6, 2015)
Some tweets inspire me to write a bit about management in Agile.
(Nov 25, 2015)
Bob Martin has published the Programmer's Oath. What do I think about that? The answer may surprise you.
(Nov 23, 2015)
Just some small thoughts bordering on rants. Something here for everyone to get mad about.
[ Agile-Related, Needle ]
(Nov 12, 2015)
It's common to tweet things objecting to high automated test coverage as if it's irrelevant, incompetent, or stupid. I suggest otherwise with a thought experiment.
(Nov 9, 2015)
In which we discuss the technical debt metaphor, bright code, and the inevitable decline of civilization.
(Nov 5, 2015)
Mistakes, I've made a few [thousand], but then again too many to take personally. – not Frank Sinatra
(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?
(Oct 9, 2015)
Let's look at what Agile-focused individuals can do to improve their own lives, and, through interacting, help their colleagues and their organizations.
(Oct 8, 2015)
In a conversation about religion, I found myself saying something that makes me think about 'Agile'. Trigger warning: includes words like 'Christian'.
[ Agile-Related ]
(Sep 28, 2015)
I've been a bit disappointed lately by the state of Scrum in companies, and rightly so. But there's another way to look at it.
(Sep 15, 2015)
Chet and I were talking about the importance of the Increment and the Sprint Goal. Herewith, some musings.
(Sep 11, 2015)
FiftyThree has released a new version of their excellent product, Paper™. Powerful changes. Bravely different.
[ Product ]
(Sep 8, 2015)
You have to either laugh or cry. -- Wm. M. Rogers
(Sep 1, 2015)
You people could help me by doing a better job and making fewer mistaks.
(Sep 1, 2015)
One great way to remove an impediment is to replace an old idea with one that's better. Let's give that new idea a new name.
(Aug 26, 2015)
Kate and Dan estimate a new project. Or do they?
(Aug 24, 2015)
The Estimate-Commitment relationship stands in opposition to collaboration. It supports conflict, not teamwork.
(Aug 22, 2015)
After a lot of email and blogging, Steve McConnell and I "Came out by the same door where in we went".
(Aug 6, 2015)
Many individuals are creating new, marvelous, incredibly valuable Agile contributions. These were inspired by the Manifesto. They are not updates to the Manifesto, they're founded upon it.
(Aug 1, 2015)
In which we search for common ground and disputed ground.
(Jul 31, 2015)
Steve makes some great points. I think I'd make somewhat different ones.
(Jul 29, 2015)
If we can't build software well, all our Agile is for nothing.
(Jul 24, 2015)
A recent Twitter conversation bugged me (and bugged Clarke Ching even more). Here's why.
(Jul 22, 2015)
Privilege. No privilege. Screw it, improve your situation. Or don't. It's up to you.
(Jul 20, 2015)
OK, one more on this bowling thing: I decided I should do some tests.
[ Agile-Related, elixir ]
(Jul 19, 2015)
Scoring bowling is Chet's and my go-to application for demonstrating pair programming and TDD. So here it is in Elixir, without either pairing or TDD. Interesting, though.
[ Agile-Related, elixir ]
(Jul 16, 2015)
A report on building up a payroll pipeline. Twice. And still not entirely liking it.
(Jul 15, 2015)
Let's see whether we can sketch a little payroll. In Elixir. As the title suggests. Expect trouble - I do
(Jul 15, 2015)
It seems like time to experiment with something new. Will it be Elixir? Hold on, this is going to be chaotic.
[ Agile-Related, elixir ]
(Jul 13, 2015)
Apparently the word 'estimates' is not clear. Here's what I mean and don't mean.
(Jul 11, 2015)
You keep using that word. I don't think it means what you think it means.
(Jul 9, 2015)
Slicing is easier and better than estimation for projecting done. And slicing adds value, while estimation does not!
(Jul 7, 2015)
That's all you need. You don't need no more.
(Jul 6, 2015)
A Twitter conversation got me thinking about how often teams or organizations fall away from their process, when it happens, and why.
(Jul 5, 2015)
Theory, Practice, Received Wisdom, Certification. These are not the things that make things work. Good people make things work.
(Jul 2, 2015)
Deciding what kind of tests, and what tools, would be good for a payroll series, if I continue with it.
(Jul 1, 2015)
I love computers! Trying to set up Fitnesse and landing squarely on rspec.
(Jun 30, 2015)
Every minute we spend just thinking and talking, and not programming, is wasted!
(Jun 29, 2015)
Chet and I just ran an Agile Skills Workshop last week. It was great fun. We were asked for a description, and here it is.
(Jun 7, 2015)
A brief um discussion about the Increment and how it might help you change culture.
(Apr 24, 2015)
I guess today I must write about the Scrum "Definition of Done", which is neither a definition, nor done. Is it a Scrum Artifact? I'd rather not.
(Apr 23, 2015)
Someone asked about comments on this site. I don't want comments on the site, but I am happy to discuss things, so I've set up a Google Groups forum. Here's some info about the forum.
[ Agile-Related ]
(Apr 20, 2015)
I had occasion to look at a couple of articles from 2010, and things don't seem to have changed much. Should we be concerned?
(Apr 10, 2015)
All around us, Scrum and Agile are used, misused, and abused. How should we feel about that?
(Mar 29, 2015)
For success with Scrum, we need the basics, our expertise, and to improve our culture. To improve the culture, we need the Product Increment.
(Mar 27, 2015)
Development teams need help using the product increment as a center for making lives better. I resolve to work to fix that.
(Mar 27, 2015)
We're not blaming you when we say you're doing it wrong. We're trying to help you do it right.
(Mar 27, 2015)
We need to make Scrum and Agile safe for software developers. How should we proceed? (updated)
(Mar 25, 2015)
It's not up to Scrum or "Agile" or XP to make you successful or happy. It's on you.
(Mar 25, 2015)
We don't want just a "Product Owner". We want a Product Champion!
(Mar 23, 2015)
Impediments are there to be removed, not there to be recorded for posterity. Drive them out, don't log them in.
[ Agile-Related, Needle ]
(Mar 22, 2015)
Historically, this was a category for shorter, more edgy articles. I might just bring it back into common use.
[ Needle, XProgramming ]
(Mar 16, 2015)
There's not much wrong with Scrum. Or is there? It depends what the meaning of 'wrong' is.
(Mar 16, 2015)
They shipped the software, therefore what they did was best. It ain't necessarily so.
(Mar 12, 2015)
Jonathan Rasmusson wrote an interesting article. I agree. It's not about unit tests. It's about skill and understanding.
(Mar 9, 2015)
Giles Bowkett invited me to discuss another article he wrote. For some reason I'm willing to do that.
(Mar 6, 2015)
The conversion from XProgramming.com to RonJeffries.com is essentially complete. Let's look at some learnings.
(Mar 2, 2015)
Many people assert that Scrum fails often. They say it's Scrum's fault. I'm still trying to understand.
(Mar 1, 2015)
Jeff Sutherland said today that it's not done if it's not tested. You won't believe what happened next!
(Feb 25, 2015)
My new book, The Nature of Software Development, has been released by Pragmatic Bookshelf. Check it out!
[ Nature ]
(Feb 24, 2015)
It is my practice to reconsider important topics. Certification certainly is such a topic. Here are today's thoughts.
(Feb 20, 2015)
Giles Bowkett has written some impassioned diatribes against Scrum on his blog. He raises some issues, which I shall try to discuss.
(Feb 13, 2015)
Content from XProgramming has been moved to this site. Some brief retrospective thoughts.
(Feb 8, 2015)
I was reminded by a lovely email of what happened during our SAFe training. Eliminate dependencies, don't document them or accommodate them.
(Jan 29, 2015)
Address given at the final meeting of the Agile Alliance, August 20__, by Ron Jeffries
(Jan 24, 2015)
As Tozier and I work on Scraper, I find the pairing to be quite difficult, though not unrewarding.
(Jan 20, 2015)
The Nature of Software Development will be released Real Soon Now. Pragmatic Bookshelf and I are looking for reviewers, who will receive a free copy. Inquire within.
[ Nature ]
(Jan 19, 2015)
Things will happen to us no matter what we do. That doesn't mean we can't influence what happens.
[ Social ]
(Jan 14, 2015)
Actions have consequences. It may be best to be OK with that.
(Jan 2, 2015)
A few thoughts in response to a discussion on the Scrum Development list.
[ estimation ]
(Dec 22, 2014)
It's good to have people watching over me. Already got some feedback on this morning's article.
(Dec 22, 2014)
True to my word, for once, I'm learning RSpec. Follow along and laugh at my ignorance.
(Dec 16, 2014)
A report on what's going on behind the scenes, with a bit of info on how we have built and used plugins and templates. Major errors within!
[ rj.com ]
(Dec 8, 2014)
XProgramming will transition slowly over to ronjeffries.com. Be there or be square.
(Dec 6, 2014)
Channeling ELO. Also a Codea Diamond that you might find interesting.
(Dec 5, 2014)
A number of people have tried the Diamond Problem now. Let's look at their work and see what we learn.
(Nov 30, 2014)
The trouble with thinking is, you keep getting new ideas. I wanted to try this one. Turned out quite oddly.
(Nov 29, 2014)
Alistair Cockburn published an article about thinking in solving a problem with TDD. I'm all for thinking. Let's see how I do it. UPDATED.
(Nov 29, 2014)
Today is a big day for people tweeting how they deplore what other people are doing. Others retweet those tweets. I think that's a fruitless behavior and suggest something different.
[ Agile-Related ]
(Nov 27, 2014)
Some questions come to mind about creating articles for a static site. In particular, what about trips with only an iPad?
[ rj.com ]
(Nov 26, 2014)
We come up with a block tag plug-in that lets us display most recent articles, sorted lists, and so on.
[ rj.com ]
(Nov 24, 2014)
We've been working on the XProgramming replacement project since late September, so let's talk about estimation.
[ estimation, rj.com ]
(Nov 23, 2014)
Doing simple things with Liquid templates is so awful it makes me want to ditch Jekylll just to get rid of Liquid.
[ rj.com ]
(Nov 22, 2014)
This is an NSFW rant regarding the whiny, mewling *bastards* who bitch, whine, and complain about Agile methods, Scrum, and similar topics.
(Nov 21, 2014)
A progress report, and some waffling. There's a lot of learning in a new project.
[ rj.com ]
(Nov 2, 2014)
Martin Alaimo asked about the Manifesto Principle "The best architectures, requirements, and designs emerge from self-organizing teams."
[ XProgramming ]
(Oct 28, 2014)
Experience with Sinatra, and some thinking, cause us to look at a shift in approach. Martin Fowler was probably right.
[ XProgramming ]
(Oct 11, 2014)
Ignatz and Jmv38 on the Codea forums commented on the previous article. I had hoped to do more anyway so here's the next one.
[ XProgramming ]
(Oct 10, 2014)
Based on a simple example on the codea.io forums, I decided to write an article showing all the stuff I might do on a production calculator project. Wow.
[ XProgramming ]
(Oct 7, 2014)
Robin Dymond asked me to write about making stories small. Well, there's this.
(Sep 25, 2014)
Scrum top dogs announce combined site for Scrum definition.
(Sep 20, 2014)
XProgramming.com needs a new implementation. Want to watch?
(Sep 20, 2014)
XProgramming.com needs a new implementation. Want to watch?
[ Agile-Related, rj.com ]
(Sep 5, 2014)
Put makeup on your own pig, make it look as good as you can. Don't go around finding ugly imaginary pigs to stand it beside.
(Sep 4, 2014)
A report on the books, tools, and toys that have recently wandered through my life.
(Jul 30, 2014)
There has recently been a lot of noise on the lists, and questions at conferences, about putting refactoring "stories" on the backlog. Even if "technical debt" has grown up, this is invariably an inferior idea.
(Apr 2, 2014)
Recent Twitter conversations inspire me to pull out some of my concerns with SAFe and talk about them.
(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.
(Mar 5, 2014)
Kate's Gang chat about estimates, time, and cost.
(Feb 27, 2014)
I recently took the SAFe SPC training. My bottom line assessment is that it will be a marketing success, organizations trying it will see improvement, and some will see great improvement. And I don't like it.
(Dec 31, 2013)
Don't buy a brand. Seek out good ideas, and apply them to your situation.
(Oct 26, 2013)
The sky is blue on my planet. I live in the same real world you do, and have probably done so longer.
[ XProgramming ]
(Apr 29, 2013)
There’s a lot of interesting talk and thinking, going on under the heading of #NoEstimates. I think it's great, and I'm all for it. To do #NoEstimates, people will need some help ...
[ XProgramming ]
(Mar 27, 2013)
Robert Pirsig's protagonist "Phaedrus" said "Quality is what you like". We talk a lot about "value".
My aim here is to suggest to you that value is what you like.
(Feb 25, 2013)
Are "manual" versus "automated" useful terms? As a matter of fact, yes, they are ...
[ XProgramming ]
(Sep 5, 2012)
It's time to tell you a bit about the point of this little game we're working in.
(Aug 29, 2012)
In this episode, the code tells us to move toward a subordinate drawable object, the Polyline. We listen.
[ Codea, XProgramming ]
(Aug 25, 2012)
I'm starting to work on an application in Codea, a Lua system for the iPad. Here's the first spike.
(Oct 29, 2011)
Kate gives Dan Devlin, the company owner, an overview of Scrum.
(Jun 25, 2011)
Piers Thompson sent me a good question about my recent database articles. I suspect others would like to hear the question and answers.
[ XProgramming ]
(Jun 22, 2011)
Here's the current code, and some commentary, for the "But We Need a Database" article. UPDATED: Comments on Python style.
[ XProgramming ]
(Jun 20, 2011)
Last week Chet and I taught a delightful XP Experience class in Delaware. As often happens--where by often I mean always--the participants ran into trouble trying to apply Simple Design ideas when it came time for the system to demonstrate the ability to store and retrieve information. Let's talk about that.
[ XProgramming ]
(Jun 9, 2011)
Kate met Dan Devlin at the coffee shop on Main Street where he had originally recruited her. They shared the lovely weather and caught up to date on their lives. But Dan had a question.
(May 10, 2011)
Need a little help getting some data in and out of Second Life. World's most rudimentary scripting language, world's most ignorant scripter.
[ XProgramming ]
(May 10, 2011)
It is with some regret that I'm discontinuing my articles about J and about iLua on the iPad. Here's why. Also, I have a question.
(Feb 21, 2011)
I've downloaded the iLuaBox app for my iPad. This is a small but robust implementation of core Lua. Very interesting!
(Feb 21, 2011)
I did a bit more refinement on the Lua bowling example from last time. First, I package the rolls. Then a Frame appears!
(Feb 21, 2011)
A twitter pal has been working on bowling with a frame display notion, like at the bowling alley. Hmm ...
(Jan 12, 2011)
No, really. This is hard. People ask me why I'm doing it. There are reasons ...
(Jan 10, 2011)
Just recording random discoveries as I work through the EasyJ book. Read if all that interested in how I think ...
(Jan 8, 2011)
To do J, you must change the way you think. You must also learn many new words and other parts of speech. Working on part one today ...
(Jan 6, 2011)
J is doing strange things to my mind. I must report now, before my thoughts are too alien to communicate at all.
(Jan 4, 2011)
Chet and I are thinking of doing an app for iPhone / iPad. Can we do it on a shoestring? Advise us.
[ XProgramming ]
(Jan 3, 2011)
Alan Shalloway blogged on "Big Change Up Front", suggesting that it's not always the best thing to do. This made me think ...
(Dec 24, 2010)
"Why don't you believe in testing?" said Lanette Creamer, the Testy Redhead. Ah, but I do. I care about what, when, and at which end of the horse.
(Dec 12, 2010)
An odd anonymous article on "LearnTFS" purports to debunk Agile by moving closer to waterfall. Interesting, but not quite right.
(Dec 10, 2010)
I've had the privilege of observing He Jinbao, a martial arts master. He doesn't hurry. Maybe we shouldn't either.
(Dec 9, 2010)
Are there places where lower quality has less negative impact? Possibly. Except maybe on your soul.
(Dec 8, 2010)
No one I know can operate at their peak performance all the time. How do we know how hard to work on quality? Same way you get to Carnegie Hall.
(Dec 7, 2010)
You can always find someone to argue for cutting quality corners to "go faster". Is it possible to waste time cleaning code? Sure. Is it possible for code to be too clean? No.
(Dec 1, 2010)
Teams often want to write "technical stories" to cover things like testing and improving the design or infrastructure. There is rarely a need to do this. Here's why.
(Nov 6, 2010)
Alan Shalloway and I were tweeting about whether Scrum could be improved because it doesn't include some damn thing or other. Scrum is working as designed. We and the Alliance need to get to work.
(Oct 31, 2010)
Chet and I will be meeting with both the new and the outgoing Managing Director of the Scrum Alliance. I asked for input on Twitter, and have received some. Here, some thoughts.
(Oct 22, 2010)
Kate's team has noticed that their burn down chart shows trouble. The chart is right.
(Oct 20, 2010)
"Just tell us when you'll be done with all these requirements" is not how to guide an Agile project, be it Kanban, Scrum, or XP. Not remotely.
(Aug 27, 2010)
Some people have difficulty living up to the values and principles of the Agile Manifesto. Should we improve the Manifesto? Raise your game: we meant what we said.
(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.
(Jul 28, 2010)
Just for something to do, I'm learning? Scala. Having deep confusion making JUnit suites run. Advise me in comments if you're up for it?
[ XProgramming ]
(Jul 15, 2010)
"His brand is bad: my brand is good." Isn't it well past time we got over that kind of thinking? I'll take a good idea from anywhere. So should you.
(Jul 13, 2010)
Should we ease into Agile, or jump in? How fond of being eaten by bears are you?
(Jun 29, 2010)
Let's consider two "dimensions" of a project, the extent to which it adheres to "Agile" values, and the extent to which it is an effective or successful project.
(Jun 10, 2010)
Susan said, “I can’t do it, Kate. No one could do it. There’s too much to do.”
Kate paused until Susan seemed more steady. Then she said “Exactly. And that’s how we get done on time.”
(Apr 29, 2010)
Cut quality to go faster? It could happen. There's more to the story, however.
[ XProgramming ]
(Apr 11, 2010)
There has recently been another discussion of Kanban on one of the Scrum lists. Kanban has some interesting ideas, and yet it seems to conflict with Scrum in some essential ways. The problem isn't Kanban: it's the notion of "essential ways".
(Apr 2, 2010)
It's time for the Scrum Alliance to stop using the C word, "Certified". It is holding us all back.
[ XProgramming ]
(Mar 31, 2010)
Why, anybody can have a brain. That's a very mediocre commodity. Every pusillanimous creature that crawls on the Earth or slinks through slimy seas has a brain. Back where I come from, we have universities, seats of great learning, where men go to become great thinkers. And when they come out, they think deep thoughts and with no more brains than you have! But they have one thing you haven't got - a diploma.
[ XProgramming ]
(Mar 22, 2010)
The Scrum Alliance is instituting a Certified Scrum Developer program (finally). Chet and I are involved. Here's why and how ...
(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.
(Jan 4, 2010)
After a failed iteration, the team regroups with a few new stories.
(Jan 4, 2010)
The team has fallen far short in the most recent iteration. What should they do?
(Jan 4, 2010)
Author Matthew B. Crawford is a physicist, has a Ph.D. in political philosophy, and is a motorcycle mechanic. What's not to like? Recommended for practitioners, managers, executives.
(Dec 23, 2009)
There are essential practices in Scrum and Agile. Not because we say so. It's the nature of the beast.
(Dec 23, 2009)
Have all your desired features or make an exact date. What's so hard about that?
[ Needle, XProgramming ]
(Dec 21, 2009)
Agile projects very often seem to stall out after gaining perhaps twenty-five percent of the possible benefit. Why is this? What can be done?
(Dec 16, 2009)
Incremental and iterative development processes provide frequent opportunities for teams to "Inspect and Adapt". What should we inspect? How should we adapt? Is this part of the process?
(Oct 2, 2009)
Here are a few links relating to collocation, thanks to Adrian Howard and others.
[ Needle, XProgramming ]
(Oct 2, 2009)
I just thought I'd make a page with links that may be worth exploring. If you have some, let me know. I have not explored all of these, nor, probably, have you. That's why I'm listing them.
[ Needle, XProgramming ]
(Sep 10, 2009)
Scrum luminaries freely grant the necessity for good developer practices, and the Scrum Alliance is thinking about developer certification. Some important people in the community are involved, and so am I. Read on ...
[ Needle, XProgramming ]
(Sep 8, 2009)
There has been some discussion of late regarding the use of Test-Driven Development ideas in non-software areas. This is a really good idea and I would like to talk about it here.
(Sep 8, 2009)
When terms like Agile or Scrum or TDD get watered down, everyone loses.
(Jun 19, 2009)
Susan Prior drops in on Kate to talk about some new products she would like developed.
(Jun 16, 2009)
A pizza of radius z and thickness a has volume pi*z*z*a. That is all.
[ Needle, XProgramming ]
(Jun 13, 2009)
We humans like to take a very soft cloud of ideas and give it a name, and then to insist on how good our Named Cloud is compared to some other Named Cloud.
[ Needle, XProgramming ]
(May 31, 2009)
What should an iterative-Agile team do if it appears that not all the stories they signed up for will get done? Is Kanban the answer?
[ Needle, XProgramming ]
(May 28, 2009)
OK, let's talk about when to automate tests for the ten thousandth time. I'm patient, in a manner of speaking. I can keep doing this until you get it.
[ Needle, XProgramming ]
(May 22, 2009)
Scrum's job ends with the problem. Your job begins with the problem.
(May 20, 2009)
I don't believe this quite as much as I did when I wrote it. How about you?
[ Needle, XProgramming ]
(May 7, 2009)
Anything as hokey as this title needs to be preserved. Really.
(Mar 24, 2009)
You XP guys advocate testing, not inspections or program proofs. Everyone knows that testing can only show that errors exist, not that they don't.
[ Q and A, XProgramming ]
(Mar 24, 2009)
A very experienced QA manager recently emailed me some tough questions. Here they are, with are my answers. As always, comments and further questions are welcome!
[ Q and A, XProgramming ]
(Mar 24, 2009)
Article by Kent Beck and Dave Cleal offering an alternative to fixed-price contracts.
[ XProgramming ]
(Mar 24, 2009)
We have Worst Things First, which tells us what to worry about. On the other hand, our division of responsibilities tells us that the customer decides which stories to work on. Does WTF only apply within the particular story we have in hand now, or do we somehow exercise programmer forethought in deciding what we need to worry about?
[ Q and A, XProgramming ]
(Mar 24, 2009)
We recently got some questions about the story "We'll Try". Send us your questions!
The article assumes that the deadline is fixed and that the client should trade off the project objectives. It seems to ignore the possibility that there are other things the client might want to trade off such as cost and deadline or more complex issues like aspects of quality such as maintainability, flexibility, reliability, usability, etc.
[ Q and A, XProgramming ]
(Mar 24, 2009)
The Distributed Computing link lets you get a copy of the C3 team's famous article in Distributed Computing.
[ XProgramming ]
(Feb 19, 2009)
Ward Cunningham posted a video on Technical Debt, and Kent Beck and Ed Yourdon (and I) have been tweeting about it. Let me share some thoughts with you here.
[ Needle, XProgramming ]
(Feb 6, 2009)
In order to do Scrum or XP or any form of Agile successfully, you must refactor. Sorry, not optional. Necessary.
[ Needle, XProgramming ]
(Feb 4, 2009)
The traditional CSM course is only two days. That's not enough time to cover the things a ScrumMaster needs to know to help their team be successful.
[ XProgramming ]
(Feb 4, 2009)
Let's talk about more about code improvement. Some people seem to think that code improvement has a high associated cost. I think it only has a high cost if we're not very good at it.
[ Needle, XProgramming ]
(Feb 2, 2009)
Many teams seem to get in trouble because they do not have good technical practices. In Scrum terms, they can't get "Done". Is Scrum flawed because these teams do not "discover" such practices?
(Feb 1, 2009)
Some people think that there is a necessary trade-off between internal code quality, and getting things done rapidly. I believe they are quite mistaken.
(Jan 30, 2009)
The amount of context focus is too damn high!
(Jan 15, 2009)
How many times do I have to tell you this???
(Sep 22, 2008)
On the leandevelopment list, there has been a bit of a discussion on how long the "backlog" should be, and why.
[ Needle, XProgramming ]
(Sep 22, 2008)
The statement means "I cannot refute your foolish and unrealistic argument but I don't intend to change my mind."
[ Needle, XProgramming ]
(Sep 18, 2008)
Pressure only works if I get them done: otherwise it just frustrates me, makes me feel bad, makes me slower still.
(Sep 17, 2008)
When we make decisions based on any kind of "true faith" approach, be it religion, Waterfall, or Agile Zealotry, we know we are right. If things don't work out as we hoped, it's not our fault.
[ Needle, XProgramming ]
(Aug 26, 2008)
Is a call for more principle behavior going to improve our performance? Frankly, I have my doubts.
[ Needle, XProgramming ]
(Aug 1, 2008)
As my old friend Charles Bair used to say, that's a two-part question. "How?" and "should user stories be written?" The answer to the second question is "No, not really."
[ Needle, XProgramming ]
(Jul 7, 2008)
Code that slows us down is bad design.
(Jul 3, 2008)
There's nothing like a bean counter when it comes to improving your shopping experience.
[ Needle, XProgramming ]
(Jul 2, 2008)
Test-Driven Development checks intention. Customer Acceptance Tests check desire.
[ Needle, XProgramming ]
(Jun 28, 2008)
Michael Feathers asks: Are nested classes really a good idea?
[ Needle, XProgramming ]
(Jun 11, 2008)
Recent discussions on the lists inspire me to take a radical position. Or maybe it's my life. Or an accident of birth. Anyway: Agile Software Development requires software development.
(Apr 25, 2008)
MUCH LATER: Organizations certainly need good productivity. Sometimes they ask for improved productivity, and a way to show that we have improved. Is this always evil?
(Apr 24, 2008)
Carl is concerned about small releases, and catches Kate in the coffee room. They talk about why small releases matter to Kate, and they both learn a bit.
(Mar 28, 2008)
After Dan Devlin, President of Oak River Software, dropped in on her at the coffee shop, Kate agreed to consider helping with the proposed new Empire project. Empire was life or death for Oak River. Without Empire, they'd go under, and Dan couldn't afford to fund it.
(Mar 27, 2008)
The forum was set up as an experiment to see whether a self-sustaining forum-style site would work. This one, at least, has not. With regret, I'm shutting it down.
[ XProgramming ]
(Mar 1, 2008)
"Kate" puts a word in about how things really got started, and promises to come back and sort Ron out if he needs it.
(Dec 21, 2007)
Chet and I have decided that the thing to do is to build the software page using full-on Ruby generators and get it out of the way. Here we go again.
This doesn't turn out at all as we expected. Project cancelled! Has XP failed???
[ XProgramming ]
(Nov 19, 2007)
We review cards and letters, and we finish our first elementary story. We think we will start over. Oh, and my computer is now fast again. Read on ...
[ XProgramming ]
(Nov 13, 2007)
We start on the first story, but get into some trouble with my machine. And you're probably wondering what we're actually up to anyway ... take a look!
[ XProgramming ]
(Nov 12, 2007)
We take a few moments to write stories and talk about what should be done. Who says we don't plan?
[ XProgramming ]
(Nov 5, 2007)
After a long hiatus, we're back! We're tired of Java and C# and decided to do something with Ruby on Rails. Come along for the train ride. Or wreck, as the case may be.
[ XProgramming ]
(Jun 14, 2007)
With a little time on our hands, we make our sketched story run and smooth out the code. Generality is showing up, almost by magic. Except it isn't magic -- you can do it too!
[ XProgramming ]
(Jun 12, 2007)
We move forward incrementally, improving the report generation by adding new paragraphs, observing missing ideas, and removing duplication. Could that be all there is to this? Is "all" a good word in that question?
[ XProgramming ]
(Jun 11, 2007)
In which our intrepid heroes leap fearlessly directly into a flaming pot of YAGNI. Will they surface? Will they be fried?
[ XProgramming ]
(Jun 7, 2007)
Our tests run, the code structure is good, yet we are not entirely happy. What's up with that?
[ XProgramming ]
(Jun 5, 2007)
Distracted by the Style and Grace planning and other things, Chet and Ron have been away from the Shotgun project for a while. They need to reload their minds and get back to it. Will our heroes prevail? You know they will.
[ XProgramming ]
(May 5, 2007)
After a lot of reflection on how things are proceeding in our favorite software community, Chet and Ron have decided to hold a public workshop to share and practice building software in teams, with an eye to helping all the attendees ... including ourselves ... sharpen software and team skills.
[ XProgramming ]
(Feb 2, 2007)
With great courage and at great personal risk, Chet and Ron attempt a new world's record in high-altitude pair programming.
[ XProgramming ]
(Jan 24, 2007)
We've been working for a couple of weeks of elapsed time now, we figure, so it's time to focus a bit more on end to end. How about a draft PDF report?
[ XProgramming ]
(Jan 23, 2007)
When we went to the unit square implementation of PatterningSheet and ShotPattern, we stopped after the FitNesse tests ran, but before we modified our image-drawing spikes. Here, we complete that implementation and clean up the code as we do it.
[ XProgramming ]
(Jan 15, 2007)
We get all the tests running after scaling to the unit square, and clean up the code substantially. Full listings in this issue, so stand back when you open the page.
[ XProgramming ]
(Jan 9, 2007)
A few more notes from our friends, and a solo pass over the code. Redneck's last words? "Watch this!"
[ XProgramming ]
(Jan 8, 2007)
Last time, we jammed our new density code into the system, adding some incompatible methods and values. Today we're going to begin to smooth out that code to get the design back closer to good. Will we succeed, or fall on our faces?
[ XProgramming ]
(Jan 5, 2007)
A little experiment for confidence, and we make our Customer's Density test complete, and make it pass. The world does not come to an end. (Updated: a remark on time.)
[ XProgramming ]
(Jan 4, 2007)
Much less effort, a step toward perfection. And perhaps we know why ...
[ XProgramming ]
(Jan 4, 2007)
We draw some density pictures, improve some code, and recognize at least some of our flaws.
[ XProgramming ]
(Jan 3, 2007)
Chet and I get together for the first time in 2007, to some useful effect. Also I try to provide a bit more insight into what we're doing, and not doing, and why.
[ XProgramming ]
(Jan 3, 2007)
Today's plan was to write the acceptance test for another story, and make it run. The best-laid plans ...
[ XProgramming ]
(Jan 1, 2007)
Here's the call for participation for the Agile2007 conference, August 13-17, 2007, in Washington, DC.
[ XProgramming ]
(Dec 30, 2006)
I was reading some interesting stuff on Andy Hunt's blog, and as it was 6 AM and I had nothing else to do, I took this test ..
[ XProgramming ]
(Dec 23, 2006)
There has been some interesting discussion of image processing ideas and such on the lists, owing to our discovery that the paper has some 1500 holes, and the picture only about half as many visible strikes. Here are some of the pictures, and some thoughts on what we're about.
[ XProgramming ]
(Dec 22, 2006)
All right, already! We break down and draw a visible picture, mostly because I wanted Chet to share in the discovery and I knew I couldn't hold off over the holidays. It looks cool. Does it tell us anything?
[ XProgramming ]
(Dec 21, 2006)
We combine the PatterningSheet into ShotPattern, and discuss the effects of doing so.
[ XProgramming ]
(Dec 20, 2006)
Today we think we'll work on consolidating pixels into actual hits, or an approximation thereof. Join us at Borders. If nothing else, you'll see a prodigious 18 minute spewing of code.
[ XProgramming ]
(Dec 17, 2006)
On the plane to Florida, I got an idea for how to clump adjacent pixels to represent a single hit. Apres moi, le rat hole. Here's a report ...
[ XProgramming ]
(Dec 9, 2006)
A new low! We're taken to task for thinking in our free time! I attempt an explanation, and add some random thoughts. Quelle surprise!
[ XProgramming ]
(Dec 8, 2006)
We've agreed to do this project the way that we think projects should be done, and that includes Acceptance tests. Today we'll try for the first one.
[ XProgramming ]
(Dec 6, 2006)
I have the day off, and I drew a nice picture for the previous article, so I decided to work on a spike for Chet's radial pattern density chart. Let's find out what happens.
[ XProgramming ]
(Dec 6, 2006)
We've been working for almost two full days now, and it seemed time to refine some stories. We found some conflicts between ourselves as programmers, ourselves as customers, and ourselves as advisors to projects
[ XProgramming ]
(Dec 4, 2006)
We've been spiking long enough to learn some key things, and it'll soon be time to create better stories and estimate them. Today we finish up the spike on density and learn a few things about those libraries everyone thinks we should use.
[ XProgramming ]
(Dec 3, 2006)
Input from a few readers, and our initial estimates for the shooting project.
[ XProgramming ]
(Dec 3, 2006)
Our first spike took a bit longer than we had hoped, but we successfully interpreted a BMP file. We worked to improve our code, while people wrote to us to tell us how ignorant we are. Fun all around.
[ XProgramming ]
(Nov 29, 2006)
While we wait for the estimates to come rolling in, and before I forget, here's a report on our work so far on the Shot Pattern Analysis program.
[ XProgramming ]
(Nov 28, 2006)
Estimation, simplicity, TDD, tracking. Chet and Ron undertake a project a bit larger than their usual run, to see what happens.
[ XProgramming ]
(Nov 16, 2006)
The Frame object in our Haskell-inspired Java program has an awkward interface. Let's take a look at it and see what can be done.
[ XProgramming ]
(Nov 15, 2006)
Let's proceed with making the Haskell-inspired Java version "better", focusing on writing tests for a new Frame object. The code gets odd, but turns out better after a while ...
[ XProgramming ]
(Nov 7, 2006)
The Haskell experiment we did at the Simple Design and Testing conference has led to some questions and some answers. I'd like to discuss some of them here, and start in a slightly different direction based on the learning.
[ XProgramming ]
(Nov 5, 2006)
The continuing saga of recursive implementations of Bowling, email from our fans, and a refactoring of my Java code.
[ XProgramming ]
(Nov 4, 2006)
Lots of fine feedback on the Haskell article. Alternative implementations in Java, Ruby, and even Haskell! Much fun! PLUS!! FATAL FLAW DISCOVERED IN RECURSIVE VERSIONS!!
[ XProgramming ]
(Nov 1, 2006)
At the Simple Design and Testing conference, Dan Mead bravely agreed to implement the infamous Bowling Game exercise, TDD style, in Haskell. It was fun and interesting. Here I present some discussion, his program, and a Java program in a similar style.
[ XProgramming ]
(Oct 4, 2006)
During our Agile Experience session with a client a couple of weeks ago, Chet and I were helping them with FitNesse for .NET. We thought it would be interesting to get FitNesse working with Ruby, so we've begun to work on that. Here, the results of that trial ...
Now! With new explanations and graphics! See the end of the article.
[ XProgramming ]
(Sep 8, 2006)
On a few of the Agile lists, Paul Arrowood asked: "How does Agile address a conventional Risk Log? I wouldn't call these 'blocked items' (aka issues). But more or less the [Scrum Master's?] watch list for things that could go awry (content not fabricated, new/unfamiliar technology, geographically dispersed team, interdependence with another project, etc)." I wrote an answer, and liked it well enough to put it here.
[ XProgramming ]
(Sep 4, 2006)
It is my pleasure to offer the Agile community a new resource, an Agile Forum. I'm hoping it will be a brand-neutral, consultant-neutral place, open to and shared by everyone who is interested in advancing him- or herself in Agile, or in bringing Agile to the world. I'm inviting you to help make it a place you'd like to be.
[ XProgramming ]
(Jul 13, 2006)
The code is beginning to ask for some help. We're processing a simple array of cells instead of an object, and the classes don't feel cohesive. Let's push some methods off to new classes and see what happens.
[ XProgramming, sudoku ]
(Jul 9, 2006)
I've read a bit more about Sudoku, and even played part of a game. Plus, the ideas of others in the lists and in email have me thinking. Should I try some of these ideas ... or not? UPDATED: My strategy conclusion is wrong!
[ XProgramming ]
(Jul 8, 2006)
A little more explanation of what I'm up to, and a test of a method that actually figures out what could go in a cell. Whee!
[ XProgramming, sudoku ]
(Jul 7, 2006)
A number of people on the tdd list have reported having a lot of fun TDD programming the game of Sudoku. I've not played the game, though of course I've tripped over the piles of books in the bookstores and at the airport. But discussion of the thing makes it sound like it might be fun to TDD on it, as people are saying. Let's get started.
[ XProgramming, sudoku ]
(Jun 11, 2006)
The program reached an impossible state during the first test of the algorithm that I turned loose. I thought I had made a mistake, but it turned out I had not. Well, not a coding mistake.
[ XProgramming, sudoku ]
(Jun 4, 2006)
A comment from Alan Shalloway, on the Lean Development group, points the way to fame and fortune!
(May 25, 2006)
Sure, test automation is a good thing. But we can't, and shouldn't, automate them all. Why then, ask people to "automate all tests"?
[ XProgramming ]
(May 3, 2006)
June Kim posted a J Language version of bowling that is very vector-oriented. As an experiment, I coded up a vector-style version in Ruby, TDD of course. It turned out to be kind of interesting.
(May 2, 2006)
An allegory? Sarcasm? Humorous pastiche? You decide.
(Apr 29, 2006)
Justin Gehtland, Ben Galbraith, and Dion Almaer bring us a valuable and enjoyable book describing Ajax. It is full of running examples, points out the major gotchas, and it's a good read too! Recommended!
(Apr 22, 2006)
Between the new book review page and a few other things, I just spent a few days in a painful, test-free update of my web site scripts. Here, a report on how much it hurt. Lessons learned? We'll have to see what I do. Like lots of folks I know, I haven't figured out how to do what I know I should.
[ XProgramming ]
(Apr 17, 2006)
Scott and Pramod have done an excellent job with this book. It's full of practical advice about how to improve your database design, when to do it, and even how to manage the transitions. If your project involves a database, this book can help.
(Apr 14, 2006)
More features will always bring more revenue, more customer satisfaction, other good things. Therefore there is always pressure for people to work harder, longer hours. This is demonstrably a Bad Idea. Here's some evidence, and some ideas about how to know if pressure is too high.
[ XProgramming ]
(Mar 26, 2006)
On the agile-testing group, there has been a little discussion about offshore testing. Herewith, some thoughts, cleaned up slightly from my comments there.
[ XProgramming ]
(Mar 16, 2006)
I was glancing at the delegates version of the code last night, and I have the impression that the frame status requirement will be more readily implemented there. So today we give that a try. The results are strikingly better than yesterday's!
[ XProgramming ]
(Mar 15, 2006)
Today we set out to finish the essentials of the FrameStatus implementation for the Kicker version of the Bowling Game. Things go in easily, without many surprises. But we have a lot of code, and it doesn't all feel good.
[ XProgramming ]
(Mar 14, 2006)
We have a very procedural implementation of the bowling game, and a very nifty OO version with classes representing states of a state machine. Which implementation is more responsive to new requirements? We'll find out soon!
[ XProgramming ]
(Mar 13, 2006)
We use the C# "delegate" feature to come up with a solution to the Bowling problem that is perhaps a bit less OO, but is also only 40 percent the size of the version with the Kicker classes. Fun exercise, but the proof will be in the next stories. [updated, see footnote]
[ XProgramming ]
(Mar 12, 2006)
I wrote this answer in response to a question on one of the Yahoo groups: "What is the list of documents produced when you are implementing a pure Agile project?" Martine Devos liked it, so I decided to preserve it here in hopes that someone else might like it as well.
(Mar 10, 2006)
We build some superclasses to remove the duplication from the Kicker classes. One false start sends us down an unpleasant path, and we decide to start over more cleverly. As for the end result, we have our doubts. The proof will be in the updating, later on. Right now, it's hard to see why five times bigger is better, just because it looks like Object-Oriented.
[ XProgramming ]
(Mar 9, 2006)
Chet and I get this version running all the way, by implementing the Strike functionality. We do some cleanup, and plan next steps. We can get a pretty good look at the OO-style version of bowling. Is it better? It's not clear.
[ XProgramming ]
(Mar 8, 2006)
In which our heros find a straightforward way to replace conditional logic in the Frame with series of Kicker objects. The design so far is quite "object oriented", and is turning out as was envisioned. But is it better? That remains to be seen.
[ XProgramming ]
(Mar 7, 2006)
Using a pinball "kicker" metaphor, Chet and I are going to try a version of the Bowling Game. We'll talk about the metaphor a bit, and then check our intuition that it will work out well.
[ XProgramming ]
(Mar 6, 2006)
A TDD demonstration of the Bowling Game suggested that there is material there worth mining. Let's start digging.
[ XProgramming ]
(Feb 23, 2006)
Recently on the Scrum list, I characterized the practice of having designated "QA" people on the team as a "second- or third-class practice." Here's some expansion on that ...
[ XProgramming ]
(Feb 23, 2006)
A poster to the CrystalClear list offered a classification of Agile methods, triggering these brief thoughts about integrating the ideas rather than dividing them.
[ XProgramming ]
(Dec 13, 2005)
The ScopeTransform experiment was a good one, but I think that scope transformation should be part of XSet, not a separate operation. We'll work on that ... and it turns out pretty nicely. More to do, of course, and things are a bit fuzzy, but I think we're on a good path.
[ XProgramming ]
(Dec 12, 2005)
Our previous work left me thinking about whether there would be lots of redundant Scope Transform bytes needed in all the records. I chatted with Chet about it, and thought about it a bit more, and I think we're OK. This article will bring you up to date on the thinking. No new code, but I will include the complete listings as of now just to keep you up to speed.
[ XProgramming ]
(Dec 9, 2005)
We're walking a narrow path bounded by theory and practice. This time we'll do some work on those records with holes in them, like the first-name set. In so doing, we'll try not just to hack in the code, but to keep it consistent with our understanding of the math. We don't really understand the requirements, or the theory. Can we possibly succeed?
[ XProgramming ]
(Dec 4, 2005)
We'll push forward with Scope Transformation ideas. First step will be to make the :restrict operation return a ScopeTransform set. That part will be easy. Then we start thinking about just what that :contents method means. Still, good progress for a little time in an airplane.
[ XProgramming ]
(Dec 3, 2005)
We need to look around a bit, to decide where to take this project. To do so, we need to get a bit more clarity on the big picture, and the small one.
[ XProgramming ]
(Nov 30, 2005)
Some cleanup efforts lead us to a theoretical idea, and to a successful spike. Out of chaos, order.
[ XProgramming ]
(Nov 28, 2005)
There's this hack where we return the elements of a set as if they were sets. Nothing like theory to fix a hack, is there? Naturally there are some stumbles along the way, mostly involving the tests. Remember who you're dealing with.
[ XProgramming ]
(Nov 25, 2005)
I did an offline experiment to figure out what to do about this :each thing that returns two items instead of the usual one. Based on that, we'll create a new little object, wire it in, then clean up the tests a bit. Join us ...
[ XProgramming ]
(Nov 23, 2005)
Just for a little something to do, let's add iteration capability to our XSets. [Added: Clarification of something that threw at least one reader off.]
[ XProgramming ]
(Nov 20, 2005)
A small experiment, implementing "restrict" in Ruby. As usual, warts and all.
[ XProgramming ]
(Nov 19, 2005)
Some friendly folks have been making suggestions and asking questions. I'm still in the mode of figuring out what to do and how to do it. For those who are interested ...
[ XProgramming ]
(Nov 17, 2005)
For some reason, I'm thinking -- at 2 AM -- about Extended Set Theory. An interesting topic, to me, even at this hour. But should I build something? I don't know; help me out.
[ XProgramming ]
(Nov 10, 2005)
It seems like every development project begins with the date, and we're held responsible for "making the date". Making the date is a management responsibility, not a development responsibility. Here's why.
(Oct 21, 2005)
Delivery of the running, tested, features the customer wants is the purpose of the development team. Sometimes the work we signed up for won't quite fit into the iteration. What should we do?
(Aug 6, 2005)
Chet and I got together at Borders in Brighton yesterday, and talked about teams going "off the road" and what a process should do to address this concern. We recorded the chat and have put it up as a sort of podcast. We hope you enjoy it, and request your help.
[ XProgramming ]
(Jul 29, 2005)
There's a recent thread on the Scrum list about how an executive or highly-placed manager could get Agile going. I've been one of those guys, and I know a bit about Agile, and here's how I'd proceed. First, focus management attention on cyclic delivery of running tested software. Second, provide the resources to learn how to do that.
(Feb 24, 2005)
Ron and I have been doing some Smalltalk lately. He has been writing about coding the bowling game as an exercise to help get our chops back, so I thought I should do something to help us catch up with the current state of Smalltalk development.
[ XProgramming ]
(Jan 16, 2005)
To really take an important role in practice, ideas need to get built into people's heads. Since most practitioners don't read much, they get most of their ideas from people they talk to, things they can read quickly, and most of all, from ... practice.
[ XProgramming ]
(Jan 15, 2005)
Our mission, should we choose to accept it, is to "spike" a map drawing program. We know nothing about maps or drawing, and very little about programming. How might we proceed?
[ XProgramming ]
(Jan 2, 2005)
Harald Mueller and I have been having a little mailing list debate about documentation. I've been taking the position that we want understanding, not documents. He's been saying that documents are one good way to get understanding. So far, we haven't gotten on the "same page" yet, but I trust that we will if we keep going. In the light of that conversation, though, here are some thoughts on documenting this little product we're working on.
[ XProgramming ]
(Dec 28, 2004)
These questions were recently asked on the XP group, in the context of a review of Mike Cohn's User Stories Applied. The answers are a function of the whole project, not just User Stories.
(Dec 27, 2004)
Based on a suggestion, I'm going to build the BowlingGame in yet another way: based on a Stream concept. This will be more fun for me than what I should be doing: I hope it's the same for you.
[ XProgramming ]
(Dec 25, 2004)
A famous author also refreshing his Smalltalk proposes a single method solution. Going where no man dares to tread, I'm going to try to refactor it into the style I consider to be "good". You decide.
[ XProgramming ]
(Dec 22, 2004)
Some discussion of style triggered by reader input. Then on to another "improvement", followed by discussion of whether it's an improvement, and why we did it.
[ XProgramming ]
(Dec 22, 2004)
I had this cool idea for another way for Bowling to work. I'm snowed in, so I tried it. The results were good ... and very thought-provoking.
[ XProgramming ]
(Dec 21, 2004)
Let's try some more incremental improvement to the objects. Meanwhile, some people think I'm taking bites that are too big. Let's think about that as well.
[ XProgramming ]
(Dec 20, 2004)
Let's reflect a bit on the Smalltalk bowling experiment so far. And then ... I've got an idea!
[ XProgramming ]
(Dec 19, 2004)
In the previous article, we made our first test run, and sketched a bit about how Smalltalk helps us. Let's make some more tests run.
[ XProgramming ]
(Dec 19, 2004)
After a long time away, I had occasion to start using Smalltalk again. To get my chops back, I started with the Bowling Game exercise. My experience quickly reminded me why Smalltalk rocks. (Updated: includes changes and remarks about "==" vs "=".)
[ XProgramming ]
(Oct 27, 2004)
To paraphrase Red Green, if the audience doesn't find you informative, they should at least find you entertaining. Chet and I addressed the XP West Michigan group recently, and here's an article from the Grand Rapids Business Journal that resulted.
[ XProgramming ]
(Oct 20, 2004)
It's time to revisit the topic of Big Visible Charts. Display important project information not in some formal way, not on the web, not in PowerPoint, but in charts on the wall that no one can miss. [Updated: Velocity Charts]
(Oct 4, 2004)
Brian Marick, in a blog entry that is quite interesting on its own, points to a very provocative article about group think, German philosophy, and the old Saturday Night Live gang. It got me thinking about Extreme Programming and the "Agile" methods. Have I mentioned passion lately?
[ XProgramming ]
(Oct 1, 2004)
I was wondering what would happen if I injected a Frame object into the bowling example, early on. What happened is that I got in a bit over my head. Come along and point and laugh.
[ XProgramming ]
(Sep 24, 2004)
It's important to take grammar seriously, even if she has been dead for years.
(Sep 21, 2004)
To every Card, turn turn turn, there is a season, turn turn turn, and a time for every Suit under heaven. It's not the Suits, it's the Game.
(Sep 19, 2004)
Programming can't be successful without design. But I begin my projects with very little design and seem never to do any. On the contrary, I'm designing all the time. That's what makes incremental delivery possible.
[ XProgramming ]
(Sep 19, 2004)
We need a test. We discuss why we work that way, then we write the test and make it run. In so doing, we learn something very important: maybe we don't want ArticleList to be a typed collection after all!
[ XProgramming ]
(Sep 17, 2004)
Inspired by an example from Jonathan Pierce, I typed in a walkthrough of the .NET CollectionBase, a base class used for building typed collections. Chet and I talked about it at Borders today, and it inspired us to look at the ArticleList in the blog software. We tweaked it to make it more like a typed collection, and it's definitely better.
[ XProgramming ]
(Sep 14, 2004)
In which we set out to drain the swamp, encounter some alligators, and quite possibly add a little water to the swamp in the process.
[ XProgramming ]
(Sep 7, 2004)
I've got a little time here, and there are those tests set to Ignore. Let's fix them so we don't have to ignore them.
[ XProgramming ]
(Sep 6, 2004)
Inch by inch, step by step, we work on improving the internals of the ArticleFiler. No master plan, no grand design. Just gently polishing until the object is visibly better. A good way to proceed? You decide.
[ XProgramming ]
(Sep 5, 2004)
When I'm programming, I work very incrementally, almost intentionally with no grand plan other than my stories. I pay attention to the design, but I'm not working toward a planned design. When the code starts pushing back, I make it better. This feels to me like a course of discovery rather than bringing about some carefully thought out transformation.
[ XProgramming ]
(Aug 23, 2004)
This book includes some really excellent examples of pair programming sessions with XP superstars such as Chet Hendrickson and Paul Friedman. Author Ron Jeffries has chosen some great partners. It's too bad they couldn't be with him more often. (New note inside review.)
[ XProgramming ]
(Jun 14, 2004)
Nearly every metric can be perverted, since up- and down-ticks in the metric can come from good or bad causes. Teams driven by metrics often game the metrics rather than deliver useful software. Ask the team to deliver and measure Running Tested Features, week in and week out, over the course of the entire project. Keeping this single metric looking good demands that a team become both agile and productive.
(Apr 12, 2004)
The irony of Extreme Programming is that while detractors continue to explain why it cannot work, software developers all over the world are having success with it.
[ XProgramming ]
(Jan 19, 2004)
Bill Bryson writes a delicious book that lives up to its title. The cosmos, the earth, atoms, geology, life, homo sapiens -- it's all here.
(Jan 15, 2004)
And thirdly, the Code is more what you'd call guidelines than actual rules. -- Captain Barbossa (Pirates of the Caribbean)
[ XProgramming ]
(Nov 20, 2003)
Object aficionados worldwide are concerned that the procedural bowling solution presented last time is just not robust enough. They want to see how we would make it score the frames incrementally. Frankly I haven't the slightest idea.
(Nov 18, 2003)
Here's the Bowling Game again. This time I'll take a simpler approach, along the lines I usually follow when I do a Test-Driven Development demonstration. The result is strikingly simpler than the preceding 'object-oriented' solution. What does this tell us about TDD and how to use it?
(Nov 17, 2003)
TDD on the Bowling Game (article lost and now found again)
(Sep 11, 2003)
I can put off anything except procrastination. When I make a "ToDo" list, a card is too small and they get all bent and dirty before everything is done. Wait! I'm an XP guy. I'm trying separate "ToDo Story Cards" to see what happens.
[ XProgramming ]
(Sep 10, 2003)
This isn't just one of those self-improvement books. It asks us to dig deeply into our own feelings about people and situations. Reading this with an open mind will ask some hard questions that need answers.
(Sep 5, 2003)
This book is painful to read for anyone who understands what XP is, because it goes to such pains not to understand, to take out of context, and to distort.
It is dangerous to read for anyone who does not understand what XP is, because it goes to such pains not to understand, to take out of context, and to distort.
(Sep 4, 2003)
Beta testing is a common final check on system content and accuracy. When feature or defect problems come back from beta testing, that's bad news, and we might have to freeze the code. Therefore, treat beta testing as "business as usual". Plan to have no problems come back.
[ XProgramming ]
(Aug 19, 2003)
Barry Boehm and Richard Turner have produced an important and balanced book about agile versus plan-driven methods. Unfortunate title, perhaps, and a few things to disagree with, but highly recommended.
(Jul 28, 2003)
With the best of will and effort, sometimes things still go wrong. When that happens, the way we deal with the problem can make the difference between an unhappy customer and one who is actually happier than he was before the problem happened. This letter tells about such a time.
[ XProgramming ]
(Jun 23, 2003)
The YAGNI principle says that we should not build any code that we do not currently need. But some parts of our systems benefit from being built from data rather than from code. Therefore if we follow YAGNI we could never build such code. But wait? What about the rules of simplicity?
(Jun 12, 2003)
I'm been struggling for years with notions like having empathy with our mistakes, Kerth's Prime Directive, and the like. Springing from a couple of notes on the extremeprogramming group, and a blog entry from Dale Emery, here's my latest rant.
[ XProgramming ]
(Apr 2, 2003)
Frank Gannon wrote this column for New Yorker, if I'm not mistaken, back in 1987. I think it deserves another run. I wrote a year ago for permission to publish, but so far cannot find the copyright owner. It's about flowers and gardens, so perhaps it's appropriate for this Valentine's Day.
(Frank found this page somehow and has kindly granted his permission to post the article, which appeared in Atlantic, not New Yorker. Thanks, Frank!)
(Nov 21, 2002)
The Logitech io Personal Digital Pen remembers what you write or draw and then uploads it to your computer when next you plug it in. It must be good for something. How does it work? The paper has coordinates built in!
[ XProgramming ]
(Oct 9, 2002)
Jeff, an experienced XP coach, takes a hard look at Pete McBreen's book, and finds it to contain good questions. He feels that the answers fall short -- perhaps due to Pete's inexperience with XP.
(Oct 8, 2002)
Wyatt provides a detailed, exciting, and valuable diary of a project moving towards Extreme Programming. Highly Recommended.
(Oct 1, 2002)
The authors show us how they use aspect-oriented programming in AspectJ to facilitate isolation of testable units, without hand-crafting Mock Objects or using a specialized Mock Object generation tool.
[ XProgramming ]
(Sep 5, 2002)
We're often afraid that if we don't do enough design up front, our program may bog down and become hard to maintain. This will cause expensive rework, or worse, project cancellation. Simple design with refactoring isn't rework. You may proceed without fear.
(Aug 22, 2002)
Some of the XP practices may be things we want to do all the time. Some we may wish to do only part of the time. When we are really skilled in use of a technique, we're best equipped to decide when to use it. Here are some exercises that may help build skill. And make up your own exercises. Let us know about how they work. Added: Planning Etudes.
(Aug 13, 2002)
Using a simple deck of cards, examine how Extreme Programming gives you a new and better way of managing software.
(Aug 2, 2002)
All too often, they change the priorities and our project gets cancelled, or put on "hold", before it's done. This is frustrating, demoralizing, and wasteful of resources. Ship it before they can stop you! This maximizes the value of your work, and reduces stomach acid, all at the same time.
(Aug 1, 2002)
When you're in a group that serves many customers, your backlog list tends to become infinitely long. You're not sure whether to report on things that aren't being done, or to pretend they are being done, or what. Don't keep a backlog list at all. The result could be greater clarity for your customers, and far less hassle for you.
(Jul 8, 2002)
I was recently invited to write a new introduction to the Korean edition of Extreme Programming Installed. What a rush! International fame and glory. Thanks to Ann and Chet for making it possible. Here's what I wrote
[ XProgramming ]
(Jun 29, 2002)
A recent discussion on the Extreme Programming mailing list addressed whether there is an "80-20" rule in software development. Let's take a look at some numbers.
[ XProgramming ]
(Jun 24, 2002)
Feedback helps a developer know he needs "something". No process will help us notice that mathematical proof is needed if we have never heard of mathematical proof. Some processes choose to list all possible techniques. XP does not.
[ XProgramming ]
(Jun 23, 2002)
SonicBlue (Rio) has built a device I've been wanting for years. It eats your CDs and plays them back digitally: 40gig worth of them! Here's an early review of my experience with this new toy. Update: It has a bit of XP in it!
[ XProgramming ]
(Apr 2, 2002)
I have no excuse for this material. It just came out of my pen. And Wyatt Sutherland's.
[ XProgramming ]
(Mar 25, 2002)
On the "Agile Testing" mailing list, Michael Bolton asked for an example of XP-style testing and programming. This example was the result. It represents about 90 minutes of work, counting two phone calls and doing the original writeup.
[ XProgramming ]
(Mar 20, 2002)
It is said that by meditating on the words and actions of the masters, we may be enlightened. Sometimes it's just entertaining.
(Feb 8, 2002)
If you are serious about your profession, if you are serious about teamwork, if you are serious about success, please read this book.
(Feb 5, 2002)
Updated to include our first review of Java Tools for eXtreme Programming. These books are all about agile software development, even those written before the term existed. They're all worth having and reading, more than once. Dig in!
(Feb 2, 2002)
Chet and Ron have been working with Ruby, because it's the nearest thing there is to Smalltalk. Here are the books we use.
(Jan 28, 2002)
Chet looks at some humor and some ancient architecture. We leave it to you to figure out which is which.
(Jan 28, 2002)
A detective in puce, mentoring, massive parallel processing, and two books on writing. What more could you want?
(Jan 25, 2002)
Sean Shubin has begun using Test-First development. He wanted to share these ideas and guidelines with us.
[ XProgramming ]
(Jan 21, 2002)
Maybe it's just the name: Extreme Programming. Maybe it's something we said. Whatever the cause, there are lots of misconceptions about XP. From time to time we'll try to correct some of them here.
(Jan 20, 2002)
Fear is good if there's a tiger in the room. Not so good if there's a bug in the software.
(Jan 20, 2002)
This is the first of a regular series of book reviews. We'll only review books we have read, and we'll call them the way we see them. This time we look at five books, ranging from XSLT to the world of Dream. Updated to add a sixth on time management
(Jan 20, 2002)
Bryan Dollery reports on an interesting conversation between Achilles and the Tortoise. This one is about design, or the lack of it, in XP. Thanks, Bryan
(Jan 20, 2002)
People work together to get what they want. One thing that everyone wants in one form or another is knowledge. How can we share knowledge about XP?
[ XProgramming ]
(Jan 16, 2002)
Ellen Ferlazzo, of Sprezzatura Systems, took my rant on documentation seriously. Ellen says that if you do it right, you can deliver the documentation at the same time as the software. I was willing to give the writers an extra iteration. Rock on, Ellen!
(Jan 1, 2002)
In this review, Extreme Programming Installed, Planning Extreme Programming, Extreme Programming Explained, The Humane Interface, and Adaptive Software Development.
(Nov 21, 2001)
"Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read." --Groucho Marx
Outside your extreme programming project, you will probably need documentation: by all means, write it. Inside your project, there is so much verbal communication that you may need very little else.Trust yourselves to know the difference.
(Nov 21, 2001)
Here's a bit of a rant I wrote some time back, talking about how to write the manuals for an XP project by using writers as part of the team. It's a serious proposal, written with tongue a bit in cheek.
(Oct 26, 2001)
One of the most common raps against XP isn't even true. People think we say that documentation is a bad idea. XP is focused on conversation for maximum effectiveness. Our recommendations on documentation follow from that simple fact.
[ XProgramming ]
(Oct 21, 2001)
Test everything; eliminate duplication; express all ideas; minimize entities:These few simple rules, applied locally, can help a high quality global design to emerge.
(Oct 8, 2001)
One of the most common failings of XP teams is insufficient testing. XP asks for more testing than many teams are used to. But what about projects that need reliability at a substantially higher level? Are they out of luck?
[ XProgramming ]
(Oct 7, 2001)
Kent Beck has described XP as designed to go with people's natural instincts. In this short series of articles, we'll take a look at how XP accomplishes goals without a need for lots of discipline or management pressure. In this article, the topic is documentation.
(Sep 30, 2001)
XP seems to be made up of a lot of practices. They might be good, but what's the bottom line for a business person? The acid test for XP isn't what the team does, but what they deliver. Here's what you should get from your XP team.
[ XProgramming ]
(Sep 29, 2001)
Pair programming might be useful between peers. But it seems like an inefficient use of a "senior" person's time to be tied down to a "junior" person. Experience shows that pairing almost always pays off for both parties. However, not all readers are convinced: how about you?
[ XProgramming ]
(Sep 5, 2001)
People ask whether they have to do the XP practices to be doing XP. In some environments, some of the practices are difficult or impossible. You don't have to do the practices to be doing XP: You have to have done them. Practice makes perfect.
[ XProgramming ]
(Aug 30, 2001)
The XP Circle of Life helps keep projects alive. A key aspect of this cycle is the Acceptance Test. Acceptance Tests are critical to communication among team members, especially between customer and programmer.
(Aug 21, 2001)
When unexpected defects arise, it can take a long time to isolate the problem. This can have large and unpredictable impact on the team's progress. Extreme teams release software frequently, keeping their unit tests at 100 percent. The result is smoother progress toward completion, fewer unhappy surprises, and continuing improvement in quality.
(Dec 13, 2000)
A pre-introduction to XP from the perspective of the average corporate developer.