US International Keyboard Layout w/o Dead Keys for Microsoft Windows

May 3, 2010

As much as I would like to completely switch over to Linux, for some tasks I am unfortunately still stuck with Microsoft Windows. This comes with the issue that Windows natively does not ship with the keyboard layout that I am routinely using under Linux: US International (No Dead Keys).

Fortunately, there is an easy solution available: Using the The Microsoft Keyboard Layout Creator it was a matter of seconds to remove the dead keys from the the stock US International keyboard layout.

The resulting keyboard layout file is available for download for your convenience. You can easily import this file into the Microsoft Keyboard Layout Creator and turn it into installable keyboard layout DLLs.

Simyo International-Roaming-Abrechnung

May 1, 2010

Wer Simyo-Kunde ist und seine SIM-Karte auch mal ab und zu im EU-Ausland einsetzt, tut offenbar gut daran, seine Abrechnung präzise zu prüfen: So hat man mir gerade eine aus UK verschickte SMS, das - soweit ich weiß - doch noch immer zur EU gehört ;-), den Tarif für Roaming in Nicht-EU-Ländern berechnet:

Hash It! 1.1.0 adds ccSLD support

Apr 30, 2010

A couple of days ago I visited the UK and also took my Android smartphone with me. After accessing some loal web sites I quickly noticed that Hash It! would not figure out the right site tag for them when it was invoked from the Android web browser via the “Share” intent.

So, I just rolled an update, Hash It! 1.1.0, which adds support for the most common ccSLDs (country code second-level domains), such as, or

Hash It! 1.1.0 is available via the Android Market. Details are also available at:


History of a GPL Source Code Request

Apr 26, 2010

Weeks have passed and still no update from HTC regarding the availability of the HTC Desire’s Linux kernel source code. Let’s take a look back at the history of the case: On April 3rd, I initially asked for the Desire’s Linux kernel source code in accordance with the GPLv2. A couple of mails and a few weeks later, HTC finally escalated the support ticket and eventually forwarded my request to R&D; on April 16th.

Java Method Signature Name Mangling

Apr 25, 2010

As with any modern programming language that supports method overloading, Java uses name mangling to distinguish methods that share the same name, but only differ in their parameters. Now, actually figuring out the exact algorithm used by javac by googling the Internet turned out to be quite tricky. Eventually, I dug up the following description, which at least serves as a starting point:

P.S.: This would not even have been an issue if HTC would open-source their proprietary code for the HTC Desire…

Hash It! Updated to Version 1.0.2

Apr 20, 2010

It has been a while since I last worked on Hash It!, but thanks to the bug report of an attentive user I just uploaded a new version (1.0.2) of Hash It! to the Android Market. Bottom line: Hash It! now works correctly on Android 1.5.

Hash It! is licensed under the GPLv3 and as such comes with full source code for your entertainment.

Further details on how to download it to your mobile phone as well as the changelog are available at:

Get it while it is still hot! ;-)

Wirtschaftliche Auswirkungen des Flugverbots

Apr 19, 2010

Wenn man aktuell die Medien verfolgt, könnte man fast glauben, als hätte man schon lange einen Sündenbock dafür gesucht und nun gefunden, dass es wirtschaftlich wohl doch nicht so rapide bergauf geht, wie prognostiziert: Das Flugverbot - Kognitive Dissonanz bei der Arbeit.

Android: Maps API Key Issues

Apr 19, 2010

When using Google Maps from within your Android application you need to obtain an API key in order to be able to retrieve Maps data at run-time. This API key is derived from the fingerprint of the signature key used to sign the application’s APK. Consequently, if the signature key used by your application at a given point in time no longer matches the one used to register the Maps API key, using the MapView will silently fail (the map will just display a gray grid instead of the expected map data). So far, so good.

As it seems, the Android ADT Eclipse plug-in also comes with an undocumented “feature”: If no “Custom debug keystore” is set in the Android Build Preferences, it will apparently use a different key to sign the APK when deploying it to a phone connected via USB than when deploying it to the Emulator. So, all your Maps applications will suddenly start to fail displaying map data once they are deployed on a real device for testing purposes.

To work around this issue, set the “Custom debug keystore” setting (empty by default) to the same value as the “Default debug keystore”.

HTC's GPL (non-)compliance

Apr 3, 2010

Well, Linux is not just free as in beer, but also free as in speech. As I wanted to dig a little deeper into HTC’s modifications applied to the Desire’s Linux kernel I did, what I am entitled to as per the GPLv2 the Desire’s Linux kernel is licensed under: I requested the source code via HTC’s support as the “HTC Developer Center” at, which usually hosts the Linux kernel source code drops for their Android phones, does not mention the Desire yet:

Dear HTC support,

I would hereby like to request the Linux Kernel source code for my HTC Desire phone according to section 3 of the GNU General Public License v2 under which the Linux kernel the Desire is based on is licensed. A download URL will be fine.


The answer I received was somewhat unexpected, but I will leave the judgment up to the reader:

Dear Thilo-Alexander

Thank you for your enquiry about linux.

Sorry we don’t support Linux, even though linux and android have similarities they’re not made for eachother. But here is the link for our kernals, happy Easter!

Best regards,

xxxx x
HTC Tech Support
Tel: +44 8458900xxx

Better luck next time… I replied through their ticketing system insisting on a source code copy (along with a short educational section about the true origins of the Android platform ;-) ). Let’s see what their next reply will look like…

PHP Unicode support - or the lack thereof

Mar 30, 2010

Well, I just had the pleasure to fix special character (umlaut) handling in a legacy PHP application. To put it short: It has been a while since I saw so many i18n issues as I figured out in PHP (version 5) during the last hour:

  • PHP strings are just plain byte arrays. Their content is non-portable as it is dependent on the current default encoding.

  • The same applies to the representation built by serialize. It contains a length-prefixed byte representation of the string without actually storing any encoding information.

  • Most PHP (string) functions have no clue about Unicode. For a detailed list including each function’s risk level, refer to:

Note to self: Never ever use PHP for a new project.