Webdesign and the horrors of IE 5.0, IE 5.5, IE 6

This past weekend I took a swing at reworking one of my sites using XHTML 1.1 and CSS 2.1. Everything was going well. Firefox 1.5.0.7 and 2.0 were happy campers as was Opera 9.0.2. In between I goofed around a bit and bumped into a truly amazing script called “ies4linux” made by Sérgio Luís Lopes Júnior that installs IE 5.0, IE 5.5 and IE 6 on a Linux box. It even throws in Flash if you want to. In my case I installed it on my laptop running Fedora Core 6 and Wine. You can find the “ies4linux” script on his website at tatanka.com. First I installed Wine with yum, downloaded the script, started it and answered a few simple questions. The script went on its way to download some files and installed all three IE browser versions. Once finished I had 3 IE icons on my Desktop. I double clicked on the IE6 icon and lo and behold IE6 started fine and browsing websites worked like a charm. I quickly tried the two other versions and they worked too. Kudos to the Wine folks and Sérgio.

But then came the agony. I fired up IE6 again and browsed to my newly reworked site. Oh the horror. It looked awful. The entire layout was messed up and margins and padding took a whole new meaning. Next I tried IE5.0 and IE5.5. Both made an even bigger mess than IE6. I had read about all the IE horror stories and this time I had my own to tell. What were the Microsoft developers thinking when they released these abominations into the wild?! How is it possible that they got the crystal clear box model wrong?! Even IE6 is chock full of embarrassing bugs (have a look here for a nice overview). Do the Microsoft developers take no pride in their work? One can only hope that IE7 will fix this mess but googling around it seems they still have some work to do. Sigh.

It took me more than 2 hours to find, understand and fix all the ugly hacks for IE’s stupid bugs. And that was only in the front page. Now it looks fine in Firefox 1.5.0.7, Firefox 2.0 and Opera 9.0.2 on Linux and IE5.0, IE5.5 and IE6 on Wine :-) I don’t have a Mac to check but I’m sure I will hear about it soon enough once the reworked site is launched.

Wolfenstein Enemy Territory on FC6 x86_64 & ATI fglrx drivers

Last week I upgraded my Acer Ferrari 4005 laptop to Fedora Core 6. On rpm.livna.org I noticed that the ATI proprietary drivers where available too. I am not a supporter of proprietary solutions if there is a good Open alternative (good in the 2D sense only I’m afraid) but thought I try them too get a feel for the difference between the Open driver and proprietary one. Kudos to the Livna folks since they installed like a charm and worked right away. For some background info have a look at the Phoronix website.

With the fglrx drivers working it was time to see how fast it would go. Not being a gamer I don’t have any games so downloaded the free Wolfenstein: Enemy Territory (ET) demo. It took me way too long to figure out how to get ET going. The problem is that the game is x86 and not x86_64. So you need to do a couple of things to make it work:

0) I’m assuming here that you already have the x86_64 ATI proprietary drivers installed from rpm.livna.org
1) download the x86 version of the ATI proprietary drivers from the ATI website
2) make the directory: /usr/X11R6/lib32/modules/dri
3) make the directory: /usr/lib/ati-fglrx
4) from the rpm copy the files atiogl_a_dri.so and fglrx_dri.so to /usr/X11R6/lib32/modules/dri
5) from the rpm copy the files libGL.so.1.2 libfglrx_dm.so.1.0 libfglrx_gamma.so.1.0 libfglrx_pp.so.1 and libfglrx_tv.so.1.0 to /usr/lib/ati-fglrx
6) change to the /usr/lib/ati-fglrx directory
7) create a bunch of symlinks: ln -s libGL.so.1.2 libGL.so.1 && ln -s libfglrx_tvout.so.1.0 libfglrx_tvout.so.1 && ln -s libfglrx_pp.so.1.0 libfglrx_pp.so.1 && ln -s libfglrx_gamma.so.1.0 libfglrx_gamma.so.1 && ln -s libfglrx_dm.so.1.0 libfglrx_dm.so.1
8) change the ET startup script (“et”) to look like this:

#!/bin/sh
# Needed to make symlinks/shortcuts work.
# the binaries must run with correct working directory
cd “/home/patrick/et/”
export LIBGL_DRIVERS_DIR=/usr/X11R6/lib32/modules/dri
export LD_LIBRARY_PATH=/usr/lib/ati-fglrx:/usr/lib:$LD_LIBRARY_PATH:.
exec ./et.x86 “$@”

If all is well, ET should now start on your FC6 x86_64 box. Enjoy!

Update: it may be possible that the 32bit fglrx libs at rpm.livna.org are a much cleaner solution. I have not tried it. Keep in mind that you still need to change the “et” startup script as described above.