Hello, I’m back. I had to pause my work on KISS.lgo for a while, but now I am finishing the introductory coursebook so that I can immediately move on to the planned project books—which feature plenty of technology and mathematics—designed for the age group approaching career choices.
We call KISS.lgo a FMSLogo-Framework - may be a bit ambitious, but it sounds good. We tested it for nearly two years in two schools and have been supported in this by the state Northrhine-Westfalia and additionally by the Osthushenrich foundation.
The basis of what we do is still and will remain FMSLogo, and so w are very grateful for all that you, David, did and keep doing to keep it alive and stable.
Of course, we face stiff competition, as AI, agents, and the whole chaotic array of reactions to them are tied almost exclusively to Python. Meanwhile, a great deal is happening in the market of development systems—for instance, we are seeing significant strides made by Lua and the proliferation of courses on "agent prompting."
Nevertheless, we believe that Logo’s prospects in the field of education are actually quite promising.
Finally, I have a specific question. FMSLogo still supports GIF—a format that is seeing a resurgence in popularity now that the patents have expired. I am therefore considering whether it could be used for GIF animations. The documentation provides an example of how to create a GIF animation in FMSLogo. I saw an impressive GIF-animation in a Logo-Wiki, where a circle is rolling around the periphery of another circle of the same size, drawing a cycloid curve - made by some Logo. The documentation says, that the animation made by FMSLogo can be shown in any browser. Is there a way to show it also in FMSLogo itself? And could another GIF-animation (with 256-color-palette) be shown in FMSLogo?
Manfred asks:
There is no direct support to show an animated GIF in FMSLogo. However, as of FMSLogo 8.0.0, FMSLogo supports reading all byte values in binary files such as a GIF. And since Logo is a programming language, someone could implement a Logo procedure that reads an animated GIF and renders each frame using SETTIMER. Who knows? Perhaps AI has come far enough to port one of the many open-source implementations of GIF readers in other languages into Logo.
Manfred asks:
Setting aside the question of animation, the 256 color limitation is of the GIF format, not of FMSLogo. You can load multiples GIFs with different palettes onto the same FMSLogo drawing surface without any color loss. The pixels are mapped to true color before being rendered.
Thank you! This sounds as if Kiss.lgo could decode a given GIF-animation file produced elsewhere by using the bytewise representation of it following the definition. The palette of the GIF would have to be embedded in FMSLogo full color format. That seems to be auchievable. My only problem would be that there could be flickering, when the images change. You made the proposal to use BITBLOCK just for the size of the image. GIF animations, though very old, are still popular and rather easy to produce as a series of images to be repeated. It's just like a visual jokle. As I programmed so many things for the KISS libraries, all in pure FMSLogo, this one should enter my list. For the moment, there are other priorities, but I'll keep it in mind. Do you have any idea, where I can find the actually valid definition of the GIF animation structure? By the way, you are right concerniong AI - my simple chatbot Opera AI (not Open AI) is now much better in writing programs in FMSLogo like proposals or snippets. It still is not perfect, nut sometimes it helps.
There are commands to take the frames apart.
FMSLOGO can certainly call those commands using SHELL. Here is one:
https://github.com/kohler/gifsicle
https://www.lcdf.org/gifsicle/
Then, once a folder contains those gif frame files. GIFLOAD can load them on a timer.
Last edit: DanielAjoy 1 day ago
Manfred asks
I don't know, but Wikipedia says is authoritative: https://www.w3.org/Graphics/GIF/spec-gif89a.txt
Wikipedia also says that the animation is enabled with the Graphic Control Extension.
I have never written something to read or write a GIF file, so I know little about the format. However, if I were doing it, I'd ask the AI to extract the embedded images of the GIF, writing each frame of animation to a separate GIF file. Then I'd use GIFLOAD to load it. That will load the frame of animation in a single Logo instruction, which should avoid flicker. I'd use a SETTIMER callback to run GIFLOAD so that it runs according to the frame rate.
So the to-be-written procedure would be input a file name of a GIF, unpack frames from the Graphics Control Extension into separate files in the temp directory, and output a list of file names.