23.6.2012

Mein Buch zum Download

Wie die Zeit vergeht… Testgetriebene Entwicklung mit JUnit und FIT ist nunmehr sieben Jahre alt. Ich habe damals versucht, die TDD-Techniken so zeitlos wie möglich zu beschreiben. Doch natürlich haben sich seitdem eine Reihe neuer Werkzeuge und Ideen hinzugesellt. Im Ruby-Umfeld beispielsweise sind BDD und rSpec mehr oder weniger die Norm. Open Source ohne Unit Tests ist selten, wenn nicht undenkbar geworden. Wie zu erwarten war, sind jedoch nicht alle unsere Ideen kleben geblieben. Aber ein paar schon. Vielleicht die wichtigsten.

Auch sieben Jahre später bin ich mit meinem Text immer noch überraschend einverstanden. Einzig wünschte ich mir, ich hätte den Kontext der Techniken im Buch damals besser herausgestellt. Test-Driven Development sind Best Practices. Best Practices existieren in einem wohl definierten Kontext. Der Untertitel "Wie Software änderbar bleibt" und insbesondere das letzte Buchkapitel "Änderbare Software" geben einen Hinweis, aber der meiner Meinung nach wichtigste Trade-off bleibt, langlebige Software zu entwickeln. In Open Source ist diese Voraussetzung stets gegeben. Im Startup dagegen kann der Kontext ein gänzlich anderer sein. Bei Rivva sind meine Tests zum Beispiel viel mehr risikogetrieben. Und natürlich hätte das Buch für eine andere Programmiersprache auch eine andere Gestalt angenommen. In Ruby entwickle ich fast ausschließlich REPL-getrieben.

Buchcover

Das Buch ist mittlerweile vergriffen und nicht mehr im Druck. Deshalb freue ich mich, dass der dpunkt.verlag mir jetzt sein Einverständnis gegeben hat, das Buch als kostenloses eBook veröffentlichen zu können. Mein besonderer Dank dafür gilt meiner Lektorin Christa Preisendanz.

Download: Testgetriebene Entwicklung mit JUnit & FIT (PDF)

Happy 100th Birthday, Mr. Alan Turing (1912-1954).

25.9.2008

Tonabnehmer #16: Frank Westphal - Getting Real

Endlich habe ich mich mal dazu bringen können, meinen webinale-Vortrag abzumixen. Die Aufnahmequalität war leider nur durchwachsen, so dass ich erstmals den Levelator ausprobieren konnte. Duftes Tool!

Getting Real ist der "Weg" der 37signals. Das frei erhältliche Buch beschreibt ihre Erfolgsstrategien, Geschäftsphilosophie und Designprinzipien. Die geplante zweite Auflage soll noch stärkeren Business-Fokus bekommen. Sehr spannend …

27.7.2008

Daemon

Buchcover

Ein legendärer Online-Spiele-Programmierer stirbt 34 Jahre jung an Hirnkrebs.

In einem Data Center läuft ein Daemon-Prozess unermüdlich über die aktuellen News-Schlagzeilen – nur auf das Signal wartend, seine Todesanzeige zu lesen …

Total genialer Plot – für Nerds empfohlen!

Leinad Zeraus: Daemon (Site)

(ursprüngliche Empfehlung von Jyri Engeström, via Ali Pasha)

7.7.2008

Gnip, bitte nur ein Ping

Gnip-Logo

Hierzulande viel zu wenig Beachtung gefunden hat in meinen Augen der Stapellauf von Gnip letzte Woche.

Selten kommt ein neuer Service daher, der das Remixen und Mæshen so stark vereinfacht und damit weitergehend demokratisieren wird. Letztes Jahr war es Yahoo! Pipes, 2008 könnte es Gnip werden. War das Motto der Pipes (and Filters) jedoch Mashups für den Rest von uns, werden die meisten Menschen Gnip nie zu Gesicht bekommen. Jedenfalls solange Gnip nur seinen Job erledigt. Denn Gnip will stromaufwärts notwendige moderne Infrastruktur 2.0 bereitstellen.

Was macht Gnip?

Gnip möchte als Nachrichtenbus agieren für Micro-Content aller Art aus allen möglichen Social-Media-Plattformen. Man möchte den Datenfluss zwischen diversen Anwendungen so einfach und portabel wie möglich gestalten und zwar für die Produzentenseite gleichermaßen wie für die anschließenden Konsumenten.

In anderen Worten: Gnip will uns ermächtigen, FriendFeed innerhalb von einem Nachmittag nachzuprogrammieren.

Warum das heutige Aggregationsmodell für Social Media nicht skaliert

Wer heute angebotene Dienste über Web-/REST-APIs oder RSS-/Atom-/JSON-Feeds remixen möchte (grundlegendes zum Thema Mashups), sieht sich folgendem Dilemma ausgesetzt:

  • Wir können Datenquellen entweder relativ häufig pollen, um von etwaigen Änderungen schnellstmöglich zu profitieren.
  • Oder uns und unserem Gegenüber eine riesige Menge redundanter Anfragen und damit enorme Bandbreite sparen, indem wir größere Latenzzeiten zwischen unseren Anfragen einhalten.

Der Kompromiss besteht zwischen wünschenswerter Aktualität und hoher Informationseffizienz. Ein Twitter-Status, dass ein paar Freunde gerade am Elbstrand Bier + Sonne tanken, ist beispielsweise nicht mehr von besonders hohem Wert, wenn wir die Nachricht zu spät erhalten. Die Gefahr im Gegenzug ist aber, den Anbieter durch eine zu hohe Polling-Frequenz Hast Du wat Neues für mich? … Hey, schon wat Neues? … Jetzt? – jetzt vielleicht wat Neues? zu überlasten, um dann wahrscheinlich gedrosselt oder womöglich sogar gesperrt zu werden. Beide Seiten verlieren! Daten wollen reisen, Daten wollen frei sein.

Die Crux ist also, die Polling-Frequenz der Änderungsrate auf der Gegenseite anzunähern: einerseits nichts zu verpassen, andererseits aber auch nicht zu drängeln.

Diese Problematik stellt sich bei News-Aggregatoren wie meinem Rivva genauso wie bei Lifestreaming-Diensten wie FriendFeed oder beim ganz normalen Abholen und Lesen der eigenen Feed-Abos. Doch das Problem wächst exponentiell … denn sowohl die Menge remixbarer Quellen als auch die Anzahl vermanschbarer Aktivitätsströme werden über die nächsten Jahre in wohl dramatischer Weise zunehmen.

In FriendFeed lassen sich heute beispielsweise nur 41 der populärsten Dienste einspeisen. Das sind nicht nur viel zu wenig Möglichkeiten, nein, die Sicht ist auch noch viel zu US-zentrisch und schon in einem Jahr wird es Hunderte weiterer relevanter Services geben. Wenn uns das Kreuzprodukt aus x Diensten * y Nutzer * z Updates pro Stunde hier keinen Strich durch die Rechnung machen würde, bräuchte es sowas wie Gnip nicht. Und mindestens einstündliche Updates sind für viele Anwendungen noch das absolute Minimum. Fürs massentaugliche Live-Web versagt dieses Modell ziemlich rasch.

Invertierung der Datenströme – von Pull zu Push

Gnip nun stellt sich als Mittelsmann zwischen die wertschaffenden Content-Plattformen und die davon wertschöpfenden Media-Aggregatoren. Zwei der Launch-Partner sind zum Beispiel Digg und Plaxo: Diggt jetzt jemand eine Story, soll diese Aktivität binnen 60 Sekunden bei Plaxo Pulse erscheinen.

Poll vs. Push

Möglich werden die Nahezu-Echtzeit-Updates, indem man dem Pub/Sub-Modell folgt: Gnip sammelt die Aktivitätsströme an zunächst zentral organisierter Stelle (später solls mal dezentral werden) und verteilt sie sofort an seine Liste von Empfängern.

Die Notifikation kann produzenten- wie konsumentenseitig via Pull oder Push erfolgen. Insbesondere im Push-Mechanismus sehe ich die ermöglichende Schlüsseltechnologie für diverse neue Anwendungen, vor allem aber auch für kleinere Dienste wie Rivva, die sich eine kostspieligere Infrastruktur auch gar nicht leisten könnten.

Bridging zwischen verschiedenen Protokollen und Formaten

Gut gefällt mir dabei die Protokollbrücke: wie man als Quasi-Babelfisch zwischen verschiedenen Ein-/Ausgabe-Formaten und -Protokollen übersetzt: Zur Eingabe dienen XMPP, Atom, RSS und REST. Zur Ausgabe kommt derzeit nur Atom via REST zum Tragen, der Rest soll zu einem späteren Zeitpunkt folgen.

Protokollbrücke

Getreu dem Motto Release Early hat man sich zum Start auf die reine Benachrichtigung zwischen Punkt A und Punkt B konzentriert, der tatsächliche Datenaustausch soll später kommen.

Hohe Datenportabilität durch standardisierte Metadaten

Weitere Karma-Punkte sammelt Gnip für die anbieterübergreifende Standardisierung der verschiedenen Semantiken in den Activity Streams. Hier war man so gut beraten, Chris Messina und seine Arbeit im DiSo-Projekt zu integrieren. Die Gnip API beschreibt, wie unterschiedliche Datenformate nach einer XSLT in einem normalisierten Activity XML konsumiert werden können.

Sehr schön, wie die Gnips auf Standards setzen, wo immer dies möglich war. Kein Mashup-Entwickler dieser Welt wirds vermissen, für jeden anzubindenden Dienst eine kleine Extrawurst programmieren zu müssen.

Summa Summarum

Alles in allem könnte Gnip vielleicht zu so zentraler Wichtigkeit gelangen wie der Push Notification Service fürs iPhone. Die Sterne stehen gut.

Um das Akamai für Web-Services zu werden, müssen sie natürlich noch unter Beweis stellen, dass sie auch hohe Lastspitzen mühelos überstehen. Look Ma, no SQL database zeugt von einem guten Omen.

Showstopper könnte allerdings die rechtliche und insbesondere politische Sachlage werden. APIs sind der neue Klebstoff. Wer sein API in die Hände eines Dritten gibt, tritt damit auch einen Großteil seiner Kontrolle darüber ab. Dass Twitter diesen Schritt machen wird, glaube ich mal nicht.

Update: bin begeistert, Twitter spielt wider Erwarten doch Gnip Gnop

Update #2: Sebastian Keil, Marcel Weiß und ich haben Gnip auf Kanal 14 näher analysiert.

29.3.2008

Tonabnehmer #15: Jutta Eckstein, Johannes Link, Jens Coldewey, Henning Wolf -
7 Jahre Agiles Manifest

Jutta EcksteinJohannes LinkJens ColdeweyHenning Wolf

Im Februar 2001 war das Agile Manifest geboren. In dieser Roundtable-Diskussion machen wir eine Bestandsaufnahme, Reflektion, Analyse: Was haben sieben Jahre Agile Entwicklung gebracht?

Mit dabei: Jutta Eckstein (Blog, Profil), Johannes Link (Blog, Profil), Jens Coldewey (Blog, Profil), Henning Wolf (Blog, Profil)

17.3.2008

Tonabnehmer #14: Tammo Freese, Frank Westphal - Ruby on Rails 2.0

Im Januar/Februar haben Tammo und ich zwei Ruby-on-Rails-Vorträge in der lokalen ACM/GI-Gruppe gehalten. Unser Ziel war es, die Leichtigkeit vorzustellen, mit der wir dank Rails ab Stunde 1 wirklich Geschäftswert schaffen können. Dazu haben wir nach einer kurzen Vorstellung der Prinzipien von Ruby und Rails in einer guten Stunde live eine kleine, aber substanzielle Web-2.0-App entwickelt: mit Kommentaren, Atom-Feed, REST-API, Tags, Google Map, Widget und allem, was dazugehört.

Tonabnehmer Video: Examplr Sample App

Sie können den Screencast als iPod/iPhone-Video (H.264-Codec) herunterladen und mit beispielsweise iTunes oder QuickTime ansehen. Aufgrund des hohen Demo-Anteils erscheint diese Episode nicht als Audio-Podcast.

Verwendete Plugins

Buchempfehlungen

Creative Commons License
16.2.2008

Tonabnehmer #13: Dierk König -
Groovy und Grails

Dierk König

Dieses Interview hatten wir schon so lang vor, daher freut es mich umso mehr: Dierk König (Firma, Profil) spricht über Groovy, dynamische Sprachen auf der Java-Plattform allgemein und das Grails-Framework.

Von Herzen empfohlen sei hiermit auch sein Buch Groovy in Action (deutsche Ausgabe).

Dierk: Die Sprache muss passend sein zu dem, was man tut. In den typischen Java-Programmen gibt es überall Teile, wo man gerne ein bisschen dynamischer sein möchte … wenn man mal weiß, was es überhaupt heißt, dynamisch zu sein. Sonst, wenn man's gar nicht weiß und nie gesehen hat, dann entwickelt man auch den Bedarf nicht. Wenn man ihn kennt und die typischen Einsatzpatterns für dynamische Sprachen auf der Virtual Machine, dann sieht man's natürlich überall.

Obwohl man eine Grails-Applikation typischerweise in Groovy schreibt (man kann so viel man will auch in Java schreiben), hat der Stack, auf dem man arbeitet, einen relativ großen Teil von unten hoch Java: Java Enterprise Edition, mit allem, was dazu gehört. Dann darüber: Spring. Dann darüber: Hibernate. Damit hat man schon mal einen relativ hohen Kuchen. Und dann: Grails, zum großen Teil in Java geschrieben, muss man sich als obersten Layer vorstellen, der auch noch fast in Java ist. Und dann: Der eigentliche Applikationscode – ist ja nur noch unglaublich wenig, wenn man das vergleicht – ist nur noch so wie ein Zuckerguss, ganz oben auf dem Kuchen drauf. Und trotzdem hat man das Gefühl, dass man sehr leicht und dynamisch arbeitet. Man hat sozusagen die volle Power von Java ausgenutzt.

7.1.2008

Zu Gast beim
Elektrischen Reporter

Die Alpha-Geeks sind die ersten, die die Informationsflut spüren und nach Mechanismen suchen, ihr zu entkommen, meinte ich neulich vor Mario Sixtus laufenden Kameras. Heute ist die Ausgabe erschienen:

Hervorheben möchte ich auch die Folgen mit Peter Glaser, (Teil 2), Lawrence Lessig, (Teil 2), Bruce Sterling und – absolutes Prachtstück – Cory Doctorow.

6.1.2008

Pair-Vortraging:
Ruby on Rails 2.0

Wegen des großen Interesses wiederholen wir den Vortrag am 28.2.

Vor ziemlich genau 7 Jahren haben Tammo + ich in der lokalen ACM/GI-Gruppe unseren allerersten XP-Vortrag gehalten, der irgendwie zu einer kleinen Legende wurde. Am 31. sind wir erneut zu Gast beim HBT und wollen noch mal versuchen, an unseren damaligen Erfolg anzuknüpfen – mit dem aktuellen Thema: Ruby on Rails 2.0

Wir denken, es könnte wieder richtig gut werden … An/kündig/meld/ung

1.1.2008

Worldchanging

Buchcover

Seit über einem Jahr schwärme ich all meinen Freunden von diesem Buch vor … und jetzt schwärme ich hier noch mal.

Über Worldchanging sagt Bruce Sterling, es sei die wichtigste Website auf dem Planeten. Über das Buch schreibt er im Vorwort, es sei eine Suchmaschine – 600 Seiten gefüllt mit innovativen Ideen für eine strahlende, grüne Zukunft.

Sehr angenehm am Buch finde ich: Es jammert nicht, es bietet Lösungen. Alex Steffen (der Herausgeber) erklärt vorneweg einmal anhand des ökologischen Fussabdrucks, dass die Erde fünfmal so groß sein müsste, wenn alle 6 Mrd. Menschen so leben würden wie der durchschnittliche Nordamerikaner (der ökologische Fussabdruck von uns Europäern sieht nicht viel besser aus: wir bräuchten drei Planeten, um unseren Lebensstil aufrechtzuerhalten). Danach folgen geschätzte 100 Kapitel aus der Feder von Steffen und seinen 45 Mitautoren. Die Themen reichen wirklich von bis. Gleichzeitig ist klar, dass wir weitaus bessere Lösungen benötigen. Buch und Website sind nur eine Startlinie – ein paar zur Inspiration hingeworfene Puzzlestücke, damit jeder von uns auf eigene Ideen kommt.

Einen guten Einstiegspunkt bieten auch die gestern veröffentlichten Best-of-2007-Artikel. Im zimtBlog findet sich eine umfassende Linksammlung.

29.12.2007

Tonabnehmer #12: Christian Setzwein - Turnaround Management

Christian Setzwein

Zum Jahresabschluss habe ich ein Gespräch mit Christian Setzwein (Firma, Blog, Profil) geführt – über seine Erfahrungen im Turnaround-Management von IT-Projekten (Buch), über das Managen von Atmosphären in Projekten u.v.m.

Die Episode kann als MP3 heruntergeladen oder auch direkt als Podcast abonniert werden.

Christian: Turnaround Management ist eigentlich ein Begriff, der aus der BWL kommt und bei dem es im Grunde um die Sanierung von großen Unternehmen geht. Meistens handelt es sich dabei um Liquiditätskrisen oder Absatzkrisen – irgendwelche Probleme, die diese Unternehmen haben und die das Unternehmen in seinem Bestand gefährden.

Wir haben nun diesen Begriff für große Projekte genommen, die in Schieflage und in Krisen sind, und bieten eine Dienstleistung an, die diese Projekte wieder in vernünftiges Fahrwasser bringt – also Krisenprojekte wieder in einen Zustand zu versetzen, dass das Projekt entweder vernünftig abgeschlossen werden kann oder vernünftig weitergeführt werden kann von dem Unternehmen selbst.