Michelle

Michelle is dead. They found their dead body murdered only a few kilometers from where I live in a pond. Today at 12:30pm. She became only eight years old. (German source, Translation from Google.)

Michelle was missed since Monday after she did not return to home from hoard and was last seen with a man in the upper Lene-Voigt park, a place I go through almost every day with my son when I bring him to the kindergarden.

This strikes me very much. Its always bad news when young children get kidnapped and killed afterwards, but if this happens directly in your neighborhood and you’re having a small child yourself, this touches you even more. All the love and time you’ve invested – gone forever. And everything will remind you at home – the nursery of course, the toys which may lay around in some other room, the paintings you’ve got as a present, the kid’s food in the refrigerator, everything.

What would be my reaction if I was told that my little son was found dead, murdered? What would I do? I don’t know. I’d go mad, I’d scream. I’d try to find the guy who murdered him and kill him, for sure. But what if he’d never be found? Could I live with that? I don’t know. I really don’t know.

Let me tell you that I feel very much for Michelle’s parents, and I probably cannot even imagine the pain they feel just right now and in the upcoming weeks, month and over the next years. I very much hope that I never have to go through this. I’ll try my best and promise to prepare my son for this cruel world as much as I can…

Time to move on?

Women are like software: If you’re new to it, everything is exciting and awesome, all the fancy things, the bells and whistles you discover make you happy and feel better. As time moves on you’re getting more used to it, try to master the software f.e. by using shortcuts, customize it and so on. And there are times where you find bugs. As a free software hacker you’re of course up to fixing the bugs yourself and report the patches to upstream.

But what happens if upstream does not accept them? What if the whole patchwork you’re doing cannot fix the ground architecture of the software, so it would be better to rewrite it from scratch, or, move to another, new fancy software which apparently fixes all the issues of the old one? Maybe you don’t give up on your old, beloved fellow so fast, so you look for and hire consulting for the software to better understand the inner workings of it. But, what if you still don’t get the grasp?

Of course its not that easy to switch to another software, you’ve got very used to it over the years, even developed a particular plugin exactly for it, which would probably not fit into any other look-a-like. And you really love your plugin, since you’ve written and cared about it for endless hours, but its almost sure it would keep plugged into the old software. How would you decide?

Unfortunately, the decision to move on is incredibly harder to take in real life than with computer software:


$ apt-get install new
Warning: new conflicts with old
Deleting packages: old
Installing packages: new
Do you wish to apply these changes [y|N]?

Depressed and angry on a daily basis

There is a lot discussion currently going on if or if not the Peak oil (the maximum capacity in oil extraction) has been reached yet – of course caused by the sky-rocketing oil prices in these days. But even if our daily lifes pretty much depend on oil, which we use for heating, cooking, driving or plastics like toys and packaging (and the list goes on almost endlessly), we should be aware and even fear other “peaks” much more in my opinion: the upcoming peak of food, caused by a peak of drinking water.

A very interesting and well-written article on this topic has been published in the German net magazine Telepolis, called “Peak Food, Peak Water” (English version via Google translate), upon which I stumbled today:

One of the most powerful players in the global financial system, the investment bank Goldman Sachs, introduced the Top Five Risks during its risk assessment of future developments conference and invited several experts which all warned for a huge and catastrophic water shortage.

[One of them] Donald Kennedy [a Stanford biology professor and former chief editor of Nature] spoke of a climate change, initiated by an accelerating spiral of extreme droughts which alternate with “psychotic and excessive rainfalls”. The consequences are already visible: “There are already 800 million people who live with food insecurity. They can not grow enough food, or they can not afford it. This is a seismic shift in the economy,” Kennedy alerted. Goldman Sachs has even estimated that by 2025 a full third of the world’s population will have no access to “adequate drinking water”.

So with a global water problem we also get a global food problem, because agriculture demands up to 70% of the global water ressources.

In this year I certainly have no problem to acknowledge the water shortage: We’ve had a pretty warm and dry winter in Germany and after some rain in April, May started out very hot and again very dry. I’m not a meteorologist, but I bet the past six weeks or so have been the most waterless weeks for this season in a couple of years. When I go out with my little boy and my dog I see all this grass in the parks around my home withered and dead which usually was not the case before July or August in a “normal” year.

Now most people around here just enjoy the weather and don’t think about it much. But somehow I’m more in touch with the nature (after all I have a gardener background) – I feel for the plants and animals which suffer from a drought like this – and I tend to imaginate (I would say realistic, my wife would say pessimistic) agendas how the next couple of years will look like – for us, for our area, for Germany and for the rest of the world. And I get very much depressed and angry even if I follow the daily news and recognize how less the world’s biggest leaders do to solve the world’s biggest challenges, the global climate change. My wife usually tells me then that I should stay away from the news if they make me depressed or angry, but this is no solution for me either…

The stated Telepolis article now again contains one particular section which again makes me wonder what on earth should happen before people start to act and do the right things:

The “proposed solutions”, which have been hatched during this conference by one of the most influential U.S. investment banks, sound like the a declaration of bankruptcy of the late, capital-dominated economic advisers. Goldman Sachs said water to the “oil of the next century” and recommended that all investors should heavily invest in this resource, especially in the “high tech” sector of the industry. The product ‘water’ will offer “enormous rewards for investors who know how to play during the upcoming investment boom.”

No comment.

Little Nickname Science

Its not that I’m a newbie, but sometimes I just feel that way. People start and talk in acronyms on IRC, and then it comes out that these acronyms stand for apparently famous people in the Free Software world I should know…

Lets start with an easy one: rms.

Yeah, that was easy. If you come across this nick in an IRC channel, make sure you don’t talk about the advantages of proprietary software, Richard Matthew Stallman may just jump at you and bash you with a big club.

Now, who might be esr?

Actually I learned about his nick not too long ago. He stumbled into the #monotone channel on OFTC last December and asked about the backgrounds of the monotone project. He prepared a paper of modern revision control systems at that time (I only have a dead link where it used to reside), but I guess most people will rather know him from one particular essay anyways, “The Cathedral and the Bazaar”: Eric S. Raymond.

Now, if esr is Eric S. Raymond, who might be rse?

If you’re working with web servers, and here in particular with the one from the Apache Foundation, you probably know of this one swiss army knife ™ which solves all your redirecting / load balancing / other weird use case problems – mod_rewrite! But actually, the person I’m talking about, is also highly popular for being the main author / founder of other popular Open Source software project, like OpenSSL, OpenPKG or RPM5: Ralf S. Engelschall. If you catch him somewhere and you’re using his software on a daily basis (like I do), do not forget to praise him ;).

Now the last, pretty hard one for me at least, I just learned today: Who’s famous for his nick drh?

I felt pretty stupid when I learned about his nick; after all I’m using his software on a daily basis as well – indirectly at least. He’s the author of SQLite (monotone’s database backend), the creator of CVSTrac (the inspiration for the nowadays widely used Trac project) and he has of course, like the other people I introduced here, his own wikipedia entry. I’m speaking of D. Richard Hipp.

So this was my Little Nickname Science. If you’ve similar anecdotes I’d love to hear them!

montone hackery

As promised a few days ago I’m writing a few words on the Monotone Summit which took place in Wuppertal from 28th of April to 4th of May 2008. I could only attend for five days because my train left already on early saturday morning, and I almost managed to get too late to it – must have been the absence of sleep, but lets tell the story from the start.

Before I arrived in Wuppertal on monday noon my feelings were a bit mixed about the event. On the one hand I had not attended anything like this before in my life, on the other hand I was completly puzzled what should actually happen there, because virtually no conversations or communication about possible topics happened on the mailing list beforehand. Given the fact that only seven people attended our little summit (me included) and none of the core hackers managed to ship over from the US, I was also unsure if it would actually become a success. Last but not least I was not sure if there was actually so much I could do for the project, being only a casual contributor who most of the time fixes UI / frontend bugs or works on the automation interface.

So after about five and a half hours train riding I found my way to the W-tec building and to the summit room we’ve been invited to use for the whole week. The ice broke pretty fast. Thomas Moschny, Dan Carosone and Lapo Luchini arrived earlier and were already discussing and working on different topics. Our hosts, Christof Petig and Siegfried Herbold, were also there and provided us with everything we needed (well, you know a programmer is satisfied if he gets coffein and occasionally something to eat :-)). Richard Levitte arrived later at the same day after getting horribly lost while navigating to W-tec by car. I must admit that I wouldn’t have done any better as a Swede in Germany.

Since our little crowd contained at least two interface gurus (Thomas Moschny, who is the author of TracMonotone and me obviously, the guitone guy), one of the main topics were improvements in the automation interface. We had and still have the strong belief that with a better, more complete interface it gets easier to connect monotone to all kinds of other software, thus increasing the uses and the amount of users over time.

Dan’s and Christof’s first topic was cvssync, which should help projects which are still stuck on CVS to get into touch with distributed version control much easier, by providing tools to push and pull contents from a CVS repository to and from monotone.

Lapo created a new grammar for selectors with the help of ANTLR which also led to many discussions during the summit (most of these discussions were lead by Dan :)).

On wednesday or thursday Lapo, Richard and Dan started on moving our existing, completly spammed MoinMoin wiki installation over to ikiwiki. The nice thing about ikiwiki is that it provides many different backends to version control systems, so our new wiki (temporary URL here) actually has a fully blown history, merge support and can be edited just from our local command lines – neat! My task later was to make it look a bit prettier and similar to what our front page looks like – easy, given the fact that I don’t do much else on my daily job…

Beside working on the automation interface (here especially ticker support for commands which need those, like f.e. push, pull and sync) I did some work on guitone. Lapo gave me input for the file diff dialog (which now displays correct line numbers).

Christof and me also started on thursday working on a TortoiseMonotone version. Christof stole some code from TortoiseHg (which astounded us is completly written in Python!) and wrapped his head around the Windows API, while I started the work on making interfacing with guitone possible, in particular preparing guitone on the other side to make it run mainwindow-less on request. This was actually pretty easy thanks to the fact that I introduced the dialogmanager wrappers in 0.7, so main windows and dialogs were only roughly coupled together.

(Lapo, Dan, Christof, Thomas M. and Siegfried [from left])

More stuff will probably fall out within the next versions of monotone and guitone, when more work and polishing is done on the projects which just started at the summit, so don’t expect that everything is already in place the next time you pull the development head of either project.

In the end these five days have been a great time for me, because I finally met some of the people I only knew from IRC or the mailing list and I got the strong feeling that the monotone community – despite of all the competition it has to face – is still alive and keen on working on this great software.

Christof was an awesome and gentle host for Richard and me during the time – we’ve had our own little appartment in his house and he managed to spend a lot of time during the summit for us even though he has a wife and two kids which obviously needed some care as well. This was not always easy, given the fact that our usual day started on 9:30am and ended between 12am and 2am in the morning. I guess he needs a vacation after this “vacation” – so Christof let me repeat my invitation: If you ever want to go east and visit Leipzig, you’re very welcome here!

(Richard and me)

A Linux tale… [updated]

My wife and I seem to share a lot of activities recently. We finally gathered a few friends around here with which we do regularily stuff like playing card games and she even got me to take Salsa dancing lessons with her. Beside that my political interests and meetings are quite regular as well, so it was just natural to think about a event planning solution which would allow us to view, add and edit events. I decided we need a calendar server!

So I started looking around for calendar server solutions. I already had a rather hacky webdav-alike setup on my Virtual Private Server (VPS) which consisted of a single ICS file, secured by a simple HTTP authentication and made writable through a PHP script, but this doesn’t seem to be the right solution for me. I wanted something better, something stable, something nice – and I apparently found it: Apple released its Darwin Calendar Server, which is the base of their commercial calendar server solution on Mac OS X Server, as Open Source under the Apache Software License 2.0 some time ago. “This will replace the old hackish setup on my VServer!”, I thought…

I logged into the server and quickly downloaded the project’s sources from the public SVN repository. The README file stated that it should apparently be enough to start the `run` script in the base directory which would take care of everything, i.e. download and install all dependencies which would be needed for the software to run. This even worked flawlessly (with only one little modification). Up to that point I was very cheerful – until I actually tried to start the server:

IOError: [Errno 95] Operation not supported: \
'/opt/calendarserver/CalendarServer/twistedcaldav/test/data'

Uh? Ah well, there was something in the README I overlooked:

WEBDAV PROPERTY STORAGE
-----------------------

For starters, twisted.web2.dav requires Bob Ippolito's xattr
library to access file system extended attributes, which are
used to store WebDAV properties.  File system extended 
attributes are available on all file systems in Mac OS X, and
on some file systems on Linux and FreeBSD.  Another 
alternative is to implement a new property store class which
does not use extended attributes. The Apache HTTP Server, for
example, uses a database to keep track of properties on files,
and this method works on many more platforms and file systems.

xattr? Hrm… I never heard of that before – but Google shed light into my darkness: As Wikipedia amongst others states, they are “[…] a file system feature that enables users to associate computer files with metadata not interpreted by the filesystem […]”, basically simple key-value pairs of arbitrary size and content. A quick grep over the config file of the currently running kernel showed me that at least support was already compiled into it:

$ cat /boot/config-2.6.11.4-20a-smp | grep XATTR
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_DEVPTS_FS_XATTR=y
CONFIG_TMPFS_XATTR=y
CONFIG_CIFS_XATTR=y

Cool! I read somewhere that in this case one would just have to add the mount option `user_xattr` to /etc/fstab and remount the filesystem in question and everything would be fine… Well, it would be fine if my /etc/fstab would actually contain an entry for `/`! Being on a virtual server started to get a little annoying.

But I didn’t capitulated, not yet. “Wasn’t there a way to create and mount a filesystem from a disk image?” I wondered. I used this technique a couple of times to mount ISO images and browse their contents back in my old Linux days. I read a bit further on this topic and found many helpful ressources on this topic. At first I needed to create an image file and format that with a filesystem:

# 128 blocks of 1MByte size
$ dd if=/dev/zero of=caldavdata.image bs=1M count=128
128+0 records in
128+0 records out
134217728 bytes (134 MB) copied, 0.506394 seconds, 265 MB/s
$ mkfs.ext3 -v caldavdata.image
mke2fs 1.36 (05-Feb-2005)
caldavdata.image is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
32768 inodes, 131072 blocks
6553 blocks (5.00%) reserved for the super user
First data block=1
16 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts
or 180 days, whichever comes first.
Use tune2fs -c or -i to override.

“Great! Now I only need to mount that baby!” I thought:

$ mount caldavdata.image /opt/caldavdata -t ext3 -o loop
mount: could not find any device /dev/loop#

Indeed, there was not one single block device in /dev starting with `loop` – in fact the only two block devices I found there at all were related to the virtual server’s own file system. In my naive thinking I continued: “Hey, if this block device is not existent, I’m pretty much sure that I can create it with mknod!”. Indeed, mknod can create any kind of char or block devices. This site pointed me to the correct needed major and minor numbers for such a device:

$ mknod /dev/loop0 b 7 0 # 'b' stands for block device
$ ls -lah /dev/loop0 
brw-r--r--  1 root root 7, 0 Feb  1 21:25 /dev/loop0

“Success!” I thought and tried the mount command again:

$ mount caldavdata.image /opt/caldavdata -t ext3 -o loop
mount: Could not find any loop device. Maybe this kernel does
       not know about the loop device?
       (If so, recompile or `modprobe loop'.)

“Yeah, apparently it does not know about device” and ran the proposed `modprobe loop`:

$ modprobe loop
FATAL: Module loop not found.

Hrm… could it be that loop wasn’t compiled as module? Grepping the config told me yes:

$ cat /boot/config-2.6.11.4-20a-smp | grep LOOP
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=m

So, the last thing I could think of (as an ignorant Linux user) was to reboot the server and hope that it would somehow recognize the loopback file.

Of course, this did not work out.

I’m now in the sad process to get used to Google Calendar

[Update: Actually the only bad things about Google Calendar until today are

a) I don’t have full control of the server-side storage / backup

b) I can’t publish events to Google via iCal – well, at least I could not until today.

Apparently Google offers an RSS-alike API to access calendar data and somebody wrote a small Java server which “translates” between this custom RSS format and the standard ical format. It allows file-based synchronization (i.e. particularily useful for iCal which can’t just embed and write CalDAV ressources) and even contains a small web server to do the translation live and in place – how neat is that?!

You can download GCalDaemon here.]

Schwarz-Weiß-Denken hat keine Zukunft

Viele von uns – und ich nehme mich da gar nicht aus – haben sich schon so sehr mit dem Begriff “Stasi 2.0” als Synonym für Schäubles Überwachungsmaßnahmen identifiziert, dass sie die Relation, in der die damaligen Überwachungsmaßnahmen zu den heutigen geplanten oder auch bereits eingeführten Maßnahmen stehen, nicht mehr hinterfragen.

Daniel Kulla, Schriftsteller und Verleger aus Berlin (ich habe nachgeschaut, dem Mann wurde trotz seines jungen Alters bereits ein eigener Wikipedia-Eintrag zuteil) – schreibt in Vorbereitung auf eine Rede, die er heute in der C-base in Berlin gehalten hat, folgendes:

Stasi 2.0 reloaded schlägt zurück und is watching you? Die aufrechten Hacker kämpfen als Speerspitze der freiheitsliebenden Deutschen gegen den Überwachungsstaat? “Diesmal stoppen wir sie vor dem Reichstagsbrand”? Vielleicht ist die Gesamtlage doch etwas komplizierter.

Das Ministerium für Staatssicherheit unterhielt 200 000 Zuträger, um die eigenen Staatsbürger davon abzuhalten, die Gesellschaftsordnung der DDR in eine der BRD ähnliche zu verwandeln. Abhörtechnik, willkürliche Verhaftungen und auch die Verwendung von Geruchsproben gehörten zur Routine. Der Innenminister, sein Ministerium und die anderen Sicherheitsfachleute der Gegenwart wollen hingegen die gegenseitige Überwachung der Marktsubjekte um einzelne, wenig zielführende Maßnahmen
ergänzen.

[…]

Wer sich in Deutschland für das Recht auf Privatsphäre, für Persönlichkeitsrechte allgemein einsetzt, vertritt eine Minderheitenposition und kann sich auf keine Civil Liberties Union stützen, nicht auf libertäre Fraktionen in den Regierungsparteien oder auf eine starke Bürgerbewegung, die wie in Irland Biometrie in den Ausweisen verhindern könnte.

[…]

Stasi 2.0? Nein, ganz einfach Volk 1.0, Standardausgabe. Wer in der Zeitung über seine Nachbarn lesen will, was sie für sexuelle Gepflogenheiten haben oder wie gemeinschaftsfeindlich sie sich der unkorrekten Mülltrennung schuldig machen, der hat wenig Skrupel, was einen starken, schützenden Staat angeht.

Natürlich blieb diese “Provokation” auf Seiten des AK Vorrat in Person von Volker Birk nicht unbeantwortet.

Ich persönlich kann mich in letzter Zeit mit beiden Meinungen nicht wirklich identifizieren.

Auf der einen Seite ist es mehr als betrüblich, dass die Sicherheitsmaschinerie des Innenministeriums, quasi ohne ins Stocken zu geraten, weiterläuft. Sicher haben sich mittlerweile über 25.000 Personen der Verfassungsbeschwerde gegen die Vorratsdatenspeicherung angeschlossen und natürlich hoffe ich wie alle anderen Unterzeichner auf einen Erfolg.

Aber wie ist der zu definieren? Ganz an der Vorratsdatenspeicherung vorbei werden wir wohl nicht kommen – das ist nicht zu erwarten. Und selbst wenn die VDS in ihrer jetzigen Form irgendwie gestoppt wird, so schnell wie wir aus dem hiesigen Innenministerium mit neuen Maßnahmen (Online-Duchsuchung, ePass, ePerso, im weitergehenden Sinne auch elektronische Gesundheitskarte und eCall) befeuert werden, wird uns bald die Puste ausgehen. Der Grund ist einfach: Es gibt immer noch keinen breiten Widerstand durch alle Bevölkerungsschichten, wir sprechen von mehreren zehntausend aktivierten Menschen, benötigt werden jedoch Hunderttausende.

Werden die sich in Zeiten der Selbstentblößung im Web 2.0, wo Menschen sich und ihre Daten prostituieren, mehr von sich preis geben als Schäuble je von uns wissen werden will, wirklich finden? Ich weiß es nicht. Ich hoffe es, aber ich bin mir wirklich unsicher. Vielleicht ist der Wunsch, Geheimnisse für sich zu behalten, ein in 20 Jahren nicht mehr länger erstrebenswertes Ziel? Was wird mein jetzt anderthalb Jahre alter Sohn zu den Befürchtungen, Mahnungen und Ängsten seines “alten Herrn” dann entgegnen?

Auf der anderen Seite macht es bei dem aktuellen, politischen Tagesgeschehen (Islamisten mit Atombombe in greifbarer Nähe?) aber auch keinen Sinn, sich als “unverbesserlicher Datenschützer” aufzuführen; und es hat wahrscheinlich auch nie wirklich Sinn gemacht. Wie soll die Polizei möglicher neuer Angriffsarten Herr werden, wenn sie sich und ihre Techniken und Verfahren nicht ebenfalls weiterentwickelt? Natürlich will ich keine umfassende Überwachung, aber ich möchte auch nicht von einem fundamentalistischen Islamisten an der nächsten Kreuzung mitsamt meiner noch jungen Familie umgebracht werden. Klar, wie wahrscheinlich ist das, dass das passiert? Doch wie groß ist das Leid der Familien und das Gezeter, wenn es dann doch passiert…?

Es gilt, wie immer und überall im Leben, einen Kompromiss zu finden. Und ich bin da ganz ehrlich: Habe ich wirklich bessere Vorschläge und Ideen, die meine, die unsere Sicherheit garantieren? Nein, nicht wirklich.

Sicher, absolute Sicherheit gibt es nicht und Sicherheitsgarantien sind ohnehin Blödsinn. Rational denken hilft bei Terroristen aber ebenso wenig. Ein Denkanstoß zu dem fehlgeschlagenen Versuch des Westens, die “Radikalen doch noch irgendwie zu zivilisieren”, liefert bspw. ein Artikel auf Spiegel Online:

Während die europäischen Intellektuellen sich darüber die Köpfe zerbrechen, wie man den Islamismus bekämpfen könne, ohne die moderaten Moslems in die Arme der Extremisten zu treiben, bestimmen die Fundamentalisten den Gang und das Tempo der Auseinandersetzung. Ob es ein paar harmlose Mohammed-Karikaturen sind, die in einer dänischen Zeitung erschienen sind oder ein Teddybär, den eine im Sudan lebende Britin “Mohammed” genannt hat oder die Ernennung von Salman Rushdie zum Ritter – für die Fundamentalisten sind das alles Belege einer im Westen grassierenden Islamophobie.

Wenn sie dagegen Geiseln enthaupten, Ehebrecherinnen steinigen und Homosexuelle aufhängen, dann setzen sie nur ihren Glauben in die Tat um und verbitten sich jede Kritik, die sie natürlich auch als “islamophob” empfinden. Aller Rückständigkeit zum Trotz haben die Fundamentalisten eine Lektion gelernt: Schurkereien machen sich bezahlt, der Westen ist im Begriff, aus Angst vor dem Tode Selbstmord zu begehen.

Wie kann man denn aber nun Terrorismus wirklich den Nährboden entziehen und damit die ganze Sicherheitsmaschinerie überflüssig machen?

Ich denke, es ist Neid, Verzweiflung und Armut, die Menschen zu Selbstmordattentätern werden lässt, verbunden mit fehlender Bildung und Verblendung. Wir betreiben auf Kosten unserer eigenen Freiheit ein globales Wettrüsten, um unsere Sicherheit, unseren Wohlstand zu sichern. Aber wie viel tun wir gegen das vielgesichtige Leid der Menschen in den Regionen auf dieser Welt, in denen Terrorismus seine Brutstätten hat? Und wie hoch sind im Vergleich dazu die Militär- und Verteidigungsausgaben der westlichen Länder – wie hoch ist unser eigener Wohlstand?

Es ist gleichzeitig beängstigend, aber von einem äußeren Standpunkt auch interessant, zu erfahren, was die Zukunft für uns bereit hält.

Trotz alledem ein frohes neues Jahr 2008.

Zen Master of Programming

I started with computers pretty late, around 1997, at the age of 15. I was totally ignorant about them before back in the day. I had a pretty good typewriter with which I did all my homeworks and I was satisfied with it. On the other hand many of my classmates had a computer, but they mainly used theirs for gaming. Yeah, gaming… I thought “why on earth should I pay several thousands of Marks [the old currency in Germany] just to waste time and… play?!”. I thought, if I ever get a computer, I want to do something creative with it…

In the two upper years in grammar school I chosed Information Science as optional course. I was somehow interested in the topic, because the media more and more grabbed up the whole computer/internet topic and I just thought “a little knowledge in this area surely doesn’t hurt”. I knew that it would be quite useless to attend this course without having a computer at home, a place where I could actually try out what I’ve learned. So, shortly after I expressed my interest in attending this course, my father and I bought my first PC: a Pentium MMX with 200MHz, 32MB RAM, a Matrox Mystique 4MB graphics card, a 15 inch monitor and a 4GB hard disk. And it was expensive, I can’t remember the exact price, but damn, it was a lot of money.

The following years had their ups and downs. I learned a lot by playing around with the operating system (don’t tell me how often I had to re-install Windows 95/98 because I messed with the config and registry) and I took my first steps into the programming world: Turbo Pascal! This was the language they taught us in the information science course and it immediately became clear who was really interested in this course and who not: Those who just attended to browse the internet for free received bad grades and mostly couldn’t follow. But there were also a few people (amongst them my pal Stefan and I) who stepped into the topic and hacked like mad. He was into game programming (vga, 4bit color DOS games, anyone?) and I was, umm, more this kind of early application developer. As much as I appreciated his work, I was just too uncreative to do game development. Anyways, these times were fun, because we exchanged our knowledge and tried to outperform each other by using and implementing stuff the teacher hadn’t even told us.

In my last year in grammar school we switched away from Pascal to Prolog – and I hated it right from the start. My main appeal to do programmaing at all was to see something appear on the screen, see that some nice algorithm worked, but not to hack definitions into a command prompt and wait for the overly astonishing result “x is a cat” to return. I was probably too much of a greenhorn at that time, because from today’s perspective this language and the concepts sound pretty nice. Anyways, disappointed by Prolog I started MFC programming with C++ in Visual Studio 6 in my spare time (don’t ask me where I got this, you know, there have been these sources, …). One of my first projects has been a Paint application which even made it to a “PC Games” CD (yes, obviously even I played sometimes on computers…). These CDs contained (amongst demos from new and upcoming games) also a section where users could send in their small, self-developed programs. Usually some of them were nice (some even let you “wao”), but most of them just sucked. They were simple, dead boring text adventures mostly written in BASIC. So, I was quite impressed that my little program deserved real honor, they teasered it as “pretty solid paint application”, and not just as “another nice text adventure”. I was so proud!

Anyways, the rest is history. After school I decided to study information sciences, discovered the internet, learnt even more about computers, operating systems and programming languages, and started gaining my first working experiences. I mainly started with working because I wanted to learn more than my study could provide me. Programming is crafting, and you will never get all the tricks in university. A real hacker from which you can learn stuff is absolutely invaluable! So I was looking for some kind of mentor, a “grand master” which could tell me the missing bits, with whom I could hook up and gather indefinite knowledge.

I sadly never found such a person, wherever I worked. Either people asked me how to do things or I had to tell them how to do stuff. At most I had colleagues, “senior developers”, which knew what they did, but were not too fond to let me participate on their knowledge. Though, none of them was what I would call a “Zen Master of Programming”.

I have to say that I still feel bad – even today – that I never had such a person. My time is limited nowadays, by my daily job and my family, and I have neither the opportunity to study again nor am able to revive my hack sessions which sometimes kept me awake all night in the early days of my bachelor study. The work I do on free software projects like monotone or my own project guitone is therefor limited as well, and the distance between the other developers (from which a few of them certainly have “Zen Master” status) doesn’t make it easy to create a real relationship which I’d like to have. In an ideal world, I could just hook up with them, sit with them in front of a computer, staring at code and hack like mad!

In an ideal world…

Playing around with iLife’s new iMovie

My wife’s new MacBook arrived a couple of weeks ago with the new iLife ’08 suite and since iMovie has been said to receive the greatest overhaul I thought it was time for some serious video editing.

To get raw material in first instance we put our two laptops in two different places in my son’s room, each with another viewport. The built-in iSight cameras did quite a good job – resolution- and color-wise – while the picture was sometimes a bit too dark or too light under some circumstances. A bit annoying was also that its quite hard to move a laptop like a portable video camera if your little son is moving quickly through the room. You have no real way then to determine if the picture is ok since there is no display on the rear of the camera / laptop screen. But hey, if you have no money for a portable one I guess you have to live with those minor issues.

Anyways, after our recording session I copied the video project from my wife’s laptop and fired up iMovie. I noticed then that you have to import iMovie HD projects into iMovie, which took quite a long time for the roughly 25 minutes of raw video we had1. Why on earth did Apple not just simply upgrade the old HD format bundle, but decided to copy around gigabytes of raw camera output?!

After the import was finally done I found myself very pleased with the easy interface of iMovie. Stiching parts of video clips together was as easy as marking a certain video sequence with the mouse in the events view and dragging it into the project view, while adding sound from iTunes, still pictures from iPhoto (with the famous Ken Burns effect) and various transitions. You can also directly record audio and video from the built-in microphone or iSight / connected webcam like in the previous version, normalize and adapt the volume of audio tracks and even do some basic video image processing.

While this makes a good overall picture, I found some things annoying, difficult to accomplish or even impossible (please give me a pointer if it was really just my dumbness ;):

  • The amount of transitions is very limited. If your video should not look too amateurish, you can probably only use two or three (cross-fade, fade to black, fade to white)
  • Its not obvious to change the length of a transition, i.e. you can’t just drag them bigger or smaller like you can do with video clips, and I somehow managed to overlook the context menu item “change duration” in first instance… maybe this was inserted just after I globally edited the project settings and raised the default length from 0.5 seconds to 1 second… I don’t know.
  • The only way I found to create moving text for a short credits section was the pre-defined text template. How do I do horizontally scrolling text there? How do I change the length of the credits display after I set it initially? (It managed to occupate half or everything of the length of the clip on which I dragged it.)
  • I found no way to create some “blackness” on which I could display text like f.e. the credits at the end – am I supposed to create a 1x1px^2 black image, place it into my project and display text on it?
  • There seems to be no way to do advanced audio editing f.e. to adapt the volume of certain parts of a bigger background audio track or fade it in/out at certain positions if the foreground/video audio should be understood better.
  • I dislike the track views which break like text lines if the space is up on the right. They make it kind of hard to select sequences which span multiple lines. Surely Apple’s developers invested quite a lot time to get it “flowing” nicely that way, but I’m not sure if that served the usability very well.

Anyways, here is the result of the work. Please be gentle if you vote on it 😉

1 You ask why I recorded in the older iMovie HD, and not directly in iMovie? Well, the first time I tried to fire up iMovie, Quicksilver gave me an error similar to “wrong version of Quartz composer installed” so I thought – at first – my iMovie installation was broken somehow and decided to go for the older iMovie HD to record the video, just to find out a little later that Quicksilver was the real issue and not iMovie…