Older blog entries for shlomif (starting at number 219)

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:

__gvim_completion()
{ 
    local cur
    cur="${COMP_WORDS[COMP_CWORD]}"
    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.

Reading

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.

Events

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.

Meta

This diary entry is now cross-posted to Live Journal. At the moment, manually, but I plan to write an automated cross-poster.

OpenOffice.org bug

I sent my C.V. to someone and he told me the parenthesis were reversed there. Turns out the OpenOffice.org export to PDF is faulty again, and it reversed the parenthesis. I filed a bug report of it. Meanwhile, I wrote my Hebrew C.V. in HTML format, which worked very well, without any bugs.

CPANPLUS

While smoking CPAN, I had problems installing the Test-URI module. The developer claimed it was a bug in the CPANPLUS module. I tried to investigate, and hopefully correct it. Then, however it turned out the module was marked as a developer release (where no regular module was available). This is what prevented it from being indexed by CPANPLUS, as it was not in the module list.

Wiki Overview Article

O'ReillyNet published my article comparing various Wiki implementations..

Perl Empty Regex Catch

Check this post I made to Israel.PM for a Perl catch regarding matching the empty regex. I encountered it while working on my navigation menu module.

Helping someone with his Linux System

I helped someone called Amir who approached me on the Telux meetings, and said he had some problems with his Linux system. (X won't start). So I went to help him bringing with me a Knoppix disc. His problem was that X couldn't start. It was Mandrakelinux 10.0, and the startx program reported a missing symbolic link. After I fixed the link, it still wasn't good enough, and I had to play a bit with XFdrake, which is the Mandrake X configuration tool.

After that, we were able to start X, and we needed to connect to the Internet. He had a modem dial-up connection, and so, I played a bit with the Mandrake Control Center, and we were able to start it. Then, I explained to him a bit about Mozilla firefox, urpmi, etc. All in all, the mission was accomplished, and his system worked.

SVN::RaWeb::Light

Berlios.de only gives Subversion access via the svn:// protocol. So I wanted a web-interface to visualize things like is present in the http:// hosting. I looked for things like this, only there were either only for a local repository or presented too much information and so took a long time to process a page.

So I wrote my own module, SVN-RaWeb-Light. It behaves much like the one for the Subversion hosting, but has a useful improvement, of being able to display different revisions of the repository using the rev CGI parameter.

I was able to use it on my computer to view the Berlios repository. It's a bit slow, but still much better than anything else I've tried. I plan to implement caching of the data next.

Mail on Vipe

Strangely enough, the mail directory I had on vipe was gone. I had to restore it from a backup on my computer by transferring the compressed directory there. Afterwards, I discovered that not too much was lost.

libtool/autoconf problem

Someone reported a problem with one of the header files of Freecell Solver. To resolve it, I had to modify it and rebuild it. Only the rebuild failed. Autoconf complained that some of the macros were deprecated. It turned out support for Autoconf 2.1x was removed from the libtool m4 macros some time ago. So, I had to upgrade to Autoconf 2.5x, just to build the distribution. I spent an entire evening on this, on what should have been a simple change. Autoconf must die!

HTML::Strip::Whitespace

When I was working on the Israeli Perl Mongers site I noticed that the HTML had a lot of extraneous whitespace. I've looked in CPAN for a module that will do the job, but the only module I found (HTML-Clean) could damage whitespace inside <pre> blocks. So I wrote one of my own - HTML::Strip::Whitespace.

As it turned out, htmltidy can strip whitespace out of HTML. The webmaster of perl.org.il, however, insisted that the HTML on the site should be carefully indented, instead of whitespace-stripped and smaller, so I don't have an immediate use for this module.

Music Downloading

I tried to download the song "Tears on My Pillow" performed by Kylie Minogue. (which I have on cassette). However, almost all of the mp3 files I downloaded had a completely different song, only with the title I requested. What the hell?

Eventually, however, I was able to find one good version of it.

Disabling "Unsubscribe" in ezmlm

I wanted to form a mailing list for my beta reviewers, so I and the other members can send E-mail to one address and it will arrive to everybody. The problem is that I did not want anyone to be able to subscribe to there.

I searched and searched for it and eventually found this post to a mailing list about ezmlm that explained how to do it.

Job Hunting News

It turns out several people contacted my cell-phone and left messages, and I had no idea about it because I did not check it. So I called them back.

In any case, I had two job interviews for a company called "10 Levels" and they eventually decided to hire me. So I worked for them yesterday and today. What I had to do was write some Perl scripts to automate an application written using PowerBuilder. I was able to do some of the tasks, but not the last one. I have a Win32 form with several fields, and I have to fill in the required fields. However, I cannot find a way to switch the focus to the second field. SetFocus() doesn't work. SetActiveWindow() doesn't work and neither does a simulated mouse click.

I also installed Windows XP and RHEL 3 on a computer today. Configuring the networking involved doing a few physical pluggings. Then I wanted to install packages of Red Hat Enterprise Linux from the command line. I tried installing apt and everything, but it could not install packages from the RedHat CDs. After talking with people on the IRC, I found out that with RHEL, I need to pay for a subscription for up2date to get the packages. (and cannot use apt or yum). What the hell?

I asked one of my superiors what to do, and it turns out he did not realize you could resolve the dependencies of a package from the command line (he told me to look for the package in rpmfind.net, download it and install it using the rpm command). He also thought one did not need to pay for RHEL.

Work on W2L

I did a lot of Work on the Israeli "Welcome to Linux" online resources. I set up site for it, tweaked the registration form. I also had to set up an E-mail domain using the eskimo.iglu.org.il qmail. I also helped a bit with revising the TeX documents from last year. Working on the sites was a lot of work, but I hope it was worth it.

Getting CPANPLUS to Send Mail

Following Gabor Szabo's presentation in the last Israel.PM meeting, I decided to become a CPAN Smoke Tester. So I set up a non-privileged account for this, and installed perl and the CPANPLUS module there. Then I had to set it up to send mail. Reading the docs of the modules, I found it that they could either send mail by using SMTP (which was more limited) or by using the sendmail or equivalent program. So I had to set up the sendmail replacement to work on my system.

This involved setting up Postfix on my system. I enabled it and started reading the docs to see how to configure it. It was able to send several messages to various places eventually. However, while it actually sent a message via SMTP to the cpan-testers mailing list, none of them have arrived there.

The Ethereal dump said something like this:

MAIL FROM:<cpan@localhost.localdomain> SIZE=2444
RCPT TO:<cpan-testers@perl.org>
DATA

Which contained cpan@localhost.localdomain in the MAIL FROM: instead of my real mail address. I tried to configure postfix to use the correct MAIL FROM, but to no avail. Then a simple Google search for "mandrake postfix" yielded this document about configuring Postfix as the first result. This explained everything I needed to do, and afterwards it worked.

Meanwhile I wasted several hours in what could have been resolved with a simple Google search.

Bug Reporting Spree

I took two days to go on a bug reporting spree. There were a few bugs I collected in a bug list, and I reported them. There are still some bugs I haven't reported yet.

Blisters

I used to have blisters on my feet. It was quite unpleasant. Most of them are gone now, after my mom and I took care of them.

Perl 6 Critique Article

I published a Perl 6 Critique Article in Freshmeat. You can also find disucssions of it in the

perl-advocacy mailing list

, in linmagazine (in Hebrew), and in Perlmonks.

JLC Site

I did some work and created a new and improved site for the Jerusalem Linux Club. It still lacks information about the Welcome to Linux series, and also Hebrew content.

There's also another site that someone created, but I'm quite unhappy with it.

Mandrake

There weren't any updates for the Mandrake 10.1 Community Edition from 15-September to more than a month later. When the updates did come out, the hdlist.cz file (that concentrates the information about the packages) was faulty. Eventually, the official edition came out, but they were delays in getting it.

Now, I'm on Official Edition, and everything is OK, but there was a long time when my system was out-of-date.

The Digital Camera and Linux

My family has a digital camera. I tried to get it to work with Linux. It uses some memory cards and we have a memory card reader for this that connects to the computer via USB. So I connected it to the computer when it ran Linux and tried to read it.

The USB device was detected in /proc/bus/usb/devices and appeared in the output of cdrecord -scanbus, but I was not able to mount it no matter what I tried. Eventually, I found out that I had to mount /dev/sdc1 instead of /dev/sdc. Afterwards it worked perfectly.

First W2L Meeting in Telux

The first W2L Meeting in Telux took place yesterday. Many people arrived and the room was packed. Eddie gave a nice "Blitz" lecture, and many questions were asked and answered. The main problem was that it lasted for a long time - over 2 hours.

RTFM vs. JATFM

I recently had to figure out how to do something with wget: get everything below a directory on the web-server, without following links to outside it. So I logged in to FreeNode's #debian channel, where there are many knowledgable people to ask it. The first answer I got was "RTFM". So, I read the wget man page, but could not find it there. Eventually, after telling people that it would be faster to give an answer, I got a reply ( add the -np -r flags). But this has been the last straw.

I composed my own acronym. Just like RTFM is "Read the Fabulous Manual" and STFW is "Search the Fabulous Web", then JATFM is "Just Answer the Fabulous Man". It means that it's usually faster to answer someone's question than to ask him to RTFM, which is just going to annoy him. I think the RTFM mantra has done a lot of damage in the UNIX/Linux world, and I hope JATFMing would prove to be a more healthy ideology.

Linux T-Shirt Giveaway

One day when I was just returning from my walk, a guy approached me and asked me about my Linux T-shirt, in English. It turned out he was using Linux and FreeBSD, and was interested in such T-Shirts. He was working as a Journalist in an Israeli newspaper, and was using Windows in his workplace.

I invited him to come to my house, and when he did gave him one of my shirts. At first, I thought he was a Medium, but it turned out the Large T-shirt was OK for him. He took off his shirt, and wore the Linux one instead. He gave me his old shirt for me to throw away.

We then went to the computer and exchanged contact information. He called me some hours later, but I was busy, but I think I'll call him back on my own.

Jewish Holidays

Now is the Jewish Holiday Season. First of all - Shana Tova (= Happy New Year) to all Jews and non-Jews. Yom Kippur also came along, so "Gmar Hatima Tova" ("A Good Signing") to all. And finally, Happy Sukoth.

In Israel, many secular Jewish families hold a family dinner on Rosh Hashana. In the States, it seems Jews just go to the synagogue.

Open Letter to the California Governor

I wrote an open-letter to the California Governor regarding the recent report about cutting the California State spending.. It is a bit redundant and the comments there are even more so. Still, I hope the appropriate forces in the California Government will take it to heart. An anecdote about it is that I originally wrote it on paper.

Links of Interest

Read this entry in Omer Zak's Journal (to which I have responded) for something that Omer said about being unwilling to help people who aren't using Debian, and why I proved it was a bad attitude. (it all leads to the ancient and mind-destroying "I'm not getting paid to do open-source work, so my users need to play by my rules" mantra).

There's a very interesting interview with Real Networks' CEO on Slashdot. A highly recommended read. Trying the Real Player 10 for Linux I was very disappointed, though: it's not a drag and drop target, had a very crappy file opening dialog and it could not play mp3's.

There's also a very interesting interview with the U.S. Libertarian Party Candidate. I sure do hope Libertarians take the next elections, and will also add a button to my homepage about it.

Freenode's beth is engaged!

Beth Skwarecki (a.k.a. "beth" on Freenode) has become engaged to her long-time boyfriend now. Congratulations!

It's funny that many people I know my age are already married. Plus, my cousin who's my age already has a baby now. Roy Glasberg, too. And Ben Schmaus already managed to become separated from his wife. And I did not have a girlfriend, yet. Oh well.

Yom Kippur Activity

In Yom Kippur the Jews believe that God measures a person's balance of good and bad deeds and thus determines if he is worthy of living for another year. I am pretty sure, that the values I produced in the recent year (i.e: my good deeds), exceed the values I consumed (i.e: my bad deeds). Nevertheless, I have decided to go over the blog entries I wrote in the past year and see what I did well, what I did wrong, and what I can improve.

First of all, I'd like to say that I was dazzled by all the productive things I did. I certainly can congratulate myself on that. A trend in the past year was for me to also contribute to large-scale, non-individualistic projects like Subversion or GIMP, and I hope to continue in it. My biggest mistake in the past year was the post to the Joel on Software forum about my Technion Grades. I'll know better than that next time.

Article Writing

I wrote a new version of an old article, and sent it to a few selected reviewers. As a result, I received three (!) messages saying they are no longer interested in receiving such articles. I was a bit distressed, but then I understood that I should send the articles to people who volunteered to do so, at first. That's what I did. I posted a notice about it in Whatsup and received several E-mails from people who were interested. (some of the comments simply attacked me, but that is besides the point).

So now I'm sending them messages. So far, I did not receive any reply, but at least I'm not walking on people's toes.

Events

There was a Telux meeting where I gave a lecture about Freecell Solver. There were only two people who attended it besides me, but it was still a lot of fun, and people said it was very interesting.

There was also a TAU-Sec meeting. This time they also bought drinks and refreshments. The first presentation about Intrusion Detection tools was very interesting. In the second one, the speaker was heavily non-fluent, probably because of excitement, so I left early. But there was heavy attendance.

Work on the Home-Site

I've done a lot of work on my home-site lately. Reading from the news I posted about it:

  1. I added the "Stop Software Patents!" nag image to all my pages and a top frame to the front page.
  2. There's a new code for the navigation menu. The old code was an unholy mess, and the new code is a pure Perl one, which makes the nav-menu much easier to maintain.
  3. Thanks to the new navigation menu code, there are now Mozilla/Firefox navigation links, that allow traversing the site page by page. For those who are unfortunate enough not to use these browsers, some rudimentary arrows were added above the navigation menu.
  4. I now have an Uber-kitchy leading path of the page sections and sub-sections at the top.
  5. I'm now giving private lessons in high-school subjects and computer-related topics.

Later on, I added more pages. Things I still need to do are:

  1. Add Alt+P, Alt+N, Alt+U key-bindings to traverse the site.
  2. Add a nice news items summary news box at the top with the site news. Also create an RSS feed for them.
  3. Create a site-map page.

Enjoy!

Upgrade to Mandrake 10.1 Community Edition

I downloaded the Mandrake 10.1 CE CDs, and placed all the RPMs in one directory. That's because I did not know where I can find a network repository. Then, I created a urpmi media for them. Afterwards I ran the command urpmi --auto-select --auto overnight. This eventually caused the computer to become unresponsive. (I still blame the Britney Spears wallpaper I placed on IceWM, when I did the installation for that.)

After a reboot, I initiated the command again, this time with a different girl on the desktop. This time it's worked. I rebooted again to use the new kernel, and everything was OK. 10.1 CE is more polished than 10.0 and has fewer bugs. (albeit there are a few new minor ones). I'm very happy with it.

For the occasion of the upgrade, I changed all the wallpapers of the virtual workspaces. Desktop 1 now has a picture of Jaime Pressly. Desktop 2 now has a photograph of a squirrel that ladypine took in her last OLS trip. Desktop 3 has a picture of Beth (see above). Desktop 4 has a 3-D model of a tree with a reflection in the lake, out of the Book of Beginnings. Desktop 5 still carries the picture of Melissa Joan Hart with the background of automn leaves. Desktop 6 has a picture of a Chinese girl from a computer game (found in the Unforgotten Realms Wallpapers). Desktop 7 has a photo of Kate Beckinsale. And Desktop 8 has a picture of Charisma Carpenter covered in the American Flag.

New Story Update

The new story is progressing nicely. I already received one relatively positive review of it from my cousin, and a laconic remark from someone else who I referred it to him, and just said he did not like it too much. But still, it isn't finished, so I'm unwilling to show it to the world at large.

State of the Onion

I read Larry Wall's recent State of the Onion. It was very amusing as most of the things that Larry has written. I liked it a lot. In any case, he says there that he has been hospitalized for a large part of the passing year (but now he is more or less OK). I hope Larry will stay in a good physical condition.

Story for the Software Freedom Day

I wrote a story about my interaction with Adrian Ettlinger (in Hebrew) for the Israeli story contest of the Software Freedom Day. As for activities in this day, we wanted to have several stands in various shopping centers, but we did not have time to organize anything, because it was on such a short notice. I hope we'll have a better luck next year.

The Olympic Games

The Olympic Games are over. Israel has won its first Gold Medal by Gal Friedman. One thing that impressed me was the speed in which some of the gymnasts moved. They did it very quickly. In any case, I did not watch too much of it, and spent most of the time working on the computer.

HTML Navigation Menu

After a long time of neglect - I started working on the unified HTML navigation menu interface. I am basing my work on HTML::Widget::sideBar. However, it seems that the added benefit of it was very little. It is possible writing the relevant logic from scratch would have taken me less time, than trying to find out how to work around its idiosyncrasies. At the moment, I have patched H::W::sB, sub-classed it and wrote a lot of logic on my own.

Still, what I have now functions pretty nicely, and I'm making more progress. So I'm a dumb-ass but optimistic.

Welcome to Linux

I started preparing the Blitz lecture for the upcoming Welcome to Linux series. This year, we aim for it to be conducted (at least partially) by three clubs (in Haifa, Tel Aviv, and Jerusalem), and so it requires quite a lot of organization. Aside from the lecture, I was also placed in charge of the site.

Movies

I went with my dad to see Shrek 2 in the cinema. It was very entertaining, with a very high-quality animation, and very funny. There are many parodies of other films embedded in it. I also finished watching Spiderman 1 in the DVD. It was very entertaining. It seems that I liked most of the Comics-based films I have seen.

Mozilla Firefox - A War Story

I decided to give Mozilla Firefox a try. So far so good. However, after downloading the latest 0.9.x release, I encountered a case where installing a certain plug-in did not work. This has caused me to try the trunk release (where some things could not be installed because install.rdf was not supported.) and one of the branches release (where some things also did not work). Eventually, I returned to 0.9.x and managed to install everything I needed.

Firefox is a better browser than Mozilla Core. It is faster, and gives one better control over the extensions and themes. (you can easily update or uninstall them). Very nice. Other than that, I discovered the Web Developers Extension for Firefox and Mozilla. So far I used the PNH Toolbar, and I must say that the Web Developers Extension gives everything PNH gives and more. It also eliminated one thing I used Opera for - validating a web page by uploading its content.

Talash' Mandrake Woes

Michael Perelmutter (aka Talash) has recently bought a new computer and wanted to install Linux on it. He tried Mandrake for a while, then SUSE which he decided he liked better. However, SUSE had some problems, so he tried Debian, which did not work either. So, he returned to Mandrake. Now, when talking to him on the ICQ, I learned that the network card did not work (despite having worked perfectly the previous time he installed Mandrake) , and so I dropped by.

The first thing I tried was to see if I can configure the card manually using /sbin/ifconfig and /sbin/route. This worked perfectly. Then, after a lot of tweaking, we realized the problem was that Mandrake was using an "ifplugd" thingy to control the card, which was not compatible with it. Quickly setting the rather obscure MII_NOT_SUPPORTED flag in /etc/sysconfig/network-scripts/ifcfg-eth0 (not in /etc/sysconfig/networking as I previously thought) did the trick. We then had a problem that /etc/resolv.conf was filled with the address of the router. This was solved after the correct DNS servers were inputted manually, and a reboot.

After that, I just showed him to use Easy URPMI to set the sources of the packages, and as he was about to leave, we started updating everything using MandrakeUpdate. The GUI tools turned out to be incredibly unhelpful in getting the network up and running, but they were reported to buggy in this release of Mandrake.

O'Reilly-Net Article

I finished writing another article for O'Reilly-Net. It has good prospects of being published, but I did not get any reviews for it yet despite having sent it to some of my friends, and the OnLAMP.com editor. If you have some spare time and wish to review it, drop me an E-mail and I'll send it to you.

Events

I've been to two Tel Aviv Linux Club meetings. In the first one, gby gave a nice presentation about Asterisk - an open-source solution for managing phone networks. I enjoyed it very much. In the second one, mulix and ladypine gave an entertaining and enlightening presentation about the latest developments in the world of the Linux kernel, as seen through attendees of the Ottawa Linux Symposium.

I just returned from an Israeli Perl Mongers meeting. Uri Bruck gave a presentation about using Perl to automatically fill OpenOffice forms. It was very nice. He chose to use XML::Simple, and it reminded me of how much I generally hate it. Then Gabor, first explained about the status of the Perl community in Hungary, and then about how can one contribute to Perl. I did not attend the last presentation to its end because the person giving me a ride had to go to catch a movie. Hopefully, I can read the rest of the presentation online.

21 Aug 2004 (updated 30 Aug 2004 at 18:44 UTC) »

Advogato

Certified bagder as Master for his work on curl and other things he has been involved in.

I also wrote two new articles: an interview with Ben Collins-Sussman and Bazaar-style Movies Revisited.

Slashdot Commenting

It happened! I posted a few comments to Slashdot. Here's one that is a joke reply to another joke that was posted. It was too late for it to be rated highly. Another is a question to ask Sam Greenblatt about Ingres. The latter was rated 5 and marked as Interesting.

kilmo, I think I'll join your support group. "Hello, my name is Shlomi and I posted a comment to Slashdot that was rated 5 and marked as Interesting."; "Hello Shlomi! We all love you!".

RSS Aggregator

I installed akregator for KDE. The installation went very well, and I installed from source and could not find an RPM. I now got used to it, and can no longer imagine living without it. (periodically visiting web-sites - how barbaric!)

Karma Games at FreeNode's #perl

This is a log of FreeNode's #perl channel with some heavy karma games. Namely I asked Chris62vw (perlbot's maintainer) for a feature which displays the top (or bottom) karmas, and he decided to implement it on the spot. And there was a lot of other silly discussion.

Hackers-IL MediaWiki

I set up a MediaWiki for Hackers-IL. It was surprisingly easy to set up, and worked very nicely so far. Then, I created an Emblem for Hackers-IL based on the Hackers Emblem by ESR, and the Israeli Flag.

I filled the wiki with a lot of content, and other people have created pages there of their own. It now also proves useful for coordination of W2L.

I wanted to use the Creative Commons Attribution-Only License for it. But it seems more people would like to use the ShareAlike one which is good too.

Events

There was a Telux meeting about bootloaders by Ori Idan. He used PerlPoint for the first time for this lecture and prepared it in a haste, so he had a few glitches which I took record of some of them in my notebook. (and sent it to him after the lecture). The lecture was under-advertised and so we were only five people there. I think it would be a good idea for Ori to give it at a later date.

Still, the lecture was very interesting, and some things raised some discussions. Ori is a good lecturer.

There was also an Israeli Perl Mongers meeting which was very nice. There's a report about it in the link.

Books' Exchange with Talash

Michael Perelmutter ("Talash") is a really nice guy, who attended the TAU-Sec lectures and escorted me on the way back home as he lives nearby. While talking on IM, we decided to exchange books. So he dropped by my house and gave me two Discworld books. He and I went over the house looking for good books he did not read already. (He already read Sherlock Holmes, the writings of Lewis Carroll, Jules Verne, and lots of other things I had to offer.) He eventually took the following books:

All in all, it's nice to meet such new people.

New Story

Ssssshhh! Don't tell anyone, but I'm writing a new story. Surprisingly, I got the idea for the entire plot almost at once, and lately have been cutting some lose edges in my idea. (extraneous characters, etc.) The story is written in English, and focuses on high-school teenagers at present Los Angeles, California.

It talks about one female open-source hacker who is a full guru, but a self-made social outcast, and a punk, who tutors a female hacker wannabe, (who is also the narrator of the story) who is a pop-culture and very solid girl, who's at first only interested in open-source so she can get to a good college. There are then other twists to the plot.

Hopefully, I'll finish the story in time for the Free Software Day, but I cannot promise anything. If you'd like to receive drafts of this story by E-mail, let me know and I'll put you in my distribution list.

10 Aug 2004 (updated 10 Aug 2004 at 10:45 UTC) »

Newborn Second Nephew

My cousin and his wife had a baby a couple of weeks ago. They called him Matan, and the celebration of the Brith was after a while. The food there was good. At first the songs were quite cheesy and the volume was very loud, but afterwards, they both improved. As usual in such occasions, the mother of the newborn, recited a cheesy poem she wrote. (I really would have preferred a a simple, non-verse, speech). I met there many of my relatives, and also met the daugter-in-law of my aunt (a different one) for the first time. I wanted to talk to her, but couldn't because of the loud music.

Tau-Sec Meetings

I attended the first two meetings of the TAU Security Forum. The first meeting feature Noam Ratheos (of Beyond Security) in a presentation about Port Knocking. I met some familiar faces there, including Xantia. This was the first event I saw her attending for a long time. The presentation was very interesting, and introduced me to this new security technique. After the presentation, Chen, Adi Stav, another guy called Michael "Talash" Perelmutter and I went to a local Cafe to eat supper and talk. We discussed many topics. It turned out Michael lived right next to my house, so we walked together, and he gave me his contact information on the way.

The second meeting took place this Sunday. It started out with a general 1 hour discussion about Spam, conducted by sun. The discussion was interesting, but it did not touch the surface of this complicated subject. Then he gave a presentation about Cross-Site Scripting exploits and SQL injections. It had a somewhat slow start, but got better after the break. I did not learn anything new, but it was still fun seeing the exploitable code written and the exploits done in real-time.

Chen wasn't there, but Michael was and we walked all the way home, and this time ate Falafel at a restaurant close to my house. Michael and I exchanged a few E-mails since we met, and it's always nice become aquainted with someone new.

Too Little Time

When it rains - it pours. When it shines - it is blazing hot. I was quite bored some time ago because I did not want to do anything. Now, however, I don't have enough time to do everything. There are so many things I'd like to do, and projects I'm involved in, and it seems that I don't have enough time. What I do is work a bit on one thing, and then switch to another. I seem to be multi-tasking very nicely like that.

More GIMP Work

I've done more gimpressionist cleanups and bug-fixing. Take a look at the GIMP's ChangeLog for more verbose information. Now perhaps the only thing left to do, before making some overhaul changes, is to rename more variables into more meaningful names. (most of them are already renamed), and fix the rest of the bugs in the bugzilla.

I also helped David Odin (aka dindinx) with converting plug-ins code from the depracated GtkPreview to the newer GimpPreviewArea widget. I discovered a bug in gflare while I was doing the conversion.

Finally, I wrote a fix to a minor but annoying bug, and it was applied yesterday. The fix was quite complicated though.

Telux Lecture: Bugzilla for End-Users

Shoshannah Forbes gave a presentation about using Bugzilla for the Tel Aviv Linux Club a week ago. The lecture was entertaining and also taught me some new things. Nothing more to say - sorry.

Wikipeders Meeting

The Hebrew Wikipedia maintainers held a meeting some time ago, to celebrate its one year anniversary. Out of the people who attended it, I was only familiar with Shoshannah Forbes and with Ofer Weisglass. Another thing that alienated me was that I barely touched the Hebrew version and just contributed some stuff to the English resources.

Still, the people there were friendly and many discussions embarked. One of the things that was said there, that although the Hebrew Wikipedia is quite limited in size, it is statistically among the first, in the average length of the articles, and the number of times each one was edited. This is still a good accomplishment.

August Penguin 3

The yearly meeting of Israeli Linux Enthusiasts this year, known as August Penguin, took place last Friday. I got up early and was given a lift there to help with the reception. There I met some of the organizers (many of whom I personally know), and was assigned as one of the three reception people. Many people have arrived and there was a long line. But eventually, Arik Baratz, ladypine and I handled all the early comers, and we were free. Among the people who attended the conference, I saw for the first time, two people whom I knew from online but never met face-to-face: Yotam Rubin (who created and maintained the Freecell Solver Debian packages in their beginning), and Diego Iastrubni (who translated Mandrake Linux to Hebrew, and is now translating KDE).

I started attending the first presentation about Co-Linux, did not find it very interesting, so I went out and instead hanged around in the lobby. I met some familiar people with, and had some short conversations with them. Then came the time for the second presentation, (about Embedded Linux) so I sat on the floor, and listened to it. It was quite interesting, but shortly afterwards I was volunteered to man the Hamakor stand, and sell CDs to people (and give away one free to those who were already Hamakor members). This consumed most of the day until the key-signing party, and I missed the geek trivia, the prizes giveaway, and the second presentation.

Despite the fact that I missed most of the attractions, I had a very good time, and enjoyed the conference a lot. It was also very successful as 240 people attended it, more than twice than last year.

Here are some English reports of the conference: by RRX, by Haggai E.. And some Hebrew ones: by Orna Agmon, by HeyYal, by yehuda, by an anonymous penguin, in the press.

GPG Script

The August Penguin key-signing party was conducted in a way that the a file containing the fingerprints was distributed to everybody, and was verified to be correct by its SHA1 hash. Then, mulix, who organized it made the keyring available to the public. Now the question is whether the signatures in the keyring are the same as those in the file.

To resolve it, I wrote a script that checks the signatures in the file and verify that they are the same as those reported by GPG in the key-ring. You can freely use it under the terms of the MIT X11 license.

Using it I signed the keys, by first running it, and then using kgpg (part of kdeutils) to sign all the keys at once. Truly an improvement over last time, where I signed each key individually, using my password like a zillion times.

Better-SCM Work

I went over the E-mails that were sent to me regarding the Better-SCM site, answered them, etc. I lost interest in it for quite a while and now I have a renewed interest. Another thing I did was revamp the code that renders the comparison. At first I had two very similar scripts, one that converts the custom XML grammar to HTML, and the other one that does the same for DocBook. So, the duplicate code was eliminated by using some common Perl classes. Then, I wrote an XSLT transformation for transforming it to HTML. For help I referred to Norman Walsh' tutorial, and to someone very knowledgable on FreeNode's #xml channel. The resultant transformation was pretty nice, and I found the experience to be quite enlightening. I'm looking forward to working with XSLT more in the future.

Advogato

I certified bolsh as Journeyer for his work on the GIMP.

19 Jul 2004 (updated 19 Jul 2004 at 19:27 UTC) »

Installing GIMP 2.1.x

To keep up with GIMP development (also see below) I needed to install GIMP 2.1.x from the CVS Head. So far so good, only that it requires Gtk-2.4.x, while Mandrake 10.0 ships only with version 2.2.x of it. I decided that in order to not mess too much with my system, I'll install it (and all the other dependencies) in a separate /usr/local/apps/gtk-2.4.x prefix.

So I started downloading and compiling everything with the --prefix flag, but then run into a problem. When compiling gtk+ (after compiling its dependencies), I got:

/home/shlomi/Download/unpack/gui/gtk+-2.4.1/gdk/.libs/libgdk-x11-2.0.so: undefined reference to `g_unsetenv'
./.libs/libgtk-x11-2.0.so: undefined reference to `g_type_instance_get_private'
./.libs/libgtk-x11-2.0.so: undefined reference to `g_completion_complete_utf8'
./.libs/libgtk-x11-2.0.so: undefined reference to `g_param_spec_get_redirect_target'

Someone on the IRC told me that it was because it linked against an older version of glib. After some grepping the .la files, I found out that the atk .la file contained a reference to /usr/lib/glib. (the global un-upgraded glib).

Eventually I realized that I had to use the following script for compiling atk:

#!/bin/bash
export PKG_CONFIG_PATH=/usr/local/apps/gtk-2.4.x/lib/pkgconfig/
export LD_LIBRARY_PATH=/usr/local/apps/gtk-2.4.x/lib:"$LD_LIBRARY_PATH"
LDFLAGS="-L/usr/local/apps/gtk-2.4.x/lib" ./configure --prefix=/usr/local/apps/gtk-2.4.x/

That solved the problem. Afterwards, I had to install some support libraries that GIMP required. I eventually opted to use --with-svgz=no (no gzip compression) for librsvg, because otherwise it required a bootload of dependencies.

Eventually everything was installed, GIMP was compiled fine, and I was able to continue hacking on it.

Gradient-Fu Patch

As the GIMP 2.1.x development started, integrating my gradient-fu patch was one of the first priorities. This patch, as you may remember, supplies the GIMP with PDB entries to manipulate gradients. So, early in the GIMP 2.1.x tree, Michael Natterer integrated the patch into the GIMP (with some cleanups and modifications to the API). Then, when I wanted to adapt a script I wrote to it a while back, I discovered it did not have functions to actually manage the gradients list (create, delete and rename gradients). So I wrote one, and Naterrer added it after some modification.

I also adapted my old "Rainbow Strips" gradients' demonstration script to the new API. I also performed some general cleanups to the otherwise amateurish Scheme code I wrote back then. (not knowing better). It was eventually ready, but I don't think it's in the Gimp CVS head yet.

My sister and UNIX

My sister Noa had some C-shell assignments in her homework as part of her "Introduction to Systems Programming" course. I helped her in it. While I did that I explained to her about using basics: wildcard expansion ("*" into all files), program return code, argument values, etc. I also demonstrated some bash paradigms to her, and kept tauting its superiority over csh.

Some time ago, a record was broken: both my sisters were at the working room, and both were working on the Linux system, while I did not and could not. Michal was playing the KDE game Kolor Lines on the desktop computer (where the Linux system is installed), while Noa was using a VNC connection for her homework from the laptop. Amazing!

Job Interviews

Having graduated from the Technion, I'm now looking for a job. I've sent my C.V. to job ads in newspapers, the Internet, etc. and renewed my availability in various human resources agencies. So far, I had 4 job interviews.

The first one was for the DIMES project, which is a project in Tel Aviv University, that aims to map the Internet, by volunteers installing clients on their computers, and using them to send information to the server which will concentrate them. I think the interview went pretty well, but they did not contact me since. (they had other candidates) Tel Aviv University is very convenient for me, as I was able to walk there from home.

The second one (that took place last week), was at a startup called DiskSites. They manufacture an embedded Linux box that caches files that are transported over remote-file-service protocols (like SMB) over a WAN connection, so there will be less latency. The interviewer talked with me a bit about my past and then asked me a few technical questions. I did pretty well at it.

Today, I had a second job interview there, with the CTO (if I recall correctly). He asked me about my professional past and wanted to learn some things about my personality. It also went pretty well, but since they probably have other candidates, I'm not sure I got the job. He told me that they will let me know what their final decision regarding my employment is, at most two weeks from now.

Then, I had a job testing application at a company called Flash Networks on Tuesday. The questions there were challenging, but I did well on the test. ( except for the last question which required some TCP/IP zen). An employee there called lately, when I wasn't available, but I don't know exactly when . I know it because I saw a sticky note my Mom wrote for it.

Due to the fact that there are still more people looking for jobs, than job openings, finding a job may take some time. I just have to be persistent and not give up.

(BTW, the DiskSites office is located at Azrieli Center right next door to Qlusters, which is a past workplace of several friends of mine - sometimes nicknamed "Clue-less" by them.)

Bike Incident

One day when I was biking, I stopped at my usual place next to the water fountain in the Yarkon Park. An Arab kid approached me, and kept requesting me if I could let him have a ride on my bike. I told him I was just drinking water and that then I'll go on. Still, he kept insisting. Then he asked me if I had a pump to fill the air in his bike's wheels. I did, so I helped him fill some air there.

While, I filled some air, he got on my bike (without receiving my permission), and rode it. I think he was too short for this bike, and he also rode on the lawns. But he eventually came back, thanked me and jokingly asked if we could switch bikes. This wouldn't have worked, naturally, as his bike was far too small for me.

Ahh! Kids these days...

In any case, my bike had a few other issues since then. First of all, I changed the tire of a wheel, because the previous one got veryworned out. Now, there's a problem that the pedals are jumping, and I have to take it to the bike fixer.

Installing Maypole

I was considering writing a better NNTP reader for the perl.org newsgroups/mailing lists. I asked for help on FreeNode's #perl channel, and was told that the Maypole framework can do a lot of the things I'm looking for. One can also write a NNTP driver to it, so it will read things out of NNTP. So I set up to install it. Well, easier said than done.

Typing install Maypole at the CPAN.pm prompt failed to do the job. Eventually, it turned out I had to install a suitable driver for the DBI (for SQLite or whatever), and to temper with libapreq to get Apache::Request (which I think I eventually installed from RPM). Eventually, all the modules were installed, but getting the sample application to run was also problematic. I had to configure Apache accordingly. Afterwards, it turned out I missed the part in the documentation where I had to put the templates, in the appropriate path, and without it, it refused to work..

Then I got it to work, but the site looked considerably uglier than the screenshots at the Perl.com article. Possibly tweaking the templates and the CSS stylesheets will make it look better.

Maypole has a whole slew of dependencies and I was afraid the perl.org admins won't be willing to host an application written with it. I e-mailed them, and they told me it was relatively OK, but that there were other tricky parts.

I did not yet get to writing the NNTP interface because I was busy in other things. Maybe I will, sometime.

Perl Zen

I never really understood what was the difference between the ".." and "..." Perl operators. So, one evening I set out to understand it. I read the perlop man page again, and consulted people on the IRC. It turns out that with .. both states can change at once, while with ... the true one needs to change by himself. I wrote an example to illustrate the difference, and sent it as a patch to perl5-porters. It was incorporated immediately, which made me disappointed.

Hebrew Common Errors List

I started preparing a list of common grammatical and syntactical errors in Hebrew. (the page is in Hebrew (naturally), sorry) After I finished some of them, I posted a message about it to the Hebrew translation mailing list, with a small rant saying that I was tired seeing errors like that times and again on Hebrew forums, which was why I wrote the article. Some reader of the translation list has Whatsupped the document, which caused an active discussion (if not flame-war). Some of the comments there were useful, but not too many. I think I'll continue working on the document, and hope it won't get whatsupped again, without me initiating it.

Gimp Gimpressionist Work

Gimpressionist is one of my favourite GIMP plug-ins. What it does is take a picture and paint it using a specified brush and other parameters. A few days ago, I noticed it did not have a usable GIMP Procedural Database entry - you could not even specify one of the pre-defined preset. So I set out to correct it and sent this patch. It was eventually applied by Michael Natterer.

As I did, I noticed that the gimpressionist code was very messy, and started to clean it up. I refactored it heavily (reminded me a lot of Joel Spolsky's Rub a Dub Dub article) and also fixed many bugs. Most of my changes were incoroporated into the GIMP CVS by Michael Natterer or Sven Neumann. Eventually, they saw that I was consistent enough, and gave me a CVS account.

So now I can incorporate things on my own. There is a certain modified version of gimpressionist available (of before I applied my modifications), by Bill Skaggs that has some interesting ideas. I'd like to look into doing something similar starting from the current codebase.

As a long term goal, I thought that instead of generating a bitmap, that it could generate an SVG ("SVGimpressionst"), with one component for each stroke. Skaggs liked the idea quite a bit, but it's just long term.

Technion Graduation Ceremony

My father, my mother, my sister and I attended the Technion graduation ceremony. It was scheduled at the exact time of the Israeli Perl Mongers meeting and so I was not able to attend. Instead, I went to see the ceremony.

Before the ceremony began, I met Eran there, who returned my "Programming Perl" book which he borrowed. We talked a bit, and it turned out he graduated with an average of 85%-86%, which was only slightly better than mine. I expected his average to be considerably higher than mine. He left before the ceremony started, because he did not want to attend it.

The ceremony was split into two parts: the Technion-wide ceremony, and the ceremonies of each department. The Technion-wide ceremony started by the Academic March of the various deans in their black graduation suits (a few collar colours were missing though). It was followed by speeches by various people. One of them told quite a few old jokes (and not very well). There were also some performances by Technion students of three songs ("Take a Wife and Build a Home for Her" by Shalom Hanokh, "In My Life" by the Beatles and "A New Beginning" by Yehuda Poliker). I like these songs and the performances were good, so it was quite nice.

What was stressed was that the Technion governmental budget has been heavily decreased, which placed its future in jeopardy. A part I really liked was that one of professors said, that although only some of the students were cum laude students ("excelling" students in Hebrew), due to the Technion academic requirements, all graduating studnets were excellent ones. I could not agree more, but I still think there are many unnecessary frustrations in Technion studying, that can be eliminated, without lowering the academic level. Another thing that happened, was that the Summa Cum Laude students were awarded the degrees before the rest.

Then came the department ceremony. The department's dean speech was amusing with some nice jokes. (like "I know you are anxious to receive your degree, and I realize the only thing that delays that is me speaking here"). Then started the long process of giving the degrees: first to the Summa Cum Laude students, then to the Cum Laude ones, and finally to the other students.

When I was giving my degree, the dean asked me what I was doing now. So I told him: "Looking for a job, and working on Open Source software". :-)

I recognized a few students I knew, which was nice. As the ceremony progressed, my father started jokingly shooting the first names of the students who received the degrees, to cheer them. That was quite silly of him, and he knew it. Eran's name was given, somewhat after me, but he naturally, wasn't there to receive the degree.

We returned home, taking the road behind Mt. Carmel. (to avoid the traffic jams from the rest of the graduates). On the way back, we stopped to eat McDonalds' at Yoqne'am. We arrived home quite late.

Perl.org.il Variable Naming/Tabs vs. Spaces/Editor war etc.

Check this thread on the Israeli Perl Mongers mailing list for an amusing and long thread that discusses editing conventions. (variable naming, code style, editing features, etc.) It's hard to summarize and has many amusing parts so just read on.

Subversion's get_locations() Patch

The Subversion get_locations() patch monolith was applied into the Subversion trunk (after some rework) by Peter Lundblad. I'm happy it finally was, because I invested quite a lot of work into it.

Telux Lecture

I gave a lecture in Telux which was a re-run of my Haifux' Autoconf/Automake/Libtool presentation. Before the lecture, Eran called to inform me he had an interview in my area, and would like to meet. I told him I was going to give a presentation and invited him to hear it. He had some problems in getting there, but eventually attended it.

As far as I could tell the lecture went quite well. A few questions were asked and answered, and I was able to give some interesting demonstrations. (which were quite missing from the early one). Among the things I learned was that there was no strdup() function in the ANSI C89 standard, and only in C99 and in most UNIXes. This explains Autoconf has a macro to check for it.

After the lecture Eran and I went to Kanyon Ramat Aviv to grab a byte. On the way, while we were eating and afterwards, I told him about the history of UNIX (AT&T UNIX, the BSDs, System V's, GNU, Linux, etc.) and other things. Then we went to meet his sister, and as she was in Tel Aviv, but not familiar with the geography, we walked all the way to the Train Station (a very long walk, where I decided to escort Eran, even though my home was in the opposite direction), after which we had to walk somewhat more, and to enter her car on the road. I instructed them how to drop me at home, and to get to the Haifa highway.

It was nice meeting Eran again, and the lecture was also a fun event.

C++ quirks

My sister has to prepare a C++ assignment for her homework. I instructed her how to do it, using what is left of my quite rusty C++ knowledge. One thing we tried was to use qsort() with giving as a callback an instance of a template function. This worked perfectly in g++ 3.3.2 on Linux, but Visual C++ 6.0 gave some weird compilation error, which we could not understand. One guy on the IRC (FreeNode's #c channel) just instructed us to use a newer compiler. It's weird that there is this limitation, even in this version. It also worked fine in a newer version of DevStudio.

Eventually, my sister resorted to working on it on Linux, using VNC. The assignment needs to work on Solaris with gcc, so it isn't required to make sure it runs nicely on older versions of DevStudio.

Perl Zen (2)

Yesterday, I attended a FreeNode #perl discussion where someone (calling himself simcop2388) was trying to figure out why his Perl code was failing. It was generating some kind of regular expression to parse Assembler code, and Perl indicated there was an error in the regex. The error reported was of an extraneous ")" character right at the end.

To find out what the problem was, I wrote a perl Module, that overloaded the strings constants, by putting them inside classes with an overloaded "." (= string concatenation) operator. I logged all the places where it concatenated two strings with the right string ending with ")", to STDERR.

After a while, I detected where it happened. The offending code looked something like this:

my $string = "(";
foreach (@elements)
{
    $string .= myfunc($_)."|";
}
chop($string);
$string .= ")";

Now, chop will remove the last character, but if there are no @elements, then it will remove the beginning "(" and we get an extraneous ")". A more correct way, is to either collect all the strings in an array, and use join, or to use $string =~ s/|$//;.

After that, the error was corrected. I experienced some other random errors, because I continued to use the module (which caused some random string escaping problems), but after I removed it everything worked fine.

Anyway, simcop2388 was so impressed from what I did that he eventually said: "rindolf, you are a fucking god." (rindolf being my IRC nick). I received many compliments in my life, but it was the first time I was labelled a god (and a f**king one as such...).

Review of the Gtk+ 2.4.x File Chooser

I wrote a rant^H^H^H^H review of the Gtk+ 2.4.x file chooser and planned to post it here as well as on my site. However, after I've shown what I intended to post here to the good people at #gimp, I received some valuable input including a reference to its informal specification. So I'm still relative unhappy with its usability and "intuitiveness", but will have to revise my report in accordance with the new things I've learned. So, stay tuned.

Advogato

Certified lewing as Master for his work in Ximian, and naturally for creating the super-important Tux the Penguin image. ;-) Certified neo as Master for his work on the GIMP. Ditto for carol to Journeyer, and mitch to Master. I certified vidar as Journeyer for his work on gimpressionist and gimp in general.

I think I'm a good Advogato citizen in the fact that I certified more people than people certified me. Have you certified an Advogato personality, today? ;-)

Meta

Advogato is back again! Finally... Well, I have one really old entry that was prepared but not posted, and another one which I started preparing and have not posted yet. I guess I'll post the older one, and wait a few days before I post the new one. I actually thought of temporarily putting them on my homepage. Now there's no need.

Note that this entry is dated 27 May, 2004. So all caveats apply.

Studies

The department's secretary finished dealing with my degree and informed me to contact the student's center. There I was informed that I still needed to return a magnetic button to the faculty. So on one day, I took the bus to the Technion and returned the button. Then, I was informed that everything is OK, and then an approval of the degree will be sent in a few days.

It arrived in the mail a few days ago. I graduated from the Technion with an average of 84.6 (higher than what was on my grades' list), and it was said there that it is "with honours". So I am finally a Technion Graduate.

Clock Skew

Two of the computers: my desktop computer which is dual boot Linux/Windows and the Win98 laptop, encountered a one month ahead clock-skew. From late April to late May. To fix it, I wrote a Perl script to scan my home directory, and modify the files's access time and modification time to their appropriate date, using the utime command. (which I learned about from good people on the IRC).

For the KMail mailboxes I had to write a different script that would convert the dates in the messages to their appropriate dates. I consulted the #perl guys further on this to learn about the format of maildir mailboxes. After that, everything worked fine.

Nvidia Driver

The recent version of the Nvidia driver, which I tried to compile barked on me saying it was unable to compile it. To understand what was wrong, I unpacked the package, delved into the source, and tried to figure out why it refused to compile against the source tree.

Eventually, I discovered that by setting the SYSSRC environment variable to /usr/src/linux, I could make it detect the kernel source tree there, and build itself. This took me a long time, however, and the kernel source tree was located in the standard place. This really shows that it is high time the Nvidia drivers were GPLed.

Subversion: BDB 4.0 vs. BDB 4.2

I discovered that Subversion on my local workstation still used Berkeley DB 4.0 instead of Berkeley DB 4.2. To fix it I had to fully mess up with the ./configure flags of the depenedencies to get it to use BDB 4.2 instead. But I was able to eventually.

After I did it, I tried to process the repositories of stalker with my local copy of subversion. It did not work. Someone at #svn told me that it could be because of a different libc or whatever. "Berkeley DB compatibility is subject to planetary arrangment.".

Israel.PM Meeting

The meeting occured a long time ago, and since then I forgot a few things. I recall it was a hot day, and that we mingled outside the building. We collected money to buy snacks, and were dismayed to discover that the shop we bought the drinks in moved to a different location, and we had to settle with the water fountain inside.

Pinkhas Nisanov gave an interesting presentation about TRIZ - the theory of inventive problem solving. I could not quite understand how to actually use it, but it ended with the subset of the 40 basic principiles for contradiction resolution, which were pretty interesting. Pinkhas brought with him two guests from the Israeli TRIZ association, which left after his presentation.

Then Gaal Yahas gave a presentation about using Perl as an interaction language in a Java environment. He described a commercial system written in Java for helping to manage Internet equipment, and showed how he used Perl to parse and process Java code, generate an equivalent Perl code (with accessors and all), and then use it to perform queries at run-time. There was also some XML involved there, in the queries and reports. It was pretty interesting.

I was able to lend the "Design of Everyday Things" book to Yuval Kogman, and also to take a book: "Design and Analysis of Algorithms". I started reading the latter, but decided I was not interested in reading it and so just left it on my desk, and will return it the next meeting.

Telux Meeting

There was a meeting of the Tel Aviv Linux Club about two weeks ago. Mike Almogy gave a presentation about Web Hosting. The presentation was interesting but a bit unfocused. The main problem was that there were many technical glitches throughout the lecture. First of all, he was unable to connect his laptop, then we had to call the building's supervisors to log in into the computer for us. Finally, after the break, the computer was locked with a password and we could not use it again. This all happened because Eddie was away.

I was supposed to get a username and password there, but unfortunately, I couldn't reach Eddie in time. Hopefully next times would be better.

iglu.org.il Upgrade

iglu.org.il was upgraded, from RedHat 6.2 (!) to Debian Stable about two weeks ago. The upgrade itself was done on Friday, and on Saturday, the machine responded. I was able to login as root and create an account for myself, but then the password was changed. To get the password, I sent the old one to sun encrypted with his GPG Public Key. He sent me an encrypted message back with the new password.

After I got the password, I was able to restore my home directory, as well as restore accounts for some people who contacted me. Finally, and most importantly, I restored the web server. This involved quite a lot of work, as Debian is incompatible with RedHat as far as the httpd configuration is concerned. I had to start with the old configuration and gradually convert it to the new one.

What gave me trouble was the fact that I used a few CPAN modules in an application I wrote for the server. I tried to use the perl CPAN.pm module, but it turned out that outgoing connections were blocked. Someone found one of the modules (CGI::Application) in the Debian Packages pool, and I was able to install it using apt-get. But then I discovered it was an old version of the module, while I was using a newer feature. So I installed the new version of the modules I needed on the script's local directory, (after scping and copying them - %-)), and then it worked.

stalker

stalker.iguide.co.il experienced some hardware problems, but was restored a few days ago. It then turned out all the binaries I compiled there could not run because they complained on an incompatible libc version. So I had to recompile everything (Berkeley DB 4.2, Apache+libapr, neon and Subversion).

I had a few problems with running the programs after everything was ready. Strangely enough, they were resolved after a few recompilations. Then, however, I found out that the old repositories could still be accessed by the new configuration there, which was nice.

Subversion Hacktivity

I've been doing some Subversion bug-squashing lately. In Issue #1771 where paths with identical prefix of components were trimmed by the display of the diff command, I first wrote a shell script to fix the problem, and then wrote a regression test, and a fix, based on what was suggested in the issue. The patch was eventually applied.

In Issue #1851, I investigated the cause a bit and added a comment there. I also wrote a fix to Issue #1814, which was not applied yet. I also added a comment to issue 1043, claiming it is invalid. Again, there wasn't too much activity about it.

Perl Quiz of the Week

I've been heavily involved with the resurrected Perl Quiz of the Week lately. I've written solution for the two latest regular quizzes. Plus, I contributed an expert quiz. It turned out the latter was an NP-complete problem.

I also sent out another expert quiz suggestion to MJD, which may be submitted some time later, and have an idea for another one.

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