Website Relaunch 2009

Ziemlich lange hatte ich schon das Bedürfnis meine eigene Webseite endlich zu erneuern. Seit April 2005 schreibe ich meinen Blog und von Beginn an habe ich immer das Kubrick-Template benutzt. Die meiste Zeit über wurde der Blog mit Serendipity betrieben und der Rest der Seite bestand aus ein paar statischen HTML-Seiten.

Schon im Dezember 2007 habe ich gebloggt, dass ich meinen Blog gerne auf Django umstellen würde, hatte aber irgendwie immer zu viel zu tun, so dass bis auf einige Ansätze nie etwas Fertiges draus geworden ist.

Technik

Nachdem ich also ein Jahr lang nicht wirklich vorangekommen bin, habe ich mich im Dezember letzten Jahres noch einmal dran gemacht und den Grundstein für meine neue Seite auf Django-Basis gelegt. Der erste Prototyp war schnell fertig, aber was aufgehalten hat war die Konvertierung der Inhalte. Über die Jahre hinweg habe ich meine Blog-Einträge in den unterschiedlichsten Markups abgespeichert - von bbcode bis HTML ist alles dabei - und für die neue Seite habe ich mich entschieden reStructuredText als grundlegendes Format zu benutzen.

ReStructuredText ist der Quasi-Standard für Dokumentationen in der Python-Welt. Das Text-Format ist gut lesbar und die Verarbeitung ist durch eigene Direktiven anpassbar. Auch das erzeugte HTML kann man durch einen eigenen Writer beeinflussen.

Admin View

Mit einem JavaScript Editor für reST geht auch das Schreiben von Blog-Einträgen relativ leicht von der Hand. Inklusive Integration mit einem Medienpool vermisse ich wirklich keinen Komfort.

Es sollte ein leserliches Plain-Text format sein, da die Webseite neben der normalen HTML-Ausgabe auch noch eine Text-Ansicht, eine JSON-Version und eine PDF-Ansicht für so gut wie jede Seite bereitstellt. Im Moment ist zwar nur die HTML-Ansicht öffentlich zugänglich, aber die alternativen Versionen sind schon vollständig implementiert.

RSS-Feeds gibt es nicht nur für die Blog-Einträge und Kommentare, sondern wie bisher auch für jedes verwendete Tag einen Feed. Neu dazugekommen sind Kommentar-Feeds für jeden einzelnen Blog-Eintrag und Tag-Feeds für die Schnittmenge und die Vereinigungsmenge verschiedener Tags.

Das Blog-Archiv kann auf zwei Arten navigiert werden, entweder fortlaufend oder datumsbasiert. Das datumsbasierte Archiv habe ich von der Struktur her dem Archiv meines bisherigen Serendipity-Blogs nachempfunden, vielleicht werde ich es in nächster Zeit noch einmal überarbeiten. Das fortlaufende Archiv benutzt Djangos Paginator, also nichts besonderes, bis auf die Tatsache, dass die Seiten bei mir nicht mit Seite 1 anfangen und dann aufsteigen, sondern rückwärts nummeriert sind. Der Sinn dabei ist, dass ein Beitrag der sich jetzt auf Seite 25 (z.B.) in meinem Archiv befindet, dort auch in 2 Jahren noch zu finden sein wird. Würde ich die Nummerierung bei 1 beginnen würde sich die Position eines Artikels im Archiv mit jedem neu veröffentlichtem Artikel ändern.

Design

Natürlich hatte ich keine Lust das neue Django-Backend mit dem alten Design online zu stellen, also habe ich mich dran gesetzt und ein neues Layout erstellt. Visuell habe ich mich ein wenig vom aktuellen minimalistischen Trend inspirieren lassen, habe dann aber doch nich komplett auf eine gewohnte Navigation verzichtet. Da ich selbstständig tätig bin dient die Webseite nicht nur als Blog, sondern auch als Geschäftsauftritt sozusagen, deshalb wollte ich nicht zu viel weglassen.

Einige Texte sind noch nicht wirklich schön und so einiges an Inhalten fehlt sicherlich auch noch, aber ganz im Sinne der agilen Entwicklung - release early - release often - wollte ich die Seite nun erstmal online stellen und den Rest später erledigen.

Die Webseite ist bewusst relativ schlicht gehalten damit sich der Besucher besser auf die Inhalte konzentrieren kann, ich finde nichts schlimmer als Webseiten, auf denen man vor lauter Werbung oder anderer Ablenkung, den Inhalt gar nicht findet.

HTML und CSS sind handgeschrieben und sollten in allen gängigen Browsern funktionieren. Sogar der ie:mac 5.2 wird von mir offiziell unterstützt. Auch wenn ich den ie6 noch unterstütze bekommen Besucher mit ie6 trotzdem im Footer der Seite einen Hinweis angezeigt, dass Sie doch bitte updaten mögen, vielleicht kann ich damit meinen Teil zum Tod des ie6 beitragen.

Was nun?

Einen 20 minütigen Screencast darüber zu machen, wie man einen Blog mit Django implementiert ist sicher möglich, allerdings gilt auch hier die 80/20 Regel: 80% der Arbeit benötigen nur 20% der Zeit, oder anders gesagt: es gibt einen ganzen Haufen Kleinkram, den man beachten muss, bevor man eine Seite so weit fertig hat, dass man Sie auf die Menschheit loslassen kann. Redirects für alte URL-Schemata, eine XML-Sitemap, RSS-Feeds, E-Mail-Benachrichtung bei neuen Kommentaren (contrib.comments ist eh ein Thema für einen eigenen Blog-Eintrag), Statistiken über die Feed-Subscriber (auch ohne Feedburner), Trackbacks und Pingbacks, Versionierung der Inhalte, Import-Routinen für bestehende Inhalte, eine Suchfunktion und vernünftige HTTP-Header mit dem dazugehörigen Caching ...

Außerdem habe ich von Anfang an alles darauf ausgelegt, dass ich demnächst unter meiner zweiten Domain arnebrodowski.com alle englischen Inhalte präsentieren kann, die bisher ja mit den deutschen Inhalten vermischt sind.

Alles in Allem konnte ich zwar einige reuseable Apps für meine Seite verwenden, habe aber auch viel Code selbst geschrieben, da ich nichts passendes gefunden habe, was mir gefiel. Einiges davon passt vielleicht in einen zukünftigen Blog-Eintrag und anderes wird vielleicht mal als App veröffentlicht.

Ich bin auf jeden Fall froh, dass die Seite jetzt online ist und hoffe mal, dass ich nicht all zu viel verbockt habe :)


Kommentare