Browser warning for IE6 users

Since the will to do all that annoying extra bugfixes for IE6 is pretty low 7 1/2 years after its release, I finally decided to display a little nag notice on top of my page after having been encouraged to do so by others (see below). The script is multi-language and customizable and you are free to use, distribute and modify it for your websites (even commercial ones) without any further agreement (consider this a license; needed in Germany). It’s multi-language and offers some small options for quick setup.

Please note this does not mean this site (and others I create in my freetime or at work) will completely stop working in IE6 in near future but some functionality or design might be incomplete/broken because I will no longer optimize my personal web sites for IE6. (At work we and our customers cannot afford stopping to optimize for IE6 yet since some companies still won’t upgrade in near future for – in most cases – comprehensable reasons, so either our customers or theirs would not be able to use the websites we build.) Nevertheless it won’t hurt to display a relatively unobtrusive message.

The icon I used for it is from famfamfam’s free mini icon set: http://www.famfamfam.com/lab/icons/mini/

Other sites that encourage their users to upgrade: (not using my script)

Get a preview here: (Note: this may not display correctly in browsers other than IE 6 – no sense to support it elsewhere ;) )

English
German

JavaScript and CSS (quick setup options on top; language and download arrays inside warn-function)

You will also need jQuery in case you don’t have it already. (include jQuery and CSS before including the nag-script)

GTA IV moralisch unkaufbar

Seit gestern steht GTA IV in den Läden. Bedauerlicherweise ist auch dort schonwieder SecuROM mit Online-Aktivierung dabei. Obwohl ich wahnsinnige Probleme mit Drakensang unter Vista hatte, die scheinbar durch SecuROM verursacht wurden, läuft Fallout 3 hervorragend und mein System ist immernoch (oder besser gesagt: wieder) stabil. Drakensang und Fallout 3 mag man noch nachsehen, auf SecuROM gesetzt zu haben, denn immerhin wird dort nur die traditionelle Offline-Prüfung der Original-Datenträger durchgeführt. Somit stehen denn auch beide in meinem Regal, Drakensang sogar als Collectors Edition.

Zurück zu GTA. Rockstar ließ es sich leider nicht nehmen, zusätzlich zur Prüfung der Datenträger auch noch eine Online-Aktivierung nach der Installation bzw. tiefergehenden Hardwareupgrades durchzuführen; wenn auch “unbegrenzt”. Wenigstens geschieht dies mit Servern bei SecuROM, sodaß man sicher einige Jahre lang neu aktivieren könnte – auch wenn ich mir wünsche, daß SecuROM möglichst bald von der Bildfläche verschwindet. “Unbegrenzt” setze ich genau deshalb in Anführungszeichen, da ich daran nicht ganz glauben kann. Wozu wird eine Online-Aktivierung benötigt, wenn man das Spiel doch angeblich so oft installieren darf wie man will? Meine Vermutung ist, daß Käufer mit zu vielen Aktivierungsversuchen trotzdem über kurz oder lang gesperrt werden, sonst hätte man schließlich genauso gut darauf verzichten können.

Doch es kommt noch schlimmer: Laut einigen Quellen wird zum Spielen im Einzelspielermodus Windows Live benötigt. Andere wiederum nennen dies (wie übrigens auch bei Fallout 3) nur für die Achievements als unbedingt erforderlich. Für Multiplayer ist Live dann jedoch Pflicht, ebenso scheinbar ein Account bei der Rockstar-eigenen Seite “Rockstar Social Club”.

Wer jetzt glaubt, er könne diesem ganzen Wahnsinn durch Kauf von Downloadversionen umgehen, wird bitter enttäuscht: Auch die accountgebundenen, z.B. per Steam gekauften Lizenzen sollen zusätzlich SecuROM enthalten und setzen auf die übrigen Online-Accounts für den Mehrspielermodus.

Was mir absolut nicht in den Kopf will: Wozu wird ein bereits per Accountbindung ausreichend und deutlich effektiver als bei jeder anderen Kopierschutzmaßnahme geschütztes Spiel zusätzlich mit den Retail-Kopierschutzmechanismen ausgestattet? Und wozu erfolgt bei Installation/Hardwareupgrade eine Aktivierung, wenn doch angeblich “unbegrenzt” viele Installationen möglich sein sollen? Wieso versauen sich so viele Publisher ihre Verkaufszahlen und verursachen durch den Einsatz unausgereifter Kopierschutzsoftware schwerwiegende Probleme beim Kunden, sowohl in Zusammenhang mit dem Spiel als auch nach Beendigung in Windows selbst? Warum rühmt sich ein Publisher damit, “freundliches” DRM zu verbundlen wenn nach der Beschreibung desselbigen dieses genausogut entfallen könnte?

Wieso wird selbst bei Download-Versionen unnötig Geld in einen so miserablen Kopierschutz gesteckt?

Ich werde es nie begreifen und kann nur hoffen, daß die Spieleindustrie irgendwann mal zur Vernunft kommt. Vielleicht will man die Kunden auch einfach nur vom PC vergraulen und zu den vollverschlüsselten Konsolen drängen (wo die Spiele dann gleich mal 20€ teurer sind). Ein Kauf von GTA IV ist damit für mich nicht vertretbar.

Siehe auch:

Update: Die GameStar berichtet online von gravierenden Problemen mit ATI-Grafikkarten. Darüberhinaus noch weiteres zur Installation:

Auch wenn Sie von Hardware-Problemen verschont bleiben, kostet GTA 4 Nerven, weil Rockstar die Hürden der Online-Aktivierung auf ein neues Level bringt: Sie müssen zusätzlich zur gut halbstündigen Installation des Hauptspiels ein Programm namens »Rockstar Social Club« sowie Microsofts »Games for Windows Live« installieren, für beide Systeme Konten einrichten, Games for Windows Live aktualisieren und GTA 4 auch noch online aktivieren. Um das Spiel zu starten, muss zwingend die Social-Club-Anwendung im Hintergrund laufen. Falls Sie auf die Installation der Zusatzkomponenten verzichten, können Sie so oder so nicht spielen.
Scheinbar ist das doch nichtmal nur für Multiplayer sondern auch Singleplayer erforderlich.

Videoserien

Ich hab schon seit gut einem Monat vor, die folgenden Seiten hier zu verlinken und jetzt tu ich das einfach mal. :)

Zur Zeit klappere ich 3 bestimmte Webseiten jede Woche aufs neue nach Updates ab.

Der Angry Video Game Nerd (AVGN) regt sich fast wöchentlich über “all the shitty games that suck ass” auf, wobei er sich inzwischen nicht mehr nur auf Nintendo beschränkt sondern momentan z.B. auch beim Phillips CD-I angelangt ist. Es werden ausschließlich vergessen geglaubte Konsolen- und Heimcomputerspiele getestet.

That Guy With The Glasses hat eine ganze Reihe verschiedener Serien. Darunter als Highlights den wöchentlichen “Nostalgia Critic” (Kritiken zu unglaublich schrottigen Filmen, Serien etc. aus unserer Kindheit aber zum Teil auch etwas neuer) und “Ask ThatGuy” (“There’s no such thing as a stupid question until you ask it.”).

Zu guter letzt updated dann noch jeden Mittwoch abend Zero Punctuation seine (ziemlich harten) Reviews zu aktuellen PC- und Konsolenspielen. Viel Übung im Hörverstehen empfohlen, denn der Name ist Programm. Es gibt übrigens nur sehr wenig Spiele, die bei ihm gut wegkommen.

Ach und fast hätte ich es vergessen: AVGN und ThatGuy hatten vor kurzem ein besonderes Special zu bieten.

Broken

In case anyone should be wondering why I didn’t continue my project to install Gentoo: Well… Unfortunately that slug is broken.

USB seems to be damaged in some way as it reports nothing but rubbish to the kernel and something causes bad noises to come from the beeper. Some forum threads pointed out that might be caused by a bad power supply. However, after changing the AC adapter it doesn’t run any better in my case. Since I wasn’t able to flash the original firmware correctly (it was just too obvious that I manipulated that box) I decided to open it up and take a look at its PCB.

Unfortunately I can’t see any physical damages on that board so I must assume there’s some hidden defect somewhere. I doubt I can fix it, so I must consider that box to be broken after just 4 months. After all I read I must advice everyone NOT to buy a NSLU2 – except you are out for some soldering on the board. The hardware fails much too often from what I could find, be it for overheating, manufacturing or just design errors (like the fancy “feature” that you can power the box solely by an external USB hub). Sadly, if I cannot find the error or a workaround for it, I may not continue on this project since I am not willing to buy another box for full price that’s broken by design.

Either I buy one very very cheap at eBay or I will just let it die. Maybe someday I might be able to fix it – could be my studies might be of some help at some later point.

Anyway; this project was no complete loss of time. Much of the knowledge I gained can be helpful in getting Gentoo onto the Pandora when it finally arrives (which unfortunately may take another 3-4 months depending on LCD production since I assume I’m somewhere in the last third of the preorder queue).

msleep() vs. mdelay()

Arrrrgh…. I finally got it….

For months I have been trying to figure out why my cross-compiled kernel and rootfs won’t boot on the NSLU2 aka Slug. Since I didn’t want to solder pins for the serial I/O onto the board I tried a quite unique approach: Since the Slug has 4 LEDs that can be easily controlled through GPIO, I could hook up at some function and send all output through the LEDs. Sure this would be slow (~1 character per second, maybe 1.5) but that would be enough to at least read kernel panic messages while retaining full warranty on the hardware.

Finding out how LEDs were controlled took me about 1,5 hours, hooking up and testing first things another hour. I hooked up before the call of init (disk 2 on), right after init (disk 1 on) and on kernel panics (both disk leds on). So what happened: It got init and then crashed with a panic after a few seconds. I figured out I could hook up at uart_console_write() or panic() and then read any output by blinking a byte in 4 steps (one byte on each disk LED, signal indication by setting power to green and “clock” indication through power amber). Well it started blinking for hours and hours and hours… But all I could decode was just infinite rubbish, no matter what I tried. Even a comparison iThat was the critical fault.

msleep() seems to suspend the currently running task, so it is non-blocking regarding the whole system.

mdelay() blocks the system (or at least the active CPU) if running single-threaded.

So why was that small change critical to my code? I don’t know exactly. But I know that panic() disables scheduling before any further action. So what happens if some code fragment used by panic() tries to relay on scheduling? Something seems to get corrupted very seriously, maybe some kind of heap or stack overflow happens. Maybe some process/scheduler data gets screwed up. I don’t know. But that seemingly tiny difference of blocking vs. non-blocking functions (what function does what isn’t always that clear if you’re new to Linux kernel programming) really makes a very big difference.

I finally recorded my kernel panic on dv tape and will decode it tomorrow using a simple tool I wrote. If it is finished I will make it available from this website.

Here’s a small excerpt from the ~20 minutes long message transmitting “BUG: sched[…]” (I did not decode more than that yet):

Edit: I decoded all 20 minutes. What was readable (the decoder was a quick and dirty solution since yet) led me to “BUG: scheduling while atomic:” in kernel source and was simply caused by a remaining msleep in my LED function. I got rid of it and now got a clean message “Attempted to kill init!”. Now, that’s where the debugging begins…

Slug (Linksys NSLU2)

After I read about a quite inexpensive (about 65 to 75€) embedded system on a forum two weeks ago, I needed to get one of these myself. The system has two USB host ports and an ethernet interface, 32MB SD-RAM, 8MB flash memory and a 266MHz ARM (Intel XScale) CPU (underclocked @133 MHz until mid 2006 production dates). It’s running Linux with a modified RedBoot bootloader. It’s originally intended to be a NAS server for USB hard drives but can be flashed with different Linux kernels and images. Unfortunately it’s already getting old (first released in 2004) and was reported to be discontinued so I had to decide to buy it now or never. I bought it:

If that device is completely new to you, the article on Wikipedia (en/de) may provide a good starting point for more information on what is possible. If you get interested in it, nslu2-linux.org provides a great resource to answer almost all your questions.

My goal is to get Asterisk, DHCP, DNS, OpenVPN and maybe a small webserver to run on it. However I haven’t reached that yet. (Click the link below to read more.) Continue reading “Slug (Linksys NSLU2)”

Vista-Tuning

Peter Provost beschreibt in seinem Blog eine interessante Einstellung in Vista, welche die Zahl der CPUs/-Kerne festsetzt. Vista verwendet wohl beim Booten erstmal nur einen Kern, unabhängig davon, wieviele das System tatsache hat. Die manuelle Einstellung auf die volle Anzahl soll das Booten beschleunigen: Speeding Up Vista Boot Time Ob es tatsächlich was bringt kann ich leider nicht nachvollziehen, da ich Vista bei mir eh nur zum Spielen einsetze. ;)

Microsoft beschreibt in der MSDN Library noch was interessantes. Die Speicherlimits von Windows lassen sich über Bootparameter mittels PAE ggf. nochmal höher setzen, wenn diese sich nicht durch andere Optionen bereits aktiviert haben. Dort finden sich auch nochmal Verweise zu anderen nützlichen Optionen:

Memory Limits for Windows Releases
Physical Address Extension

Danach dachte ich eigentlich hätte ich (inkl. System) meine vollen 4GB RAM zur Verfügung. Bisher zeigt Vista allerdings immernoch 3326 MB im Task-Manager an, genauso wie zuvor. Entweder hat das noch nicht richtig geklappt oder der vom Betriebssystem belegte Speicher wird in der Anzeige verborgen. Ich werd bei Gelegenheit nochmal damit rumprobieren, vielleicht funktionierts ja doch noch. Ob sich PAE evtl. negativ auf die Leistung auswirkt ist mir nicht bekannt.

Distanzierung von Inhalten des Arbeitskreis Vorratsdatenspeicherung

Nachdem ich einige Zeit lang die “Überwachungsecke” des AK auf meine Webseite eingebunden hatte und hier im Blog mehrmals darauf Bezug genommen habe, sehe ich mich aufgrund der meiner Interpretation nach nicht mehr vollständig legalen Aktionen bzw. des zunehmend starken Bündnisses mit mir dubios erscheinenden Organisationen des AK wie z.B. Critical Mass dazu gezwungen, mich aufgrund der deutschen Rechtslage im Internet von jeglichen Aufrufen zu Aktionen dieser oder ihm verbundenen Organisationen und Personen, sowie allen weiteren Inhalten der Webseiten des AK oder ihm verbundener Organisationen und Personen zu distanzieren. Alle direkten Links zum AK und über 2 Klicks erreichbaren Deep Links werden darum vorsichtshalber von dieser Webseite entfernt.

Diese Selbstzensur ist leider nötig, da es wiederholt Urteile zur Haftung für Links gab, die mich für derartige Verweise haftbar machen, wenn ich bei Bekanntwerden von möglichen Verstößen egal welcher Art nicht sofort Selbstzensur betreibe. Bedauerlicherweise betrifft dies auch Deep Links, sodaß ich gezwungen bin, Verweise auf fremde, volllegale Seiten wie heise.de zu entfernen, welche auf der verlinkten Seite auf den AK unmittelbar weiterverlinken.

Es ist erschreckend, wie tief die Gesetzgebung und die Rechtsprechung in Deutschland bereits gesunken sind, sodaß ich zu diesem Schritt gezwungen bin. Im Rahmen der mir gestatteten freien Meinungsäußerung kann ich daher nur nahelegen, diesen Irrungen auf legalem Wege auch in Zukunft entgegenzutreten; dies schließt z.B. die von mir mitunterzeichnete Verfassungsbeschwerde des AK und angemeldete Demonstrationen und Aktionen zu diesem Thema ein.

Betroffene Beiträge sind:

Update: Im Kommentar und einem Forum belehrt wurde, handelt es sich bei Critical Mass um eine organisationsunabhängige Aktionsform. Die Initiative und die bisherigen Forderungen des AK Vorrat befürworte ich nach wie vor, jedoch bleibt mir aus rechtlicher Sicht in Anbetracht einer nichtangekündigten Demonstration der Form “Critical Mass” nichts anderes übrig, als den Aufruf dazu – in Form der PagePeel-Ecke – von dieser Seite zu entfernen, ebenso mögliche Deep Links dazu. Aus Konsequenz musste ich leider auch den Link auf den Wikipedia-Artikel zu Critical Mass und den Link auf den AK Vorratsdatenspeicherung aus Kommentar #1 entfernen. Gesponsort wird dieser Griff ins Klo vom LG und OLG Hamburg, die sich beide wiederholt und sehr häufig für eine umfassende Haftung zu fast allem auf Webseiten stark gemacht haben. Ums noch klarer zu machen: Dieser Blog-Eintrag fällt in die Kategorie Disclaimer, damit hat er nichts damit zu tun, wie ich tatsächlich über die Aktionen des AK denke.

Java JAX-WS tutorial and standalone

If you’re wondering why I post this in English: I felt the urge to post in a way so Google & Co. can find it on the keywords I was unable to get any helpful results for.

In a homework we have to use JAX WS to implement a sample SOAP web service. I don’t understand why we were not simply allowed to continue using Axis (well, they said setting it up on server-side would be too complex – but if you’re just deploying the WAR archive and use the JWS approach without complex types/classes that would have been enough for such an exercise). It’s not only demanding you to use Java 1.6 (which Apple doesn’t think is worth providing a 32 Bit JRE/JDK for; so I can’t use my iBook to work on it) but compared to Axis I found JAX extremely bad documented (or their web site too confusing). I was unable to find the information I was looking for and got stuck on pages telling me how generated files look like after they have been generated. For some reason they just missed to give a fast introduction like “Getting started on implementing a web service” to give a short overview of what’s necessary just to get your workspace and environment up and running.

I thought I would need to setup Tomcat 6, compile, wsgen, write lots of configuration files, WAR everything and then deploy it. I was wrong. After hours of unsuccessful attempts and searches I remembered I saw something about JAX WS on IBM DeveloperWorks some time ago. I headed for their website and there it was: Design and develop JAX-WS 2.0 Web services describes everything you need to know to get started with JAX. It even shows a one-liner to start the web service standalone – without the hassle to deploy it. Just read until at least section 4 (page 8 on PDF) and have a look into the example code, class OrderWebServicePublisher. You’ll be surprised.

BTW: In case you are using Gentoo you may notice some JDK tools are not yet linked to /usr/bin (e.g. wsgen :P). You may want to have a look into /opt/sun-jdk-…/bin. Doesn’t affect the Ant task though.