Older blog entries for shlomif (starting at number 227)

In Memory

I'd like to tell the story of my personal encounter with a soldier who lost his life in battle. At first, though, a note is in order for International readers: terrorism in Israel is not as severe as people are led to believe. Most households are completely unaffected by it, the streets are perfectly safe, most people don't carry weapons, and more people get killed due to car accidents than terrorist acts. While Israel is far from being as peaceful as Switzerland, for example, it is nonetheless pretty safe to be here.

At high school, I became friends with a kid who studied in my class. He was very fun, very intelligent, and had a great sense of humour. I really liked him. He wasn't one of my two best friends who were from my class, and my two secondary friends whom I knew from Elementary school, but he was a good friend nonetheless.

It was in our Junior year, when his brother (whom I did not know) who has served in the Army at the time as a Battlefield Medic died in battle. It was an encounter with the Hizbullah in Southern Lebanon. We heard about the upcoming funeral by word of mouth, and I was able to attend as well as many people of my class. (Jewish funerals must be conducted as close as possible to the time of death). I recall that I forgot to bring a Kipa (a traditional Jewish ceremonial hat), and had to borrow one from my aunt's friend. I don't recall too much from the ceremony except for people saying Amen or Qadesh several times.

My friends and I went to visit this kid a few days later, when his family was hosting friends and relatives for the "Shiva'a" - the traditional Jewish week for comemorating the dead. We chatted a bit. He was dealing in his geneoulogy at the time, and having given him a freeware geneology program for DOS to facilitate it. I asked him how it went, and he answered that he had problems because many of the records were in German. When he left the room my friends scolded me for doing that, because they thought it was inappropriate at a time when a family member died. I did not thought so at the time, and retrospectively don't think it was inappropriate today as well.

Afterwards, I felt a change in him. He became more cynical, and used to insult me in public (not too much or too hard). He was still very fun, but I definitely felt a change.

As a result, I started having bad sentiments and thoughts about the Hizbullah. At one time I said to myself "I hate the Hizbullah." (I don't think rationally feeling hatred is bad, and still hate them.). I had less emotional baggage towards the Palestinian organizations. I considered the Hizbullah the second worst "Liberation organization" I knew of after the IRA. Don't get me wrong, some liberation organizations were very noble. Prime examples are the Maquis and the Haganah (except for a brief period in which they performed Terrorist acts) were very noble. But the Hizbullah, the IRA, and many other organizations some of which are still highly reverred, and most others entirely forgottten are anything but.

Eventually, I decided I'd like to write a story about the Hizbullah. I had an idea for a story about a Hizbullah soldier (or was it a friend of a soldier) who had stayed in his village, right before his troop (or is it platoon) went to battle, when he knew most of them would never survived. The kind of stuff, many completely uninteresting movies in Holywood or the Hallmark channel are made of.

My real inspiration came later on from two things. First I read Neo-Tech and was heavily inspired by it. Among the many things of inspirations were:

  • A specific mention that the Ends never justify the means. This in turn made me think that "The Ends Justify the Means" actually mean "Ethics = No Ethics".
  • I encountered a piece of Aristotle's Organum:

    1. A is A.
    2. A is not not-A.
    3. All entities are either A or not-A.
  • Together with "Ethics = No Ethics" I had a winning formula.

The other source of inspiration was reading The Bastard Operator from Hell, a delicious story about a UNIX system administrator who re-defines the term "User Friendly". ("'What's your username, again?' click-click-clickety-click").

I came up with the idea for The Enemy and How I Helped to Fight it during a trip to England. I became so obsessed with the story during the last days of the trip that I could hardly function. During our return home I fired up MS WordPad and started writing the first draft. It was relatively short, and as I showed it to my best friend, he said that it was OK but not too funny. He was right.

It took me six months to rewrite it. I started by writing the first chapter (on Paper), and went to my friend's house and read it to his brother and him. They liked it as a whole and gave some useful commentary. I transcribed the story into the computer refactoring it as I went along and continued it. I printed excerpts to my friend, but he was too busy with his army service to read it till its end. My co-worker, once he heard I was writing a story, insisted on me sending it to him to read. I send it to him and his commentary was essential for shaping the final story.

I received mostly good critiques of it since.

I'll give a teaser which covers only the first chapter, out of 10. One day the Member of the Organization wakes up and goes to the base. It's a lovely spring day, the flowers are blooming and there is a lot of wildlife on the way. He thinks it would have been a perfect day to fire missiles on the Enemy's soldiers, but he has different plans.

After having a chat with some of his co-soldiers who are outside, telling them he plans to quit, he goes to his commander and tells him he's quitting. His commander is sorry to hear he's living, saying the Other Member of the Organization is also quitting today ("When it rains it pours") and wishes the now ex-Member of the Organization, good luck in his future whereabouts and that he would maintain the spirit of the organization and its philosophy.

The ex-Member (sorry for the bad connotation) is about to leave, when he comes back and says that he has served the organization for several years now and yet no-one has told him what its philosophy was. So the commander explains it to him. The objective of the organization is to fight the Enemy (a country to the south of the country in which the Organization operates) with all of its might. However, there's one thing that hinders their actions. It's not even real, but a meta-physical term, that accepting most interpretations of it would have caused them to be unable to operate. This term is "Morality". As a result, they have decided to accept the Philosophical Equation "Morality = No Morality.". However, since it contradict Aristotle's Organum (see above), they decide to reject the Organum or at least don't see it as necessary true.

The ex-Member tells him that in this case, it is a good thing. He too has read the Organum and had his doubts about it, but thinks that rejecting it opens a possiblity for the members of the Organization. If A can be not-A and since the Members of the Organization are not the Enemy's soldiers it is evident that they are its soldiers (!!!). This makes there task more easy: they can kill each other, and all of the casulaties are of the bad guys.

The Commander thinks it's a brilliant idea. He thanks the ex-Member of the Organization and tells him he'll implement his decision right away. The ex-Member tells him he's glad he did. He says goodbye to his commrades, finds the other member who quit that day, and they walk back to the village.

As they finish climbing a hill that overlooks the base, they hear sounds from its direction. They see the members of the base killing each other. Eventually one last member remains on the roof victorious. The commander exits from the remains of the base and shoots him. He then enters and writes a memo about it to the Organization's upper level, files it in the base's post-office box, and then shoots himself to death.

The two ex-Members shrug their shoudlers and continue on their way back to the village.

Like I said, it is only the first chapter. There are nine more. The story is available in English Hebrew Word-Generated-HTML (sorry, but it seems to be readable on every browser I tried). The Hebrew is quite high, and I (who is not a native English speaker) did the translation. I translated some words using a dictionary and when reading the translation could not understand them. (I know it's lame). I'd like to write a fourth draft in which I simplify the langauge of the story, but I did not get to it.

An Iranian correspondant (who now relocated to Canada), has read and enjoyed the story, and said he would try working on a translation to Farsi. The story's copyright does not say so explicitly (I have not updated the page yet) but it is licensed under the Creative Commons Attribution Share-Alike license version 2.0 or at your option any greater version.

If you like it, please circulate this blog entry or link to it. Remember Death.

Memorial Day

I have a great entry for Memorial Day, but I have to post it later, because I need to really think about it and make sure that it's in the right spirit. If I know you well enough and trust you enough, I can send it to you by E-mail privately. E-mail me or post a comment on LiveJournal (with your E-mail) and I'll see what I can do.

New Signature

All hail my new signature. It's based on something I thought about and then said in FreeNode's #perl channel, with a later edition, which makes it much more funny. Here goes:

"Tcl is LISP on drugs. Using Strings instead of S-Expressions for Closures is Evil with one of those gigantic E's which you can find in the beginning of Paragraphs."

Which Masses is Linux Ready For?

There's an interesting thread in Linux-IL about which of three masses of users (The "Aunt Tillie"'s, the Power Users and the Gurus) is Linux ready for. You can find some "WinXP eats Linux alive" E-mails which were eventually reasoned against properly. A very good and informative thread with many interesting anecdotes and real-life stories.

Ehud Manor - 1941 - 2005

Ehud Manor, a famous Israeli song writer passed away some weeks ago. He wrote many famous Israeli songs, and as a tribute to him, some of the radio channels played his songs non-stop. I discovered some songs I really like are by him. He will be missed.

Account on freehackers.org

I helped a freehackers.org sys-admin resolve an obscure Apache+Perl+UNIX permissions problem, and as a gratitude he gave me an account on the machine. I knew of freehackers.org before as the developers of KVim, the Vim KDE-based interface. (now superceded by Yzis). So far, I customized the account to my liking, and also installed (with permission by the admins), an instance of infobot.org which I called Pninith (after the Hebrew word for "Pearly") and who hangs around some Freenode channels. I also set up demos of SVN-RaWeb-Light there. I'm really glad I got this account.

libcurl and file uploads

According to this article on LinuxDevCenter.com libcurl is capable of uploading files using FTP. I previously thought it could only download FTP files. This is a very good revelation and can also scratch an itch of Joel Spolsky where he was looking for a library that can do FTP uploads.


I had my 28th birthday on May 5, but it coincided with the Holocaust Memorial Dad. My sister's birthday is coming on May 30.

Latemp - A CMS for Static HTML Sites

Latemp is a new Content Management System I created for static HTML files using WML files. You can find more information about it in its about page as well as this announcement on my use.perl.org blog and its Freshmeat record.

I decided to use SCons as an installer, out of the constant frustration of having used the GNU Autotools for previous projects. So far, the experience has been a relatively pleasant one, with the various problems easily resolved, and a working installer. Someone reported problems getting the installatioin process to work properly, some of which I resolved by now, but otherwise I'm very happy with it.

I'm thinking of trying to switch to CONS (the spiritual father of SCons) and to resurrect it in the process. That way people won't need Python to install Latemp.


I did a lot of work on The Website Meta Language Homepage. So far what I did was switch the site to a CSS-based navigation menu instead of the old one made of images. I also fixed the user references page by temporarily moving the cgiemail script to a different server.

There's still a lot of work to be done. The site still contains many images as headings, and it's possible the HTML is not very valid or semantically marked. Also, none of the server-side scripts work.


I did backup yesterday, which included copying the dumps of the Subversion repositories to a CD. Now I have soom repositories hosted in OpenSVN, and getting them involves loginning in to an HTTPS account, filling a form and submitting them. I decided that it should be done automatically, so I wrote a Perl script to do that for me. I used libwww-perl, and by analyzing the HTML and passing the relevant parameters (and cookies) to the scripts on the server, was able to eventually download the dumps successfully.

I think I'd like to create a module out of it and put it on CPAN, but I did not get to it yet.


Certified boog as a Journeyer. I saw an entry he wrote in his Advogato weblog, and then saw that he was the one who wrote Learn which I found amusing when I had encountered it on his blog originally. He seems like a cool and capable person so I certified him.

wget tip

If you want to resume a multiple-file wget download that has been interrupted in the middle, you should try the -nc flag. What it does is skip files that are already found on the disk. I encountered a case in which this happens, and after some research I came upon it.

SCM Comparison Work

I invested some work in the SCM Comparison. It was motivated by an E-mail I received about a Subversion web-interface that I missed, which I added along with my own SVN::RaWeb::Light. Subversion is now listed with 8 different web-interfaces.

Afterwards, I spent some time working on the ability to add a version control timestamp to the result page. Then I made a lot of cleanups to the code: converting complicated DOM code to XPath, extracting methods, etc. I also tweaked and fixed the CSS and XSLT stylesheets. There were quite a lot of commits since I started: 22 in all.

The discontinuation of the gratis BitKeeper

In case you haven't heard, the gratis licensing of BitKeeper intended for developing open-source software with, has been discontinued. Here's a page I prepared with a summary and links.

GImageView Bug

I discovered and fixed an annoying bug in GImageView. After a lot of grepping and debugging it turned out to be a simple typo (as I expected) with a one line fix.


As I was about to start working on the code of SVN::RaWeb::Light, my lightweight Subversion web-interface, I realized that the complete lack of tests was not a good thing for it to remain so. So I decided to write some. Now, I am using the CGI.pm and the SVN:: modules in the code, so I wanted a way to mock them (without modifying the original code) so I can see what methods are called and control everything without needing a real CGI or SVN access. So I designed my own modules, that register their basic methods in the SVN:: and CGI namespaces, and also manipulate the %INC internal variable to cause perl to believe they were already loaded.

I did it relatively quickly and was quite fluent in what I did. Then I started writing a lot of tests to the code. After and between writing tests, I also refactored the code a lot so it's now in a better shape. I released a new version (0.4.0) on CPAN whose highlights were the code cleanup and test adding. Running Devel::Cover on the code I found that my tests had near complete coverage of it. Test-driven development ownz!


New CPAN Module - XML::CompareML. This is a re-usable Perl module that can be used to render multi-item, multi-system comparisons into either HTML or DocBook. It was derived from the code of the Better SCM comparison which now makes use of it.

Better SCM Site Work

After the work on the comparison, I started doing a lot of work on the Better SCM Site. It felt very good, and I am very happy with my productivity.

As I went to design a logo using Inkscape, I discovered two glaring bugs in it. One of them has been resolved in the CVS version, but a different one was still present. I think the problem was that I could not "Raise to Top" a certain element of the drawing. Eventually I opted to "Lower to Bottom" the other ones. In any case, I re-used an arrow from the Open Clip Art library. It seems like it matured into a usable resource.

Net Upgrade to Mandriva 2005 LE

I did a net upgrade to mandrake 2005 LE. At first I encountered a problem, then when invoking urpmi --auto --auto-select, it wanted to retrieve revision 2mdk of the urpmi package, where the server had revision 3mdk (and not 2mdk). Fetching the file and installing it from the disk solved this problem, and afterwards the installation progressed smoothly enough.

There were other missing packages, but they did not disrupt the rest of the installation. After I rebooted, and started KDE, I found out the "kfmclient openProfile" problem is no longer present (which is very good), but now a lot of my fonts are different and Bitstream Vera Serif render all wrong. This is not surprising. Many Mandrake upgrades I've done, have messed up the font settings.

Articles Index

I keep an index to my articles on my site. Up to some time ago, it used Web Meta Language's wml::std::toc extension to create a table of contents. However, as I went to validate the entire site, I realized the markup it generated was completely non-standard. So I had to look for an alternative.

I decided to use XML for that, created a simple markup with support for categories and entries, and wrote an XSLT stylesheet to transform it into HTML. Now it validates perfectly and I'm happy.

accesskey woes

The Wikipedia sites have many HTML accesskey's defined for them, some of them for commonly used menu hot-keys. I came up with an idea to use greasemonkey and my own user-defined script to cancel them. So I set out to write a script to do it. This page was a lot of help, and I based my script after it.

When I was done, I loaded my script into greasemonkey and enabled it for http://en.wikipedia.org/*. Then I noticed that Alt+E indeed invoked the Edit menu, but Alt+F still jumped to the find form, instead of bringing up the File menu. It turns out it was a bug in Mozilla in which accesskey's are not removed from <input /> elements. This bug has been confirmed since then.


I went over the errors logs of www.shlomifish.org and noticed that most of them were requests of browsers looking for the favicon. So I decided to create one and put it on my site to eliminate it. It took me some time to get the transperency right, and stuff, but now it's there. It's a sketch of a fish.

I also added a section of my links collection with links to archives of pictures and wallpapers.


I finally took the time to integrate the changes between WWW::Form 2.13 and 2.14 into the repository, and released WWW::Form 2.15 as a result. What happened was that Ben Schmaus branched his own version of WWW::Form which he worked on, on his own, and was not based on the one present in the repository, and then released it as 2.14. Right now, the CPAN release is again based on the Subversion repository.


I installed the Greasemonkey extension to Firefox just so I could use the script that turned Paul Graham's footnotes into hyperlinks. Until now I haven't found any other script that is useful for me. Oh well.

Networking Problems

As I was intensively updating the Tel Aviv Linux Club homepage I noticed a problem. Apparently, I could not access the site properly. All other sites I tried worked fine, just not this one. Eventually I called my ISP tech-support and after a short talk with the support person he suggested that I restart my router. That solved the problem, and then I was able to connect there comfortably. Sometimes the technical support can be helpful.

New Telux Lectures

Upcoming lectures are "Embedded Linux Bring-Up" by Ori Idan, and Condor by Eddie Aronovich. I think we'll do another Lightning Talks session sometime afterwards.

MikMod for Java

I took the Java Sound API driver which was provided to me by Tobias Braun, and after some modifications got it to work properly. Now, MikMod for Java can play sound interactively. I also prepared an Apache Ant build file.

Finally, I discovered a bug in which one of my MOD files is not played properly. I'll try to investigate.

Telux RSS

I finally took the time to add an RSS feed to the Tel Aviv Linux Club events. I decided to base it on the Haifux mechanism. I tried to find it in the Haifux code page, but could not. A quick E-mail to the webmasters yielded the right file. (turns out the code page was out of date). Based on that I was able to add RSS feed generation to my lectures publishing system in one day.

Right now, what I have to do is to finish the script that will reside on iglu.org.il and will collect the events from the various places and display them in a nice web-box. This would have been finished by now, if it weren't for the Haifux site being unavailable. (as is usual on weekends).

Lightning Article about Devel::LineTrace

A lightning article I wrote about Devel::LineTrace was published in a batch of Lightning Articles on Perl.com. Devel-LineTrace is a Perl module that can be used to assign callbacks to lines of a Perl program, to facilitate debugging.


I decided to install Kubuntu on a different partition, so I can see if bugs that occur in Mandrake also occur elsewhere. I invoked SysRescueCd to partition everything, but found out I already had some free space at the end of drive so I decided I'll install Kubuntu there. I installed it this morning, and spent some time configuring it.

The first problem I encountered was that several kernel modules could not be found. To remedy this I booted from Mandrake and copied the kernel and initrd.img file found on the Kubuntu partition to the loadlin one, and set up a script. Then, I could not find out how to switch to the root user. A quick google search yielded that Ubuntu did not activate root by default, and instead made the first user priviliged to run root applications by using sudo. So I assigned a password to root (using "sudo passwd root"), and removed that sudo assignment.

Then I wanted to get rid of X starting automatically. Someone on IRC told me that I should delete the xdm (or kdm in my case) symlinks from the appropriate run-levels. So I did and it worked. (after some trial and error). Then I went on to install software, configure the universe package source (where I found the joe editor, and the aRts binding for xmms.), and configure KDE, the shell , Vim, etc. to my liking.

Now I have a system that is quite usable. One thing I discovered was that a bug I have with Cedega-CVS in installing Warcraft 3 was present there as well. Running it through WineHQ wine was successful up to the point of entering the information for the installation in the dialog box. This instead turned out to output the keys to the console. The latter problem exists in Mandrake as well.

Gimp Testing Framework

I began the work on an automated testing framework for GIMP. One part of it involved making sure the pseduo-random number seeds that a seed-less call to g_rand_new() are predicatable. That was done using an LD_PRELOAD trick, and writing a TCP server for assigning them.

What I have so far works pretty well, but there's a relatively small number of tests. This helped me in a revamp I did to the gimp-ace codebase.


YAPC::Israel::2005, the Israeli annual Perl conference took place at February. There are summaries of it are available in the Israel.PM mailing list archive, including one of mine.

MikMod for Java

I re-incarnated the MikMod for Java homepage, this time in Berlios. A problem I encountered was that I originally designed the site using Web Meta Language, but this got lost in the hard disk crash, and I was left only with the final HTML pages, which I was able to fetch from the site. So, I had to re-WMLize them. That proved to be not very hard.

Then I went to work on the code a bit. So far what I did was made the code compile cleanly on JDK 1.4.x (the hardest part was figuring out I had to provide the -sourcepath . options to javac to eliminate the "cannot resolve symbol" errors).

Another thing I did was add a driver to write a WAV file to the disk. In the process, I discovered that the WAV file that MikMod generated was not identical to that generated by a sox conversion from the raw file. I discovered one of the outputted numbers was wrong, wrote a fix for libmikmod and sent a patch to its maintainer.

Now what I'd like to do is write a driver for the Java Sound API, so people can use it as a normal player. I had received a few E-mails from people who did just that, but I'm not sure if the packages they wrote were not misplaced. I'll have to check.

Job Hunting

I had a very good interview in Tel Aviv University for a position in their System team. I also had several interviews in a company in Hertzliya. I don't know the status of these two positions.

Upgrading Mandrake to 10.2 RC

I wanted to upgrade Mandrake to 10.2. Only problem was that when I wanted to do that, the bandwidth limit per connection I had on my Internet link was very low. Trying to complain about it to my ISP help-desk yielded no result.

Eventually, I decided to upgrade KDE to KDE 4.0 instead. I was able to download the packages fast enough using prozilla, and then went to install them using urpmi. This has failed and generated a lot of dependency problems, errors and stuff. Clearly, the packages were not prepared well.

Then I found a Mandrake 10.2 RC mirror with which the Internet bandwidth was OK. So I set up the sources and upgraded. I encountered many problems in between, and had to restart urpmi several times. It was possible that the KDE 4.0 packages messed up my system. Eventually, I opted to downgrade them all, which involved some text processing of the packages' list. (don't ask).

But all's well that ends well. I now have a Mandrake 10.2 RC system, which works very nicely and all. I found out a bug in which one could not invoke Konqueror. I found it in the Mandrakelinux bugzilla, and it can be resolved by upgrading to the latest kdebase packages from cooker.

Problems with the Ovid CPAN-to-RPM Converter

When invoking X-Chat, it barfed on me because the Perl extension I wrote could not find the Xmms::Remote module. Due to the Mandrake upgrade, the Perl @INC paths have changed and the module could no longer be found. I had to re-install it.

This time I decided to make each module into an RPM package using Ovid. However, I encountered some problems using it. Its own RPM refused to compile. It turned out it couldn't two problems with the new ExtUtils::MakeMaker conventions and with Mandrake. But I was able to fix them.

After I got it to work, I was able to build Xmms-Perl and all of its dependencies as RPMs, and to install them. Then X-Chat worked beautifully using my extension. "Hacker sees bug. Hacker fixes bug."

Telux Meeting: GIMP 2.2

I updated my GIMP lecture slides to GIMP 2.2. Herouth Maoz was the one who volunteered to give the presentation at Telux, and she translated my slides to Hebrew and somewhat revised them.

The presentation she gave (yesterday) was very nicely executed, and I enjoyed it very much.

New web-site for Telux

The Tel Aviv Linux Club now has a New web-site. I converted the pages to Web Meta Language, to HTML::Widgets::NavMenu and to my lectures manager (originally create for Haifux). Now, the site is up, with no frames or any other resident Evil.

PySol Problems

If my mother wouldn't be able to play Simple Simon on PySol, she'll go mad. The PySol in Mandrake 10.2 was broken due to the fact that it placed the code at the same directory of the games, which caused them to be loaded as plug-ins. After trying to solve it in several ways, and eventually being victorious, I posted a fix in the Mandrake bugzilla bug-report for it. Now Mom can sleep well at nights. "Hacker sees bug. Hacker Fixes bug."

Perl Quizes-of-the-Week

I posted a mail to the Perl Quiz-of-the-week mailing list asking why there hasn't been a lot of activity lately. As a result, we decided to revive it by posting challenges ourselves to the discussions mailing list. So far, I posted two challenges, one which I labelled "Medium" about scheduling Tournaments, and one easy one which I encountered on IRC once. There were also two other challenges by two other people.


I've attended a TAU-Sec meeting. In the first part, there was a presentation about DNS-Sec, the security extension to DNS (which actually, due to input from the audience, mostly concentrated on DNS itself.) Nevertheless, it was very interesting. Then came a cryptograpgy-related presentation about breaking session IDs that are generated using pseudo-random number generators. It was interesting, but I did not understand parts of it.

There also was a presentation by Schachar Shemesh about the Bourne Shell with some Bash extensions. He gave a very useful introduction, and I even learned some new things. It was heavily raining after it was finished and I had to walk home, and when I reached home I and all my clothes were soaking wet. But still, it was fun.

Next came a presentation about Linux accessibility for people with disabilities. The link points to a referenced report and some completions by Herouth Maoz and I.

Perl on Debian Woody

It seems that Perl's File-Spec and Cwd modules got updated recently and now their build breaks on Debian Woody (= latest Stable as of now), somewhere at the test stage. I already heard from two people who had problems with this on the IRC, or elsewhere. This may cause CPAN to be unusable there.


I released HTML-Widgets-NavMenu-0.4.0 a short time after the release of 0.2.0. It includes a url_is_abs() option that enables to specify an absolute URL for an item in the navigation menu - I missed it in version 0.2.0, where I replaced it with a different feature. It also includes a greater test coverage and many cleanups.

I created a web site for these Perl modules and also announced them on Freshmeat.

Interview by Einat Ya'akobovitz

I was contacted by Einat Ya'akobovitz, who is a Sociology Masterant, who does her thesis on the Israeli Open Source Community, with a focus on "Freedom, Value and Community". She said she encountered my name in several contexts, and wanted to interview me. So we set up a time for the interview to take place on I.C.Q.

The Interview went very well, and I enjoyed answering the questions, some of which required some thought on my part. Einat noticed I am an Objectivist, and so asked me some questions about apparent contradictions between the Objectivist philosophy and my open-source activity. Now I have some ideas for things I'd like to add to my "Objectivism and Open Source" essay.

The Interview ended after a few hours, and Einat told me that she cannot publish what she has now just yet, because of academic constraints. I guess we'll have to wait for the final thesis to read it.

irc.perl.org incident

I've tried to contact Mark Fowler in regard to his Perl Advent Calendar. I sent him some E-mails which he did not respond to, so I decided to contact him on the IRC. He is only present on irc.perl.org, so I logged in there. I joined the #perl channel and shortly afterwards someone named sungo said "rindolf: [that's my nick] are you who i think you are.", and shortly afterwards banned me from the channel. I tried to talk with him, (using a dedicated /msg talk channel), and this is how it went:

<sungo>	dont msg me.
<rindolf>	I'm looking for Mark Fowler.
<sungo>	i dont particularly care.
<rindolf>	I did not misbehave.
<sungo>	let me put it to you this way. i don't have to explain my actions or 
my thoughts to you. if you thought you were logging on to some sort of safe 
and happy place, then you are very wrong.
<sungo>	stop msging me and carry on with your existence
<rindolf>	Please remove my ban.
<sungo>	no.
<sungo>	would you like it to be extended to something more server-related and 
permanent? if so, then continue harassing me.

So I had no choice, but to let it be. Apparently, Fowler was inactive then, but I was able to reach him a few days later when he told me he was sick. I guess I'll have to try to reach him again.

I guess this sungo character banned me because of either the "Attitude of the Perl world towards Newcomers", or the "Perl 6 Critique". In any case, I was not going to discuss this, and was just trying to do something important. I also wasn't misbehaving nor was going to. He is just full of bad attitude, and I wonder who he is.

Gringotts Patch

Gringotts is a program that allows one to write notes (like Passwords, etc.) in a secure form. Some things about it bothered me, and the author did not respond, so I wrote a patch for resolving them.. I also announced it on Freshmeat.

I was contacted by the maintainer of the Debian package, who said he may want to integrate my patch into his package. He also said a patch he sent to the author got integrated immediately, and so the author is probably very busy now. I recently revised the patch to eliminate the use of the deprecated Gtk+ APIs, and to use more strict gcc flags.

xpdf and Upgrades

Recently I had to update half of my Mandrake system (kde, tetex, cups, etc.) twice because vulnerabilities were discovered in xpdf. What I cannot understand is why the code is embedded as is, an it isn't turned into a shared library, or at least a standalone program, so one will need to update only one package.


Check this post to the GIMP Development list for information. I did it because I met someone on the IRC who needed it, and has still been using GIMP 1.2 because gimp-ace was not available for GIMP 2.x. I also placed it in the plug-ins registry.

Since then I was contacted by two other developers who have also performed a port of a version of the program with more embellishments. (but did not release their modifications to the public, yet). I'll see what I can make of it.

Gimp Bugs

I fixed an issue involving saving an image as .xcf when no extension was given. The patch was commited, but then Michael Natterer was unhappy from the code there, and started a revamp of it. Other than that I also worked on the Alpha channel visibility issue. This turned out to involve dealing with the internals of the GIMP, and it took me quite a lot of time (and two patch iterations) to find out what to do. The final patch was not applied yet.

Vim Range-Search

I asked people how to do a range search in vim (from a certain line to another certain line). There's the information which I once found in :help search-range which involves doing a 'a,'es/ command that runs a search-and-replace command on the range (with a quirky interface). On the IRC, someone told me about /\%<${LINE_NUM}l and /\%>${LINE_NUM}l that can be used to restrict the search to certain lines. The problem is that they require actual line numbers, and not marks or whatever.

So I decided to write a function and a command to perform the range search for me from mark a to mark e. I wrote a function, but then it turned out that invoking it did not cause the search pattern to be affected at all. I thought it was a bug in vim and so checked it with several other vim versions - they all failed to do it. This was while executing the internal command on the vim command-line worked perfectly.

After some head-banging, I found the following expert in the Vim help: "The last used search pattern and the redo command will not be changed by the function". After searching the same help file, I found out that I can set it by assigning to the @/ variable. This enabled me to write the function properly, after spending the entire afternoon on it.

The full code at your disposal is:

" Author: Shlomi Fish
" Date: 10 February 2005
" License: MIT X11

function! Range_Search(mypat) let full_pat = '\%>' . line("'a") . "l" . '\%<' . line("'e") . "l" . a:mypat exe '/' . full_pat let @/ = full_pat norm n endfunction

command -nargs=1 Rs call Range_Search(<f-args>) command -nargs=1 RS call Range_Search(<f-args>)

I hope to perhaps enhance it by enabling custom ranges, etc.

Job Hunting

I had a job Interview at Artnet which was arranged through my Father's co-worker. It was in Hod-Hasharon and my Mom drove me there and back. It was over pretty quickly, so I think I was not accepted.

I also had two job interviews at IBM Haifa (probably due to the successful pre-interview at the Technion's job fair). The technical questions I was asked were pretty interesting, (including some on search engine implementation) and I highly enjoyed them. I feel I did pretty well, but they said they only had a limited amount of openings, and I also had to pass the more upper management. I haven't heard from them since, so I don't know what's my status there.

I had an interview at Zend (the Israeli PHP company), which also ended up very quickly. Finally, Ran Eilam (my former boss at Cortext and an Israeli Perl Monger) arranged an interview for me at his company. After the interview was over, they said they did not found me suitable.

It's good that I have some interviews, but I would prefer to finally get accepted into a good workplace.

Low Bandwidth Conundrum

One day when I was using the computer, it occured to me that I had a very low bandwidth (30 KB/sec or so). I tried cancelling services, and stuff, but it did not help. Then I checked the bandwidth from the other laptop running Windows XP - it was perfectly fine. I tried rebooting into Knoppix (ruined my 31 days uptime) and then into Windows 98 - the problem existed there as well.

Then it occured to me - maybe the Ethernet card was faulty? Switching to the other Ethernet card, indeed solved the problem. %-)

Windows Media Player

It seems that using Windows Media Player to play mp3's, causes their last-modified timestamps to change. This is disturbing because we're using the sort-by-modification view to sort them according to the order in which they were added, and WMP ruins the order. This does not happen with WinAmp or Linux-based players. Another thing that Microsoft does wrong...

Some Recent Version Control-related Links

There seems to be another BitKeeper-related fight, this time at Linux Weekly News. As far as I remember, it's been a while since the last serious one. It was pointed by one of the LWN letters to the editors.

LWN also published in their Development page, an editorial titled "Looking Past CVS: The Future is Distributed". This is a really bad essay. It is the second low-quality LWN feature I recall, after the "Programming Languages - Standard-Based vs. Non-standard-based" one (which I cannot find now using either Google or the LWN Search or its Archives). And both of them were contributed.

There is also a Slashdot piece on the OpenBSD project working on OpenCVS.. I initially thought it was funny and pointless, but it may actually be beneficial.

David Font Bug on Mandrake

On Mandrake, I had a problem that OpenOffice.org 1.1.x did not display the David font (a Hebrew font) correctly. Eventually, I was able to solve this problem, by removing duplicate entries with "David" in them from the fonts.dir and fonts.scale files. Apparently, the font uninstallation procedure did not do a good enough job of removing the font.

Now I have a problem that with OpenOffice.org 2.0.x the fonts all look like crap, and it also takes much longer to start. I'll see what can be done about it.

Upgrading to Kernel 2.6.9-ac14

I upgraded to kernel 2.6.9-ac14. This time the installation of the Nvidia driver went pretty flawlessly. One thing I checked before the Nvidia driver was installed, was the xwd and OpenOffice bug. It indeed does not occur without the Nvidia accelerated bugs installed. So now this bug occurs only on Mandrake, only with OpenOffice opened in the current virtual workspace, and only with the Nvidia drivers. How obscure!

Fixing the Subversion install-swig-pl bug

I filed this bug-report into the Subversion issue tracker.. Apparently, the "make install-swig-pl" has a dependency on instaling some of the core libs, and as a result, when being run as root (which is required for installing Perl extensions), some of the Subversion libraries are installed as root, which is very annoying. I wrote a patch to fix this problem, but it was not integrated yet.

Daniel J. Bernstein's UNIX Security Vulnerabilities Course

Here's a Slashdot post about it that I found amusing. There's also some discussion of it in Linux Weekly News. It says that Bernstein did not alert the developers beforehand, but rather publicized the disclosures immediately. This again demonstrates how socially-challenged (and opinionated with socially-challenged opinions) he is.

Hackers-IL Discussions

There's an interesting discussion about Perl, Java and C on Hackers-IL. While it can be classified as a language war, it has reached some interesting conclusions. The discussion took an ugly turn when I was attacked several times. (including one time when someone publicly spread a vicious rumour about my body odour). As a result, I and the other active participant have decided to take the discussion off-list, and just place the messages online afterwards.

Right now there's an active discussion about strncpy(), strlcpy(), sizeof, security in C, etc. as a response to a post in Raymond Chen's blog. I learned from it that sizeof could be used without the parenthesis when it is used upon a variable.

My Mom and E-mail

My mom now has an account on my father's domain, and started receiving E-mails from people. She tried using the web-mail interface, but we could not get it to display some Hebrew E-mails, especially if the server encoded the characters using SGML entities. So I decided to install a Windows client.

I tried installing Eudora which I really liked at the time. I installed the ad-ware version, and it fetched the E-mails easily. But then we tried changing the language encoding of a message. Perfectly Impossible! I went over all the menu items and could not find anything that will allow me to do it. Google was no help. I wonder how such a feature was omitted.

So I installed Thunderbird. It was able to read the settings and the messages from Eudora. It works very nicely up to now, except that some Hebrew letters are displayed as strange black circles with white question marks characters. But this might be a font problem, or a temporary bug, and the message is still readable.

Mom has learned how to check and read E-mail messages, and now she wants me to teach her how to write E-mails. She might become computer-literate (in anything besides playing Solitaire card games), after all.


The Frosty Logo was reported to produce incorrect results on recent versions of GIMP. Since I'm very fond of this logo, I decided to take it upon myself to fix it. The problem was in the Sparkle Plug-in. I did not know how it worked exactly, but at least I knew that its code in GIMP 1.2 was OK. So I started going over the diff, and eliminating portions of the code that were semantically equivalent. I found 4 bugs this way.

As I was going to add dumps to the code, I found other bugs. You can find my patches in the bug report. These patches were applied, and I was jokingly labeled the GIMP expert regarding the plug-in.

Eventually I found a bug that was present even in GIMP 1.2, and one problem in the Frosty Logo script itelf, that was present since its introduction, which I also corrected. Some more information can be found in my report to the GIMP Development mailing list.

It was quite a lot of work for such an obscure feature, but it personally bothered me, so I was motivated to do it.

Mandrake, Vim and the Vim Security Bug

I filed a bug report about the recent Vim vulnerability in the Mandrake bug tracker. You can also find there a testcase I wrote to determine if you're vulnerable. (which is written in Perl and should work on all UNIX platforms).

It took me quite some time to write this testcase. The original Gentoo bug report gives general guidelines on how to reproduce the bug, but not a prepared test-case. So I had to understand what's going on there, and implement a Perl script that does it. And the people on #vim on the IRC were not very helpful in this regard.

OpenOffice.org's Export to PDF

I discovered that on my system, with a certain mixed Hebrew-English document, the PDF exported by OpenOffice is not viewed correctly in ghostscript. I reported a bug report about it to the OOo bug tracker. Eventually it was closed, claiming it was a bug in ghostscript and not in OOo. I filed a bug report to the ghost-script bugs mailing list, and it may have reached my inbox (cannot remember), but it's not in the mailing list archive.



HTML::Widget::NavMenu is the new name of my navigation menu module. After more work on it, I was happy enough with the feautre-set and the quality of the code to release a stable version (0.2.0) on CPAN. After the release, I continued working on it. I added a useful feature that I before 0.2.0 replaced with a new one (also potentially useful). And I also did a lot of refactoring which I delayed until 0.2.0 was out the door.

I think now the code is quite ready for 0.4.0. Meanwhile, some of the services on berlios.de are now having some problems, which slows down my progress.

Israel.PM Meeting

We met at Dapey Zahav, as usual. Several people arrived and gathered outside , but we could not enter the hall because none of our contacts in Dapey Zahav have arrived and the receptionists refused to let us enter. I collected money from people to buy drinks and snacks, and went with someone to buy drinks. I set them out at the table inside, and then opened some of them to drink, because I was really thirsty.

Seeing that we could not enter, we decided to cancel the meeting, and so I and Sagiv Barhoom carried the bottles of drinks to his car, and he gave me a ride home. On the way, we talked about Perl, GIMP, and other stuff like that.

We are now looking for a different place to hold the meetings, seeing that the Dapey Zahav conference basement may no longer be available.

Jimmy Wales Visit

Jimmy Wales, one of the founders of the Wikipedia, and director of the Wikimedia foundation, had been visiting Israel, and gave a lecture in Tel Aviv University. My problem was that I mixed up the dates, and arrived there a day early. I could not find any notice about his lecture anywhere, and did not know what to do. I also was able to find up an Internet connection in one of the computer farms, but it wasn't any help in finding the lecture room.

Eventually, I found someone who lent me her phone and I called Ofer Weisglass. He, after checking on the computer, told me that it took place the next day, and also told me the room number.

I arrived there the next day, and indeed the lecture took place then and there. I was able to introduce myself to Mr. Wales, before the lecture. I recognized a few people there. One of them was Ofer. Another one was Michael Perelmutter, which I told him about the lecture on my way back from the university the day before. Another one was someone from the TAU-Sec meetings, and the rest were people I remembered from the Wikipedia meeting in Azrieli Center some months ago.

Now for the lecture itself: Jimmy Wales gave a very interesting and entertaining lecture. He spoke about the Wikpedia and the related services (Wiktionary, Wikiquotes, etc.) the translations, etc. He gave a lot of statistics, some of them very interesting. One of them, was that the size of the database dump compressed will reach 1 TB some time from now. Another was that 10% of the visitors have performed 80% of the changes, and 50% of the changes were performed by only 2.5%.

He was able to throw a few jokes during the lecture. In one of them, he talked about benevolent dictators, and said "Like Gweedo von-Rossum is for Python". So I said "It's Kheedo von-Rossum", and he said, "Well, you can't expect me to pronounce that..." and everybody laughed.

After the presentation, Wales stayed for the beginning of the Wikipeders meeting, and we discussed various topics, like an Israeli squid server for the Hebrew wikipedia. Wales then went to have several interviews with the local media, and the rest stayed for the rest of the Wikipeders meeting.

Ofer wanted to go then, and offered me a ride. I talked to Michael who lives close to me, but he ended up wanting to stay for the rest of the meeting. So Ofer and I went then. On the way to his car and during the ride home, we talked about Linux, Mandrake, and how to find your way around a Mandrake system.

To celebrate his visit, I added a new page to the Wikipedia about the "Simple Simon" Solitaire Game.

Postfix - #2

After the Postfix configuration according to the Postfix on Mandrake page was done, I still had a problem that mail to root got sent to root@localhost.iglu.org.il, instead of delivered to the local mailbox of a certain user. Asking the people on the IRC did not help, and neither did reading the documentation.

Eventually, I temporarily subscribed to the Postfix Users mailing list and asked the question there giving all the configuration files as input. Magnus Back answeredme that I should have added teh appropriate host to the mydestination directive in the configuration file. That solved the problem, and now all the messages arrive at the hard-disk.

New Hardware Blues: PowerMust UPS

My father bought a UPS so power jumps won't affect the computer. It's a PowerMust 600 UPS. He hooked it to the computer via the USB cable, and got it talking with Windows. With Linux there's more problems. What the vendor supplies is an application written in Java for which the installation hanged right at the end. It's a several megabyte monolith and I'd rather not keep it running on the computer.

For the progress I made in the time being in getting the UPS to talk to Linux, see this thread in Linux-IL and the thread "Getting a PowerMust 600 UPS to work with Linux using the USB Connection" in the nut mailing list. It's not working yet, but there's progress.

Submitting an ed2k URL through Mozilla

My sisters recently switched to using MLDonkey on Linux to download files. Noa said that in Windows she could click on an ed2k:// URL and it would queue the file for download in eMule. So she wanted someting similar in Linux.

So I looked for a way to allow Mozilla to submit such "ed2k" URL's through kmldonkey_submit to MLDonkey. I had to register a new protocol handler. So I searched google, and did not find anything usable. The closest thing I found was this page that explains how to add a protocol handler for the mailto: protocol. Based on its instructions I was able to add a protocol handler for ed2k like this:

Put the following into the file user.js in your profile directory:

user_pref("network.protocol-handler.app.ed2k", "/usr/bin/kmldonkey_submit");

That's it!

KMLDonkey Crashing

I had a problem that KMLDonkey crashed upon connection. I worked my way through the code to see what happened. It was pretty hard because it seemed that it forked itself, and then got hanged up (needing to be resumed with kill -CONT.) Eventually, I was able to do so (by debugging kmldonket_submit which is less idiosyncratic) and found that it read a message length prefix and allocated space for the message, only it was too large, and it failed to allocate this space (and thus crashed).

I fired up Ethereal and tried to see what was the problem, it turned out KMLDonkey was communicating with the server in the text protocol. This made me recall that I changed the port of the core in the KMLDonkey configuration. Reverting it to one port below solved the crashes.

Technion Grades Listing

My Technion grades were given in a printout with a fancy colourful background. I ended up scanning it and converting it to PDF, but the PDF is quite large. (90,428 bytes). To resolve it, I ended up inputting the grades data to a text file, and wrote a Perl script to generate an HTML out of it. The generated HTML is 7,441 bytes-long (less than 10% of the original PDF size). And I'm still using UTF-8 encoding. If I convert it to ISO-8859-8 (= extended 8-bit character set with Hebrew characters), I can reduce its size even more. It's also 1,972 bytes when compressed with gzip and 1,733 when compressed with bz2.

Work on Shlomif::NavMenu

I did a lot of work on Shlomif::NavMenu (my HTML navigation menu Perl module) recently. While at first being stuck on how to write a good tree traversing class, I eventually decided to simply take the function I had now for generating the site map and gradually refactor it. This turned out to be very straightfoward and enjoying, and I was able to get what I want. Then I ported the regular navigation menu generation to the tree traversing class.

Eventually, I was able to eliminate the use of Yosef Meller's modules which I used it first. This caused the module to have 1,097 lines-of-codes instead of 1,510 (as reported by SLOCCount).

This was all done while adding tests, and now I have 117 individual tests there. I have totalled 79 subversion commits since I started working on November 30 or November 31. And I still have a lot of work ahead.

Bash Filename Completion

While working on the navigation menu class, I wanted to tweak the shell completion so that pressing tab after the gvim command will not display or complete to files whose filanems begin with "." or end with "~". It took me a long time of experiencing to figure out how to do that, but I was eventually able to. Here's how I did it eventually. Add this to the appropriate bash configuration file:

    local cur
    COMPREPLY=( $(compgen -f -X '*~' -- "$cur" |
        grep -v '/\.' | grep -v '^\.') )

complete -o filenames -F __gvim_completion gvim

Job News

I ended up being fired from the job I reported here. They weren't happy from me, and I wasn't happy from this job either. Trying to automate buggy Windows software is not my idea of self-fullfillment. Now I'm looking for a job, again. So far I was rejected from a job posted at Linux-IL, and from one posted at Perl-IL. I still have a few leads, though.


I finished reading two Discworld books: "The Colour of Magic" which is the first Discworld Book, and "Lords and Ladies" which is a rather late book. I liked them both.

I took them both from Michael Perelmutter, and a few days ago, I returned him "Lords and Ladies", he returned "Surely you're joking Mr. Feynman" to me, and I took "The Complete Hitchhiker's Guide to the Galaxy" and "Godel, Escher Bach - An Eternal Golden Braid".. So far I started reading what I did not read from The Hitchhiker's Guide to the Galaxy. I read there the short story titled "Young Zaphod Plays it Safe". It was quite funny, but I did not understand the ending.

I also read the book Managing Weblogs with Slash and wrote a review of it. The technical book that I'm reading now is "Practical mod_perl". So far it was quite interesting at times, and contains a lot of useful information about the various fine details of running scripts using mod_perl.

Calculating the ssh fingerprint of Host Keys

In one of the hosts I have an ssh account on, I was instructed to verify that the new ssh fingerprint matches. I had no idea how to do it, and so tried to look for it and asked for the IRC. It took me some time, but I eventually found this message to the Debian list on how to just that. So what I did was run ssh-keygen -l -f ~/.ssh/known_hosts on the file and I got the fingerprints of all the host keys including the one I was looking for.

Tip: use.perl.org RSS feeds.

I had no idea how to get the RSS feed for the journal of Gabor Szabo. A link to it was nowhere to be found on the page. I contacted the webmaster and he told me to look at the head of the page. Which "head"??? Eventually, I understood that one needs to view the source of the HTML and use the <link rel> links from the <head> tag. And indeed you can find the RSS feed for the journal there.

So now you know. It's a pity the page has no visual cue that there's an RSS feed for it, or where to find it.


I attended a few events recently. Shachar Shemesh gave a presentation about development tools in Linux for in a Welcome to Linux Telux meeting. He got lost in trying to explain about kdevelop and especially about CVS (which beginners should not use, anyhow). Next year, I hope we'll give the lecture in a better format.

Then came the Telux installation party. Few people attended, and most of them were installers. I was responsible for selling the Hamakor merchandise. I also tried to install Linux on a machine which had both a SATA hard-disk and an IDE one. This involved a lot of trickery, and eventually did not work, so we removed the FC 3 installation, which was the only thing that we could get to install.

I missed the Israeli Perl Mongers meeting because I forgot it took place in that particular day. I did attend the Hamakor General Assembly the day before yesterday. Omer Zak drove me there, and drove Eddie Aronovich and I back. The assembly was quite entertaining - the attendees voted several times for various things. I was happy with the decisions, at the end of the day.

218 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!