Meine Mail an Maxdome

Sehr geehrtes Maxdome-Team,

ich habe mir über ihre aktuelle Promo-Aktion einen kostenlosen Monat Premium und die Blockbuster-Option gesichert. Vielen Dank dafür.

Laut der Mail, die das Angebot enthält, ist eine problemlose Kündigung per Web-Oberfläche möglich. Die Blockbuster-Option konnte ich so auch abbestellen, nur bei der Premium-Option erhalte ich die Meldung, doch bitte die Hotline anzurufen, da meine „Meinung wichtig ist“.

Bitte schalten sie mir einfach die Option zur Kündigung im Webinterface frei; ich habe keinerlei Interesse, Ihre Hotline anzurufen. Tatsächlich brefremdet mich das Geschäftsgebahren, die Aussage der einfachen Kündigung nicht einzuhalten und stattdessen als Hürde den Anruf bei der Hotline einzubauen.

Mit freundlichen Grüßen,

Michael Haas


MythTV, VDPAU, Studio Levels and the Philips 42PFL7406

I haven’t touched my calibration settings in a while. I finally got sufficiently bored again, so here we go. The basic problem was to get adequate black levels throughout the pipeline; several knobs can be tweaked for that. I have now settled for the following: VGA card is configured to output limited RGB space (16-235), the VDPAU studio filter is off and the PC mode on the TV set is off. This theoretically causes some quality degradation as the (my theory) video decoder expands the RGB range while the nvidia driver re-compresses it, but meh. Settings on the TV set are now: brightness 64, contrast 80, color 50. On the APL clipping test video, I can’t get any bars beyond 18 or 233 to show up, which is not perfect but usable. I might have to revisit this in the future…

As for color: red is way over-saturated in „warm“ mode, clipping way too early. I have been unable to adjust this on the TV set itself. The graphics driver itself provides better adjustment knobs with the nvidia-settings utility. I set brightness for the red channel to -0.15; the result is nicely differentiated shades of red in the color clipping pattern. Be aware, though, that you need to set the VDPAU_NVIDIA_NO_OVERLAY=1 environment variable for the settings to work in VDPAU playback.

edit: Turns out I get tearing with overlay disabled. I’m a sad Panda and using XV for video rendering again. (As a side note, I apparently had limited RGB output enabled the whole time in my Xorg.conf; not sure if it stuck as nvidia-settings was not picking it up)

Kategorien:informatik, leben, wohnung

Privacy on Android and ICS

I’m a big fan of keeping private data private. This entails not having my cell phone send out information about my location, email address, contacts or usage patterns to third parties.

These days, privacy is not highly valued by Google and app developers. Thus, I choose not to run Google Play on my phone. In addition, I try to use FLOSS apps from the F-Droid repository at as much as possible, but I have the occasional closed source app on my phone. By the way, if you’re looking for a nice third-party market, go look at

Some of these closed source apps still want to send my IMEI or whatever to their developers. Some might even include ads – nothing wrong with showing me some advertisements, but you don’t need my location for that. How do I deal with these apps?

I have a multi-tier approach to deal with privacy-violating closed source apps.

For one, I use the adaway app to block most ad-serving hosts via the /etc/hosts file. This has the nice side effect of effectively disabling ads in the browser.
Additionally, I use DroidWall to block net access for apps which don’t need it. I have bought (with money, you know) a camera app and I don’t see why it should phone home, so it goes on the blacklist.

CyanogenMod 7.1 provides a nice feature for the privacy-loving hippie: permission management. Once enabled, you can simple revoke permissions such as „Internet Access“ or „Read phone state“ and the app will receice an exception indicating permission denied if it tries to phone home or read my IMEI. Unfortunately, these exceptions can break apps, so this is not the best way to go about this. Additionally, not all information leaks require permissions to be acquired, such as

A better approach would be provide bogus or random data via the API calls. I had this idea some weeks ago, but I was too lazy to download the CyanogenMod source and implement it myself. But of course, someone at XDA has beat me to it and there’s an app called PDroid: As a downside, this requires a patched ROM and
the management app is not open source, but it should do the job very nicely.

The conspiracy theorists out there will find this thread interesting:
„Originally, the functionality for CM mirrored that of PDroid, including ’spoofing‘ the data calls. It was decided that our footprint in the Android ecosystem was too large to ship such functionality out of the box“

Now I only need to find time to clone the AOKP repositories, apply the patch, make the whole thing build, reflash my device.. I’d love to have some 30h days. I could train twice as much and still get fun work done!

As a closing note: if you’re concerned about privacy on Android, also check out the encryption features both found in stock ICS and in patches provided by third parties, such as the EFF. In the end, there is no absolute security and privacy as we will never get the source code for the radio software and other proprietary bits – but keeping stuff like CarrierIQ out of userspace is good enough sometimes.

ICS on the Desire Z

I’m now running an unofficial build beta39 of AOKP on my Desire Z. It’s reasonably smooth so far, especially when overclocked to 1.4GHz (from 0.8GHz).

I’ve flashed a fresh radio and the corresponding RIL. Before I flashed the RIL, battery life and network performance on HSDPA was terrible, so let’s hope it will be better today.

Other than that, 720p recording is broken for the camera, which is not exactly a big deal for me. However, I can’t play 720p videos with the built-in mediaplayer either. It works with rockPlayer in Hardware Decoding mode, which is just plain weird. I’ll report a bug to the ROM author and see what they have to say.

Kategorien:android, livehacking

Free disk space monitoring: munin & MythTV

Sometimes, the root file system on my MythTV box gets full. This causes all kinds of fail, including the inability to watch TV.

I wanted to set up some monitoring. I already have munin set up, so why not let munin tell me when things get critical? Regarding the general notification setup, we have two nice documents: one by Jason and the official munin documentation, which also explains how to fire scripts instead of emails. Go read both.

Two possible ways of providing notifications come to mind:  via the OSD on the TV or via email.

As for the OSD, I’d use the MythMessage interface which will give me a nice remote-controllable popup. Unfortunately, I ran into bug 10815 while setting up the notifications via mythutil –message. As an alternative, we can use MythMessage via the remote control interface like this:

echo "message low disk space on / " | nc localhost 6546

There is also the possibility to invoke MythMessage over the Services interface, but I have not tried that.

With the whole OSD thing, there is also the question if you really want a pop-up on the TV while you’re cuddled up with the girlfriend. That’s why I might prefer email notifications, but I do not have an MTA set up on the MythTV box, so there’s that. I’m a bit lazy in a bit of an regeneration cycle right now, so I will just go back on the couch and come back to this post the next time the disk fills up again.

Kategorien:informatik, wohnung

RTF: Fail and you

As with any programming gig, you are bound to encounter some interesting fails.

One of our customers is providing RTF files generated by a third party. To do the silly little things we computational linguists tend todo – a bit of information extraction here, some sentiment analysis there – I convert the RTF to HTML using rtf2html to process it with BeautifulSoup.

But, of course, the umlauts are broken: any umlaut in the generated HTML is preceded by an @ sign in my editor, which turns out to be 0 – a null byte. This caused some pre-emptive facepalms because I knew I was in for some pain.

Looking at the relevant section in the RTF document, I see the following:

\uc2 M\u228\’00\’E4rz

This is supposed to „März“. I found the download for the 1.91. RTF spec on where you can choose between .doc and .docx. Microsoft, this is bad and you should feel bad.

The spec tells me that RTF initially was not unicode-aware. When unicode was introduced in a later revision, they decided any characters which are not ASCII should be represented by their Unicode code position preceded by \u. Following this unicode representation, a close representation of the character in the declared codepage for the document should be used. In our case, the representation consists of two ASCII characters: \’00 and \’E4. The \uc2 keyword tells unicode-enabled RTF readers to skip 2 characters after the unicode character because they’re obviously redundant.

The unicode presentation here is \u228 which properly points to „ä“. For RTF readers which are not unicode-enabled, the unknown \u keyword is simply ignored and the regular \’xx representations in the declared codepage are used.

So we have two fails here:

  • rtf2html does not support Unicode. This is no big deal per se as the RTF spec is backwards compatible in this regard, but me being a big fan of Unicode, I will consider it s a minor fail. If rtf2html supported unicode, the broken document would be displayed properly
  • the alternate representation of the Unicode character is broken. The declared codepage is cp1252, so why would you ever use a two-byte replacement? Interestingly enough, \’E4 is indeed the correct cp1252 code for „ä“.

Specs are hard. Let’s go shopping. Do people actually test their software before they deploy it? I’m either going to patch rtf2html to ignore 0 (which will probably break other documents in equally hilarious ways) or add proper unicode support which should not be too hard.

Kategorien:informatik, oss

Herzhafte Paleo-Muffins

Man nehme:

6 Eier (Größe M)
150g Mandelmehl (gemahlene Mandeln) (von Rewe oder Lidl, inkl. der braunen Schale der Mandeln)
Salz, Pfeffer, Pizzagewürz
Für die „Füllung“:
Gewürfelter Käse
Gewürfelte Paprika

Eier mit Mandelmehl pürieren. Papierförmchen in Muffin-Blech legen. Den Teig auf die 12 Förmchen verteilen. Füllung auf den Teig legen.

Bei circa 180Grad Celsius circa 10 Minuten in den Ofen.


Mandelmehl: 945kcal, 38,7g Eiweiß, 6,6g Kohlenhydrate, 81.5g Fett
Eier: 516kcal, 45g Eiweiß, 5,4g Kohlenhydrate, 35,4g Fett

1416kcal für die komplette Portion und 121kcal pro Muffin. 7g Eiweiß, circa 1g Kohlenyhdrate und 9,7g Fett pro Muffin.