It's Passover vacation now, and I prepared all my homework before the vacation, so I was free to follow my own whims the last few days. (and I still have until Sunday to return to studying).
However, Eran and I met on Tuesday and Wednesday to prepare the Computer Networks Experiment of EE-Lab 3. We managed to finish it, but when we wanted to start working on the "Analog VLSI" experiment, we realized we should have bought its booklet in advance. Since the counter is closed during the vacation, we could not buy it then, so we agreed that I'll simply return to Tel-Aviv.
As you see below, with the Logic Mazes Solver, I found out that I made a good use of my time during the vacation.
I released Freecell Solver 2.4.0, which a new stable release, that enables several scans to operate on the same states' collection. It required quite a large overhaul to the program's internals which was made easier by using Vim's powerful features. The last time I tried doing it, I believe I used MS DevStudio, and it was a much harder process that bit me in unexpected places. The code was also made more prepared for the overhaul that the last time.
Shortly afterwards, I released Freecell Solver 2.4.1, which fixed a bug there. I wonder if there'll ever be a time when I release Freecell Solver x.y.0 (where y is even) and never have to release Freecell Solver x.y.1, x.y.2, etc. So far, it has been the case only for 0.10.x and 1.2.x, and I'm not sure they are truly bug-free.
Logic Mazes Solver
I did say in the Rules of Open Source Programming that the numbers of items on a project's to-do list always grows or remains constant. Similarily, it seems that the number of projects a developer becomes involved in, always grown or remain constant.
My latest venture started when I remembered the Theseus and the Minotaur Puzzle (check No. 14) which somebody referenced me to. After several good tens of minutes, I was finally able to solve it. But then, I wondered whether a computer program can solve it equally as well, so I decided to write one.
I decided to write it in Perl, and convert it to C only if I see that it is too slow. Eventually, it turned out that it was actually feasible to solve those kind of puzzles using standard Game AI techniques, and that it was very fast even as a Perl program. I accidently searched for Theseus and the Minotaur and google and stumbled upon the Logic Mazes site and found there many puzzles of a similar vein. So I decided to write a generic API that can solve as many of them as possible.
What I did eventually, was adapt the Minotaur script to solve a different kind of Logic Maze called Alice mazes, then I made the alice script more modular and clean, and eventually created a Minotaur sub-class. Now everything is generic enough for solving many kinds of puzzles.
I eventually implemented support for Number Mazes, and also wrote a Breadth-First Search scan. It turns out that even BrFS can solve such puzzles in a good time, and I get the minimal solutions.
The ad-hoc site for the Logic Mazes Solver is here:
Getting a Central Source Control Repository
Source Control is highly addictive and for a good reason, because it is a life saver. While I don't use CVS for Freecell Solver or for FCFS RWLock (the latter being a little inactive lately), I do use it for my homework, and for the Technion projects, and I'd like to use it for Logic Mazes Solver. At the moment, I use two local CVS repositories, one at home and one at my Technion workstation. However, I would natuarlly prefer to have a central Internet-wide repository.
To make things a bit more complicated, I encountered several of CVS limitations so far, so I'm looking for something more versatile that will at least allow me file renames and copies, as well as better branch management. BitKeeper seems nice, but I noticed something about having to supply it with an SSH public key, which makes me wonder if I can login there from several accounts where I have diffferent public keys. I'll have to find out about it, beforehand.
Subversion also seems nice, but I'm not sure if it has a repository that is available for the public to use. (and registering a project on BitKeeper seems quite straightforward). For the while, I tried to register a project on GNU Savannah, but as usual with this site, they have given me some trouble. Registering a project on BerliOS (and I'm almost sure that on SourceForge too) was much more straightforward than what I encountered with Rindolf or LMS. The Savannah guys' Free Software purism seems to make it much harder for the poor developers who just want to use their service. But who is John Galt?