Open source software

The Open Source Software I use

During my professional activities for my employer as a system and network administrator, I have spend a lot of time behind my computer at home. For fun and for the normal activities a computer is used for.
Now I am retired and I spend even more time behind the screen.

The previous computer I used at home had removable harddisks. For booting Linux or Windows I hade to swap bootdisks. In this way installing an other OS is easy and does not influence existing OS'es.

In the fall of 2007 I build a new PC. No removable harddisks anymore. Easy but very noise. Now I have a large harddisk of 500 GB. Far more than I need (I don't use any disk room consuming applications like video. Only photo's and MP'3). I partioned the disk in such a way I can easily install a new version of Linux.

Very incidentally I use Windows but mostly I use Linux. The main reasons for my preference of Linux:

  • its stability
  • freedom and flexibility : the ease of doing the things I want in the way I want
  • choice: the large amount of free software I can use
  • the challenge of getting a Linux system set up
  • I like the OS people more than Microsoft
At this moment I use Suse 12.2.

I am a command-line junk but that does not mean I do not use a graphical desktop: XFree86 and KDE. Why KDE? It is Suse's default.

Note: I do not give any links in this story. Just use Google.

At the end of 2008 I bought a iPod Nano. The OS ipod-clients still do not support the latest version so I had to install iTunes on Windows.
More recent versions of gtkpod support and banshee do support my ipod.

Programming

I like programming. Most of my programming is done in Perl. The quick-and-dirty small programs but also larger programs, both console programs and GUI (with Perl/Tk).

I have used a lot of programming languages but it is a long time ago I have written any non-trivial C or C++ program. The main reason is the ease of use and the quality of Perl.
I have tried to learn Java but my conclusion was: I like coffee but no Java. Through all the classes I can not see the program anymore.

For web applications I mostly use PHP. At this moment I am studying Ruby.

For editting I use vim. No IDE's, just vim (mostly gvim, the GUI-version). No flaming about the vim - emacs controversy please.... I switched from the Nirvana Editor (nedit) to vim after a lecture given by Bram Moolenaar, the primary author of vim. A very nice guy. Now I am used to it, so I keep it that way.

Word processing, browsing and email

Word processing: abiword and openoffice. Spreadsheets: gnumeric and openoffice.

For internet browsing I use Firefox. Incidentally Opera. My email is delivered locally by fetchmail. I run Postfix (the default MTA for Suse). I read the mail by Evolution.

My ISP filters my mail and puts recognized spams in a seperate POP3-mailbox. I monitor the number of messages in this mailbox by a small Perl-script (using Net::Pop3). The script is periodically run by cron and it mails the number of messages found. When the number is large enough I empty the POP3-mailbox via a rather small, GUI-driven Perl-script. It only reads the first lines of all the messages, display the subjects and deletes the messages on the server of my ISP.

Managing websites

I am webmaster for a number of websites. On my Linux system I run local mirrors of these sites (via Apache's virtual servers capability). I perform changes locally and test them. When they must be uploaded I mark the editted files for transfer (a Perl/Tk-application). A simple script collects all these files, create a tarfile, copies the tarfile via scp to the server and untar's the tarball via ssh. The passphrase I have to enter only once at the first login to enable ssh-agent.

For HTML-editing I use vim. Its GUI-version recognizes HTML and I do not need more. Sometimes I use NVU.

In the fall of 2005 I made a website for a friend, a (semi-)professional painter (at least she paints a lot better than I do). I used jigl to create the image galleries of her paintings. As an artist she disliked the fixed tabular layout jigl uses.
My first idea was to adjust and extend jigl. But when I studied the source of jigl (although it is nicely programmed) I quickly noticed this would be a major update in jigl. So I took the quick-and-not-too-dirty way: I wrote a script FreeJiglIndex. It reads the index.html as written by jigl and rewrites the tabular part of jigl by using inline-styles. FreeJiglIndex is driven by a seperate config-file.
I have sent FreeJiglIndex to the author of jigl.
The effects of jigl combined with FreeJiglIndex can be seen on www.susandona.nl

History: for one of my websites I collected statistical data. The data is collected by placing a reference to a small PHP-script in each page. The data is registered on the server in a plain text file. This file is fetched automatically and stored locally in a MySQL-database. I make monthly reports for this website. The data is fetched from the database and put out in a number of CSV-files. These files are transformed into a rtf-file ( Perl-module RTF::Writer). Via openoffice I create a Postscript file and via ps2pdf I make a PDF-file. This file is put on the website on a secret place (= no link is made to this place). I also make a graph of the hits from the site to watch long time trends. Therefore I use a perl script which reads the data from a csv-file puts them in a rrd-file creates a graph from these data I use rrdtools mainly because it is just meant for time related data, its graphing capabilities are very nice and can be easily automated.

I learned from rrdtools from a supplier we use at the company I worked for. We have a number of Packeteers to shape or monitor the WAN-traffic. Each packeteer collects a lot of data but aggregation above the level of a single packeteer is not trivial. Also the resolution of the collected data quickly diminishes. The supplier (a networking consultancy firm) supports us in using the packeteers in a good way. In this support a tool is included. It downloads the collected data from the packeteers, stores them in a rrd-database and uses the graphing capabilities of rrdtools to present nice pictures. By using rrdtools they can deliver us 3 month of data with a resolution of 1 minute and 3 years with a larger resolution. The way rrdtools records its data garantuees us the amount of disk space does not grow (as long as we do not change the configuration of the packeteers). The software is installed on a dedicated Linux computer (Red Hat) and is mainly a bunch of perl scripts. Do not ask for it: the supplier has installed it knowing we can fetch the scripts if we want but in the confidence we will not do that. I can give you contact information if you want. From the documentation of rrdtools I understand it is a derivate from mrtg, the open source software to monitor network traffic, made by the same author.

Also history: on the website I used YaBB for message board software. When I created the website I just searched for good forum software. I preferred Perl mainly because at the moment I was setting up the website I did not know if the hosting provider supports PHP. YaBB was easily installed and adjusted to my needs. YaBB stores the messages into plain text files.
I needed a better solution to display events. I searched for a good solution, tried some programs but I did not find the one which fullfills my requirements. So I wrote my own program: a good excercise in PHP programming and use of MySQL. It is called inside from a index.php. The generated HTML can be influenced by CSS-styles. So I have full control over the look and feel of the calendar.

For database maintenance I mostly use phpMyAdmin and mysqlcc and sometimes scripts using the Perl DBI-interface.

For all kind of maintenance activities I needed a facility to run a job on or after a certain time. The disadvantage of cron is that it only works if my system is always running. As my workstation is no server I just shut the system down when I am finished. The at-command I found to restrictive. So I make my own job facility. I can schedule as many jobs as I want and my job facilty executes them as soon as the requested time is reached. It is triggered by cron.

I also needed a simple bulletin board with the following requirements:

  • full control about the way the BB is presented
  • data must be stored in a MySQL-database
  • multiple BB's on one server, each with its own look
  • multiple BB's in a single table
I did not found such a program so I made my own (PHP and MySQL).

PS. If you are interested in one of the programs I made, just drop me a mail. You can get them under the conditions of the GPL license.

Graphics

For graphical work I use mostly The Gimp. Web presentations (digital photo albums like the presentation of my paintings and drawings on this site) I make with jigl, a nice Perl script I found after an article in the Linux Journal. Jigl uses ImageMagick, a collection of command line utilties to manipulate graphic images. As you can see it is possible to influence the way the presentation looks by using a theme.

I had already met inkscape and scribus but recently I put more learning time in those applications. Both are great.

Scribus is an open source DTP-program. I had some experience with Publisher under Windows (no, not from M$ but from an firm from a UK-based firm called Greenstreet Software. A very reasonable priced product (£50 , about €75). Great product.
Some years ago I tried scribus but I was not impressed. When I tried it again lately my opinion changed. Scribus has evolved in a major way. It has a lot more possibilities than Publisher (more than I can manage - I am no professional DTP-er).

Content management

I am not the only editor of the website I manage. As we only have the cheapest hosting facility no Content Management System is available (only if we pay more and we are small funded).
As the other editors are just normal people I can not expect them to create HTML-files themself and transferring them by ftp or scp.
So I make a cgi-script (in Perl). My script accepts text in a small markup language. Text can be entered online, by copy-and-paste or by uploading a locally made text file. It is checked and transformed into HTML.
These HTML-pages can be put on- and offline.

The same conversion engine is used for a blog facility. Access is controlled via the normal Apache mechanismes (.htaccess-files and user/password).

At this moment (the end of 2005) we want to redesign our website. I decided to use a CMS because it offers more functionality. I checked and tried a lot of Open Source CMS-systems (our funds do not enable us to use a commercial CMS) and I made the choice for Joomla. Joomla is an offspring of the Mambo-project. My impression is that most of the developers of Mambo switch to Joomla so there is the action.

The results can be seen on www.pvda-amersfoort.nl. The PvdA is the Dutch Labour Party and Amersfoort is the place I live in.

For this site I use CMS Made Simple. I do not have enough diskspace to install Joomla.

Fall 2006: I am involved in making a website which will give information about the history of Amersfoort. This site is also made via CMS Made Simple.
I was contacted because I combines three things

  • technical knowledge
  • interested in history
  • inhabitant of Amersfoort
The first time Amersfoort was mentioned was in the year 777. So there is a lot of history. The municipal rights of Amersfoort (= the right to build walls around the city) date from 1259. In 2009 this will be 750 years ago so there will be a lot of celebrations.


The main part of the history-site is a MySQL-database. The main table of the database contains the events in the history of Amersfoort. The history is grouped in some main area's, the sources the information can be found back are mentioned and links to places on the internet are given. So the database contains seven tables. (Four for the data and three for connecting events to sources, areas and links). As the originator of the site must be able to maintain the database phpMyAdmin was no option. phpMyAdmin is great for DBA-activities but too powerfull for someone who only must be able to maintain the content of the database and not the structure.
Writing PHP-code for Insert/Update/Delete-actions for 7 tables is not difficult but I did not look forward to write seven time rather identical code. My spare time activities must be either interesting and amusing or deliver some extra money. So I searched for a general database maintenance tool and I found dadabik. Works fine, is very customable.

Newsletter

Obsolete.

I am also the editor of an electronic newsletter. I receive articles, mostly written in several versions of Word.
The texts are collected into one large text file. In vim I provide some marks and another Perl-script convert this file into a number of HTML-files, including a rudimentary index.html. I inspect the results in Mozilla. When I am satisfied with the results, I adapt the index.html and publish the results on the website.
The same script is used to convert the text into one HTML-file. Via openoffice I provide a title page and converts it to a Postscript-file. Via ps2pdf I make a PDF-file. This file is sent to a copy shop so readers without an internet connection can receive a paper copy. The complete process (from collecting the articles upto producing the final PDF-file) is done in about 4-6 hours (on one Sunday).

Presentations

Incidentally I have to give a presentation. I have used mgp for it. A nice program (no WYSIWYG) which accepts text input. I have made some scripts to create an HTML presentation. Recently I found PerlPoint, a package to create all kind of presentations. I am studying it. It looks nice and powerfull. From the same input you can create a HTML-representation or a LaTeX-representation. Other filters are available.


Audio

I am also busy transferring some of my records to CD. I use gramofile to record the music, filtering the clicks and scratches away and splitting up the tracks. Further editing is done with audacity, a great sound editor. According to Eric Raymond audacity is a great example of OS developers who have thinked very good about the user interface. Something he misses at a lot of technical very good OS products. (The Gimp is a great program but the interface is confusing. Why should I, as a normal user, need to know if a facility is programmed into the Gimp itself, via perl or via ScriptFu?)
The wav-files are converted into cdr-files (needed for audio-CD's) by sox. The CD's I write with cdrecord or k3b.

I turned my computer into a radio recording device with a script I found. This script plays a streaming audio stream via mplayer and sends the audio data to a named pipe. At the same time a seperate process reads the data from the named pipe and converts it via lame to a MP3-file. Via audacity and some perl-scripts I isolate the music and converts them to MP3-files.