Older blog entries for shlomif (starting at number 173)

Windows Bound

My Linux hard disk is causing more and more problems. So I found myself working more with Windows. I installed Cygwin on the desktop computer's Win98 system, but then the CPAN installation of Perl's LWP caused the computer to hang (twice). So I installed it on our Windows XP system, where everything went flawlessly. XP has the option of hiding all the taskbar icons, but I could not find a way to resize the taskbar to make it two rows high. Apparently, it crashes less often than Win98.

Version Control Comparison

I started writing a file in XML format that contained a comparison of several version control systems: CVS, Aegis, Arch, BitKeeper and Subversion. Then I wrote a perl script to translate it to HTML. My main problem in working on it was that my laptop's mouse-pad that was in the way of my hands to the keyboard, caused the cursor to jump. Then, I switched to working on Linux on the desktop computer where it was a better environment.

My code had some problems after I got it to run, but I solved it. I'm using XML::LibXML, perl's interface to libxml, which provides a great API for analyzing XML documents. It's much better than the tedious work involved in working with XML::Parser.

I then set out to write a DTD for the XML format I defined. I encountered two problems. The first was that I had several isomorphic tags and I had to write an identicla element definition for each one and enumerate them inside their container tag. I solved it by generating the DTD by another perl script.

The next problem I encountered was that I wanted the container to contain each at most one of each of the elements in any order. The good people at EF-Net's #perl channel helped me, and it turned out that it was not possible. So I settled for zero or one occurences of any of the tags. (it's the closest thing supported by the DTD definition).

In any case, I notified the Subversion mailing list and afterwards the Arch mailing list about the comparison and received a lot of useful input and corrections. It's great to know there are so many enthusiastic people out there.

"Objectivism and Open Source" Essay

Based on some input from people I sent a notification about the essay to, and some ideas of my own, I updated and revised "Objectivism and Open Source". Thanks to everybody who contributed input!


The bicycle turned out to be fine after all (after we filled a lot of air in the back wheel), so I went out biking the past few days. Yesterday, when I biked and stopped at the Yarkon Park to drink, I noticed some rabbits on a nearby patch of grass. There were two kids nearby who were trying to chase them. I approached them and asked them if the rabbits were theirs. They said yes and told me they ran away and that they tried to catch them.

I helped them in our attempts to catch the rabbits (an older, bigger one who was the father of the smaller one), but we were not successful. When I left, ten minutes later, the rabbits were still on the loose. One anecdote was that the son has escaped to a closed container, so I tried to scare him away by throwing things at him. One date which I threw at him was eventually eaten by him... ;-)

Bug in uniq on my system

shlomi:~# cat uniq-test.txt
shlomi:~# /usr/bin/uniq < uniq-test.txt

A bug isn't it? My system is Mandrake 9.1, and neither the uniq from RedHat 6.2 nor the latest from the GNU diffutils exhibits this problem. It broke one of my scripts and so I installed the latest uniq to my $HOME/bin directory.

Objectivism and Open Source Essay

I wrote an essay titled "Objectivism and Open Source" today. It aims to explain to Objectivists why open source is a Good Thing<tm>. Read and flame away!

Subversion Issue #854 Revisited

Apparently, I did not notice some comments in the issue in the Subversion bug-tracker, that said that the behaviour has changed, but still was not as expected. So, the bug was re-opened and I created a new fix, that checks if "svn revert ." is done on a newly added directory and throws an error if it does. Quite a trivial fix, but I also wrote a regression test to make sure this is what happens.

It was eventually applied with small fixes. One less bug before Subversion 1.0.

Larry McVoy Interview

I went to the BitKeeper homepage today to recall the name of the push command, and saw on its front page that Linux World conducted an interview with Larry McVoy. This was partially in response to a previous interview with Bruce Perens. I wonder how I could have missed it.

I searched the Perens interview for BitKeeper and read this part. Basically, Perens accuses McVoy of threatening him every time he meets him. McVoy denies these accusations in his interview. It's one's word against the other. I do know Larry McVoy has threatened several other people with ligitation online. And he does seem to me to be quite hot-headed. So I tend to believe Perens.

This all brings me back to my conclusion that reverting the BitKeeper license would be a good idea.. The reason the source code was hidden in the first place, was because some companies modified it to subvert BitKeeper and disable the OpenLogging facility. This is all very well, but I doubt a substantial number of them would have become paying customers.

With its current licensing scheme, BitKeeper would never become the state of the art. Never. While it is technically superior to any free software alternative (at least for now), hardly anyone dares touch it with a ten-foot pole because of its license. If its licensing change to something much saner, and its source code be revealed, it could, OTOH, eventually conquer the market and be distributed as part of major distributions. I don't know why McVoy does not realize that, but it is mainly his loss.

Vipe is back online

Vipe returned online this morning. After logging in, I discovered that some of my mail folders had bootloads of messages which I had to delete, and that the mail bounces caused the Mailman-based mailing lists to make me in "no mail" mode. So I had to cover them and change it back.

In any case, without vipe I felt that I was missing a rib, and am very happy that it's back online.

Getting MikMod to Play using Artsd

I wrestled a bit trying to find a solution to get the command line mikmod player to play using Artsd. I believed this was the case in Knoppix, but then discovered it plays there using OSS. After contemplating coding a libmikmod driver for Arts, I found an easier hackish solution:

artsdsp /usr/bin/mikmod -d 2

Smile! You're on camera!


I advanced a little in the Hebrew translation of ESR's "Homesteading the Noosphere". Other than that, after vipe returned, I've been looking at Subversion Issue 854. The instructions there for reproducing the bug worked flawlessly on my computer. So I closed the bug, and sent in a patch for a regression test.


I read a chapter or two from "The House of Arden". I also covered some chapters from "Apache: the Definitive Guide". Some of the later chapters were interesting but as a whole the book is quite disappointing.

Finally, I finished "The Art of Unix Programming". Now I'm looking for something else to read online.

Linux Events

On Friday there was the conference and installation party. I spent most of the time installing RedHat on a few computers. One installation was done through VMWare which gave some problems in installing the xpdf RPM. Other than that, a guy I tried to install a system for him, brought his computer there and we again failed to install it. Then he drove back home and brought his new computer, on which the installation went fine. (he also drove me back home).

Then there was a raffle, which I did not took part in and so did not earn anything, but it was fun to watch, especially as one name (of someone who wasn't there) came up three times.

On Sunday, I went to the Hertzlia Inter-Discplinary Center to hear a lecture about Mono (the open-source .NET implementation), and also was able to give a lecture about The Cathedral and the Bazaar series. We were about 10 people there.

Finally, on Monday, there was a coordination meeting for the Haifa Linux Club Welcome to Linux series, which I volunteered to be responsible for some of the tasks there. They rejected my suggestion to make a shorter "Linux in Action" series, claiming that the first lecture was about that already. I still think the W2L as it is, wastes too much of our time, while giving very little in return to the beginners.


This and that. I worked on implementing the Patsolve logic into Freecell Solver. It is working now, but does not give as good results as Patsolve has. I'll have to analyze the results to see if there's a bug.

I also worked on Devel::LineTrace - a Perl module to assign callbacks to lines in the code without modifying it. (for debugging purposes, like adding prints).

I also went over the CatB lecture and fixed typos. There were quite a few of them and two of which (one which I forgot) crept up during the lecture. :-)

Vipe is Disconnected

vipe.technion.ac.il is disconnected because it's lying in the Technion's dormitories network which was entirely disconnected to facilitate dealing with the worms attack. This means part of my homepage and the Haifa Linux Club homepage and mailing lists are inaccessible, and I cannot read my primary E-mail account. The Technion staff is now on vacation so it's not going to be fixed until Sunday.


I read a lot from "The Art of Unix Programming", as well as some chapters out of "The House of Arden". I also advanced a little in "Apache : The Definitive Guide". The latter seems a bit boring and technical to me, and I'm not entirely sure I need this information.

Haifux Meeting and Birthday Party

On Monday, I went to hear a Haifa Linux Club lecture about Real Time and Embedded in Linux given by Iftach Hyams. The lecture was very nice and there were many bursts of laugh throughout it. Afterwards, we went to a restaurant to celebrate Haifux' 4th birthday (which was incidentally ladypine's birthday as well)

Ori Idan (who drove me back to Hertzliya the last meeting) gave Meir Maor and me a ride to the restaurant. (the arrangement was that Ori had a car, Meir knew how to get there, and I neither). We arrived there, and I sat at one end of the table next to Ori and Jess. The food was good, and Jess told a lot of jokes throughout the dinner.

sun gave Jess, some other guy and me a ride home. The first part of the ride was full of jokes, but the second one held a serious discussion of Intellectual Property and whether "all software should be free".

I arrived at home at 1 A.M. and went to bed even later, but had a fun day.

Warcraft III

I finally discovered how I can finish a level I was stuck in. My problem was that the gameplay was fast, and when I switched it to slow it was doable. I did not finish it yet, but I'm getting there.

Movie: Pirates of the Carribean

I went to see the movie "Pirates of the Carribean: Curse of the Black Pearl" yesterday, along with my father and my sister. The movie was very entertaining and Action-paced. Highly recommended.


I worked on integrating Freecell Solver with Python using the Python bindings I wrote. It was quite straightforward as a basis for it was in the code and all I needed to do was adapt it to my new interface. The Python debugger was a lot of help in tracking some crashes. Now I have it working for most Freecell variants.

Upcoming Open Source Events

There's an installation party and conference tomorrow at John Bryce College in Tel Aviv which I'm going to attend as an installer. Afterwards, on Sunday, there's a lecture about Mono at the Inter-Disciplinary Center in Hertzliya. If there's time, I'll also give part of my lecture about CatB.


I read several chapters out of "Apache: The Definitive Guide", and chapter 3 of "The House of Arden". I also covered "Homesteading the Noosphere" in preparation of the lecture on Sunday.

Perl Meeting

Here's a report I wrote on the latest Israeli Perl Mongers, that took place on Thursday. My father drove me to the meeting, and at first I bought some Burekas in the nearby bakery. Then was the meeting. After the meeting Ronen Kfir drove me and Kfir Lavy home. Kfir and I chatted for a long time and ate supper at McDonalds. We discussed Linux and touched on many topics, including my projects.

Python Bindings

I've been toying up with the idea of integrating Freecell Solver into PySol. Since Freecell Solver is written in C, and PySol is a Python program, I had to create bindings for it. At first I started using SWIG. This created very C'ish APIs without much trace of a native language behaviour. Then I realized it does not handle arrays well. So I set out to write Python in the native bindings language. I consulted the Python tutorial, the Python extensions writing manual, and the people at the #python channel on FreeNode and eventually got things to work nicely enough.

I'm still a bit worried about memory leaks, but I suppose that Valgrind will help me detect if they exist.

Subversion Issue #1473

To further test my Repos->WC file copy code, I wrote a test that set up the svn:keywords property on the source file and then copied it. The result was nothing less than a segfault. So I filed an issue about it. The problem is that the translation is done without an entry existing in the .svn/entries file.

Ben Collins-Sussman and I discussed the best way to resolve it on IRC. Our conclusion was that we should probably create another post-process routine that will do the translation after the entry is created (which is already the case, just that the translation is done beforehand). However, Ben thought it was inelegant and so he wanted to consult the list.


I made some progress with "The Art of UNIX Programming". I also took the book "Apache : The Definitive Guide" from the Perl Mongers book pool and started reading it. I reached the beginning of the chapter on authentication.


Two days ago, when I biked, I noticed 1/3 of the way that a lot of air went out from the back wheel. So, I returned. I don't know what causes it, but I'll have to investigate, because I can't bike otherwise.


This and that. I've organized my Subversion patches directory to exclude patches that were already applied. That way, the other maintainers can best know what needs to be applied. I've been looking for other Subversion issues to work on, and found some candidates, but so far did not find the time to work on it.

I also made progress in translating "Homesteading the Noosphere". A couple of people contacted me with corrections to it, and I'm grateful for them. Then, I made the data for my version of the Haifux lectures manager up-to-date with recent lectures.

Finally I edited the Wikipedia entry of Freecell to make it less lame and more accurate than it was. I actually woke up in the morning thinking about Wikipedia and whether it mentions Freecell, checked it a bit afterwards, and in the evening changed it. ;-)


I read part of the book about Statistical Physics and Thermodynamics I have (I'm studying Thermo next semester). I also read the first two chapters of "The House of Arden", after being reluctant to read it for a while.

Free Software "Monopolies"

jlouis, I don't really see free software "monopolies" as a bad thing. It takes a lot of time and effort to create quality software, and so it make sense one or a few packages will rise above the rest, and concentrate most of the effort around them. If we take gcc, for example, then everybody use it because it's a great and trustworthy compiler.

I don't see much point in switching to using anything else, just to make an anti-monopolistic point. If gcc works, I am sticking with it. If something better ever comes along, I might switch, but there isn't anything better now. If you ask me, you'd better hack on gcc and make it an even better compiler than it is now, then try to make a half-decent competition.


Certified jlouis as Apprentice because of the above and other stuff I found on his homepage.

10 Aug 2003 (updated 10 Aug 2003 at 11:34 UTC) »


It turned out my updated patch was not acting according to the Subversion conventions. What I did wrong was not create temporary files, and not use the run log mechanism to perform the operations that could be performed with it. So, I sat on it on Friday, and wrote an updated patch (revision 5). This was applied, and so I'm happy.

Today I took some time to prune my patches archive from patches that were already applied.

Haifa Apartment

I met with the Apartment owners and one of my apartment-mates on Friday to settle the payments for the apartment. There was a bit of a fuss between my dad and the owner, about a payment for replacing a lock that was done a year earlier. But other than that it went fine.

On the way back, I ate lunch at the MacDonald in the Yoqne'am Mall.

Other Hacktivity

I worked and reviewed the lectures I wrote a bit. I've started adding missing slides to the Gimp lecture I prepared, and hopefully, I'll put the full lecture online soon. I also started working on translating Homesteading the Noosphere by esr into Hebrew. If you don't know what it is, it's the second chapter in the Cathedral and the Bazaar series, that analyzes the customs of the hacker culture.

The Hebrew Translation is progressing quite nicely. (seemingly better than I remembered from "the Cathedral and the Bazaar"). Other than that, it seems that I'm not entirely happy with the current translation of the Cathedral and the Bazaar to Hebrew, so I'll probably resume working on it sometime. This time, however, I can start from the existing text, and revise it.

Hard-Disk Problems Revisited

A few days ago, I got the same faulty noises when booting the hard disk. A reboot did not help, but after I started Knoppix and mounted it, everything was fine. Today, the same noises also happened, but this time the system could load. Hmmm... I think I'll try to buy a new hard disk as soon as I can.


Certified ask to Master for his work on maintaining the Perl online infra-structure. I did not realize he had an Advogato profile until now. Also certified pudge as a Journeyer for his work on Slash and maintaining use.perl.org. Finally, certified Simon (Cozens) to Journeyer for his contributions to Perl, and writing "Beginning Perl". Maybe I'll certify them to Master someday, but I need to be more familiar with their work.


I finished preparing a lecture about LM-Solve. Then I worked on Subversion, and formed an updated patch to Issue #1297. This took a really long time (almost an entire day), but I'm really happy that it's complete now. The fix had a small bug-let which was easy to fix by adding a few lines.


I sort of finished reading "Games, Diversions and Perl Culture", and reached to the middle of "The Art of Unix Programming"'s chapter about Mini-languages. TAOUP is a very interesting and entertaining book as is the usual tradition with esr's writings.

Perl Meetings

Gabor Szabo, who is the Israeli Perl Mongers leader is abroad, and as it turned out Shlomo Yona, who was appointed to organize the meeting instead is busy moving to a new apartment. Thus, I took the lead and decided on how to resolve the date, place, etc. issues for the next meeting.

Translucent Cursor

I wanted a Knoppix-like translucent cursor for my X-Windows. So, I asked around the IRC. Someone told me a similar effect exists in the cursor_themes package found in the Mandrake Cooker. Looking there, I found it. The cursor is darker than the Knoppix one, but still is nice in a way. The package has other interesting themes, which I may try out.

2 Aug 2003 (updated 2 Aug 2003 at 10:47 UTC) »

August Penguin II

I attended the August Penguin II event yesterday. It was very nice and I met many people I knew there. At first Shachar Shemesh gave an instructive presentation about the Linux activities in Israel the past year. Then, there was a lecture about MOSIX by one of its Hebrew University workers. It was very nice as well. Afterwards, moshez gave a lecture about PyPy, instead of the Python internals lecture that appeared in the agenda. Moshe is a very entertaining lecturer and the lecture went very well.

Then came the geek trivia, which pitted two groups of three "geeks" and "nerds" against each other. It was very fun. And finally, came the key signing party , which I took part in and signed the keys of 20 people or so.

There were a few glitches there, as far as I was concerned. First of all, I discovered the building did not have any coolers and I had to drink water from the taps of the restroom. Then, it was too cold in the lecture hall, and I had to leave once or twice to regain my senses. Finally, my ride back to home, disappeared during the key-signing party, which caused me to have to take the bus again. But all in all, they did not spoil the fun.

After the event was over, I went back home, ate, and went to sign everybody's key. It turned out some of the key could not be checked out of the servers I tried. (read the thread for more information). However, it turned out mulix who organized the key signing party, prepared a keyring with all the keys, and was about to send it to everyone for signing. Thus, I was able to sign the rest of the keys.

Freecell Solver

I discovered a game of Simple Simon that could be solved by hand, but not by Freecell Solver (which gave up after checking only the initial state). So I set out to discover why. Apparently there was a function there which was responsible for performing the initial move, only it had a bug. I only had to remove one = from an <= operator and the bug was fixed and the game was solvable. Hah!


I finished a large part (most?) of "Games, Diversions and Perl Culture : Best of the Perl Journal". I also read the Freshmeat GUI Toolkits feature and started reading ESR's "The Art of Unix Programming" which is very interesting so far.


I wrote a couple of tests for my Issue #1297 patch, and indeed the unpatched Subversion failed them both. However, I was told the patch is not correct because it does not handle some working copy parameters correctly.


After releasing version 0.8.0 I discovered a bug and released version 0.8.1. Now I think I did not document the Hexagonal Planks ID in the man page of the executable so I'll need to release 0.8.2... :-). In any case, I also revamped the LM-Solve homepage and now maintain it separately from my homepage.

Finally, I announced LM-Solve on Freshmeat.


I finally got permission to edit the Perl "FAQs, Help and Tutorials" category on dmoz.org. I created a tutorials sub-category and will move all the tutorials there. I might create other sub-categories there if I feel the main one becomes too crowded. Let me know if there's anything you'd like to see there.


I prepared a lecture about my solution to the Graham Function Perl Quiz of the Week. This time I used PerlPoint, which enabled me to quickly translate the summary into the lecture itself. Here's a discussion of it on Hackers-IL.

I also prepared a summary (but not the slides themselves) for a lecture about LM-Solve. Both are intended for the next Israeli Perl Mongers meeting.

164 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!