It's been slightly over a month since I blogged here. Part of the reason was that I did not feel I had much to blog about. Well, I hope this entry will compensate for it.
First for some good personal news: I have a new job. I'm working for Oleh Inc. doing PHP 5 work. The people there are friendly and supportive (and I know one from the Israeli Perl Mongers meetings), it's a 40-hours/week job, and the pay is good. The only problem is that I live in Tel Aviv and the office is in Jerusalem. Thus, I'm working from home most days, and telecommute to Jerusalem two days a week or so. The telecommuting is very time consuming, but I seem to manage it.
So far I was able to complete my first assigned task, after overcoming some technical difficulties I encountered in the process. Now I was given a new task with brand new problems.
Firefox in IceWM
I had a strange problem when trying to run Firefox on top of IceWM which I'm using occasionally instead of KDE which is my usual desktop. What happened was that Firefox de-registered all of its extensions, and otherwise caused a lot of havoc.
So one day I decided to investigate it. I tried running Firefox from the command line and it ran fine. Then I checked what the Firefox in the IceWM toolbar is. Turns out it was an old version that it pointed to a very old version that I installed back at the time, and it kept running it instead of the RPM-based (and more up-to-date) version. So I fixed the toolbar, and now Firefox runs fine. Problem Existed Between Keyboard And Chair.
Fedora Core 5
At work I've had to install and use the Linux distribution Fedora Core 5. It's been a while since I seriously used and adminned a Red Hat→Fedora distro, as I've been using Mandriva at home.
I must say that using Fedora has turned out to be a pleasant experience. The system is stable, fast (at least on an Opteron with 2 GB of RAM that is running in 32-bit mode, which is (granted) a pretty fast computer), and functional. I had to configure and install a few things manually, like mp3-support or the kernel module for reading the NTFS partition. But these were easily doable. (The Unofficial Fedora FAQ was a lot of help, but Google points most of the relevant queries to it anyway). yum seems like a very useful utility, and I grew to like it a lot.
SELinux did not allow Apache to listen to a different port, which I wanted to, and so I set it to Permissive mode. Right now, my main annoyance is that XMMS does not display the length of the mp3's in its queue until they are played, as it does in Mandriva for example.
While I heard some very bad horror stories from early versions of Fedora, but now things seem to have matured, and the distribution to become much more usable.
PHP Propel's fromArray() gotcha
At work, I'm working with Symfony and Propel. Propel is a PHP-based Object-Relational Mapping. One problem that I encountered was the fact its fromArray() function that initialises a record from a PHP dictionary, accepts an optional second argument, that determines how the keys in the dictionary are interpreted. If you want the normal SQL field names (which I did) you need to set it to TYPE_FIELDNAME.
I helped giving the final touches to the Hebrew Translation of the Wikimania Registration Form, which a friend translated. What I did was apply proper formatting, and fix some grammar and phrasing problems. I originally had problems finding the MediaWiki markup for the page, but someone instructed me how to do it, which was very helpful.
In Search of a Better Media Player
I've been using XMMS as my media player since forever. It was the first player I used on Linux, and I've still been using it up to a few weeks ago. But having heard all the buzz of the development of other newer players, I decided that maybe there was something better.
The first player I tried was Beep Media Player X. In order to get the most recent version up and running, I had to upgrade gstreamer, gtk+ and some GNOME-support libraries, and their C++ versions. But I got it running. It looks much like XMMS, but with the playlist having larger fonts (which is a bit annoying). Looking for some help with some problems I encountered with it, I headed to FreeNode's #bmpx channel, and asked some questions, and received some help. ( I helped with fixing a drag-and-drop bug there.). I should note that the equaliser and balance controls of BMPx were disabled due to gstreamer limitations.
I was using it for some time, when I heard of the amaroK 1.4.0 release. Since I thought there may be more to life than what BMPx could offer, I decided to try it out. Version 1.3.1 which shipped with my system crashed a lot so I decided to install 1.4.0 from Source RPM. I took the Mandriva 1.4.0-rc Source RPM and adapted it to 1.4.0. It took some trial and error, but I got it working.
I set amaroK to use the xine plugin, which allows playing MOD files as well as most other common formats. amaroK 1.4.0 is an excellent program. It is very convenient, and has a lot of functions for navigating your music collection, keeping statistics. It can also fetch album covers from Amazon.com, or display the artists' pages from Wikipedia, which makes one's experience much richer. I'm lovin' it.
If you're using Linux and haven't tried amaroK yet, you should. It truly is an exceptionally good program.
A Usable Open Source BCD Implementation
Someone on FreeNode's #perl came and ask a variant of a very shopworn problem. He said he tried to sum up decimal numbers from a database, and got a number close to 100.0 but not quite. I started explaining about the fact that the computer represents floating-point numbers as binary, and thus the conversion to decimal is not exact. Then, I suggested he'd look for a BCD (Binary Coded Decimal) numbers module on CPAN. But guess what? There isn't any.
A search.cpan.org query for BCD returns junk. Furthermore, IBM has a list of implementations on its BCD page. There are a few impelementations for Java, one for Python, one for Eiffel, and decNumber which is IBM's proprietary reference implementation, which has some GPLed port in the works as part of gcc. Still, even the GPL is not very usable.
What I'd like to see is an open-source (at least LGPL; BSD-style license preferable) implementation of BCD numbers, both in ANSI C and in Pure Perl. So if you're looking for an interesting project to take upon yourself, this would be a good choice.