Christian Kjellvander

This seems really great. I’ve just listened to a couple of songs from the Songs from a two-room chapel album so far but what I’ve heard I’ve really liked! I think I’ll listen it through a couple of times at work tomorrow (well, I guess it will actually be later today) and after that I’ll know for sure if it’s as good as it seems.

IsmoCore 0.0.5

Yes! I managed to release 0.0.5 a couple of day ago. Yay! Now I can finally start on the things I didn’t dare to start on because then 0.0.5 would have been delayed forever.

CD ripping made easy

Everything should be this easy…

First install jack and configure it:

$ sudo aptitude install jack
$ jack
$ vim ~/.jackrc

Now to rip a CD to oggs just do:

$ jack
$ jack -q

The first command rips and encodes the CD, the second renames it based on a freedb lookup.

So simple!


This blog is now powered by IsmoBlog. Let’s see how long it takes until it breaks..


This very neat RSS news reader for Mac OS X is saving me tons of time. No need to browse around zillions of weblogs anymore, all the information in one place. Really useful. You can find it here.

GnuPoc and Series 60

This is how I got GnuPoc working with version 1.0 of the Series 60 SDK on Linux/x86.

1. Download the SDK and install it

Download the 1.0 SDK from Forum Nokia and then install it. It might be possible to install it through wine somehow but I installed it in Windows.

2. Download the GnuPoc patch

It’s available from As of this writing “gnupoc-s60cpp-patch-0.0.5.tar.gz 24. Jan 2003 (patched against version 0.9 of the SDK)” is the latest version. And because it’s for version 0.9 there will be a need for some tweaking as described later.

Extract the patch somewhere and read the instructions.

3. Download my patch

Find it at

4. Download the common scripts and tools

It’s on the gnupoc site. The latest version is called “gnupoc-scripts-2003.01.25.tar.gz”.

Extract it somewhere, e.g. in /home/foo/epoc/scripts

5. Download the cross compiler

It’s also available from the gnupoc site. I was lazy and got the binary package.

Extract the package somewhere or build and install the source package if you chose that. I used the default location /usr/local/er6

6. Copy the files

Copy the files from the installed SDK in windows to some location in your Linux filesystem. Let’s say /home/foo/epoc/epoc32. You need to copy the data, include, localisation, release, tools and wins

You have to lowercase the names. One can for this manually but that’s less than one. Doing it with a shell script might work. As I transfered the directories in .zip archives I used the -L flag for unzip when extracting and got everything in lowercase. You might be able to do something similar.

7. Set environment variables

Set EPOCROOT to the directory containing the epoc32 directory. In this case /home/foo/epoc/ Note it requires a trailing slash. Include the $EPOCROOT/epoc32/tools and the cross compilers bin directory in the PATH.

    $ cat "export EPOCROOT=/home/foo/epoc/" >> $HOME/.zshrc
    $ cat "export PATH=$PATH:$EPOCROOT/epoc32/tools:/usr/local/er6/bin" >> $HOME/.zshrc
    $ . $HOME/.zshrc

Make necessary changes if you use another shell than zsh.

8. Fix the source code

Go to /home/foo/epoc/ and run the script, like this.

    $ scripts/ epoc32 epoc32_clean

Then clean up:

    $ rm -rf epoc32
    $ mv epoc32_clean epoc32

9. Apply the patches

Now it’s time to apply the patches. Go to the /home/foo/epoc/epoc32/tools directory and then patch.

    $ cd /home/foo/epoc/epoc32/tools
    $ patch -p1 < /path/to/the/gnupoc/patch

You’re going to get a reject for the file. So now patch with my patch.

    $ cd /home/foo/epoc/epoc32/tools
    $ patch -p1 < /path/to/my/patch

10. Fix permissions

    $ cd $EPOCROOT/epoc32/tools
    $ chmod a+x *.pl bldmake abld

11. Build your project

You should now be able to build a Symbian executable. Change to the directory containing your project’s Bld.inf file and do the following:

    $ mv Bld.inf bld.inf
    $ bldmake bldfiles
    $ abld makefile thumb
    $ abld target thumb urel

Update: The last two steps can actually be combined to one by use doing ‘abld build thumb urel’.

If you’re project is including the e32std.h header file you will most likely have to comment out the DECLARE_ROM_ARRAY define on line 3012. I couldn’t find AName, AData nor AType anywhere in the EPOC include files I have. Commenting out the define solved the compile error and it doesn’t seem to affect anything.


I took most of this from my memory so it’s very possible that I missed a step or some part of a step. If you do try this out and it doesn’t work please inform me of any changes you had to do. Thanks!

Expensive lines

Lawrence Lessig wrote an interesting thing here in his blog. 100 for permission to reprint a single line, 1000 for a more extensive quote. I guess one has to have a quite big ego if one demands that much… I doubt anyting I could write would be worth even a single euro.

Gmane and safari

About a week ago I got to know about gmane from a guy on the debian-users-swedish mailing list. It’s amazing! Now I don’t have to be subscribed to zillions of list anymore as most of them are available on gmane. I patched mutt with the vvv.nntp patch so now I can read news with mutt and I don’t have to waste time on configuring e.g. slrn. It’s a tad bit slow though which is a bit annoying but the gmane server is located in Norway so that probably explains it. I’ll see if it’s worth setting up some program to fetch the news and then read it locally but it’s convenient to let gmane handle everything.

Thanks to this Slashdot story about Apple terminating the Safari seed program, I got my hands on the latest beta build, v67, of Safari. And it now supports tabs! Yay! The lack of tabs made me start to use Camino (formerly knows as Chimera) but the constant crashes made me go back to Safari even though I then ended up with lots of windows. But now with the tab support, I’m happy 🙂