After reading It felt like clown sparkles, I had an interesting idea for a programming-by-example project.
What if you had two toy cars, one sort of cognitively "yoked" to the other. Not directly, but in such a way that if one of the cars started moving intelligently, the other would move with the same intelligence. The idea would be that kids could play with one car, and the other would reflect what they were doing, and keep doing it.
Some examples might be:
Etc, etc. The idea being, it would be a neat space to explore how programming by example might work, and whether kids could figure it out and use it to do interesting things. The question is, given something like this, can people figure out how to use it productively--to do things that they wouldn't want to do on their own.
The trouble with this, I suppose, is the trouble with PBE in general: how do you really know what the intelligence behind an example is? With other kinds of programming, you can say {Object A} {follows} {Object B} and it's well defined what Object A is, what Object B is, and what it means for one to follow the other. With PBE, by contrast, you probably know what Object A is, but you have to guess that maybe you're following, and maybe it's Object B that you're following. But maybe you're actually following noises, and object B just happens to be making noise. Or maybe you're not following at all, you just taking a path that Object B happened to be on.
I am thinking you could have several robots with different functions: A dump truck, backhoe , crane, etc. For this setup, however, it seems like a major need would be a "wait" function. So say you have a dump truck and a backhoe. You drive them both over to the pile of blocks, and the big ones drive over too. You then take the backhoe, have it pick up a block and put it in the dump truck, and the big backhoe starts doing that. When the big dump truck is full, you take the little dump truck and drive somewhere else. But the big backhoe starts trying to follow the big dump truck wiht a block! So you have to stop the big backhoe. Then, once you've driven the little dump truck over to the other location and back, the big dump truck starts driving back and forth without waiting for the backhoe to fill it. So you have to stop the big dump truck until the backhoe fills it a second time, and then teach it that NOW is the time to go. Perhaps the way to do this is just to physically stop the trucks. I don't know.
While typing that, I starting thinking in my head that you would just be moving the robots directly (not have this yoking thing happening) and I corrected myself, but maybe you can just manipulate them directly. That's what Heise seemed to do.
One other thing you could do is that if you accidentally stop the robot, you can just nudge the robot to get it going again.
I talked to Niamh on the phone. I told her that there are like four research projects that this project depends on. She suggested doing one of those, and just mentioning this one as a future step. I told her I wasn't really interested in any of these "cousin" projects. So she asked if there was any way I could do this one. And I said, maybe... if I remove the robotics component. I could do it entirely in the computer, with some sort of 3d (or isometric) view of a space. I guess that would be a lot easier, if less exciting.
I wonder if I could do that with Blender? I should run through these tutorials and see where that puts me.
I just realized: Lemmings is a kind of novice programming. That's sort of the feel I am going for here.