“Fun” with Internet Explorer

I just spent half the day hunting down a tricky bug in (probably) Internet Explorer.

Situation: We were working on a piece of documentation consisting of multiple HTML files using frames. It was planned to burn this directory structure to a CD, and the CD would then be delivered to the customer.

While checking the docs for browser compatibility, we found out, that on some computers (I still don’t know the pattern… all running Windows XP SP2, although some of them have a chinese language version, some of them have an english language version installed) the left navigation frame just didn’t work, as in nothing happened when clicking on the links. The linked URLs were correct, the files existed, but the browser in question (Internet Explorer) just didn’t open them. BUT: This happened only, when the html files were stored on the local hard drive. When we accessed them via SAMBA on a network share, everything was fine! In Firefox it worked perfectly fine from everywhere.
After a lot of searching, following wrong assumptions and so on, I found out, that when I accessed the docs on the local hard drive, Internet Explorer switched to ‘Unknown zone (mixed)’. When accessing them on the SAMBA share, Internet Explorer always showed ‘Internet’ zone. I tried to find out what could trigger Internet Explorer to do that, but didn’t find anything useful. Due to closed source and no debugging possibilities I didn’t see any way to find it out on my own.
Another couple of hours later, I converted the HTML file containing the navigation menu from DOS/Windows style line breaks (\r\n) to UNIX style line breaks (\n) with ‘dos2unix’. I did this, because I wanted to use sed on my Linux system to remove a big amount of empty lines in the file (I’d like to know how they got there in the first place, but that’s another story).
And suddenly it worked. From local disk. I couldn’t believe it at first, and converted the file back to UNIX style (using ‘unix2dos’), and it stopped working again, so I was sure it was this change what caused the bug to not being triggered anymore.
So to sum up: we have to convert one of the HTML files (which were generated on a Windows machine) in the package (consisting of hundreds of files) from Windows style line breaks to UNIX style line breaks to make the whole thing work on a Windows target system.

And who may I thank for all of this? Beloved Microsoft Corporation.

GPRS with Nokia 9300i, Gentoo and China mobile

Perhaps somebody else will find this useful. The relevant part of my /etc/conf.d/net:

(assuming Bluetooth works)

### GPRS ###

config_ppp0=( "ppp" )

link_ppp0="/dev/rfcomm0"

pppd_ppp0=(
        "noauth"        # Do not require the peer to authenticate itself
        "nomagic"
        "debug"
        "local"         # Ignore carrier detect signal from the modem

        "defaultroute"  # Make this PPP interface the default route
        "usepeerdns"    # Use the DNS settings provided by PPP

        "lcp-echo-interval 15"  # Send a LCP echo every 15 seconds
        "lcp-echo-failure 3"    # Make peer dead after 3 consective
                                # echo-requests

        "lock"                          # Lock serial port
        "115200"                        # Set the serial port baud rate
        "crtscts"                       # Enable hardware flow control
)

chat_ppp0=(
        'TIMEOUT' '5'
        'ECHO' 'ON'
        'ABORT' '\nBUSY\r'
        'ABORT' '\nERROR\r'
        'ABORT' '\nNO ANSWER\r'
        'ABORT' '\nNO CARRIER\r'
        'ABORT' '\nNO DIALTONE\r'
        'ABORT' '\nRINGING\r\n\r\nRINGING\r'
        '' '\rAT'
        'TIMEOUT' '12'
        'SAY' 'Press CTRL-C to close the connection at any stage!'
        'SAY' '\ndefining PDP context...\n'
        'OK' 'ATH'
        'OK' 'ATE1'
        'OK' 'AT+CGDCONT=1,"IP","cmnet"'
        'OK' 'ATD*99#'
        'TIMEOUT' '22'
        'SAY' '\nwaiting for connect...\n'
        'CONNECT' ''
        'SAY' '\nConnected.'
        'SAY' '\nIf the following ppp negotiations fail,\n'
        'SAY' 'try restarting the phone.\n'
)

Dependency on closed source software

A good example for why using closed source software (and thus depend on it) is a bad thing, can be seen in the newest development around X.org:
There is a new version of the X server, which contains ABI changes, and now all users of the closed source ATI and NVIDIA graphics drivers can’t upgrade to the newest X.org version, because those closed source software providers didn’t provide a new version of their drivers yet.

–> Avoid closed source software whenever you can.