The traditional (yet very popular) gzip is a single-threaded application from the single-processor/single-core hardware era. Its just fine if you are compressing a few files occasionally, but it become a great pain when you are compressing 32,000 files on an 8-processor server and you suddenly figure out that you are using only 1/8 of your total processor power. Which means you should wait 8 times longer than if you could use all processing power on your machine. I encountered such case in which I should wait about 40 minutes to compress hundreds of gigabytes of a few thousand files, using traditional gzip, while I had one processor doing the whole job and 7 other processors were sitting idle.
So I thought there should be a way to speed-up the process. The most simple method I could use was to open up multiple terminal windows and run parallel copies of gzip, each of them to compress a specific set of files. While this method worked for me, but I was wondering why the gzip itself doesn’t support multi-threading.
The solution: pigz
I came across pigz after searching the internet for a multi-threaded gzip replacement. pigz is a drop-in replacement for gzip that supports parallel compression/decompression when multiple files are involved.
Figure 1: Running “systat -iostat 1” on a FreeBSD 7.2 machine running pigz
Using pigz, I could exploit more than 70% of my processing power. pigz also maintains compatibility with standard gzip command line parameter and supports all switches while adding “-p” command to specify maximum number of compression threads.
If you haven’t seen roundcube webmail yet, it’s an eye-candy web based email client based on IMAP protocol. The project has not released version 1.0 yet after two years but being actively developed. If you are interested, there is also a trac website available for the project.
I used to create nightly snapshots from the cvs since 2005, however the project recently announced they are publishing nightly snapshots on their website (finally!).
Enough for an introduction to roundcube.
I have been the maintainer of this project in FreeBSD ports tree for more than a year now, and tried to keep the port up to date using the snapshots I make once in a while.
Using ports, you can easily install and update roundcube on a FreeBSD server.
If you are interested, there are a few tutorials on the net that can help you installing roundcube on your server and get the most out of it:
- Setup Roundcube on FreeBSD
- HOWTO: Install Roundcube Webmail from SVN (was CVS) on FreeBSD
- HOW TO: Setup RoundCube Webmail on Your Server
I have been lazy in updating the ports I maintain in ports tree recently. However a number of patches are ready to be tested and committed once I find sometime during next weekend.
I am moving all my Unix (mostly FreeBSD and Solaris) development efforts to a new website: www.uniXified.net. The site is already up and running as my test platform. The server is running FreeBSD 5.4-STABLE (obviously!) and TextPattern as CMS.
I am also hosting nightly snapshots of RoundCube webmail project on this new website, because RoundCube team is too lazy to release their software.
I can’t live without adblock. However, without a good block list, it is not useful at all. And of course, I am carefully maintaining my very own blocklist. So why not share it?
I will update this list at least once every week, and you can grab it from right side of my blog. Please post your feedbacks as comments.
I was maintaining iranperl website for a while, which was dropped due to lack of time and resources. Now, pm.org has generously accepted to host iran-pm mailing list. To join this mailing list, simply follow this link and enter your subscription information.
To be frank, the way we categorize our digital music library is inefficient. MP3 tags are unreliable and inaccurate. This is the problem I have with my iPod. Using iPod you can create playlists based on tags (Genre, Artist name, Album name). But it’s boring. And you will fed up with your playlists and shuffle them. And it is boring as well.
Many people have been working on this so far. The most simple way overcome this is to shuffle your music, and play it in random order. But the problem is that its out of your control. You may have hear the tracks you dont like. And the problem is that when I like an artist or album, I don’t like all of its songs. The current methods does not satisfy my (and everyones) needs.
Solution:
Organizing music based on mood. Whether its slow, or fast, happy or sad. This is the way people like to organize their playlists. And you might say MoodLogic. MoodLogic does the same. Along with many other exciting features, it organizes playlists based on moods. And its a very brilliant idea.
And it can be an idea for a new OpenSource project as well. MoodLogic is the one and only solution that understands the music, and does not only rely on tags.
So why not other media jukeboxes (iTunes, WMP,…) do this? Or maybe some software that listens to music (analyzes it in fact) and recognizes its mood and adds it as a tag? Maybe its not an easy thing to do, but it would be a very popular thing.
There is such a big gap in digital music world, which no one has seriously worked on it. Lets do it and make the life easier.
For those who haven’t heard before, Google Toolbar is a Real Player Add-on according to following screenshot (Taken from real player autoupdate window):

Note: This is not only a Real Player feature. You can see it in many other crapwares.
In my journey to become an active contributor to theFreeBSD Project, and after hacking and updating some ports including editors/vim, net/cacti, security/rkhunter and some other ports in recent weeks, I finally managed to update one of my favorite ports in FreeBSD Ports Collection.
It took two nights to hack into the OpenBGPD 3.7 source code ( I was not coding for years ) and make it work on my FreeBSD 5.4 box at home. But I am definietly happy with the result. The PR is submitted now and I am waiting for someone to take care of it and hopefully commit it to the ports tree, so everyone else can enjoy.
I am using OpenBGPd in our service-provider network environment as a BGP feed to blackhole certain networks on our edge routers (some BGP, route-map and ACL tricks) and so far it worked fine for me.
Since the software is a native OpenBSD utility, and it took me to import some header files from OpenBSD project to make it work, it still lacks MD5 option support on FreeBSD, which I am planning to make it work in near future.
There is also another important missing part in this software: a ChangeLog.
So the only person who know what is exactly the difference between v3.6 and v3.7 is its author!
Now that everyone has started loving subversion for version control needs, I guess it has a long way to go. If you are thinking of switching to subversion, I’d urge you to think twice.
1- To support transport over http protocol, only Apache version 2 is supported. Many system administrators prefer to stick with apache 1.3 that tends to be more robust and very will supported. This it the first major downfall for subversion.
2- Even by running Apache2, you’ll face serious permissions problem. Subversion has a very nifty interface using APR and DAV module, but even experienced sysadmins will have a serious challenge with permissions on svn repositories.
3- “svnserve” that supposed to handle svn:// protocol is also not a well supported application. Reading docs you are somehow recommended to use http protocol. Setting it up is a painful process.
If you are going for subversion, you may also would like to check out trac, the “an enhanced wiki and issue tracking system for software development projects”.
However I’d prefer to stay with cvs for the moment.
While Java is a lovely platform for many developers, I hate it from a user point of view.
Its awfuly slow when an applet is being loaded in web browser, doesn’t matter if its IE or Firefox or whatever. The SUN JRE is very unstable and slow. (Yes, I have the latest JRE. Yes, I have a fast computers with too much memory. And again, Yes, its the same on all my computers).
This led me to disable Java in my browser for now. And I believe I am not losing anything by taking this decision. However I feel much better when browsing web.