Content Management System: To be or not to be?

Do I want a Content Management System (CMS) for my web site?

  • My web site is small.
  • It is not dynamic or interactive (and that’s how I want it to be at this moment. I do not want “dynamic spoon” or “interactive pants”).
  • It is authored only by me, no cooperation expected in the future neither.

So I probably do not need any CMS. But on the other hand,

  • I’m regularly catching myself that I’m not putting a new article because I’m fed up with copy-pasting of HTML
  • sometimes I end up in poor places which do not have any putty/scp, so I just can’t do the update until I come home
  • I have some articles in more than one language, and this is something which is pain in the neck to maintain
  • I like my pages to be valid HTML, and this is an additional thing to watch when writing in the text editor.

But the most important of all: with static site written in the text editor, I have full control over my data. I can always do a full backup from my host (in fact I store an up-to-date copy locally). I can move all my site to another host at any moment in minimal time. Sure, backup of MySQL database + CMS system is also possible, but I’m afraid I’ll not do it regularly, and I imagine that moving to another host may turn out to be a very frustrating experience.

I’ve put to MediaWiki two of my pages which are kind of more dynamic than others: bicycling bookmarks and list of cafeterias around Helsinki. So far these are not pages which I necessarily want to be able to read 10 years later, so the portability here is not a keystone. Now I’m in musings, do I want to move more of my content to some CMS. And to which one? OpenSourceCMS lists tens if not hundreds different CMSes. The leading ones seem to be MediaWiki, WordPress, Joomla, and Drupal. Read comparisons: Joomla vs. Drupal, more Joomla vs. Drupal, WordPress vs. Drupal, Joomla/Drupal/Plone.

The main question to me is, to repeat it, the portability. How easy is it to backup some CMS site, and how easy is it to restore it in completely different environment?

Nokia E90: first frustrations!

After publishing first-minute positive impressions about Nokia E90 communicator, first negative ones have not been waiting for long.

Naturally, when changing from one device to another, a user wants to move data from the old one. Mine “old” was Nokia 9500 communicator. Note, it is the natural predecessor model of the same manufacturer. Phones have “data transfer” menu item. But this transfers only contacts, messages and calendar entries – no documents. I have about 60 files, most hand-written once, like foreign words and travel notes. Moving them should be a trivial task?

1. Any file can be sent between the devices, for example via Bluetooth. But… you can’t send a directory. Manual sending of 60+ files does not look as an attractive option.

2. OK, fortunately there is Zip archiver in both devices. I compress the files I want to transfer to one archive, send it, decompress it. Guess what? I can’t open any of my files! They were saved in some proprietary format, which is not recognized by the new device!

Now I’m left with two options: 1) send all files one-by-one; believe or not, the texts are converted to Microsoft Word .doc format before sending :-/ 2) use Nokia own software to dig my data from the old device (this software is Windows-only).

I knew I should never store my data in a proprietary format, and I knew I’m doing a mistake saving my texts in default format 9500 communicator offered me. I naively expected that the same company will at least support its own formats. Beware!

Nokia E90 communicator

Got a new device, the 2007 Nokia communicator edition, E90:

e90_main.jpg

It is smaller than the previous 9500 communicator (in fact every new Nokia communicator model was smaller than the predecessor).

It has, in addition to what you’d expect from any such device, a built-in GPS receiver.

It is nice for touch. It has very sharp screen – both screens, in fact. 3.2Mp camera, FM radio, 512Mb micro-SD card. All data transfer technologies you can imagine: EGPRS, 3G WCDMA and HSDPA for cellular, Bluetooth and WLAN for short-range. See full specs here.

So, the first-minute impression is very positive. Let’s see what it comes to when I start actually using it.

Compiling ipsec-tools-0.7 in RedHat EL 4

Stock ipsec-tools v0.7 does not build in RedHat EL 4:

Making all in racoon
make[3]: Entering directory `/home/octeon/src/ipsec-tools-0.7/src/racoon’
if gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I./../libipsec -D_GNU_SOURCE -include ./src/include-glibc/glibc-bugs.h -I./src/include-glibc -I./src/include-glibc -I./../../src/racoon/missing -D_GNU_SOURCE -include ../../src/include-glibc/glibc-bugs.h -I../../src/include-glibc -I../../src/include-glibc -DSYSCONFDIR=\”/usr/local/etc\” -DADMINPORTDIR=\”/usr/local/var/racoon\” -g -O2 -Wall -Werror -Wno-unused -MT isakmp.o -MD -MP -MF “.deps/isakmp.Tpo” -c -o isakmp.o isakmp.c; \
then mv -f “.deps/isakmp.Tpo” “.deps/isakmp.Po”; else rm -f “.deps/isakmp.Tpo”; exit 1; fi
In file included from ../../src/include-glibc/linux/ip.h:26,
from isakmp.c:115:
/usr/include/asm/byteorder.h:6:2: #warning using private kernel header; include <endian.h> instead!
In file included from /usr/include/asm/byteorder.h:35,
from ../../src/include-glibc/linux/ip.h:26,
from isakmp.c:115:
../../src/include-glibc/linux/byteorder/little_endian.h:43: error: syntax error before “__cpu_to_le64p”
../../src/include-glibc/linux/byteorder/little_endian.h: In function `__cpu_to_le64p’:
../../src/include-glibc/linux/byteorder/little_endian.h:45: error: `__le64′ undeclared (first use in this function)

…and so on.
/usr/include/asm/byteorder.h really is a private kernel header in this distro. Does not look like a feature – at least it is fixed in RHEL 5!. But what if I can’t upgrade right now. Here is a really dirty fix to src/include-glibc/linux/ip.h in the ipsec-tools source tree (and it is a symlink to real kernel header, so make a backup), assuming that you are on little-endian machine. Replace the line #include <asm/byteorder.h> with #define __LITTLE_ENDIAN_BITFIELD.
Or, not to forget about the change when you stump into problems with this pernicious hack:

/* Uncomment the next line to compile ipsec-tools-0.7 */
/* #define WE_COMPILE_IPSEC_TOOLS */

#ifdef WE_COMPILE_IPSEC_TOOLS
#define __LITTLE_ENDIAN_BITFIELD
#else
#include <asm/byteorder.h>
#endif /* WE_COMPILE_IPSEC_TOOLS */

I wish I knew if there is a better way to fix this – short of upgrading to RHEL 5.

Saunalahti, the Finnish ISP

I was a customer of saunalahti internet provider. Happily connected to their machines via SSH and maintained my rudimentary web pages.

Suddenly, the machine unix.saunalahti.fi disappeared. Soon it disappeared even from the nameserver. I discovered it after maybe a couple of months not accessing it.

Calling customer support. After usual 15 min. waiting in the queue:

(I) The Unix shell does not work.
(Saunalahti) I take a look at it… (waiting) Oh sorry, the Unix usernames were all removed.
(I) ??? I need Unix shell.
(S) We can restore it. (waiting) It is ready now.
(I) So what machine should I connect to?
(S) The same machine you connected earlier.
(I) But it is not even known to the nameserver! And it is your nameserver I’m using.
(S) I’ll look at it. (waiting) The other machine is ftp.saunalahti.fi
(I, feeling suspicious about such hostname and trying to connect) It does not let me in. Says “Connection closed by remote host”.
(S) OK, one moment… (waiting) the SSH access is closed now. (points me to their web page, saying that my contract does not include SSH access.)

I have nothing more to ask. The SSH access was an important feature for me and one of reasons why I’ve chosen this provider among others. Now they silently removed this reason without even a notice. The only way to maintain the web pages now is by FTP (sending password in clear text). I complained about the issue also on Saunalahti own webboard, other users confirmed the issue. I’m in search for another provider.

PHPUnit stumps…

PHPUnit 3.0.6 (with PHP 5.2.2) can’t even load a file!

$ phpunit UnitTest
X-Powered-By: PHP/5.2.2
Content-type: text/html

PHPUnit 3.0.6 by Sebastian Bergmann.

File “UnitTest.php” could not be found or is not readable.

Let’s see where it looks for my (definitely existing and readable) UnitTest.php. Add a quick debug printout starting with KS: into /usr/local/lib/php/PHPUnit/Util/Fileloader.php:

$ phpunit UnitTest
X-Powered-By: PHP/5.2.2
Content-type: text/html

KS: wd=/usr/local/bin, filename=UnitTest.php
PHPUnit 3.0.6 by Sebastian Bergmann.

File “UnitTest.php” could not be found or is not readable.

What’s that?… I don’t believe my eyes. Does it really look for input ini /usr/local/bin?

$ sudo touch /usr/local/bin/UnitTest
$ phpunit UnitTest
X-Powered-By: PHP/5.2.2
Content-type: text/html

KS: wd=/usr/local/bin, filename=UnitTest.php
PHPUnit 3.0.6 by Sebastian Bergmann.

Class UnitTest could not be found in UnitTest.php.

I’m not absolutely alone with this, there is a recent post (18.6.2007) complaining about the same issue. Maybe this is a new bug in PHPUnit? Let’s try the latest beta release of phpunit from http://pear.phpunit.de/get/, installing manually as said in phpunit manual section:

$ phpunit UnitTest
X-Powered-By: PHP/5.2.2
Content-type: text/html

PHPUnit 3.1.0beta4 by Sebastian Bergmann.

File &quot;UnitTest.php&quot; could not be found or is not readable.

OK, quotes are replaced with &quot;, but the file is still not found. What else could be done? Rollback to a previous version, phpinit 3.0.5. Alas – result is the same!

Update: This misfortune is experienced on RedHat Enterprise Linux 5. On Ubuntu Feisty, PHPUnit works out of the box. So this is likely an installation problem, not a problem of PHPUnit. Aha! I had some old PHP on RHEL machine, and installed newer version in /usr/local. Let’s revert back to the stock PHP:

$ phpunit UnitTest
PHP Warning: require_once(PHPUnit/Util/Filter.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 40
PHP Fatal error: require_once(): Failed opening required ‘PHPUnit/Util/Filter.php’ (include_path=’.:/usr/share/pear’) in /usr/local/bin/phpunit on line 40

Now even PHPUnit is not found; let’s see with strace where the PHP is looking for it:

$ strace -f phpunit UnitTest | grep Filter.php
4471 open(“/my/current/work/dir/PHPUnit/Util/Filter.php”, O_RDONLY) = -1 ENOENT (No such file or directory)
4471 open(“/usr/share/pear/PHPUnit/Util/Filter.php”, O_RDONLY) = -1 ENOENT (No such file or directory)
4471 open(“/usr/local/bin/PHPUnit/Util/Filter.php”, O_RDONLY) = -1 ENOENT (No such file or directory)

But my PHPUnit was installed by pear in /usr/local/lib/php. This directory is not searched by default. We have to add include_path = /usr/local/lib/php statement into the php.ini, used by the PHP installation. After that, the script subject to test is not any longer searched in /usr/local/bin, and my long-awaited test finally works.

HP Photosmart C6180 with Linux

We desperately needed a scanner. Also the old printer got almost unusable, leaving black strips on the paper after an ink cartridge leaked and smeared the ink on all the plastic foam inside it. The decision seems obvious: multifunction device.

Of mainstream printer manufacturers, only Epson and HP are friendly to the Open Source and thus are supported under Linux. We had a price tag and wanted to get the box from a local shop, as the need was really urgent. This made the choice very easy: HP Photosmart C6180. It is a printer, scanner, copier and fax.

HP photosmart C6180

Under Windows, scanner “just works”. Printer works, but the driver is poor. I could not do lots of things with it such as:

  • print borderless A4 image (datasheet says the printer can do it)
  • print an image in a particular size in a particular place of the page

Driver presents strange options, such as setting all four margins for an image. How can you have all the four of them, I do not know.

Now the interesting part: support under Linux.

HP printers are supported with hplip. My Ubuntu Edge had a version, which did not contain support for this printer model. I downloaded sources and built the newest hplip; compilation went OK, except that it required net-snmp, which also was not in the distribution and had to be installed manually. Fortunately the chain ended at this point.

USB connection worked “out of the box”. Cups web interface saw the printer in the “add printer” dialog. After its addition, the new printer was present in all print dialogs.

WLAN connection worked practically out of the box, with instructions from Ubuntu forums.

But that did not make me completely happy. From what I see this late evening:

  • GIMP must use generic Postscript driver. So, there is no any fine control over the printout. Guys, I’d not call this “perfect support” without selection of:
    • Paper type
    • Resolution
    • Print quality (draft/standard/high)
    • Option to print borderless
  • Other applications, which use the hplip driver present the same interface as Windows. So they are missing the features of gimp-print drivers – especially scaling and positioning of the image. Borderless printing does not work neither: about 5mm borders are still left, and the image is simply cut HPLIP site gives instructions, but they do not work at all.

The scanner is not recognized. Xsane does not see any device, although it has hplip configured.

Continued: After upgrade to Ubuntu 7.04, scanner is recognized! Thank you Ubuntu team.

Rant on Nokia E61 smartphone UI

Disclamer: I *was* affilated with Nokia.

Nokia E61 smartphone

1. With no SIM, you can’t turn off the sound. I do not have an extra SIM at the moment, and I can’t stop disturbing my neighbours with beeping keys. I know that the “profile” is stored in the SIM, but that does not make me happier.

2. It comes with some pre-installed SW, which I can’t remove. I’ll never need these “business catalogs”, but the icon takes the screen space in the most frequently used menu, and there’s no option to remove it.

3. I had some SW installed in the memory card. After phone re-flashing, that SW seems to be missing… no, just taking the memory. But not available for re-installation. The only way to make things consistent seems to be the reformatting of the memory card – the provided file manager (which is hidden in the “office” menu, by some reason) does not show these apps on the card.

4. Help system is fantastically idiotic. I tried to read help 3 times; all the three times it said “in order to save your settings, select save settings from the menu”. There are things which are not obvious to me, for example, meaning of tiny icons. Colleagues told me the lock on top of bold X means “connected to encrypted WLAN”, key inserted in a hanging lock stays for “registered with SIP server” – so intuitive. It is not said anywhere in the help.

5. I’d like to have at least the following applications: usable file manager, screen capture, plain text editor. None is preinstalled. There is a menu “Download applications”, which opens the browser at http://ea.mobile.nokia.com/content/spin/ea/E61/en/app. That useful page provides two applications: “Handy Expense” and “Quickoffice”.

6. Menus have option to be displayed either as icon grid (12 icons fit on the screen), or as “list” (5 list items fit). I’d like them to be more tight, at least smaller icons or just text; OK, maybe I’m expecting too much for 400€ device. But some menus – such as “Tools -> Settings” – are shown only as “list”; probably to practice scrolling.

7. Web browser. It has some nice features and it renders pages pretty well. But:

  • While the page is being downloaded (which can take long for a mobile device), half of the menu is disabled. You can’t zoom/unzoom, toggle images on/off – have to watch the unreadable page until it downloads completely.
  • Menu items “(in/de)crease image size” also (in/de)crease the font size. Good that with several more keypresses fonts can be returned back into the discernable state.
  • No option “open link in new window”.
  • No option to save the page!
  • When loading a very long (1MB) text-only page, I got message “Not enough memory”. (The phone has 64MB of internal memory.)

8. WLAN connectivity is very poor. I have a number of WLAN devices at home, all work fine, but this one says “No WLAN network found” two times out of three when I try.

Other people’s rants:

Of course this does not mean that the phone is “bad”. First, it has many nice features (I’d point out nice rendering of web pages; not a surprise as it is based on KHTML) – look for them elsewhere. Second, no matter how many problems it has, other smartphones may have even more.

Update 10.7.2007:

  • I’m receiving a file via Bluetooth. The “messaging” application can’t open it unless it is one of “known types”, and there is no option to save it anywhere into the filesystem! You can “save to folder”, but the choice is only folders in the “messaging”, which is a filesystem on its own.
  • I’m writing a note. I can not save it anywhere neither. It stays in some place called “Notes”.
  • The stock file manager is simply a shame. The working alternative I found is Y-Browser by Jukka Silvennoinen.

Feelings on Microsoft Windows after we have not been together for a long time

I did not have to spend more than 30 seconds at MS Windows screen for several years. Now I’ve spent several hours.

1. In IE, you can’t stop flicking animated images.

2. In IE, you can’t force all fonts to be at least 12 point size. IE thinks you can not be trusted to select the font with which you browse.

3. In IE, you can’t say that you want resize and navigation controls in *all* new windows. Designers of kewl web sites write “toolbar=no” in their kewl java script. I did not even know about such stupidity before.

4. Here and there you get “modal windows”, from which you can not switch to any other window. If you need to look in another window for the input – no way.

5. Here and there you get windows, which you can’t resize. Selection list of >200 items is crammed in 1 inch vertical space. Was it difficult to allow resizing?

None of these issues apply to the operating system itself, it is all about applications (as anything a user can see on the screen). But the operating system somehow influences the culture of these applications.

There was one thing which I found better though. Default fonts are nicer than what I’m used to in Gnome and KDE.

Locking mobile phones in the USA

The practice of locking mobile phones to a single mobile provider has become quite annoying in the United States. While the rest of the world can freely change providers by simply swapping out a SIM card, US customers are usually stuck with multi-year contracts and locked phones. Apple is continuing this tradition by locking all iPhones sold in the US to the Cingular network.

Source: 10 Ways The Nokia N800 Is Better Than Apple’s iPhone