Beim Programmieren verwendet man ja immer mal wieder ein Code-Snippet aus dem Internet, von einem Kollegen oder aus dem Samplecode des Herstellers. Dann noch ein paar Controls, Datasets und Formulare aus dem Designer und fertig ist die schlanke Anwendung. Schoene Programmierwelt, aber leider nicht die Realitaet. Denn richtiger produktiver Code ist fett. Die kleinen Codeschnipselchen, die mit wenigen Zeilen unheimlich tolle Sachen tun, gehen unter zwischen Massen an Code, die eine richtige Anwendung braucht.
Fangen wir an mit der Fehlerbehandlung. Regel: Alles was schiefgehen kann, geht mal schief, denn wenn 1000 User eine Funktion 1 Mio. mal verwenden, dann schaffen Sie die seltsamsten Bedingungen. Das heisst, dass jeder Pfad im Programm einmal abgelaufen wird und jede Funktion die schiefgehen kann auch mal schiefgeht. Benutzt man eine Funktion, die schiefgehen kann, dann muss man einen potentiellen Fehler fangen und bearbeiten. So werden aus einer Zeile leicht 5, denn der Fehler wird geloggt, und dann recovert, und zwar nicht in einem catch fuer 10 Statements, sondern einzeln, denn jedes Statement produziert characteristische Fehler.
Spezialfaelle: Das kennt jede Programmiererin. Ein Formular zeigt Werte aus der Datenbank an. Praktisch eine 1-zu-1 Abbildung. Aber der Kunde will, dass wenn im Feld A eine 5 steht, dann soll das Feld B eine Combobox sein mit den Werten aus Tabelle C statt dem einen Wert aus Tabelle D. Und schon kommt das dicke if-Statement mit einer Seite Spezialcode. Die Welt ist eben nicht rechtwinklig.
Toleranz: Benutzer machen tatsaechlich Fehler. Manchmal dumme Fehler, manchmal verhalten sie sich einfach nur anders, als die Programmiererin sich das gedacht hat. Die Software ist natuerlich so tolerant alle Eingaben zu pruefen, denn wenn der Benutzer sich seine Daten selbst kaputt macht, dann findet er ja trotzdem das Programm bloed und nicht sich selbst und das wollen wir nicht. Dann sind da noch die Anpassungen fuer fehlerhafte Systemsoftware/Libraries oder andere Programme. Andere Programme sind nicht besser, als User. Sie machen Fehler und trotzdem sollte unser Programm weiterlaufen. Also: tolerant sein.
Programmierhilfen: Testcode, Testfeatures, Debugcode, Live-Konfiguration, Remoteinspection, vielleicht ein kleiner HTTP Server mit HTML Interface als Statusanzeige, Laufzeitparameter online aendern? Automatische Ueberwachung und Fehlervermeidung: immer wieder pruefen, wie lange die Threads schon laufen, wie voll die Queues sind, ob etwas zu fixen ist. Datenbankschema erzeugen, falls das Programm gestartet wird ohne die Datenbank einzurichten. Das faellt schon fast wieder in die Rubrik Toleranz.
usw...
Das alles will eine richtige Applikation haben. Deshalb: keine Angst vor viel Code. Richtiger Code ist fett, weil er viel kann.
_happy_coding_
27. April 2005
Richtige Software is fett
Labels: Code, Coding Rule
17. April 2005
Designing a Distributed Virtual Presence System
AMCIS 2005 - Americas Conference on Information Systems, vom 11.bis 14. August in Omaha, Nebraska (USA) statt. Vortrag "Designing a Distributed Virtual Presence System".
Abstract:
The article describes a research project on virtual presence, which strives to populate the Web. The Web is extended by a new layer that shows users on Web pages while they are present at virtual locations. The document first describes the requirements for a large scale distributed system that fits to the Web. The requirements lead to design decisions which build upon a publicly available messaging infrastructure. The paper presents a feature rich implementation and describes our experience with real users. It finally shows what virtual presence means for virtual communities.
Labels: Veröffentlichung, Virtuelle Präsenz
5. April 2005
Endlich
Kommentiert ein Fussballer, bevor er ein Tor schiesst? Nein, er schiesst das Tor und laesst andere kommentieren. Warum soll ich Code kommentieren? Endlich kann man andere kommentiern lassen in meinem persoenlichen Stil: der Commentator
Ausserdem noch: Der Buerostuhl fuer die Xtreme XP Programmierer.
_happy_coding_
22. März 2005
Virtueller Raum
Letztes Wochenende hab ich eine neue Form von Buddyliste entdeckt. Man kennt ja ICQ, MSN Messenger usw. Aber ich verwende Teamspeak. Teamspeak ist meine Buddyliste mit Sound. Teamspeak ist eigentlich ein IP-Telefonsystem fuer Gruppen in Computerspielen. Vor allem in Shootern (Counterstrike, Battlefield) koordinieren sich Leute mit Teamspeak. Wie funktioniert das? OK, Programm laeuft, es loggt sich am Teamspeak Server ein. Ich spreche was. Wird komprimiert, zum Server geschickt. Andere sprechen auch. Der Server mischt alles zusammen und schickt die Summe wieder zurueck. Alle hoeren, was alle sagen. Ganz einfach. Im Programmfenster sieht man, wer gerade online ist. Das ist meine Buddyliste. Aber nicht so lahm, wie ICQ, sondern live. Ich schalte Computer an, Teamspeak loggt sich automatisch ein und ich fange an zu sprechen. Meine Freunde hoeren mich. Ich hoere sie. Es ist wie wenn wir alle in einem Raum sitzen. Man laesst es einfach nebenher laufen und sagt was, wenn man was zu sagen hat. Always present, always on.
Sowas brauchen wir fuer LLuna auch. Auf eine Webseite gehen und einfach sprechen. Die, die auf der gleichen Seite sind hoeren es. Virtual Presence at its best.
_happy_coding_
9. März 2005
Understand what you are doing
Bluehands bildet aus. Wir haben BA Studenten und Praktikanten. Wer bei uns arbeitet, lernt viel. Wir bringen niemandem das Programmieren bei und schon gar nicht den Spass am Programmieren. Was man bei uns lernt sind Technik und Methodik. Wir zeigen wie man richtig programmiert. Wir nehmen uns dafuer viel Zeit, denn wir haben einen Qualitätsanspruch. Wer bei bluehands gelernt hat, versteht sein Handwerk und kann solide Programmieren. Wir versuchen gute Hobbyprogrammierer zu Profis zu machen.
Eine der wichtigsten Lektionen ist dabei, dass Programmieren kein Gluecksspiel ist. Programmieren is bewusste, kontrollierte, zuverlaessige Konstruktion. Die Programmiererin MUSS verstehen was sie tut. Sie muss jede Zeile begruenden koennen. Code, der nicht mehr gebraucht wird, fliegt raus. Wer Code stehen laesst nur weil es momentan so funktioniert, ohne zu wissen warum und welche Teile wirklich wichtig sind, versteht nicht, was er tut. Das ist ein schlechtes Zeichen, denn auch ueberfluessiger Code tut etwas, und zwar genau dann wenn man nicht damit rechnet, weil man ihn ja nicht verstanden hat. Unverstandener Code ist heimtueckisch. Er springt einen von hinten an, wenn man ihm den Ruecken zudreht; besonders gerne nach dem Deployment der Software beim Kunden.
Deshalb: keine Macht dem unverstandenen Code. Understand what you are doing. Always!
_happy_coding_
Labels: Agile Development, Code, Coding Rule
2. März 2005
FOSDEM 2005
Richard Stallmann
Letztes Wochenende war "Free and Open Source Developers' Europe Meeting" in Bressel. Wenn man je mal tausende Geeks und Nerds sehen will, dann ist das ein guter Termin fuer Europaeer. Viele, viele seltsame Gestalten reden ueber seltsame Dinge. Bei allem Erstaunen muss man sich aber bewusst machen, dass diese Leute die Sachen programmieren, die wir alle benutzen (von MS Windows mal abgesehen). Schonmal von Linux gehoert? FreeBSD? KDE? Jabber? Alles Programme, die von Millionen benutzt werden, direkt oder indirekt. Und trotzdem findet die Konferenz auf einem Unigelaende statt ohne Hochglanz. Die Einrichtungen sind genauso unrasiert, wie die Teilnehmer. Das bestaerkt wieder mal meine These, dass hinter jeder Innovation, hinter jedem Gadget, das die Massen im Alltag verwenden, ein Technofreak sitzt, der das Ding zum Laufen gebracht hat, ohne den Ruhm zu ernten. Den Ruhm und die Hochglanzkonferenzen bekommen die Vertriebler und die Anwender. Wir brauchen das nicht. Wir sind schon froh, dass jemand unsere Werke benutzt. Das bringt uns zum Copyright. Richard Stallmann (GNU) ist traditionell einer der Hauptredner der Veranstaltung. Er propagiert einen 10-jahres Copyright Schutz fuer viele Werke, aber absolute Freiheit ohne zeitlichen Schutz fuer funktionale Werke inclusive Software. Die Vorstellung sieht so aus: ein typischer Linux-Admin mit Rauschebart und laaangen Haaren steht in Struempfen auf der Buehne eines Hoersaals und filosofiert ohne Folien. Alle finden das OK. Content ist King.
8. Februar 2005
Ich will User
Ich habe ein tolles Stueck Software programmiert. Und praktisch it es auch noch. Das finde nicht nur ich sondern hunderte von Testern. Wenn 80% aller zufaelligen Testuser die Software toll finden, kann das nicht so falsch sein. Komischerweise gibt es aber nur wenige richtige User. Sogar die begeisterten Testuser wundern sich, dass es nur wenige User gibt. Eigentlich sollte man meinen, dass es sich per Mund-zu-Mund Propaganda rumspricht und schnell viele User bekommt. So ist es aber nicht. Nur ab und zu kommt jemand zufaellig auf der Homepage vorbei, macht den Download, installiert, probiert und findet es gut. Und dann ... nichts weiter. Keine Mund-zu-Mund Propaganda, keine Massen von Usern. Es geht natuerlich um LLuna. Was ist falsch?
Ideen bitte an wolf@bluehands.de.
Trotzdem: ich gebe nicht auf. Moralische Unterstuetzung bitte an wolf@bluehands.de.
_happy_coding_
Labels: Virtuelle Präsenz, Zahlentheorie, Zeitgeist