Hofstadter, Django, AIR

Zum Wochenanfang mal eine Gesetzmäßigkeit, die wohl jeder ITler aus der Praxis kennt. Hofstadter's Law:

It always takes longer than you expect, even when you take into account Hofstadter's law.

Wenn irgendetwas dieses Gesetz widerlegen kann, dann wohl das Django-Framework.

Ein paar Notizen zu meinem altuellen Lieblingsthema Django:

Digg-Style Pagination in Django: Die Integration dieses Code-Snipsels in die neue Planet RCS Seite hat wirklich nur Minuten gedauert, der einzige Aufwand war das Anpassen des CSS Layouts und ein paar sehr kleine Änderungen im Code des Paginators selbst. Gute Arbeit Ryan!

Generic Views sind der Weg zu sauberem Code und halten die Anzahl der Quellcode-Zeilen klein, was zu besserer Pflegbarkeit und weniger Fehlern führt. Ich habe vor kurzem eine Bildergalerie mit Generic Views programmiert, quasi 0 Zeilen Quellcode, nur Templates. Zwei Modelle, Alben und Bilder. Die save()-Methode des Albums ist überschrieben und legt beim speichern die Objekte für die Bilder automatisch an. (Die Anforderung war, dass die Bilder per FTP in einen Ordner hochgeladen werden, im Album-Modell wird nur der Pfad zum Ordner angegeben.)

Mein JavaScript Toolkit der Wahl ist ja die Yahoo! User Interface Library (YUI) und deshalb integriere ich grade Juliens YUI Image-Cropper in ein Django Projekt. Der Komfort für den User bei Hochladen eines Profilfotos dürfte dadurch erhöht werden und ich hab weniger schwierigkeiten Fotos in einem einheitlichen Format zu bekommen.

Zum Schluß noch ein Wort über Adobe AIR. Eine Cross-Platform (Windows und Mac OS X, Linux in Arbeit) Laufzeitumgebung um Internettechnologien auf den Desktop zu bringen. Als Basis dient die WebKit Technologie, ursprünglich aus dem KDE Projekt, durch den Einsatz von Apple als Grundlage für den Safari-Browser aber auch außerhalb der OpenSource Welt richtig bekannt geworden. Gekoppelt mit Flash und JavaScript kann man mit AIR Desktopanwendungen bauen, welche eigentlich komplett auf Web-Technologien basieren und dabei trotzdem Dinge wie Drag and Drop bieten. Ich habe am Freitag meine erste AIR Anwendung gebaut in dem ich einfach ein paar Zeilen schon vorhandenen JavaScript Code, die YUI Bibliothek und ein CSS Stylesheet in einen Ordner gepackt habe und eine passende XML Datei angelegt habe. Schon war ein "Widget" welches ich für eine Webseite geschrieben habe als AIR Anwendung für Mac OS X und Windows fertig - fast etwas zu einfach. Ich werde definitiv noch mehr mit AIR rumprobieren, u.a. überlege ich grade die Endorphinum Sync Anwendung, die bisher nur als Proof-of-Concept in AppleScript existiert und damit nicht Cross-Platform ist, auf AIR zu portieren und endlich in ein releasefähiges Stadium zu bringen.