Artikel - 8.10.2005 - 27.10.2005

Bock: meet Gärtner

Verschiebung des Bereichs Gentechnik ins Wirtschaftsministerium befürchtet - Innerhalb der Union wird diskutiert, die Zuständigkeit für die Agro-Gentechnik vom Verbraucher- ins Wirtschaftsministerium zu verschieben. - Umweltschutz-NEWS.de

Und das mit Scatman Ede als Wirtschaftswunder. Nunja, ob sich sein Unterscherge gegen ihn gestellt hätte wäre eh zweifelhaft. Aber sicherlich eine ganz tolle Idee, wenn genau diejenigen über Gentechnikeinsatz bestimmen, die schön von der Industrie geschmiert werden ...

PostgreSQL 8.1

PostgreSQL 8.1 mit Two-Phase-Commits und Benutzerrollen:

Transaktionen können nun auf mehreren Rechnern mit PREPARE TRANSACTION vorbereitet und später gemeinsam ausgeführt werden. Fällt eine Maschine nach dem PREPARE aus, lässt sich die Transaktion nach dem Neustart per COMMIT korrekt abschließen.

Yes!

Unheimliche Allianz

Wenn sich Industrie, Gewerkschaftler und die CDU zusammenrotten, um den Atomausstieg zu verhindern.

XML unter Patentschutz?

Patentblödsinn in Extrastärke: XML unter Patentschutz?. Aber Patente sind ja so ein toller Innovationsmotor, da ist es doch ganz richtig wenn eine Firma mit einem Patent, das sie selber nie in irgendeiner Form umgesetzt hat, mal eben sich in einem Bereich breit macht, der schon seit vielen Jahren in praktischer Anwendung ist.

Akismet - zentralistischer Anti-Spam-Filter

Photomatt (der von Wordpress) hat mit Akismet einen zentralen Anti-Spam-Dienst aufgebaut, den man per Plugin mit Wordpress benutzen kann. Zusätzlich gibts auch eine API, mit der man andere Dienste anbinden kann. Grundsätzlich eine gute Idee - auch wenn ich generell eine Abneigung gegen zentrale Dienste habe, ausser ich selber betreibe diese zentralen Dienste.

Was mir aber wirklich sauer aufstößt, ist dieser kleine Ausschnitt aus der FAQ:

Well without giving too much of the secret sauce away, we can safely say that it would be pretty difficult to poison Akismet.

Also zentraler Dienst - ok. Mag ich zwar nicht, aber macht durchaus für andere Sinn, die nicht selber sowas betreiben können oder wollen. Aber "secret sauce" - ich soll also meine Kommentare mit den persönlichen Daten meiner Kommentatoren an ein fremdes System schieben, bei dem ich nicht mal die Software sehen kann, die dahinter läuft? Sorry, nein Danke.

"Fitting on" some framework

How do you know wether a framework fits your style of thinking? It's not as if you could just look into a mirror wether it suits you nicely, you need other ways to decide that. One way to decide it is productivity - how fast you get your project up and running.

But does that really tell you the whole story? What if the project would have been something completely different? Did you just hit the sweet spot of the framework? Where you just lucky?

One way to decide wether some framework, language or tool fits my style of working for me is to look at the basic abstractions this tool gives me. And to look how I can use them and how naturally they fit my thinking - do I stumble on problems, not immediately knowing what abstraction to use, what tool to pull? Or do things just fall in place?

I discovered quite early on that I am a bit uncommon in programming, in that I don't build my own abstractions and try to translate from them into what the language or framework gives me, but that I start to think directly in the abstractions and syntaxes given to me - but only if they match my way.

So that's for me the ultimate measurement of wether a framework really fits into my thinking: checking from time to time wether I try to do translations or wether stuff just flows. Reaching "the flow" is what it's all about for me nowadays.

So how does Django match up? Quite nicely. It really gives me what I need in most cases, there are only very few areas where "the flow" is broken, where I need to think around problems, start to do translations. One area is special behaviour of entry fields - this curently is done in Django with parameterized instances of predefined field classes. There is no really nice way to do subclassing, you end up copying code from other parts of the django source - definitely breaking "the flow".

But most other parts just fall into place: middleware for global management of the request-response span. Template loaders for - well - template loading (yes, it's not a big deal - but being able to write your own template loader really is helpfull). The urlpatterns -hey, that's really a cool idea, because of it's absolutely loose couplying you don't even try to model your urls after your code structure, but tend to design them. And that's how it should be.

Models just powerfull enough to really move the model-related functionality there (although the class MODULE stuff will make it even nicer, especially the kind of ugly module_globals thingy). It would be cool if model classes would support mixin classes, so that abstract apps could provide stuff that just would be referenced by users to add functionality. But you can solve many of those problems with generated classes - thanks to python introspection (although you need to know a bit about djangos model-magic).

Most complex stuff tends to go into template tags and generic views - my CMS project currently only has 3 view functions of it's own, the rest is abstracted away into generic views (for searching and tagging). Template tags could be a bit easier to write, especially the parser is too primitive - a library of helper functions for easy deconstructing the tag string would be good (hey, maybe I write one, the basics arealready in my SVN repository).

Template filters are a big of an ugly duckling - they don't see the request context, so they can't do much more than just take the incoming object and some constant parameters. I think they should get the context passed in, so that they could be a bit smarter, if needed (like allowing filters to resolve a parameter against the context).

Generic views are quite nice, too - even though I don't use the predefined ones that often. The main reason is that more often than not I end up in wrapping the generic views in some code that modifies their behaviour - and then it's quite often simpler to just roll my own. But they are great for first starts into areas, just tack them into your project and funcitonality is available. You can allways exchange them with your own view functions if you discover that you need to.

And the admin, the one thing that makes Django stand out in the crowd? In my first play-projects I loved it, in later ones I didn't use it (the Gallery doesn't need it), but with the CMS project I did the first one that makes really heavy use of it. And I have to say, I like it. It should get a bit more flexibility (the new_admin branch might help there, as it moves more stuff into templates, so they can be overridden), but overall it's really cool and usefull.

Two things, though, are definitely needed for the admin: full transaction support bound to request-response (ticket #9 in the django trac), because changing stuff and ending up with inconsistent tables is no fun. Like getting an exception because something broke in repr , so the log entry isn't written, but the object is written. Of course you don't notice it, go back, send again, end up with two objects and still no log message ...

The other thing that is needed: basic hooks for object-based authentication. Not a full blown ACL or anything like that, just some really simple hooks from the admin to the model that the user can define to tell the admin wether some object should be editable or should only be shown readonly. The main problem with the current solution is, it only handles full tables - you can't even tell the admin that some user can only work on the current site and can't change objects of other sites (my CMS project makes heavy use of the multi-site capability in Django - one admin server should manage multiple sites in one admin interface).

But all in all webapp building with Django is real fun. It's not only productive to me, it just feels natural to do things the Django way. So, yes, Django fits my thinking style. Seems to have hit home right on.

Markdown for Django

Django already includes a markdown filter (in contrib.markup), but I nonetheless rolled my own Markdown for Django mini-app. The main benefits are link integration with django models (by using generic model queries and get absolute url), a documentation generic view that handles language switching and a nice macro facility for markdown. Macros are a usefull way to extend markdown by writing Django template snippets that are called whenever the users calls the makro in his markdown source.

It was formerly part of the CMS project, but I think it's usefull in it's own and so much better put into the stuff pseudo-project.

Twisted Buch ist raus

Wer sein Hirn nicht so ohne weiteres in die verdrehte Welt von Twisted quetschen kann, dem hilft vielleicht Twisted Network Programming Essentials - ein neues Buch zu der wohl mächtigsten Internet-Protokoll-Plattfor für Python.

Googles Web Accelerator and Damager

Google at it again - Ian sagt eigentlich schon alles, was es dazu zu sagen gibt. Google behauptet, sie wollten nicht "evil" sein. Aber dafür sind sie grenzenlos dämlich, wie sich am wiederholten Start des Web-Damagers zeigt.

Was macht der Web-Accelerator, und warum ist er so ein dämliches Stück Software? Nunja, er verfolgt einfach nur Links. Und zwar im Vorab, bevor der Benutzer es macht - sozusagen spekulatives Webcrawlen, nur eben privat für den Benutzer. Das klingt ja erstmal garnicht so schlimm, ausser das Server mit Traffic bombardiert werden, den sie möglicherweise so nie hätten - denn jeder Link wird schön weitergewandert, auch wenn der User da garnicht hin geht. Und das multipliziert mit den Benutzern die das Teil einsetzen ...

Aber der Traffic ist nicht das eigentliche Problem - das eigentliche Problem kommt erst, wenn man sich überlegt in welchem Context das Teil läuft. Und zwar hängt es ja auf dem privaten Rechner des Benutzers, zwischen Browser und Netz. Einfach ein eigener kleiner Proxy. Der für seine Arbeit sich Cookies und ähnliches merkt und an die Seiten dann Requests schickt, die so aussehen als kämen sie vom Browser des Benutzers. Mit dessen Security-Headern. Und Cookies.

Abgesehen davon, das ich es nicht sonderlich prall fände wenn meine Header mit Passwörtern oder Sessioncookies woanders als im Browser und im Zielserver auftauchen - diese Vorgehensweise ermöglicht es dem Webaccelerator sich auch Bereiche anzugucken, die ein zentraler Crawler nicht sehen würde. Nämlich zum Beispiel Seitenbereiche, die hinter Logins liegen. Content-Management-Systeme, bei denen nach Login zusätzliche Links auftauchen. Wikis, deren Edit-Links dann kommen, wenn jemand eine Session startet. Webmailsysteme, bei denen jede Mail als ein Link abgebildet ist.

All diese Systeme haben eines gemeinsam: für verändernde Aktionen ist nicht immer ein Formular-Absenden notwendig. Oft reicht es, einen Link zu klicken. Die aktuelle Version einer Seite im Wiki zu löschen, um schnell Wikispam zu beseitigen - ein einfacher Link, nur für den angemeldeten Benutzer sichtbar. Die Mail im Webmail-Postfach, die bei Aufruf automatisch auf gelesen gesetzt wird. Der Veröffentlichen-Link im CMS, mit dem eine Seite scharfgeschaltet wird.

Natürlich versuchen verantwortungsvolle Programmierer von Webanwendungen die destruktiven Aktionen hinter Formulare (und damit POST Requests) zu packen, damit nicht ein einfacher Link irgendwas zerstört. Aber das passiert in der Regel nur in den öffentlich zugänglichen Bereichen, bei denen sonst die Webrobots der diversen Suchmaschinen und Spam-Automaten sonst Chaos verursachen würden.

Aber gerade in den durch Login abgeschotteten Bereichen rechnet man normalerweise eben nicht mit Automatenklicks - und baut daher Komfortfeatures ein, weil man ja sicher sein kann, das ein Link bewusst und in Absicht geklickt wird.

Tja, bis dann der Web Accelerator von Google kam. Von der Firma, die von sich behauptet das Web kapiert zu haben. Schönen Dank auch, ihr Arschlöcher.

PS: und entgegen der ersten Version schickt die neue Version keinen Header mehr mit, an dem man die Prefetch-Requests erkennen könnte um sie in solchen kritischen Bereichen zu blocken.

Spam-Blockliste lief Amok

Und jetzt ratet mal welche das war? Genau - SORBS. Meine Lieblings-Ansammlung technischer Inkompetenz und sozialer Blödheit. Könnte nicht mal jemand eine UDP gegen die Pfeifen einleiten?

generic search service for Django

If your Django application needs searching capabilities, you can roll your own. Or you can use my generic search view. This provides a parser for queries and a search machinery that is suiteable for moderate database sizes. It provides an extensible google-like syntax.

The main problem is that django doesn't support OR query combinations and that it doesn't support "icontainsnot" queries. So the search engine does multiple selects to get one query. It starts with the longest search word and goes down in size from that result set, restricting it from one step to the next. But since it needs to keep the last result set in memory (at least the list of IDs), if your database contains too much rows, this might pose problems to your server (especially if the users do silly queries that produce large resultsets).

Maybe in future this will learn some optimizations to make it work better with larger databases, but it's quite fine as a search engine for your blog or standard content management systems.

Ubuntu Breezy Badger

Ich hab mir mal die Live+Installations DVD gezogen (hey, T-DSL 3000 rules! und muss sagen, ich bin echt erstaunt. Ok, ein paar Haken hat das ganze: das Tastaturlayout ist als Standard für den PC vorgeschlagen - aber ein Mac-Notebook kann unterschiedliche Layouts haben (extern eine PC-Tastatur, intern aber immer eine Mac-Tastatur), da müsste die Auswahl etwas geschickter sein. Stellt man auf die Macintosh-Tastatur der Auswahl um, funktionieren Sonderzeichen wie das Pipe-Symbol und die geschweiften und eckigen Klammern und AT und sowas alles nicht mehr - bei PC-Belegung stimmt aber die Beschriftung der Mac-Tastatur nicht. Und eine Belegung für die Mac-Sonderzeichen gibts nicht.

Was ebenfalls nicht funktioniert ist der zweite Monitor - er wird einfach nicht erkannt und aktiviert, nicht mal initialisiert wid er. Schon schade, denn Macs haben ja nunmal von Hause aus Multi-Monitor-Unterstützung, jedenfalls die PowerBooks und PowerMac Modelle (die iBooks und iMac nur teilweise und dann nur mit Hacks). Das sollte meiner Meinung auch noch mit rein.

Aber ansonsten - nette Sache. Das WLAN nicht erkannt wird, ist normal - bzw. es wird erkannt, aber ist nicht nutzbar. Apples WLAN Chips sind da öfter nicht unterstützt. Wo das Bluetooth konfiguriert wird, weiss ich auch nicht - warscheinlch müsste ich dazu erstmal Pakete installieren. Aber das könnte meiner Meinung nach auch automatisch gemacht werden, wenn ein Bluetooth-Adapter erkannt wird. Trotzdem, im Grossen und Ganzen wirkt Ubuntu recht nett - es kommt mit brauchbaren Defaults hoch und unterstützt schon gleich eine Menge des Rechners. Und die recht weitgehende Übersetzung zumindestens von Menüs und Dialogen im Gnome ist sehr angenehm.

Und das unten drunter eine Debian-Architektur werkelt ist mir natürlich ganz besonders lieb

Katastrophal ist aber, das in der Live-CD scheinbar nirgendwo ein Terminal gestartet werden kann ...

to flock - zusammenrotten

Ich weiss nicht, ob das obige so das richtige Motto für mich ist. Bookmarks in del.icio.us. Bilder in Flickr. Irgendwie hab ich das Zeug lieber bei mir als bei irgendwelchen zentralen Hostern.

Was sie aber richtig machen: automatisches Indizieren von Seiteninhalten, so das man die auch wiederfindet. Gäbs das ganze dann auch noch in einer OS X Version bei der der Browser auch wirklich eine OS X Anwendung ist (und nicht nur eine auf OS X lauffähige Anwendung), könnte das wirklich reizvoll sein.

Version Control with SVK

Version Control with SVK ist ein Online-Buch über SVK - ein verteiltes Versionssystem, das sehr gut mit SVN und CVS (unter anderem) harmoniert. Und gerade für die Arbeit mit Patches für Upstream-Systeme und für lokale Forks von Open Source Software eine ziemliche Erleichterung bietet.

Das Buch ist alles andere als Komplett, aber man findet schon eine ganze Menge an Informationen darin.

very simple view functions

Sometimes you have a bunch of really simple view functions in your django project (yes, this is for your, bitprophet! ). View functions that are actually not more than just a render to response call - take a template, take some data from the request, stuff them in and render a response. It's rather boring to write them down and it breaks the DRY principle. So what to do? Write your own generic view.

from django.core.extensions \
 import render_to_response

def simple_view(request, template, **kwargs):
 return render_to_response(
 template, kwargs)

That's all. A simple and nice view function that just does that - render a template. It even can be fed with context variables from the urlpattern. Use it like this in your urlconf:

urlpatterns = patterns('',
(r'^page/(?P<arg>.*)/$', 'cool.simple_view',
 {'template': 'app/mytemplate'}),
)

That way a /page/foo/ view would be routed to the 'app/mytemplate' template with a context that just includes the variable 'arg' with the value 'foo'. And you never will need to write those simple_view functions again. For extra spices you could throw in a context_instance = DjangoContext(request) into the render to response call to even get the authenticated user and stuff like that from the request.

Mannesmann Prozess diesmal ohne Victory für Ackermann?

Jedenfalls klingt sowas an wenn Richter Zweifel an Mannesmann-Freisprüchen äußern:

Am gestrigen ersten Verhandlungstag hatten Richter bereits Zweifel an den Freisprüchen für Deutsche-Bank-Chef Josef Ackermann, Ex-Mannesmann Chef Klaus Esser, der frühere IG-Metall-Vorsitzende Klaus Zwickel und weitere Angeklagte angemeldet.

Module Hacking for Django

Django itself constructs model modules dynamically from your model classes. That's what I used in my first take at the abstract tagging application. Now I found a better way in the current version - I can modify the dynamic module myself quite easily, generate a dynamic model class and push that into the model module. What it actually does is just mimicking what happens when Python defines a class - most stuff is done by the meta.ModelBase metaclass in Django, anyway. I only had to add some module hacking stuff. Python introspection rules!

What this gives you is a much cleaner interface to create the tagrelation class for your model - just a function call, no silly subclassing or superfluous assignment. Everything happens as by magic.

It is magic.

AgfaPhoto ade

Schade, aber Agfa ist dann wohl Geschichte: AgfaPhoto nicht zu retten. Selbst wenn jetzt noch jemand den Namen kauft, Agfa ist das dann nicht mehr. Kein APX mehr. Irgendwie ein komisches Gefühl.

Aperture

War ja schon angekündigt, jetzt ist es da - Aperture. Von Apple. Das Video dazu ist nett, sieht sehr brauchbar aus, was die gemacht haben. Und ich würde mir sogar die fast 500 Euronen gefallen lassen - ok, Photoshop-Updates wären für mich billiger, aber Aperture ist nunmal RAW-zentrisch aufgebaut und Photoshop hat nur einen RAW Importer. Aber was mir garnicht passt: die Hardwareanforderungen. Die Programmierer haben einen an der Waffel.

Ja, Fotobearbeitung braucht Speicher - sind schliesslich viele Daten. Und man braucht auch anständig leistungsfähige Hardware für den Einsatz von Filtern. Und ja, auch ne schnelle Grafikkarte ist brauchbar. Aber die Minimalanforderungen für Aperture liegen schon teilweise jenseits von Gut und Böse - zumal man ja weiss, wie diese Minimalanforderungen dann funktionieren werden - warscheinlich ähnlich gut wie Mac OS X mit 256 MB Speicher ...

Sorry, aber Bildbearbeitung ist nicht Raketenwissenschaft und auch nicht Wettersimulation - was soll diese völlig überzogene Resourcenforderung der Software? Haben heutige Programmierere komplett das Optimieren verlernt?

Mensch, ich hab vor noch nicht allzulanger Zeit mit Photoshop 5 auf einem 128 MB RAM Applem it 275 Mhz 603e CPU einen ganzen Film eingescanned und dann abgearbeitet. Natürlich sind RAW-Bilder grösser - aber wozu soll eine Bildbearbeitung einen Dual-G5 erforderlich machen? Bescheuert. Größenwahnsinnig.

Also werd ich wohl doch einfach weiter mit PHotoshop 7 arbeiten, auch wenn mir da immer noch der Open-Dialog abstürzt unter Tiger. Das tuts wenigstens brauchbar auf meinem netten, alten 12" Powerbook (ja, das mit 867 Mhz und nur 640 MB Speicher). Für meine Zwecke reichts, ich will nicht erst mehrere Tausend Euronen über den Tisch schieben, nur um das Bildbearbeitungsprogramm starten zu können ...

Tagging with Django

Since the question about how to do tagging with Django shows up quite often, I have written a small solution to this problem: AbstractTagging. This is a generic application and generic views that give you a very simple solution to add tagging to any model you have in your django apps. It's currently used by me in my CMS project. The source is in the stuff project.

It was a bit weird to build, because I had to dynamically construct a base class you can subclass in your models - this is because of the magic in django.core.meta, where model classes are turned into modules. But the result is quite nice, I think.

Was soll der Name

Der RFC 1437 ist - wie jeder der sich den Einstiegstext durchgelesen hat wohl schon vermuten wird - einer der April-RFCs. Aber irgendwie hat mich dieser April-RFC mehr angesprochen als jeder andere - auch wenn er technisch eher schwach ist (da ist der RFC mit den Brieftauben - RFC 1149 - wesentlich besser).

Die Idee des Transportes von intelligenten Lebensformen ist nicht neu - in nahezu jedem Science Fiction kommt eine Variation darauf vor. Allerdings gibt es durchaus auch heute schon den Transport der intelligenten Lebensform - jedenfalls wenn man eine geeignete Definition anwendet. Natürlich gibt es keinen körperlichen Transport mittels Beamen. Aber was macht intelligente Lebensformen aus?

Für mich ist der zentrale Bestandteil intelligenter Lebensformen die Kommunikation. Und zwar nicht nur die zweckgebundene Kommunikation - sowas gibt es auch bei Rudeltieren bei der Jagd zum Beispiel. Sondern die zweckfreie Kommunikaktion, die Kommunikation um der Kommunikation willen. Darstellung von Ideen und Gedanken, nur um sie anderen zu vermitteln, ohne das ein fester Anlass dazu besteht.

Dieser Kommunikation fröne ich nun schon seit vielen Jahren in den verschiedensten Formen. Seit geraumer Zeit wieder verstärkt im Internet in Form von Bilderalben ( leicaesk und hugoesk (abgeschaltet) zum Beispiel) oder Weblogs ( Hugos House of Weblog Horror zum Beispiel). Desweiteren war immer schon Software ein zentraler Weg der Kommunikation für mich (zum Beispiel PyDS - eine Weblog- und Newsaggregator-Software, oder eben auch die Software dieses Servers).

Diese Site soll eine Ergänzung werden. Hier sollen verschiedene Medien zusammengeführt werden und gemeinsam zum Einsatz kommen. Keine Ahnung wohin mich das bringt, keine Ahnung ob überhaupt jemals mehr als nur ein paar Testseiten und allgemeines Blabla entstehen wird, aber wenn man nie losfährt, wird man nie auf die Reise gehen können.

Natürlich ist das ganze nicht gleich so als grosse Eingebung zu mir gekommen. Die Domain rfc1437.de habe ich zum Beispiel lange Zeit einfach nur als witzige Maildomain verwendet - Mail als die Idee des virtuellen Beamens. Aber Mail alleine ist ein sehr schmales Medium. Viele Wege mich auszudrücken lassen sich per Mail nur schlecht transportieren.

Ausserdem hat mich genervt das Leute immer wieder meinten mich darauf hinweisen zu müssen das meine Domain kaputt wäre, nur weil kein Webserver eingerichtet war ...

call of the noodle

Da schreibt einer an einem Lisp-Compiler für Python-Bytecode - sehr interessant, da man damit die Python Libraries unter einem Lisp-Dialekt benutzen könnte. Mal schauen wenn der erste Release kommt, wie der Lisp-Dialekt aussehen wird und was für Features er abdecken wird. Mit Unterstützung für Lisp-Makros wäre es sehr interessant.

Using Django as a CMS

I am currently reworking one of my sites - Content-type: matter-transport/sentient-life-form. It was a Apache::MiniWiki based site before and is now in the transition to being a Django based site. The idea of the code for that site is to build a CMS based on Django that fully uses the Django admin. So the users should be able to do all management only in the admin, while the site itself behaves a bit like a Wiki. Autolinking, Autoediting of missing pages, Editlinks, Versioning (currently missing in the source) - all that should be done based on tools the Django admin provides.

This isn't for a full-blown site, though - the linked site is allmost empty, I never put much up there. It's more a project to dig deeper into the Django admin to see what it's like to work in it - so I know about that stuff when I start to build real projects.

The code itself is freely available - and there is already a nice thing in it. It's a template loader who pulls stuff from the database instead from the filesystem or from python eggs. It's "ticketed" at Django under #633, so it might make it into django.contrib some day.

Demontage des angeblichen Retters

Schön, wenn son KOnzernbonze mal demontiert wird. Ich hab mich eh immer wieder gewundert, wieso die SPD gerade einen Personalchef aus der Automobilwirtschaft die Arbeitslosensicherung reformieren lässt (Stichwort Bock und Gärtner und so - und ja, ich bin mir des Autokanzlers durchaus bewusst). Ob irgendwann sein Name von dieser absurden Arbeitslosenpolitik getrennt wird, oder werden sich die Politiker auch in Zukunft noch mit dem Namen Hartz schmücken?

Kirchensteuer und konfessionslose Ehepartner

Keine Kirche!

Die Kirchen in den Bistümern Hildesheim, Osnabrück und Münster ändern die Kirchensteuerberechnung - und zwar werden dort jetzt bei Ehen in denen einer der Partner nicht in der Kirche ist, das gemeinsame Einkommen für die Berechnung der Kirchensteuer des anderen Partners angesetzt. Raubritterdenken, das hoffentlich möglichst viele bewegt diesem absurden Verein den Rücken zu kehren ...

Gerade unter dem Aspekt von solchen recht willkürlichen Änderungen sehe ich das staatliche Inkasso der Kirchensteuer noch kritischer. Denn der Staat macht sich hier zum Erfüllungsgehilfen für die Willkür der Kirchen über ihre Mitglieder.

Matt Mullenweg und das Geld

Tja, wie Ralf im Netzbuch unter dem netten Titel Wordpress, die Weblog-Prostituierte berichtet, hat Matt Mullenweg - der Hauptentwickler von WordPress - mal wieder eine grandiose Idee zum Geldverdienen. Natürlich mal wieder auf dem PageRank, den er durch die vielen Backlinks von WordPress Blogs aufgebaut hat. Und natürlich wieder mal ohne grössere Diskussion oder wenigstens offener Kommunikation in der Community. Diesmal sinds Werbeschaltungen über so einen Werbeplatz-Vermarkter zu absurd hohen Preisen.

wofür sich Medien so einsetzen

Wenn es um die Sicherung der Werbepartner geht, werden selbst öffentlich rechtliche Sender fleissig und schnell:

Der NDR hatte damals noch am selben Tag rechtliche Schritte gegen die Verfügung eingeleitet und sofort eine einstweilige Einstellung der Zwangsvollstreckung erreicht. So konnte der NDR am Wahlabend in seinen Sendungen auch weiterhin das Microsoft-Logo zeigen. Dies ist nach der Aufhebung der einstweiligen Verfügung nun vorerst auch in Zukunft möglich.

Jaja, wie schön, der NDR hat sich voll ins Zeug gelegt, damit er weiter das Microsoft-Logo auf unangebrachte Sendungen - wie Wahlberichterstattung - pappen kann. Denn das ist wichtig, dafür muss man sich einsetzen, das muss erhalten werden. Schleichwerbung? Ach watt, alles nur Gerede. Warscheinlich wird die Politik eh schon von Microsoft gesponsort und unsere Bundeszicke wird dann ein Micorosoft-Logo auf dem Revert tragen.

Auch son Modell für die Vollversager ...

... die in Berlin, mein ich: einfach wie Berlusconi das Wahlrecht ändern - denn vielleicht reichts dann ja wirklich mal für die CDU für eine eigene Mehrheit, ohne sich hinter Fraktionsgemauschel und anderen Scheinheiligkeiten zu verstecken. Ach watt, Adenauers Erben haben halt hauptsächlich seine Blödheit und Korruption geerbt, bei den Wahlerfolgen ists halt mau. Reicht ja wenn man sich mit seinen jämmerlichen 29 Prozen die Welt einfach schön lügt.

Desktruktiv?

Mal ne Frage an diejenigen, die meinen den Blogs Destruktivität vorwerfen zu müssen: könnt ihr Spacken mir mal verraten, warum ich bei dem Stuss den Politik, Medien und Wirtschaft abziehen konstruktiv sein soll? Wenn euch jemand in den Vorgarten scheisst nehmt ihr das warscheinlich auch ganz konstruktiv als Rosendünger? Traumtänzer.

Geschäftsmodell von Open Source ...

... allein das zu hören macht mir schon Pickel. Diese absolute Unfähigkeit von Interessenverbänden aus der Wirtschaft sich eine Motivation ohne Geschäftsmodell vorstellen zu können - traurig.

IE7 und Auswirkungen auf CSS Hacks

IE7 and the demise of CSS hacks ist über die IE CSS Hacks die man so im Laufe der Zeit liebgewonnen hat und die bei IE6 dringend notwendig sind, um CSS Layouts wenigstens präsentabel auf den IEs zu machen. Mit IE7 wird sich da einiges ändern - und einige davon werden nicht mehr funktionieren.

Dringende Empfehlung: Umstellen auf conditional comments und Verschieben der CSS Korrekturen in ein eigenes Stylesheet, das für den IE dann hinzugeladen werden kann. Leider kann man damit nur CSS Elemente für den IE zufügen, nicht vorhandene Elemente vor dem IE verstecken - möglicherweise kann man da aber was mit Überschreiben von Elementen machen.

Im IE Blog ist eine Liste der Hacks die problematisch mit IE 7 sein werden.

Seehofer stärkt die Position der SPD ...

... sagen Merkel und andere CDU Grosskopferte. Warum machen sie dann Stoiber zum Wirtschaftsminister? Oder ist das jetzt ein anderer Titel für den Hofnarren? Das angedrohte Horrorkabinett können sie jedenfalls meiner Meinung nach gerne gleich zu Madame Tissot entsorgen.

Spyware in World of Warcraft?

Laut Bruce Schneier benutzt Blizzard Entertainment Spyware zur Prüfung der Einhaltung ihrer EULA - und zwar eine, die weitaus mehr anguckt als nur die Daten aus dem eigenen Programm, sondern auch zusätzliche Daten aus anderen Anwendungen ...

Bedenklich eben weil es nicht nur die Daten des eigenen Programms ausliest - aber selbst dann wäre es noch bedenklich, wenn es sich wirklich auf die Software von Blizzard Entertainment beschränken würde. Oder hat einer der User der Software dieser Überwachung zugestimmt? Dem Nachladen von Code auf den eigenen Rechner? Dem durchforsten von Systemlisten nach Informationen? Dem Verschicken dieser Informationen über das Internet?

Fraglich auch wie sowas mit Datenschutzbestimmungen z.B. in Deutschland konform sein soll.

Tailor - Versionsvermittler

Tailor ist ein Python Script das Changesets zwischen verschiedenen Versionssystemen austauschen kann. Im Prinzip kann man damit auch Repositories in anderen Versionssystemen spiegeln.

Thatcher

Auch so eine Kriegstreiberin, der jetzt gehuldigt wird, nur weil sie 80 geworden ist. Egal das sie einen Krieg angefangen hat. Was scherts die Medien - huldigen ist in. Korrupte und meineidige Ex-Bundeskanzler werden da genauso gerne genommen wie Kriegstreiber und anderes Gesocks. Ach watt, ich bin warscheinlich einfach gerade nur fürchterlich destruktiv, weil seinen Amtseid brechen und sich am Gesetz vorbeimauscheln und Kriege anfangen, das ist ja so richtig konstruktiv.

Trac on Darcs

Ich liebe ja bekanntermaßen Trac als Projektwerkzeug - und bin mit Subversion als Versionierung (oder neuerdings mit SVK als auf Subversion aufsetzendem Versionswerkzeug) ganz zufrieden. Aber darcs hat mich auch begeistert, weils so schön unbürokratisch ist - und jetzt gibts auch Trac auf Darcs - eine gepatchte Version, die eben mit darcs statt Subversion zusammenarbeitet. Ich glaub, ich werd mir das mal näher angucken ...

Der gleiche Patch erlaubt auch ein Bazaar-NG Backend für Trac - was ganz besonders interessant ist, weil sowohl Trac als auch Bazaar-NG in Python geschrieben sind. Ich glaube auch den Teil sollte ich mir mal angucken.

Und gerade wurde ich im IRC noch darauf hingewiesen, das SCons auch Python ist - ein ziemlich netter Ersatz für das doch schon arg in die Jahre gekommene Make.

Klingt schon fast nach Developer-Nirvana das ganze

SVK - Subversion distributed

SVK ist ein verteiltes Versionssystem mit einer Besonderheit: es kann Trees anderer Versionssysteme (unter anderem SVN) spiegeln und darauf dann Arbeitskopien definieren. Man kann also ein Subversion-Repository eines Projektes spiegeln, einen eigenen lokalen Branch anlegen, darin arbeiten und die Änderungen lokal versionieren. Wenn dann der eigene Branch soweit ist, kann man einen Commit gegen das Ursprungsrepository machen, oder sich einfach einen Diff ziehen und dem Entwickler zuschicken. Sehr nette Sache, ganz besonders wegen der guten Integration mit Subversion.

vi meets Word

Erschreckend: vi Steuerung für Word - als Word-Makros aufgebaut. Irgendwie krank. Ich glaub, ich muss mir das installieren ...

Django i18n status

I worked a bit more on the i18n stuff in django today and finally switched my gallery to the i18n branch. You can now see the strings on that site with either english or german settings. Other languages get english output (so if you are in Germany and still see english strings - check the language settings in your browser, wether German is defined with higher priority than English).

The code works quite nice and I think I will give it a week or so to settle and than start to put finishing touches to it - like adding much more translation hooks to the django source.

Ein Loch ist im Kanal

Oders ausgedrückt: wir haben den Kanal leer:

Allerdings könnte nach Informationen des WDR das Sperrwerk in Lüdinghausen drohen zu brechen. Vorsorglich wurde daher für den Unterlauf der Lippe bis Ahsen Katastrophenalarm ausgerufen.

Schon komisch, die Vorstellung das der Kanal jetzt an zwei Stellen eine Vollsperrung hat ...

Innovationskraft von Softwarepatenten

Weil Softwarepatente so hohe Innovationskraft innewohnt, verschwindet wohl der Blackberry vom US-Markt, denn:

As part of that litigation, NTP, whose only assets are wireless e-mail related patents, had been granted an injunction banning the sale of BlackBerry devices in the United States and forcing Research in Motion to stop providing e-mail services to all American customers except government account holders.

Genau. Eine Firma, die nichts hat ausser ein paar Patententen (die auch noch ziemlich banal sind, wie man das halt bei US-Patenten fast schon gewohnt ist) hat per Gericht einen Verkaufsstopp gegen eine andere Firma, deren Produkt physikalisch zu kaufen ist, erwirkt. Wahnsinnig innovativ. Und sicherlich so wichtig, sowas müssen wir auch in Europa haben.

Kreationistenpest

Oh, toll, jetzt stehen die Kreationisten schon in Thüringen. Nunja, kein Wunder, wenn man zu einer Partei gehört, die auch einen Gottesbezug in der Europa-Verfassung fordert ...

Und nein, "Intelligent Design" ist keine wissenschaftliche Theorie die als Alternative zur Evolutionstheorie diskutieret werden könnte - bei ID handelt es sich um kompletten Mumpitz, um religiös motivierte Wissenschaftsfeindlichkeit. Minimal verkappter Kreationismus, mehr nicht. Von daher ist die Forderung nach einer wissenschaftlichen Diskussion dieser angeblichen "Theorie" schlichtweg Unfug.

Cryosat stürzt ins Eis

Shit - das ist ärgerlich. Vor allem wegen des Einsatzzweckes des Satelliten:

Dies war die erste Mission im "Earth Opportunity Missions"-Programm der Europäischen Weltraumbehörde (ESA), das die Lösung wissenschaftlicher Probleme mit Hilfe relativ kleiner und kostengünstiger Satelliten zum Ziel hat. Der Satellit verfügte als erster über ein neuartiges Radaraltimeter, das mit sehr hoher räumlicher Auflösung sogar einzelne Eisschollen unterscheiden und deren Dicken messen kann.

Hoffentlich wird das Projekt neu aufgelegt ...

Interessant an dem Anteil der Russen finde ich auch die Schwerter-zu-Pflugscharen Mentalität dabei: die Rakete war eine umgebaute Interkontinentalrakete ...

von Galen, seine Seeligkeit und sein Widerstand

Der WDR hat einen sehr guten Text über Kardinal von Galen online: Clemens August von Galen - ein Widerstandskämpfer?.

Der "Löwe von Münster" hat gut gebrüllt, wenn er denn brüllte. Krieg und Diktatur als solche hat er nie in Frage gestellt, sofern es nicht kirchliche Belange betraf. Nie hat er ein Wort zur Verfolgung der Juden gefunden. Während er die ideologische "Vernichtung des Christentums" fürchtete, blieb die tatsächliche Vernichtung des Judentums unbeachtet.

Der Artikel ist wirklich lesenswert, weil er sich mit den kritischen Punkten an von Galen auseinandersetzt - es ging ihm um die Kirche, die Freiheiten der Kirche. Nicht um Demokratie oder Freiheit für alle. Auch war sein Widerstand nicht aus ihm alleine heraus entstanden, er hatte Menschen die ihn drängten. Und er war Nationalist - jenseits der Grenzen, womöglich bei den bösen Bolschewiken, da kann man ruhig morden.

Der einzige Teil seines Widerstandes, der wohl wirklich von persönlicher Abscheu und Empfindung motiviert war und nicht als Versuch des Schutzes der Kirche zu werten ist, ist sein deutliches Eintreten gegen die Euthanasie. Von daher war er immer noch ein bischen mehr Widerständler als die meisten Kirchenfürsten. Zumindestens den Teil von ihm kann man anerkennen.

Keine Kirche!

Die Art und Weise wie die katholische Kirche jetzt allerdings Kardinal von Galen feiert, ist peinlich. Denn als grosses Aushängeschild des Widerstandes kann er wirklich nicht dienen - wenn das, was er geleistet hat, das beste ist was die katholische Kirche im Naziregime vorzuweisen hat - dann sollten sie besser verschämt schweigen. Ein Beleg für die Unvereinbarkeit des Kreuzes und des Hakenkreuzes ist das auf keinen Fall. Eher ein Beleg dafür, das die katholische Kirche allenfalls um ihre eigene Macht gebangt hat, aber kein sonderliches Interesse an der Verhinderung dieses abartigen Regimes hatte.

Wetterbloggen

Im Oktober gemütlich im Gartencafe Kuchen essen und später dann im Restaurant schön draussen sitzen und zu Abend essen - könnte ich mich dran gewöhnen.

Zabels Abschied von T-Mobile

könnte besser ja garnicht sein: Paris-Tours zu gewinnen ist sicherlich ein ziemlich netter Erfolg. Er ist eben nicht einfach altes Eisen. Und entgegen zum Kommentar in der Tagesschau hat man ihn nicht ausgemustet - er hat T-Mobile ausgemustert. Und sich für sein Domina-Milka-Team nochmal gut empfohlen.

Ajax mal anders

Subway's new Ajax framework hat einen interessanten Ansatz: per inspect wird Python-Source aus einer Methode geholt und dann nach JavaScript übersetzt. Natürlich wird dabei nur ein Subset von Python unterstützt, aber die Idee ist recht interessant - Python-Syntax für JavaScript.

Natürlich werden die semantischen Unterschiede zwischen Pythons und JavaScripts Interpreterablauf einen früher oder später beissen, aber für einfachere Sachen (und viele Ajax-Sachen sind tatsächlich recht banaler Code auf JavaScript-Seite) kann man so ohne JavaScript-Source aufbauen.

Das ganze würde natürlich wesentlich eleganter ausfallen, wenn Python eine vernüntige Makrosprache integriert hätte - bzw. wenn man in Python Makros in der Art bauen könnte, wie man es in Common Lisp kann. Damit wäre die Definition des Subsets und die Erstellung des JavaScripts daraus wesentlich eleganter machbar. Eventuell könnte hier P hillip J. Ebys Arbeit an Konfigurationssprachen helfen - es ist ja im Prinzip der Ansatz einer Makro-Einrichtung für Python.

Ich persönlich würde daher bei Python eher einen Ansatz verfolgen bei dem durch Python-Code-Ablauf (also nicht Parsen und Compilieren) JavaScript generiert wird - denn viele Ajax-Funktionalitäten sind recht standardisierte Abläufe. Es wird in der Regel der DOM-Tree manipuliert, nach festen Vorgaben, mit Daten die über JSON angeliefert werden. Das meiste liesse sich gut standardisieren. Allerdings hab ich da noch keinen konkreten Code parat, bisher ist Ajax bei mir immer noch direkter JavaScript-Code - allerdings mit Hilfe von MochiKit.

Mal schauen was sich im Ajax-Python-Land noch so tut. CrackAjax ist zumindestens mal ein weiterer Ansatz, der möglicherweise andere inspiriert das ganze etwas besser auszubauen.

Blogcounter, Schwanzlängen und andere Lügen

Im Moment wird ja mal wieder wild über Hitzahlen und ähnlichen Unfug diskutiert. Meist interessieren die mich nicht (mein Server hat ein abstrus hohes Freivolumen, das ich eh nie ausnutzen kann, die Serverlast ist auch gering - also was scherts mich, wie viel hier ankommt?), aber bei den diversen Verkündungen von Hitzahlen, Pagesviews und Visits muss ich dann doch immer leicht grinsen.

Mal so als kleine Analyse der ganzen Geschichte. Zuerst der wichtigste Teil: wo kommen die her, diese Zahlen? Grundsätzlich gibts zwei Möglichkeiten. Eine baut darauf auf, das Seiten ein kleines Element enthalten (z.B. ein Image - manchmal unsichtbar - oder ein Stück JavaScript oder ein Iframe - alle gemeinhin unter dem Begriff Webbug (Web-Wanze) zusammengefasst) welches gezählt wird. Die andere Methode geht auf die Logfiles des Webservers und wertet diese aus. Es gibt noch eine dritte, bei der über einen Cookie der einzelne Besucher identifiziert wird - ist aber eher seltener in Benutzung, ausser für einige eher unbeliebte Werbesysteme.

Es gibt grundsätzlich eigentlich nur wenige echte Zahlen die sowas wirklich liefern kann (mit Ausnahme der Individualisierung über Cookies): zum einen Hits, zum anderen Megabytes and Transfer. Ganz entfernt nützlich gibts noch die Anzahl unterschiedlicher Hosts (IP-Adressen) die zugegriffen haben.

Diese Zahlen haben aber ein problem: sie sind rein technisch. Und damit stark von der Technik abhängig. Hits gehen rauf, wenn man viele externe Elemente hat. Bytes gehen rauf wenn man viele lange Seiten hat (oder grosse Bilder oder ...). IP-Adressen gehen runter, wenn viele Besucher hinter Proxies hängen. Und gehen rauf, wenn man viele ISDN-User hat - wegen der dynamischen Einwahladressen. Veränderungen in den Zahlen haben also sowohl mit Veränderungen bei den Besuchern als auch bei den Seiten zur Ursache.

All diese Zahlen sind also so aussagekräftig wie der Kaffeesatz in der morgendlichen Tasse. Deshalb ziehen Leute aus diesen - technisch zumindestens definierten - Zahlen dann andere Zahlen, die was aussagen sollen. Hier sind vor allem die Visits (Besuche auf der Webseite), die Page-Impressions (Zugriffe auf echte Seitenadressen) und die Visitors (unterschiedliche Besucher) zu nennen.

Nehmen wir mal die einfachste Zahl, die wenigstens noch rudimentäre Verankerung in der realen Welt hat: die Page-Impressions. Hierzu kann man auf verschiedenen Wegen kommen. Man kann die oben genannten Webbugs auf die Seiten packen die gezählt werden sollen. Damit ist die Zahl ungefähr so verlässlich wie das Zählsystem. Dummerweise sind die Zählsysteme das absolut nicht, aber dazu gleich mehr. Die Alternative - über die Webserver Logfiles zu gehen - ist etwas besser. Dazu zählt man einfach mit, wie viele Hits mit dem Mime-Type text/html (oder welche auch immer für die eigenen Seiten genutzt werden) ausgeliefert werden. Man kann auch nach .html zählen - aber viele Seiten haben sowas nicht mehr in den Adressen stehen, der Mime-Type ist da verlässlicher.

Aussagekraft? Naja, eher zweifelhaft. Viele Benutzer werden über ihre Provider über Zwangsproxies gezogen - ein Proxy hat aber die Eigenschaft, das er Hits vermeiden hilft. Hat ein Besucher die Seite abgerufen, wird sie möglicherweise (abhängig von der Konfiguration des Proxies) an andere Besucher aus dem Cache ausgeliefert, nicht vom Server geholt. Betrifft zum Beispiel ganz AOL - die Zahlen sind dort deutlich verfälscht. Je A-List-Bloggerisch der Blogger wirklich ist, desto verfälschter (da ja Cache-Hits häufiger sein können als bei wenig besuchten Blogs) sind die Zahlen oft.

Zusätzlich machen Browser auch sowas - Seiten zwischenspeichern. Oder Besucher machen was anderes - Seiten nochmal laden. Proxies wiederholen manchen Ladevorgang automatisch, weil der erste vielleicht wegen Timeout nicht ganz durch ging - das sind alles Verfälschungen der Zahlen. Trotzdem sind die Page-Impressions noch wenigstens halbwegs brauchbar. Ausser man benutzt Webbugs.

Denn Webbugs haben ein generelles Problem: es sind eben nicht Hauptseiten. Sondern eingebettete Objekte. Hier verhalten sich Browser oft noch hartnäckiger - was im Cache ist, wird aus dem Cache angezeigt. Wozu das Bildchen denn nochmal holen? Klar, man kann da vorbeugen mit geeigneten Header - trotzdem gehts oft genug schief. JavaScript-basierte Techniken gehen voll an Benutzern ohne JavaScript vorbei (und glaubt mir, es gibt von denen wesentlich mehr als gerne zugegeben wird). Letzten Endes haben Webbugs die gleichen Probleme wie die eigentlichen Seiten, nur noch ein paar zusätzliche, eigene Probleme. Warum die trotzdem genutzt werden? Weil es die einzige Möglichkeit ist, seine Statistiken auf einem anderen System als dem eigenen zählen zu lassen. Also unerlässlich für globale Schwanzlängenvergleiche.

Nunja, verlassen wir die Page-Impressions und damit den Bereich der Rationalität. Kommen wir zu Visits, und damit eng verwandt den Visitors. Besucher sind geheimnisvolle Wesen im Web - man sieht nur die Zugriffe, aber wer das ist und ob man ihn kennt, das ist nicht sichtbar. Um so wichtiger für Marketingzwecke, denn alles was Humbug ist und nicht nachprüfbar, lässt sich wunderbar für Marketing ausnutzen.

Besucher sind für einen Webbrowser nur über die IP des Zugriffes erkennbar, zuzüglich der Header die der Browser schickt. Das ist leider viel mehr als man wahrhaben will - aber (ausser bei den Cookie-Setzern mit individueller Benutzerverfolgung) nicht genug zur eindeutigen Identifikation. Denn Benutzer teilen sich IPs - jeder Proxy wird als eine IP aufschlagen. Benutzer nutzen vielleicht sowas wie tor - und damit ist die IP häufiger eine andere als beim letzten Mal. Benutzer teilen sich einen Rechner in einem Internet-Cafe - und damit sind es eigentlich nicht Benutzer, sondern Rechner die man zuordnet. Es gibt zwar Header die von Caches gesetzt werden mit denen man Zuordnungen machen kann - aber wenn hinter dem Cache die Benutzer alle nur private IP-Adressen nutzen (die 10.x.x.x oder 172.x.x.x oder 192.168.x.x Adressen die man so aus einschlägiger Literatur kennt), hilft das auch nicht.

Besucher sind aber noch ein bischen zuzuordnen, wenn der Zeitraum kurz ist - aber über Tage? Sorry, aber im Zeitalter von dynamischen IP-Adressen hilft das garnichts. Die Besucher von heute und die von morgen können gleich oder verschieden sein - keine Ahnung. Trotzdem wird stolz verkündet, wie viele Besucher man im Monat hatte. Hat natürlich gar keine Aussagekraft mehr. Selbst Tageszahlen sind schon stark verändert durch dynamische Einwahlen (nicht jeder benutzt ne Flatrate und hat für 24 Stunden die gleiche Adresse).

Aber um dem Wahnsinn noch einen draufzusetzen, es werden ja nicht nur die Besucher gezählt (angeblich), sondern auch noch deren Besuche. Ja, das ist dann richtig spannend. Denn was ist ein Besuch? Ok, einen Besucher über kurze Zeit wiederzuerkennen (mit all den Problemen die durch Proxies und ähnliches dazu kommen natürlich) geht so einigermaßen - und man weiss auch genau wann ein Besuch anfängt. Beim ersten Zugriff nämlich. Aber wann hört er auf? Denn ein Beenden eines Webbesuches (ein Logout) gibts ja nicht. Man geht einfach weg. Kommt nicht so schnell zurück (wenn überhaupt).

Ja, da wirds dann richtig kreativ. Nimmt man einfach die Zeitabstände der Hits? Oder - weil Besucher ja die Inhalte alle immer lesen - berechnet man den Zeitabstand ab wann ein Hit ein neuer Besuch ist aus der Grösse des zuletzt geholten Seitendokumentes? Wie filtert man regelmäßige Refreshs aus? Wie geht man mit den obigen Besucherzählproblemen um?

Garnicht. Man saugt einfach. An den Fingern. Raus kommt dann eine Zahl. Meistens auf der Basis eines Zeitabstandes zwischen Hits - lange Pause, neuer Besuch. Das zählt man einfach. Und haut es in eine Summe. Ungeachtet der Tatsache, das ein Besuch vielleicht durch ein Telefongespräch unterbrochen war - und daher zwei Visits ein Visit waren, nur halt mit Pause. Ungeachtet der Tatsache, das sich Benutzer Rechner oder IP-Adressen teilen - und damit ein Visit in wirklichkeit 10 verzahnte Visits waren.

Oh, ja, ich weiss das manche Software die Referrer-Header des Browsers benutzt um Pfade durch das System zuzuordnen und daraus dann klarerer Visits aufzubauen. Was natürlich nicht mehr glatt geht, wenn der Benutzer mit dem Back-Button zurückgeht oder eine Adresse nochmal eingibt, ohne das ein Referrer produziert wird. Oder eine personal Firewall benutzt, die Referrer teilweise filtert.

Was dann richtig putzig ist, all die Zahlen werden auf den Markt geworfen, ohne das es klare Aussagen gibt. Klar, manchmal wird gesagt über welchen Dienst man die Zahlen ermittelt hat - aber was sagt das aus? Kann man die Zahlen dort fälschen? Zählt der Betreiber korrekt (bei blogcounter.de kann man ja wohl auf banalste Weise die Zahlen verfälschen) und zählt er überhaupt sinnvoll? Ach watt, einfach Zahlen nehmen.

Gerne wird das Argument gebracht, das zwar die Zahlen nicht direkt als absolute Zahl über Zählergrenzen hinweg verglichen werden können, aber man kann ja Zahlen vom gleichen Zähler vergleichen - daraus gründen sich dann Firmen, die Geld damit verdienen, diese Kaffeesatztechnik an andere zu vermieten und damit die tollen übergreifenden Ranglisten zu realisieren. Bis dann jemand merkt, wie man die Zähler banal manipulieren kann ...

Richtig putzig wirds dann, wenn die Zahlen noch mit der Zeitachse in Deckung gebracht werden und daraus Sachen wie durchschnittliche Verweildauer und daraus dann wieder in Kombination mit der Seitengrösse ermittelt wird, wie viele Seiten gelesen und wie viele nur geklickt wurden (basierend auf der üblichen Lesegeschwindigkeit wird sowas tatsächlich von mancher Software "ausgewertet").

Fassen wir also mal zusammen: es gibt einen begrenzten Rahmen an Informationen auf denen man aufsetzen kann. Das sind Hits (also Abrufe vom Server), Hosts (also abrufende IP-Adressen) und übertragene Mengen (summiert die Bytes aus den Abrufen). Dazu noch Hilfsinformationen wie z.B. Referrer und unter Umständen Cookies. Alle Zahlen können manipuliert und verfälscht werden - und viele werden durch gängige Internet-Techniken auch tatsächlich verfälscht (häufigster Fall eben die cachenden Proxies).

Diese also eher unzuverlässigen Zahlen werden durch - teilweise nicht öffentliche - Algorithmen gejagt und daraus dann Mumbojumbo erzeugt, der dazu benutzt wird um zu zeigen was für ein cooler Frood man doch ist und wo das Handtuch hängt.

Und bei so einem Mumpitz soll ich mitmachen?

PS: der Autor dieses Postings hatte laut awstats-Auswertung im letzten Monat 20172 Besucher, 39213 Besuche, 112034 Seitenabrufe in 224402 Zugriffen und schob dafür 3.9 Gigabyte über die Leitung - was, wie oben festgestellt, komplett irrelevant und nichts aussagend ist, ausser das er sich vielleicht sinnvollere Hobbies suchen sollte

Vatikan weiter auf Anti-Gay-Kurs

Keine Kirche!

War ja irgendwann zu erwarten. Wo doch alle so stolz waren, das wir jetzt Papst sind. Nunja, jetzt kommt vom Popanz die neue Vatikan-Richtlinie gegen Homosexuelle im Priesteramt - und damit die nächste Runde in der Hetze gegen Homosexuelle:

Homosexuelle müssen demnach mindestens in den zurückliegenden drei Jahren keusch gelebt haben, wenn sie die Priesterweihe erlangen wollen. Wer sich öffentlich dazu bekennt, homosexuell zu sein, Schwulentreffen oder Lobbygruppen besucht, oder eine "wenn auch nur geistige, unüberwindbare Anziehung hin zur gleichgeschlechtlichen Kultur" verspürt, darf nicht Priester werden.

Ich bin ja immer wieder erstaunt wie verlogen ein Laden sein kann, der sich selber ständig so Ausdrücke wie Menschlichkeit und Güte auf die Fahnen schreibt. Nunj, katholische Kirche halt - mental nie aus der Zeit der Hexenverbrennungen rausgekommen ...

Wenn google schon einen neuen Feedreader baut ...

... wieso unterstützt der dann keine Feed Autodiscovery?