Webprojekt: Freiraum – Nächste Kalendertermine anzeigen

Screenshot von Freiraum: Zeigt die nächsten Termine eines Kalenders an

Um die spontane Nutzung der Gemeinschaftsräume unserer Siedlung zu erleichtern, haben wir in der IT-Gruppe ein minimalistisches Tool entwickelt: Freiraum.

Es zeigt den aktuellen Status (Besetzt/Demnächst besetzt/Frei) eines Raumes an, indem es den öffentlichen iCal-Feed des privaten Reservationssystemes ausliest und die nächsten Termine anzeigt.

Den Quellcode gibt es auf GitHub: github.com/oberfeld/freiraum

Aus Datensparsamkeit ist absichtlich kein Link zum effektiven Reservationssystem oder zu einzelnen Räumen vorhanden.

MIT-lizenziert. Simples PHP 8. Keine Authentifizierung, keine Datenbank, keine Benutzerverwaltung, kein Errorhandling. Erster Versuch mit Tailwind CSS.

Milchbuch vs. Postfinance E-Cockpit

Indexseite Milchbu.ch

Seit ein paar Jahren trage ich die Idee für eine Webapplikation im persönlichen Finanzbereich mit mir herum. 2010 registrierte ich dafür die Domänen milchbu.ch und milchbuch.ch.

Der Motivation ist einfach: Ich habe keine Ahnung, wofür ich mein Geld genau ausgebe. Meine Ausgaben von Hand mit einer App zu erfassen ist mir zu mühsam, nie ziehe ich das länger als eine halbe Stunde konsequent durch. Und die Postfinance erledigt dank meinem relativ konsequenten Einsatz der Postcard diese Arbeit bereits für mich. Zusätzlich lasse ich mir bereits seit 2004 meine Kontauszüge im XML-Format liefern, immer mit dem Gedanken irgendwann mal etwas aus den Daten zu machen.

Als ich dann noch A. dabei erwischte, ihre ausgedruckten Kontoauszüge mit Farbstiften zu bearbeiten, wurde mir klar, dass das Milchbuch grosses Potential hätte. Ich würde es programmieren, tausende von Benutzern haben, Premiumfunktionen verkaufen, Ruhm und Geld ernten und es schlussendlich in einem etwas unsauberen Deal für einen Millionenbetrag an eine Bank verscherbeln.

Soweit der Plan.

Mit der Implementation haperte es noch etwas, ich hatte viele Notizen und Skizzen, aber zum Programmieren kam ich kaum.

Und dann lancierte die Postfinance im April 2012 das E-Cockpit und nahm mir die ganze Arbeit ab.

Die Funktionalität ist ziemlich dieselbe, wie ich sie mir vorgestellt habe: Statistiken, automatische Kategorisierung, Aufteilen von Bargeldbezügen, Trends über längere Zeiträume. Sogar die gleiche Graphenbibliothek hätte ich eingesetzt.

Fundamentaler Unterschied ist nur die Kategorisierung: Wo Milchbuch zu Beginn mühsam lernen hätte müssen, welches Konto zu welcher Sparte gehört (Coop verkauft Lebensmittel, Mobility gehört zur Mobilität, Kitag ist Unterhaltung…), kann die Postfinance auf interne Daten zurückgreifen und schaffte es, in meinem Fall über 90% der Transaktionen automatisch zu kategorisieren.

Einen weiteren Vorteil spielt die Postfinance nicht ganz aus: Die Kontoauszüge hätten im Milchbuch von Hand importiert werden müssen. Das E-Cockpit hingegen erhält die Transaktionen direkt geliefert, braucht aber komischerweise mehrere Tage dazu.

Dafür hätte das Milchbuch ein grösseres Potential gehabt: Nichts hätte mich davon abgehalten, auch andere Bankdaten als nur diejenigen der Postfinance zu importieren. Eine Premiumfunktion wäre die Verwaltung von mehreren Konten gewesen, eine andere die Möglichkeit, Vereinsfinanzen darüber zu erledigen.

Nun verabschiede ich mich von meiner Idee ohne grosse Trauer: Das E-Cockpit erfüllt meine persönlichen Ansprüche vollständig, mein Problem ist damit gelöst.

Und ganz umsonst war die Arbeit nicht: Zum einen wurde meine Idee validiert. Und zum anderen lernte ich einmal mehr die Lektion, dass Ideen wertlos sind. Nur die Ausführung zählt.

Wochenendprojekt eskaliert

Es regnet. Die Wohnung sieht akzeptabel aus. Und ich habe eine neue Idee für eine Webseite. Und das eskaliert dann folgendermassen:

  • Idee!
  • Hmm, wenn ich alles so machen will, dann könnte ich gleich mal Backbone.js ausprobieren.
  • Hmm, ist kompliziert. Egal, ich fange einfach mal an.
  • Hmm, eine neue Version von Eclipse PDT ist erschienen, ich installier erst mal.
  • Hmm, eine neue Version vom Framework ist erschienen, ich aktualisiere mal.
  • Hmm, ich habe noch nicht genug Erfahrung damit, um mein NoSQL-Modul für MySQL zu bauen, vielleicht fange ich mal mit einem einfacheren Projekt an.
  • Hmm, dafür könnte ich meine HTML-Tabellenbibliothek benutzen, wenn sie fertig wäre.
  • Hmm, zuerst mal eine Git-Einführung lesen, ich erinnere mich an gar nichts mehr.
  • Was denn, der Tag ist schon vorbei?

Webapplikation: Mobility Car Finder für iPhone

Erst kürzlich habe ich entdeckt dass mein heissgelieber Carsharingservice eine mobile Reservationsseite unter http://mobile.mobility.ch hat. Praktisch, dachte ich.

Noch praktischer wäre aber eine Applikation, welche mir die nächsten Standorte gleich selber raussucht. Schliesslich weiss das iPhone dank GPS jederzeit wo ich bin.

Nun, zwei, drei Stunden Gehacke später präsentiere ich stolz: Den Mobility Car Finder.

20090830_mobility_car_finder

Es ist keine Installation notwendig: Einfach mit Safari auf die Webseite http://m.existenz.ch/mcf/ surfen, die Abfrage nach der aktuellen Position bestätigen, und schon spuckt das Gerät die nächsten Standorte aus.

Einfach, simpel, immer aktuell.

(Nein, ob das Auto frei ist oder nicht, kriegt man nicht mit. Und ja, offenbar gibt’s schon eine App dafür…*)

Angewandte Technologien
Wen’s interessiert: Die Applikation ist klein: Eine statische HTML-Webseite aufgepeppt mit der JavaScript/CSS-Bibliothek iUI. Darüberhinaus wird das geolocation-Objekt von Safari Mobile verwendet um die aktuelle Position zu eruieren. Die Position wird an ein PHP-Skript weitergereicht welches das Mobility-Suchinterface benutzt um die Standorte im Umkreis um den Benutzer zu suchen. Das Skript verwandelt die XML-Daten in HTML welche iUI dann so wunderschön wieder darstellt, inkl. Links auf die Google Maps. Ich bin einmal mehr begeistert wie alles zusammenspielt.

Alles relativ einfach. Eine kritische Stelle gibt es aber: Ich habe noch nicht um Erlaubnis gefragt das Suchinterface benutzen zu dürfen. Mobility kann mir mein System damit einfach blockieren. Aber als Genossenschaftsmitglied finde ich meine Zugriffe legitim. Besonders belastet wird der Mobilityserver kaum, deren eigene Implementation auf ihrer Webseite produziert wesentlich mehr Anfragen.

* = Herzlichen Dank an Kollega R. der mir damit die Freude an meinem neuesten Projekt schon nach wenigen Minuten verdorben hat. Spielverderber.