Sebastian Kirsch: Blog

Thursday, 26 January 2006

US and Iran uniting agains the common threat

Filed under: — Sebastian Kirsch @ 02:13

In case you wondered what it would take to get the US and Iran to agree with each other, which enemy they consider dire enough to unite them against the common threat, which enemy would make the US back Iran (a nation Dubya called the “world’s primary state sponsor of terrorism") – now we know.

It’s gays and lesbians.

On monday, the US backed an Iranian initiative to dismiss the application of two gay and lesbian groups for observer status with the UN. The International Lesbian and Gay Association and the Danish Landsforeningen for Bøsser og Lesbiske applied for this status in 2005, which would allow them to participate in discussions at the UN Economic and Social council. An Iranian motion to dismiss this application without even a hearing of the applicants was backed among others by the US, Sudan and Cuba.

I think the message is clear: Iran may be in the axis of evil, it may be a sponsor of terrorism, it may be the biggest nuclear threat in the world – but as long as it’s against gays and lesbians, the US are with Iran all the way.

Sunday, 22 January 2006

Freiheit für Programmierer?

Filed under: — Sebastian Kirsch @ 02:01

Manchmal schreiben die üblichen Verdächtigen doch Sachen, zu denen ich mir einen Kommentar nicht verkneifen kann. So schreibt Marcus unter der Überschrift Design happens:

wenn man eine Menge an guten Programmieren nimmt (ein Projektteam), ihnen sagt was sie tun sollen (die Featureliste), dann entsteht das Design von ganz allein.

Das hört sich im ersten Moment gut an, hat leider einen gravierenden Nachteil:

Diese Methode scheitert schon bei Schritt 1. “Wenn man eine Menge an guten Programmierern nimmt…” Leider ist diese Menge an guten Programmierern meistens nicht so ohne weiteres greifbar. Es gibt nicht so viele gute Programmierer. Es gibt genauer gesagt sogar nur sehr, sehr wenige gute Programmierer.

Und: Methoden des Software-Design werden nicht für gute Programmierer entwickelt. Ein Mozart musste keine Musikhochschule besuchen, um Symphonien zu schreiben – aber behaupten wir deshalb, Musikhochschulen seien überflüssig, und man müsse guten Musikern nur ein Instrument an die Hand geben, und dann würden sie schon mit Freiheit und klar definierten Aufgaben Meisterwerke komponieren? Behaupten wir, Mathematik-Fakultäten wären überflüssig, weil man guten Mathematikern (wie Srinivasa Ramanujan) nur ein Anfängerbuch über Differentialrechnung in die Hand geben müsste, und sie erfinden dann die Grundlagen der Numerik selbst neu?

Nein, Software-Engineering wurde nicht für die wenigen Wunderkinder erfunden. Software-Engineering wurde erfunden, damit nicht-Wunderkinder eine Methodologie haben, nach der sie ein Projekt zu Ende bringen können – vielleicht nicht so elegant wie ein Wunderkind, vielleicht nicht so fehlerfrei, vielleicht nicht so schnell, aber so, dass es beendet wird. Einem Mozart würde niemand übel nehmen, wenn er sich über die bestehenden Konventionen hinwegsetzt. Aber gleichzeitig käme niemand auf die Idee, seine Arbeitsweise verallgemeinern zu wollen und als Vorbild darstellen zu wollen. Ebenso sollten die “guten Programmierer", die oben angesprochen wurden, eine gesunde Selbsteinschätzung besitzen, und Methoden, die für sie selbst funktionieren, nicht als allgemeingültig propagieren.

Und wenn förmliche Prozesse wirklich nur behindern, und wenn gute Programmierer wirklich nur Freiheit brauchen, um erfolgreiche Software entstehen zu lassen: Wie erklären wir uns dann die absolut katastrophalen Erfolgsraten im Software-Engineering? Wie erklären wir uns, dass 1994 nur 16% aller Software-Projekte im Zeit- und Budgetrahmen fertiggestellt wurden? Und dass 31% aller Projekte gar nicht beendet wurden? (Zahlen aus dem Chaos Report.) Hatten die Programmierer zu wenig Freiheit?

Nachtrag: Wer von Hackers and Painters beeindruckt war, dem empfehle ich (um die Perspektive ein bisschen zurecht zu rücken) einen Blick in Dabblers and Blowhards.

Wednesday, 18 January 2006

Linux DVD burner troubles

Filed under: — Sebastian Kirsch @ 20:59

Recently, I had much fun trying to set up an IDE DVD burner under Linux.

After asking a couple of friends, who told me, “Buy LG or BenQ, those are good", I decided on a BenQ DW1640. Little did I know …

Strangely enough, burning DVDs and CDs worked fine from the start. The drive just had trouble reading media – regardless whether it was a DVD or a CD, whether it was burned or pressed. I would get I/O errors, the media wouldn’t mount, and in some cases, the machine locked up completely or threw a kernel oops.

Obviously, this is something that is not supposed to happen. A Linux box is not supposed to throw a kernel oops or lock up just because of a DVD burner. And googling for the error messages did not turn up much useful material either.

So I tried the usual elimination strategy: I tried two different mainboards (one a P3-800, one a P4-1.5GHz), I tried two different Linux versions (2.6.5 and 2.6.14.6), I tried different media (see above). CDs written by the DVD burner would read perfectly in the CDROM drive (which the machine also has), but would not read in the DVD burner. Nothing helped.

In the end, I found my answer buried in an Ubuntu bug report:

It seems that the BenQ DW1640 does not like PIO mode. You have to use it in DMA mode. No DMA, no dice. And you need a proper 80-pin cable. If you don’t, you will get all sorts of strange errors. While testing, I even had a very helpful message telling me that “This drive is not supported by this version of the driver.” – which is quite clearly not the case. It’s just another IDE drive, ya know?

According to the bug report, a firmware upgrade may help with this problem. But of course, BenQ in their infinite wisdom only supply the firmware upgrade software for Windows (specifically, Windows 98/Me/2000/XP – if you have NT or Windows 95, you’re out of luck.) Whatever happened to supplying firmware upgrade utilities on small bootable DOS floppies? Also according to the bug report, this problem is shared by drives with the Philips Nexperia PNX7860E chipset, including the Plextor 740A.

So, thank you very much, BenQ and Linux, for two days of fun tracking down this problem!

For the record (and for Google) this is the kind of error message I got in the log file:


Jan 17 17:32:42 kernel: hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
Jan 17 17:32:42 kernel: ide: failed opcode was: unknown
Jan 17 17:32:42 kernel: hdc: drive not ready for command
Jan 17 17:32:42 kernel: hdc: ATAPI reset complete
Jan 17 17:32:42 kernel: hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
Jan 17 17:32:42 kernel: ide: failed opcode was: unknown
Jan 17 17:32:42 kernel: hdc: drive not ready for command
Jan 17 17:32:42 kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000000
Jan 17 17:32:42 kernel: printing eip:
Jan 17 17:32:42 kernel: c015e050
Jan 17 17:32:42 kernel: *pde = 00000000
Jan 17 17:32:42 kernel: Oops: 0002 [#1]
Jan 17 17:32:42 kernel: Modules linked in: edd evdev joydev st sd_mod sr_mod ide_cd cdrom nvram speedstep_lib thermal ipv6 processor fan button battery ac paride parport intel_agp agpgart sg scsi_mod uhci_hcd i2c_i801 i2c_core 3c59x mii usbcore dm_mod
Jan 17 17:32:42 kernel: CPU: 0
Jan 17 17:32:42 kernel: EIP: 0060:[<c015e050>] Not tainted VLI
Jan 17 17:32:42 kernel: EFLAGS: 00010287 (2.6.14.6)
Jan 17 17:32:42 kernel: EIP is at create_empty_buffers+0x20/0x80
Jan 17 17:32:42 kernel: eax: 00000000 ebx: c1134fa0 ecx: 00000000 edx: 00000000
Jan 17 17:32:42 kernel: esi: 00000000 edi: dffea384 ebp: 00010000 esp: d64adce0
Jan 17 17:32:42 kernel: ds: 007b es: 007b ss: 0068
Jan 17 17:32:42 kernel: Process dd (pid: 11848, threadinfo=d64ac000 task=de3cd030)
Jan 17 17:32:42 kernel: Stack: c1134fa0 00000000 c015eba0 22e8ca00 dffede00 de5cd01c dffede08 00000020
Jan 17 17:32:42 kernel: 00000001 dfff3800 00000096 00000000 00000000 00000096 dffea388 dffea2e4
Jan 17 17:32:42 kernel: c0162ba0 c1134fa0 c021852f c1134fa0 00000000 dffea388 c1134fa0 dffea384
Jan 17 17:32:42 kernel: Call Trace:
Jan 17 17:32:42 kernel: [<c015eba0>] block_read_full_page+0x270/0x320
Jan 17 17:32:42 kernel: [<c0162ba0>] blkdev_get_block+0x0/0x80
Jan 17 17:32:42 kernel: [<c021852f>] radix_tree_insert+0xbf/0x110
Jan 17 17:32:42 kernel: [<c0144b2c>] read_pages+0x4c/0x100
Jan 17 17:32:42 kernel: [<c01427ac>] __alloc_pages+0x17c/0x410
Jan 17 17:32:42 kernel: [<c0144c84>] __do_page_cache_readahead+0xa4/0x100
Jan 17 17:32:42 kernel: [<c0144e31>] blockable_page_cache_readahead+0x51/0xd0
Jan 17 17:32:42 kernel: [<c01450b6>] page_cache_readahead+0x146/0x1a0
Jan 17 17:32:42 kernel: [<c013e896>] do_generic_mapping_read+0x326/0x490
Jan 17 17:32:42 kernel: [<c013ea00>] file_read_actor+0x0/0xf0
Jan 17 17:32:42 kernel: [<c013ec92>] __generic_file_aio_read+0x1a2/0x210
Jan 17 17:32:42 kernel: [<c013ea00>] file_read_actor+0x0/0xf0
Jan 17 17:32:42 kernel: [<c013ee05>] generic_file_read+0x95/0xc0
Jan 17 17:32:42 kernel: [<c014d45a>] do_no_page+0x6a/0x2a0
Jan 17 17:32:42 kernel: [<c012ed00>] autoremove_wake_function+0x0/0x50
Jan 17 17:32:42 kernel: [<c015b667>] vfs_read+0xd7/0x180
Jan 17 17:32:42 kernel: [<c015b9f1>] sys_read+0x41/0x70
Jan 17 17:32:42 kernel: [<c0102eaf>] sysenter_past_esp+0x54/0x75
Jan 17 17:32:42 kernel: Code: 8d 74 26 00 8d bc 27 00 00 00 00 56 89 ce b9 01 00 00 00 53 89 c3 e8 40 f7 ff ff 89 c1 89 c2 8d b6 00 00 00 00 8d bf 00 00 00 00 <09> 32 89 d0 8b 52 04 85 d2 75 f5 89 48 04 8b 03 a8 08 75 06 8b

Wednesday, 11 January 2006

Hot Club de Frank at Café Kobalt

Filed under: — Sebastian Kirsch @ 00:55

I recently spent a few days in wonderful Amsterdam. On Sunday evening, me and some friends went to Café Kobalt on Singel, in the vicinity of central station. It’s a rather large café (at least for Amsterdam standards) with a decent variety of beers (I recommend the Westmalle Dubbel, a very dark and malty trappist beer) and a large menu, which unfortunately we weren’t able to sample.

When we arrived at about five in the evening, the place was packed to the last seat, with people standing in the free spaces, small children running around, and dogs sitting between the feet of their owners, and moisture condensing on the window panes. As evidenced from the birthday cake and a table with presents, someone must have celebrated his birthday that evening – or rather her birthday? The “Sex and the City” boxed dvd set lends credence to that theory, but we never found out.

The Kobalt also hosts concerts every Sunday, and to my delight, a band called “Hot Club de Frank” was playing. They play swing, gypsy jazz and klezmer, with a lineup consisting of lead guitar, rhythm guitar, double bass, saxophone and violin. The name itself is a giveaway as regards their repertoire, of course.

I must have made rather boring company that evening: I liked the music so much that I spent most of the time listening, even though people were chatting away around me. It’s something I like to call “handmade music” – plain good music, with musicians who quite clearly enjoy themselves, and with a minimum of amplification.

I bought two of their CDs after the show. When I came home, I found out that one of them was badly scratched. This must have happened during manufacturing, as I hadn’t even taken it out of its plastic wrapping yet. But a quick email to the band solved this problem: Frank (as in “Hot Club de Frank", of course) immediately offered to send me a replacement CD. Great service!


Copyright © 1999--2004 Sebastian Marius Kirsch webmaster@sebastian-kirsch.org , all rights reserved.