Experimentalphysik und Programmieren

written by Martin Häcker on

Das sind an sich identische Tätigkeiten - hat mir mein Vater heute klargemacht.

Klar, er ist ein alter Physiker und trauert immer noch ein wenig der Tatsache nach das ich keiner geworden bin.

Oder auch nicht, denn: Ein guter Experimentalphysiker arbeitet so, dass er in einer Versuchsreihe in jedem Schritt immer nur eine Variable verändert um methodisch vorzugehen. Entweder nimmt er eine (wirklich nur eine) Änderung an seinen Messinstrumenten, oder an dem Experiment vor.

Dazu dann natürlich noch einiges an Intuition welche Veränderung sinnvoll ist - experimentelle Physik ist eben auch eine Kunst, genau wie das Programmieren.

Ach ja, und natürlich schreibt er ein Protokoll um hinterher nachvollziehen zu können, was er eigentlich getan hat.

Beim Programmieren kann man diese Techniken genau so wiederfinden. Die Messinstrumente sind in der Regel UnitTests oder etwas äquivalentes (wobei UnitTests besser geeignet sind, da sie exakter messen können) und damit wird eine API dann abgeklopft.

Jetzt kommt bei uns Programmierern aber noch eine komplette Dimension dazu. Denn während ein Experimentalphysiker die Welt um ihn herum so hinnehmen muss wie sie ist, können wir Programmierer den Gegenstand unserer Tests beliebig verändern. Nur unser Phantasie schränkt uns ein.

Aber es läuft genauso: Ein Messinstrument, ein Stück Weltveränderung, ad infinitum.

Das letzte fehlende Detail ist das Logbuch: Das sind die schon geschriebenen Tests, die dokumentieren was wir schon herausgefunden haben.

Ich war wirklich überrascht wie weit die analogie trägt. Und auch die Implikation gefällt mir als UnitTest-Fan natürlich sehr. Und natürlich auch der Fakt das wir als Informatiker 'wieder mal' mehr können als die Physiker.

:-)

Wann darf man eigentlich…

written by Martin Häcker on

…die Syntax einer Sprache modifizieren?

In C natürlich. Das Problem ist klar: Makros können ja beliebige Ersetzungen im Text vornehmen und dann mit vielen Makros aus C Pascal zu machen geht auch - aber das will man ja nicht, denn sonst hat man das gleiche Problem wie die Bourne-Shell die irgendwann niemand mehr weiterentwickeln konnte.

Klar.

Andererseits nervt es wirklich unter Cocoa z.B. fĂĽr jede Iteration ĂĽber einen Array das hier zu schreiben:

NSArray *someStrings = [NSArray arrayWithObjects:@"first", @"second", @"third", @"fourth", nil];

NSString *eachString = nil;
NSEnumerator *enumerator = [someStrings objectEnumerator];

while (eachString = [enumerator nextObject])
{
    NSLog(@"eachString is %@", eachString);
}

Das heiĂźt, fĂĽr eine Schleife (zwei Zeilen) ha man noch mal mindestens zwei weitere Zeilen nur fĂĽr das Setup.

Das nervt so sehr, das viele Leute das etwas kĂĽrzen:

NSArray *someStrings = [NSArray arrayWithObjects:@"first", @"second", @"third", @"fourth", nil];

id eachString, enumerator = [someStrings objectEnumerator];
while (eachString = [enumerator nextObject])
{
    NSLog(@"eachString is %@", eachString);
}

Schon besser, aber man verliert die Typchecks (falls man die haben will) und man muss trotzdem noch eine langweilige Zeile schreiben, die immer gleich ist und sich nicht wirklich kürzen lässt.

Jetzt kann man natürlich unter C schön ein Makro bauen, was das schöner macht - aber, siehe Bourne Shell...

Aber, mit ObjC 2.0 gibt es das for(String *each in someStrings) konstrukt, das schon deutlich kĂĽrzer (und auch schneller - aber aus anderen GrĂĽnden) ist.

Also, doch mal ein Makro. Nach reiflichem (2 Minuten) überlegen hab ich mich entschieden es erst einmal mit einer for Schleife zu probieren, da das bedeutet das der Scope der Variablen schön beschränkt ist.

Ziel wäre es also, das hier schreiben zu können:

NSArray *someStrings = [NSArray arrayWithObjects:@"first", @"second", @"third", @"fourth", nil];

FOREACH(eachString, someStrings)
{
    NSLog(@"eachString is %@", eachString);
}

Und das sähe dann so aus:

#define FOREACH(each, collection) \
    for(id __enumerator = [collection objectEnumerator], each = [__enumerator nextObject]; \
        each; \
        each = [__enumerator nextObject])

In der Praxis hab ich es auf Wunsch meiner Kollegen noch etwas modifiziert, damit man den Typ der Variablen noch einstellen kann (auch wenn er bisher noch nicht verwendet wird - immerhin kann man ihn aber als Startpunkt fĂĽr Dokumentations-Lookup verwenden).

/// Use like this:
// FOREACH(NSString *, each, arrayOfStrings)
// {
//      if ([each hasPrefix:@"foo"])
//          [self doSomething];
// }
// This macro is in preparation of the ObjC 2.0 Fast enumeration protocol
#define FOREACH(typeOfEach, each, collection) \
    for(id __enumerator = [collection objectEnumerator], each = [__enumerator nextObject]; \
        each; \
        each = [__enumerator nextObject])

Bei Verwendung, bitte e-mail. :-)

Wie man die Löschen Taste implementiert

written by Martin Häcker on

sag ich heute nicht, aber dafür welch hervorragenden Podcasts ich gerade gehört habe:

  • Energiesparhäuser Hochspannender Einblick was die Haustechnik so her gibt und wie ähnlich sie der Computertechnik ist.
  • Hubschrauber Wie eine Voraussage ĂĽber einen Hubschrauberabsturz (wahre Geschichte) ein Leben verändert.

Beides hoch spannend. :-)

cu Martin

Mein Name ist Martin und ich bin ein Pirat

written by Martin Häcker on

Denn das worum es heute geht ist die Frage wer die Kultur von Morgen kontrolliert.

Die die es heute noch tun - oder die die sich gerade anschicken diese Kontrolle zu unterlaufen?

Die Wissenschaftler, die Privatmenschen, die Berufsausübenden, die Künstler - alle, die jetzt nicht mehr durch einen Engpass (auch Firma genannt) davon abgehalten werden können ihren Sermon zu veröffentlichen.

Manchmal werden diese Menschen Blogger genannt, aber es geht um etwas viel größeres.

Unsere Kultur. Was wir daraus machen. Wie wir sie machen.


Das ist in etwa die Meinung von Rickard Falkvinge die er in immer wieder Vertritt.

Heute kriegt er erst mal meine Zustimmung. An die Kritik mache ich mich Später.

Den Mobile Monday

written by Martin Häcker on

hab ich gerade besucht.

Und ich muss sagen: "I am not impressed."

Obwohl nahezu alle anwesenden Deutsche waren, wurden "natürlich" alle Vorträge auf Englisch abgehalten. Sehr Hipp, aber leider auch in sehr brüchigem Englisch das vieles Verstehen eher erschwerte. :/

Überhaupt das Verstehen. Wenn ich es recht betrachte, dann war das eigentlich kein Problem. Denn das Niveau der Vorträge war so tief, das selbst das gebrochene Englisch vieler Vortragender nicht wirklich am Verstehen der nicht vorhandenen Inhalte störte.

Was genau ist das also fĂĽr eine Veranstaltung?

Eine IT-Second-Generation-Gründer-Blase trifft sich dort und präsentiert zum Teil ihre Ideen - aber auch Vertreter von größeren Firmen kommen vorbei (in diesem Falle Vodafone) um ihre Produkte zu zeigen. (Getragen wird das ganze von DER Post (?), Nokia, Sun, Jamba...

Und dann sind natĂĽrlich immer auch Event Sponsoren, hier Kyte und Device Anywhere die die Gelegenheit nutzten um wenigstens ein paar Leuten ihre Software bekannt zu machen.

Insgesammt erinnert mich das Stark an einen Spruch den Bernd (wunderschönes Bild) vor einiger Zeit einmal getätigt hat: "In Berlin funktioniert das so: Es gibt viel mehr Aktive die etwas cooles machen wollen, als Leute die sich das ansehen wollen. Daher gibt es die soziale Übereinkunft, das man immer zu den anderen Leuten geht wenn sie was machen und die dafür auch auf die eigenen Veranstaltungen kommen wenn man selber eine macht."

Well, genau so hat es gewirkt. Und eher uninteressant. Leider.

Den das Thema "User Centered Design" ist sauwichtig und völlig unterbelichtet.

Peinlich fand ich auch, das ausgerechnet der Typ der Von Jamba da war den besten Vortrag ĂĽber User-Centered design abgeliefert hat den der ganze Abend zu bieten hatte. :-/

Der Grund wieso ich eigentlich hingegangen bin, nämlich der Vortrag von Jan Mühlig (von Relevantive) ist leider ausgefallen. Wirklich schade. Ich bin sicher er hätte noch am ehesten etwas relevantes sagen können.

Rechtstaat und Demonstration

written by Martin Häcker on

Ist schon etwas her, aber fand ich trotzdem total spannend.

Immerhin, wer weiß wer demnächst noch alles demonstrieren muss?

Warum jeder überall das gleiche Passwort verwendet …

written by Martin Häcker on

… wo doch jeder weiß wie unsicher das ist?

Dabei ist dass Problem so klar: Niemand kann sich fĂĽr jeden Account den man heute im Social Web anlegen muss eine neue Kombination aus Benutzername und Passwort merken.

Und es gibt mehrere Lösungen:

Microsoft (aber auch viele Andere) favorisiert Single-Sign-On - ein Server von Microsoft verwaltet die Benutzerdaten fĂĽr alle Webseiten. Man meldet sich nur noch bei Microsoft an und alle anderen Sprechen nicht mehr mit einem selber, sondern nur noch mit Microsoft um festzustellen ob der der da rein will echt ist.

Super, nur noch ein Passwort - aber auch ein Punkt an dem alles schief gehen kann. Denn man muss dem Anbieter (Microsoft) vertrauen.

Apple hat eine Andere Lösung: Keychain. Ganz Apple Typisch komplett in das System integriert und nicht nur eine Lösung für Webseite, sondern für jedes Authentifizierungsproblem.

Super, auch nur noch ein Passwort und keine zentrale Location der man Vertrauen muss (abgesehen von der Implementierung des Dienstes). Aber, wenn man mehrere Computer verwendet oder auch mal aus der Ferne auf eine Webseite zugreifen muss / möchte, hat man erst einmal verloren.

Und da habe ich heute die perfekte Lösung gefunden: Ein Javascript Bookmarklet das folgendes tut: Es verbindet ein konstantes Geheimnis (Master Password) mit einem Datum das für jede Webseite variiert (die URL oder den Namen der Seite) und jagt das Ergebnis durch eine Kryptographische Hash-Funktion.

Das Ergebnis ist damit ein Passwort das fĂĽr jede Webseite anders ist - aber das man sich nicht merken muss.

Das Bookmarklet gibt es hier. Und natürlich gibt es dafür auch eine Greasemonkey verschönerte Version für Firefox Benutzer. (Die Angenehmerweise auch auf dem iPhone funktioniert)

Ich verwende auf dem iPhone dieses Bookmarklet (Als Backup gespeichert) javascript:(function(){function%20hex_md5(s){%20return%20binl2hex(core_md5(str2binl(s),%20s.length%20*%208));}function%20core_md5(x,%20len){x[len%20%3E%3E%205]|=%200x80%20%3C%3C%20((len)%20%25%2032);x[(((len%20+%2064)%20%3E%3E%3E%209)%20%3C%3C%204)%20+%2014]%20=%20len;var%20a%20=%20%201732584193;var%20b%20=%20-271733879;var%20c%20=%20-1732584194;var%20d%20=%20%20271733878;for(var%20i%20=%200;i%20%3C%20x.length;i%20+=%2016){var%20olda%20=%20a;var%20oldb%20=%20b;var%20oldc%20=%20c;var%20oldd%20=%20d;a%20=%20md5_ff(a,%20b,%20c,%20d,%20x[i+%200],%207%20,%20-680876936);d%20=%20md5_ff(d,%20a,%20b,%20c,%20x[i+%201],%2012,%20-389564586);c%20=%20md5_ff(c,%20d,%20a,%20b,%20x[i+%202],%2017,%20%20606105819);b%20=%20md5_ff(b,%20c,%20d,%20a,%20x[i+%203],%2022,%20-1044525330);a%20=%20md5_ff(a,%20b,%20c,%20d,%20x[i+%204],%207%20,%20-176418897);d%20=%20md5_ff(d,%20a,%20b,%20c,%20x[i+%205],%2012,%20%201200080426);c%20=%20md5_ff(c,%20d,%20a,%20b,%20x[i+%206],%2017,%20-1473231341);b%20=%20md5_ff(b,%20c,%20d,%20a,%20x[i+%207],%2022,%20-45705983);a%20=%20md5_ff(a,%20b,%20c,%20d,%20x[i+%208],%207%20,%20%201770035416);d%20=%20md5_ff(d,%20a,%20b,%20c,%20x[i+%209],%2012,%20-1958414417);c%20=%20md5_ff(c,%20d,%20a,%20b,%20x[i+10],%2017,%20-42063);b%20=%20md5_ff(b,%20c,%20d,%20a,%20x[i+11],%2022,%20-1990404162);a%20=%20md5_ff(a,%20b,%20c,%20d,%20x[i+12],%207%20,%20%201804603682);d%20=%20md5_ff(d,%20a,%20b,%20c,%20x[i+13],%2012,%20-40341101);c%20=%20md5_ff(c,%20d,%20a,%20b,%20x[i+14],%2017,%20-1502002290);b%20=%20md5_ff(b,%20c,%20d,%20a,%20x[i+15],%2022,%20%201236535329);a%20=%20md5_gg(a,%20b,%20c,%20d,%20x[i+%201],%205%20,%20-165796510);d%20=%20md5_gg(d,%20a,%20b,%20c,%20x[i+%206],%209%20,%20-1069501632);c%20=%20md5_gg(c,%20d,%20a,%20b,%20x[i+11],%2014,%20%20643717713);b%20=%20md5_gg(b,%20c,%20d,%20a,%20x[i+%200],%2020,%20-373897302);a%20=%20md5_gg(a,%20b,%20c,%20d,%20x[i+%205],%205%20,%20-701558691);d%20=%20md5_gg(d,%20a,%20b,%20c,%20x[i+10],%209%20,%20%2038016083);c%20=%20md5_gg(c,%20d,%20a,%20b,%20x[i+15],%2014,%20-660478335);b%20=%20md5_gg(b,%20c,%20d,%20a,%20x[i+%204],%2020,%20-405537848);a%20=%20md5_gg(a,%20b,%20c,%20d,%20x[i+%209],%205%20,%20%20568446438);d%20=%20md5_gg(d,%20a,%20b,%20c,%20x[i+14],%209%20,%20-1019803690);c%20=%20md5_gg(c,%20d,%20a,%20b,%20x[i+%203],%2014,%20-187363961);b%20=%20md5_gg(b,%20c,%20d,%20a,%20x[i+%208],%2020,%20%201163531501);a%20=%20md5_gg(a,%20b,%20c,%20d,%20x[i+13],%205%20,%20-1444681467);d%20=%20md5_gg(d,%20a,%20b,%20c,%20x[i+%202],%209%20,%20-51403784);c%20=%20md5_gg(c,%20d,%20a,%20b,%20x[i+%207],%2014,%20%201735328473);b%20=%20md5_gg(b,%20c,%20d,%20a,%20x[i+12],%2020,%20-1926607734);a%20=%20md5_hh(a,%20b,%20c,%20d,%20x[i+%205],%204%20,%20-378558);d%20=%20md5_hh(d,%20a,%20b,%20c,%20x[i+%208],%2011,%20-2022574463);c%20=%20md5_hh(c,%20d,%20a,%20b,%20x[i+11],%2016,%20%201839030562);b%20=%20md5_hh(b,%20c,%20d,%20a,%20x[i+14],%2023,%20-35309556);a%20=%20md5_hh(a,%20b,%20c,%20d,%20x[i+%201],%204%20,%20-1530992060);d%20=%20md5_hh(d,%20a,%20b,%20c,%20x[i+%204],%2011,%20%201272893353);c%20=%20md5_hh(c,%20d,%20a,%20b,%20x[i+%207],%2016,%20-155497632);b%20=%20md5_hh(b,%20c,%20d,%20a,%20x[i+10],%2023,%20-1094730640);a%20=%20md5_hh(a,%20b,%20c,%20d,%20x[i+13],%204%20,%20%20681279174);d%20=%20md5_hh(d,%20a,%20b,%20c,%20x[i+%200],%2011,%20-358537222);c%20=%20md5_hh(c,%20d,%20a,%20b,%20x[i+%203],%2016,%20-722521979);b%20=%20md5_hh(b,%20c,%20d,%20a,%20x[i+%206],%2023,%20%2076029189);a%20=%20md5_hh(a,%20b,%20c,%20d,%20x[i+%209],%204%20,%20-640364487);d%20=%20md5_hh(d,%20a,%20b,%20c,%20x[i+12],%2011,%20-421815835);c%20=%20md5_hh(c,%20d,%20a,%20b,%20x[i+15],%2016,%20%20530742520);b%20=%20md5_hh(b,%20c,%20d,%20a,%20x[i+%202],%2023,%20-995338651);a%20=%20md5_ii(a,%20b,%20c,%20d,%20x[i+%200],%206%20,%20-198630844);d%20=%20md5_ii(d,%20a,%20b,%20c,%20x[i+%207],%2010,%20%201126891415);c%20=%20md5_ii(c,%20d,%20a,%20b,%20x[i+14],%2015,%20-1416354905);b%20=%20md5_ii(b,%20c,%20d,%20a,%20x[i+%205],%2021,%20-57434055);a%20=%20md5_ii(a,%20b,%20c,%20d,%20x[i+12],%206%20,%20%201700485571);d%20=%20md5_ii(d,%20a,%20b,%20c,%20x[i+%203],%2010,%20-1894986606);c%20=%20md5_ii(c,%20d,%20a,%20b,%20x[i+10],%2015,%20-1051523);b%20=%20md5_ii(b,%20c,%20d,%20a,%20x[i+%201],%2021,%20-2054922799);a%20=%20md5_ii(a,%20b,%20c,%20d,%20x[i+%208],%206%20,%20%201873313359);d%20=%20md5_ii(d,%20a,%20b,%20c,%20x[i+15],%2010,%20-30611744);c%20=%20md5_ii(c,%20d,%20a,%20b,%20x[i+%206],%2015,%20-1560198380);b%20=%20md5_ii(b,%20c,%20d,%20a,%20x[i+13],%2021,%20%201309151649);a%20=%20md5_ii(a,%20b,%20c,%20d,%20x[i+%204],%206%20,%20-145523070);d%20=%20md5_ii(d,%20a,%20b,%20c,%20x[i+11],%2010,%20-1120210379);c%20=%20md5_ii(c,%20d,%20a,%20b,%20x[i+%202],%2015,%20%20718787259);b%20=%20md5_ii(b,%20c,%20d,%20a,%20x[i+%209],%2021,%20-343485551);a%20=%20safe_add(a,%20olda);b%20=%20safe_add(b,%20oldb);c%20=%20safe_add(c,%20oldc);d%20=%20safe_add(d,%20oldd);}return%20Array(a,%20b,%20c,%20d);}function%20md5_cmn(q,%20a,%20b,%20x,%20s,%20t){return%20safe_add(bit_rol(safe_add(safe_add(a,%20q),%20safe_add(x,%20t)),%20s),b);}function%20md5_ff(a,%20b,%20c,%20d,%20x,%20s,%20t){return%20md5_cmn((b%20&%20c)%20|%20((~b)%20&%20d),%20a,%20b,%20x,%20s,%20t);}function%20md5_gg(a,%20b,%20c,%20d,%20x,%20s,%20t){return%20md5_cmn((b%20&%20d)%20|%20(c%20&%20(~d)),%20a,%20b,%20x,%20s,%20t);}function%20md5_hh(a,%20b,%20c,%20d,%20x,%20s,%20t){return%20md5_cmn(b%20^%20c%20^%20d,%20a,%20b,%20x,%20s,%20t);}function%20md5_ii(a,%20b,%20c,%20d,%20x,%20s,%20t){return%20md5_cmn(c%20^%20(b%20|%20(~d)),%20a,%20b,%20x,%20s,%20t);}function%20safe_add(x,%20y){var%20lsw%20=%20(x%20&%200xFFFF)%20+%20(y%20&%200xFFFF);var%20msw%20=%20(x%20%3E%3E%2016)%20+%20(y%20%3E%3E%2016)%20+%20(lsw%20%3E%3E%2016);return%20(msw%20%3C%3C%2016)%20|%20(lsw%20&%200xFFFF);}function%20bit_rol(num,%20cnt){return%20(num%20%3C%3C%20cnt)%20|%20(num%20%3E%3E%3E%20(32%20-%20cnt));}function%20str2binl(str){var%20bin%20=%20Array();var%20mask%20=%20(1%20%3C%3C%208)%20-%201;for(var%20i%20=%200;%20i%20%3C%20str.length%20*%208;%20i%20+=%208)bin[i%3E%3E5]%20|=%20(str.charCodeAt(i%20/%208)%20&%20mask)%20%3C%3C%20(i%20%25%2032);return%20bin;}function%20binl2hex(binarray){var%20hex_tab%20=%20%270123456789abcdef%27;var%20str%20=%20%27%27;for(var%20i%20=%200;%20i%20%3C%20binarray.length%20*%204;%20i++){str%20+=%20hex_tab.charAt((binarray[i%3E%3E2]%20%3E%3E%20((i%254)*8+4))%20&%200xF)%20+%20hex_tab.charAt((binarray[i%3E%3E2]%20%3E%3E%20((i%254)*8))%20&%200xF);}return%20str;}function%20mpwd_doIt(){var%20master=document.getElementById(%27masterpwd%27).value;if%20(master%20!=%20%27%27%20&&%20master%20!=%20null)%20{re%20=%20new%20RegExp(%27https*://([^/]+)%27);host%20=%20document.location.href.match(re)[1];var%20i=0,%20j=0,%20p=hex_md5(master+%27:%27+host).substr(0,8),%20F=document.forms;for(i=0;i%3CF.length;i++){E=F[i].elements;for(j=0;j%3CE.length;j++){D=E[j];if(D.type==%27password%27){D.value=p;D.focus();}if(D.type==%27text%27){if(D.name.toUpperCase().indexOf(%27PASSWORD%27)!=-1||D.name.toUpperCase().indexOf(%27PASSWD%27)!=-1){D.value=p;D.focus();}}document.getElementsByTagName(%27body%27)[0].removeChild(document.getElementById(%27mpwd_panel%27));};function%20getPwdFld()%20{var%20L%20=%20document.getElementsByTagName(%27input%27);for%20(var%20i%20in%20L)%20{var%20nm%20=%20L[i].getAttribute(%22name%22)%20||%20%22%22;var%20tp%20=%20L[i].getAttribute(%22type%22)%20||%20%22%22;if%20((tp%20==%20%22password%22)%20||(tp%20==%20%22text%22%20&&%20nm.toLowerCase().substring(0,5)%20==%20%22passw%22))%20{return%20L[i];}}return%20null;}function%20panel()%20{var%20pwdTop%20=%200;var%20pwdLeft%20=%200;try%20{var%20obj%20=%20getPwdFld();if%20(obj.offsetParent)%20{while%20(obj.offsetParent)%20{pwdTop%20+=%20obj.offsetTop;pwdLeft%20+=%20obj.offsetLeft;obj%20=%20obj.offsetParent;}}}%20catch%20(e)%20{pwdTop%20=%2010;pwdLeft%20=%2010;}var%20div%20=%20document.createElement(%27div%27);div.style.padding=%274px%27;div.style.backgroundColor=%27yellow%27;div.style.border=%272px%20dotted%20red%27;div.style.position=%27absolute%27;div.style.top%20=%20pwdTop%20+%20%27px%27;div.style.left%20=%20pwdLeft%20+%20%27px%27;div.style.opacity=%27.9%27;div.setAttribute(%27id%27,%20%27mpwd_panel%27);div.appendChild(document.createTextNode(%27Master%20password:%20%27));var%20frm%20=%20document.createElement(%27form%27);frm.action=%27javascript:void(0);%27;div.appendChild(frm);var%20pwd%20=%20document.createElement(%27input%27);pwd.setAttribute(%27type%27,%27password%27);pwd.setAttribute(%27id%27,%27masterpwd%27);frm.appendChild(pwd);var%20ok%20=%20document.createElement(%27input%27);ok.setAttribute(%27type%27,%27submit%27);ok.setAttribute(%27value%27,%27OK%27);ok.onclick%20=%20mpwd_doIt;frm.appendChild(ok);document.getElementsByTagName(%27body%27)[0].appendChild(div);setTimeout(%22document.getElementById(%27masterpwd%27).focus();%22,%20333);};panel();})(); }}}

Und noch ein Schlag gegen die Abmahner

written by Martin Häcker on

Zuerst die gute Nachricht:

Das LG München hat geurteilt, das Rechteinhaber nur aufgrund der IP-Adresse und Zeit kein Recht erhalten die Persönlichen Daten dieses Internet-Nutzers zu bekommen.

Wie es in den Kommentaren auf Golem jemand sagt: "Das wirkt ja fast so, als ob die Gerichte jetzt auf einmal mit gesundem Menschenverstand entscheiden wĂĽrden.".

Dabei hat das Urteil für mich aber noch so ein Geschmäckle - es ist nämlich so, das der Kläger der Inhalteindustrie ein Porno-Vertreiber war.

Da stellen sich mir mehrere Fragen

  • Warum ausgerechnet ein Porno-Anbieter? Trauen sich die Herren Richter nicht an die Musik-/Filmindustrie heran und wollten sich nicht von denen das Leben / die Karriere versauen lassen?
  • Hat da vielleicht jemand zu wenig geschmiert?
  • Hat der Porno-Anbieter sich vielleicht besonders doof angestellt? Immerhin ist teil der UrteilsbegrĂĽndung explizit, das der Rechteinhaber offenbar kein Interesse daran habe der Urheberrechtsverletzung nachzugehen, sondern den Betroffenen lediglich abmahnen wollte.

Unklarheiten ĂĽber unklarheiten.

Ich persönlich vermute ja das er sich tatsächlich einfach zu doof angestellt hat und in der Klage direkt geschrieben hat, das er ja schließlich die Leute abmahnen wolle und das Gericht das zum Anlass genommen hat das zu sagen was sie schon lange mal sagen wollten, aber aufgrund geschickterer Formulierung der Klagen seitens der Musikindustrie nie sagen konnten.

Tja, find ich gut.

Vom Populismus

written by Martin Häcker on

Schon bezeichnend fĂĽr unsere politische Landschaft das das immer mehr zu einem Schow-Theater verkommt. Inspiriert durch die Analyse von Maha hab ich da nochmal ĂĽber das Killerspiele Argument nachgedacht.

Kurz Zusammengefasst: Ein Mensch sieht sich so in die Enge gedrängt das er irgendwann durchdreht und zum Amokläufer wird.

Darauf dann die typische Reaktion: Dieser Mensch hat Killerspiele gespielt, ergo waren die Schuld, ergo mĂĽssen wir Killerspiele verbieten.

Völlig ungeachtet der Tatsache das Killerspiele für Jugendliche sowieso schon verboten sind und man sich jetzt lediglich darüber unterhält, dass eben auch für Erwachsene zu verbieten.

Wieder völlig ungeachtet der Tatsache, das natürlich alle diese Spiele übers Internet trivial zu haben sind.

Einfach schade, das man mit solchen einfachen Strohmännern jede sinnvolle Beschäftigung mit dem Thema komplett verhindert wird.

Das Internet an Frau Merkel

written by Martin Häcker on

Das internet schrieb einen Brief

!!1!!!!(elf)!!!1!!!

Pavel bringt es einfach auf den Punkt.

(via fefe, frank)