Blog

Gelegentliche Selbstgespräche über Softwareentwicklung und Poesie. OK, meistens über Softwareentwicklung. Aber es gibt auch eine Seite zu Poetry Slam.

Softwareentwicklung

  • Das ist ja mal eine interessante Idee, ein Tutorial zu schreiben. Statt aus Text besteht diese Einführung in Ruby aus Unit-Tests. Die führen einen durch die Sprache und zeigt einem die Randfälle. Hübsch gemacht!
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /usr/bin/ruby path_to_enlightenment.rb
    AboutRegularExpressions#test_parentheses_also_capture_matched_content_by_number has damaged your karma.

    The Master says:
      You have not yet reached enlightenment.
      Do not lose hope.

    The answers you seek...
      Expected "FILL ME IN" to equal "Gray"

    Please meditate on the following code:
      /home/christian/scripts/koans/about_regular_expressions.rb:125:in `test_parentheses_also_capture_matched_content_by_number'

    remember that silence is sometimes the best answer
    your path thus far [..................X_______________________________] 104/282

    Einziger Nachteil: Man kann Bekanntes nicht so einfach überspringen, sondern wird dazu gezwungen, alle Tests in der vorgegebenen Reihenfolge anzuarbeiten.

  • Travis ist ja ganz hübsch und vor allem integriert es sich superleicht und angenehm in github. Usability sehr gut. Nicht perfekt, aber doch sehr gut. Eine Sache ist aber echt etwas blöd: Angenommen man hat dependencies, die nicht in Maven Central, sondern auf Bintray bzw. JCenter liegen. Wie überredet man Travis, die Dependencies von dort zu holen? Die allwissende Müllhalde hat dazu irgendwie nicht wirklich was zu sagen. Nach einigem Suchen und ein bisschen rumprobieren, bin ich aber auf eine passende Lösung gekommen. Letztendlich muss man travis eine eigene settings.xml unterschieben.
  • Wenn wir grad beim github-Ökosystem sind: Versioneye ist auch sehr praktisch. Wenn man täglich über veraltete Dependencies informiert wird, updated man die so einfach nebenbei, bevor sich da ein Berg Arbeit auftürmt. Ich hab das z.B. mitten drin zwischen der Ausprobiererei mit Travis gemacht (siehe den oben verlinkten Diff).
  • Wie geht man eigentlich richtig mit Zeitstempeln um? Wo speichert man die Zeitzone? Dieser Stackoverflow-Beitrag war augenöffnend. Sehr lesenwert.
  • JavaScript ja ja schon irgendwie komisch. Man kann den Array-Konstruktor überschreiben und daraus ergeben sich Angriffsmöglichkeiten für „Json Hijacking“. Gruselig. Die Lösungsmöglichkeiten reichen von „gib niemals ein Json-Array direkt zurück, sondern pack immer ein Objekt drum herum“ bis zu „setze ein while(1); vor die REST-Response.

Linux

  • Wer Backups machen will (und wer will das nicht), dem sei rsnapshot wärmstens empfohlen. Inkrementelle Backups mit Hardlinks und allem, was man braucht. Schön.
  • Zwischenzeitlich hatte ich meine rsnapshot-Backups auf eine externe Platte gemacht, die vom Werk aus NTFS-partitioniert war. Resultat: Ein Backup dauert eine knappe Stunde. Bei genauerer Betrachtung stellt sich raus: Was lange dauert, ist das Erzeugen der Hardlinks. Das Übertragen der Änderungen per rsync geht fix. Kaum hatte ich auf ext4 formatiert, waren die Backups innerhalb von 3 Minuten erledigt. Entweder NTFS-3G oder NTFS selbst ist also abartig lahm, wenn es darum geht, Hardlinks zu erzeugen. Da muss wohl irgendwie jedes Bit einzeln durch das USB-Kabel zur CPU und wieder zurück. Jedenfalls ist mit ext4 jetzt wieder alles schön schnell.

Poetry Slam

„Gedicht der Woche“ vom großartigen Artem Zolotarov: Es geht ein Wort

Podcast der Woche

Manche Dinge sind unmöglich. Manche Dinge kann man unmöglich in einen Audio-Podcast verpacken — z.B. physikalische Experimente. Man hätte ja keine Möglichkeit, etwas zu zeigen. Noch nichtmal Schaubilder hätte man zur Verfügung, um etwas zu veranschaulichen. Die Idee ist so blöd — das versucht doch keiner. Langweiliger gehts doch nicht. Die beiden Physiker Nicolas Wöhrl und Reinhard Remfort machen aber genau das. Und wider allen Erwartungen ist das genau das Gegenteil von langweilig. Die beiden schaffen das Unmögliche: Alle zwei Wochen nehmen sie sich vier aktuelle wissenschaftliche Papers vor (Physik, Chemie, Biologie, Psychologie — egal) und erklären anschaulich was die Forscher rausgefunden haben. Dazu gibt es ein Live-Experiment.

Das Ganze nennt sich dann Methodisch Inkorrekt und ist einer meiner absoluten Lieblingspodasts. Die Folgen dauern i.d.R. so um die drei Stunden, aber das Ganze ist so sympathisch und kurzweilig verpackt, dass man das glatt durchhören könnte ohne zu ermüden. Ganz groß!

Softwareentwicklung, Linux

  • Ich hab mir in den letzten Tagen mal Arch Linux installiert. Und aktuell bin ich sehr zufrieden damit. Jetzt hab ich wieder ein hübsches, aufgeräumtes System. Auch pacman gefällt mir als Packagemanager sehr gut. Besser als dpkg/apt-get/synaptic. Einzig die Optionen sind ein wenig kryptisch benannt.
  • Die Beschäftigung mit Arch als Rolling-Release-Distribution hat mich zum Nachdenken über Dependencies gebracht. Prinzipiell haben Linux-Distros die selben Dependency-Probleme wie quasi jede andere Art von Software auch — nur eben nochmal größer skaliert. Ich muss da nochmal genauer drüber nachdenken. Vielleicht kann man davon was lernen über den Umgang mit Dependencies im Allgemeinen. Das muss ich aber nochmal sortieren.

Poetry Slam, Texte und Geschichten

  • Bis vor etwa zwei Jahren hatte ich, was meine Texte anbelangt, eine längere pathetische Phase. Zum Großteil bin ich davon weg, aber manchmal hab ich dann doch noch ein bisschen was davon. Dieser Text ist vielleicht ein Teil davon. Egal — er gefällt mir trotzdem:
  • Ich lese gerade Das Haus – House of Leaves von Mark Z. Danielewski. Horror ist eigentlich nicht mein Genre und ich weiß auch gar nicht, ob das eine Horrorgeschichte ist. Momentan bin ich erst auf Seite 63 von knapp 800 und lese da gerade eine seitenlange Abhandlung über das Echo. Noch weiß ich nicht genau, was ich von dem Buch halten soll. Auf der einen Seite reizt mich die mehrschichtige Erzählweise (das Buch ist eine kommentierte Abhandlung über einen — auch im Buch fiktiven — Dokumentarfilm. Auf der anderen Seite wirkt die Dramatik manchmal gewollt. Mal sehen, was ich in eins-, zweihundert Seiten denke.

Sonstiges

  • Ich höre recht viele Podcasts. Immer auf dem Weg zur Arbeit. Morgens und Abends, jeweils ne halbe Stunde — da kann man einiges hören. Und es gibt so tolle Podcasts. Ich will mir mal vornehmen, bei meinem Geschreibsel hier immer mal wieder einen Podcast vor zu stellen. Vielleicht bringt mich das auch dazu, wieder ein bisschen mehr zu schreiben. Das Blog hier wird ja von mir chronisch vernachlässigt.
  • Das selbe könnte ich eigentlich auch mit Slamtexten machen. Es gibt so dermaßen tolle Texte — viel besser als meine. Da könnte ich auch mal ein bisschen verlinken.
  • Ich hab also vor, in Zukunft einen Slamtexte der Woche und einen Podcast der Woche vor zu stellen. Was natürlich nicht bedeutet, dass ich es schaffen werde, wöchentlich zu posten. Aber Namen sind ja eh Schall und Rauch.

Es war einmal ein König, der hatte drei Kinder und ein kleines, einstmals schönes Schloss. Das Schloss war alt und heruntergekommen und es war dort kalt und feucht. Der König aber war alt und Waise. Weil sich nun der Erzähler bei diesem Satz vertippt hatte, das aber nicht zugeben wollte, bedeutete das, dass der besagte Monarch keine Eltern mehr hatte. Also dachte der graue König bei sich:

„Ich bin alt und hier ziehts wie Hechtsuppe. Wenn ich nicht will, dass auch meine Kinder bald zu Waisen werden, muss sich da was ändern!“

Da der König aber sehr beschäftigt war, rief er Alice, seine älteste Tochter zu sich und sagte:

„Alice, ich bin alt und hier ziehts wie Hechtsuppe. Mach dass das besser wird. Hier hast du fünf Goldmünzen.“ (mehr …)

Softwareentwicklung

  • Die Devoxx 2015 war ausgesprochen interessant. Wer sich die Vorträge im Nachhinein ansehen will, findet sie auf Youtube. Ich bin ja durchaus jemand, der versucht, am Ball zu bleiben. Ich lese Blogs, manchmal Bücher und schaue mir auch von Zeit zu Zeit den ein oder anderen Vortrag auf Youtube an. Trotzdem: So viel und so intensiv beschäftigt man sich sonst kaum mit technischen Neuerungen. Eine Konferenz schafft so viel Ideen wie sonst ein ganzes Jahr.
  • Ich bin letztens mal zu API-Dokumentation interviewt worden und hab mir dementsprechend Gedanken dazu gemacht. Rausgekommen ist eine Prinzipiensprache, die ich aber mal in nem separaten Blogpost vorstellen muss.
  • In diesem Jahr ist ne ganze Menge Zeit in design-types.net geflossen. Mein Ex-Chef und ich basteln da schon ne ganze Zeit lang dran rum. Kurz: Wir haben beobachtet, dass Entwickler sich unter anderem darin unterscheiden, wie sie Entwurfsentscheidungen treffen. Wir haben einen Fragebogen entwickelt, der hilft, sich selbst und andere dahingehend zu charakterisieren. Wir haben 16 unterschiedliche Typen, jeweils mit Namen, Beschreibung und nem schicken Wappen zum Ausdrucken. Einen Javamagazin-Artikel, diverse interne und externe Vorträge und über 1000 Teilnehmer später gehen uns die Ideen immer noch nicht aus. Sehr spannendes Thema.

Poetry Slam

  • Mein erstes Slam-Jahr in Zahlen: 16 Auftritte, rund 1500 Reisekilometer, 6 Texte in insgesamt 19 Versionen und irre viel Spaß
  • Vom letzten KOHI-Slam gibts Videomitschnitte. Das hab ich da abgeliefert:

    An dem Text hab ich immer wieder gearbeitet. Das ist jetzt Version 8 und langsam bin ich einigermaßen zufrieden damit. Zumindest mit dem Text. An der Performance kann ich noch ein bisschen feilen. Mit ein bisschen Üben krieg ich das dann hoffentlich auch noch besser hin. Naturtalent ist was anderes, aber zumindest weiß ich, wie man besser wird. Und so ein Mitschnitt ist zum besser werden schonmal ganz hilfreich.

  • Wer sich nicht die komplette Playlist angesehen hat: Doch das lohnt sich. Und Live noch viel mehr.

Anderes

  • 20 Witze, die nur intelligente Menschen verstehen. Ich bin offensichtlich so mittelintelligent. Die meisten verstehe ich irgendwie, aber nicht alle vollständig. Bei dem Sarte-Witz hab ich die dumpfe Ahnung, dass der lustiger ist, wenn man „Sein und Nichts“ auch gelesen hat. Einen Bezug zum Existenzialismus kann ich nicht herstellen. Den Pascal-Witz hab ich erst nach Erklärung verstanden. Vielleicht ist der auf Englisch einfacher zu verstehen. Die Referenz auf Gödel verstehe ich. Was Heisenberg im selben Witz verloren hat, blick ich aber nicht. Und bei Chomsky seh ich auch nicht mehr als einen leichten Anklang an Linguistik. Beim Odysseus-Witz hab ich lange überlegen müssen, bis mir die zugehörige Geschichte mit dem Kyklopen wieder eingefallen ist. Den Rest versteh ich, glaub ich. Und die meisten davon sind echt lustig.
  • Ich hab leider nie Pen-and-Paper-Rollenspiele gespielt. Auf Youtube kann man sich das aber zumindest mal angucken. Achtung, sehr lustig.
  • Die 9. Staffel Doctor Who ist zu Ende. Heaven Sent ist eine meiner Lieblingsfolgen geworden. Ich liebe es, wenn Steven Moffat mit der Zeit spielt. Ganz große Klasse. Und Maisie Williams als Ashildr bzw. Me ist auch mal wieder ein sehr interessanter (wenn auch mitunter zu wenig genutzter) Charakter. Mehr davon!

Vor einiger Zeit hat man mir mal gesagt, wenn es um Aufwandsschätzungen geht, schätze ich „konservativ“. Will heißen: Ich schätze übervorsichtig, also zu hoch. Ob das stimmt? Ich weiß es nicht. Ich hab die Kritik also erstmal angenommen und zum Anlass genommen, darüber mal genauer nachzudenken. Zumal ich mir das bei mir gut vorstellen kann. Darüber hinaus gab es in letzter Zeit noch ein paar andere Begebenheiten, die mich dazu bringen, mir mal Gedanken übers Schätzen zu machen. Das Nachdenken hat ne Zeit lang gedauert. Der Text liegt hier also schon ein paar Monate rum. Dafür ist er aber auch umso ausführlicher geworden.

Warum schätzen wir daneben?

Selbst unter perfekten Bedingungen werden wir niemals in der Lage sein, immer perfekte Voraussagen zu machen. Mal werden wir zu hoch schätzen und mal zu niedrig. Wir können annehmen, dass eine Schätzung normalverteilt ist. Je besser wir schätzen, desto enger, gestauchter wird die Kurve (niedrige Standardabweichung), je schlechter wir schätzen, desto breiter und gestreckter wird sie (hohe Standardabweichung). Neben der generellen Ungenauigkeit beim Schätzen kann es natürlich noch ein Bias geben: Ein Schätzer kann die Tendenz haben, zu hoch oder zu niedrig zu schätzen. Das kann ein psychologischer Effekt oder ein systematischer Fehler sein.

normal_distributions

Das nächste Problem ist, dass das mit der Normalverteilung an sich schon gelogen ist. Typischerweise gibt es mehr Möglichkeiten, dass etwas schief gehen kann, als Möglichkeiten, dass alles perfekt klappt. Oder anders gesagt: Es kann immer noch katastrophaler werden, aber besser als in Windeseile bugfrei fertig sein ist nunmal nicht möglich. Eine gewisse Zeit braucht man auch zum einfach so runtercoden. Pessimistische Schätzungen sind demnach wahrscheinlicher als optimistische. Tom DeMarco veranschlagt deshalb für Aufwandsschätzungen eine asymmetrische Verteilung:

Achtung: Auch, wenn die beiden Grafiken ähnlich aussehen, haben sie doch eine leicht andere Semantik: Die erste Grafik verdeutlicht die Wahrscheinlichkeitsverteilung einer Schätzung um einen unbekannten, aber festen Aufwandswert. Diese Grafik hier zeigt die Verteilung des tatsächlichen Aufwands selbst. Das nur der Vollständigkeit halber. Für die weitere Betrachtung spielen diese Details keine Rolle.

Weitere Fehler treten dadurch auf, dass manche Aufgaben und Anforderungen gar nicht geschätzt bzw. nicht berücksichtigt werden.

Unsere Probleme beim Schätzen sind also die folgenden: (mehr …)

Hänsel und Gretel haben ein spontanes Meeting im Wald. Äh… das heißt… sie haben sich verirrt. Diese Tatsache ist nicht weg zu diskutieren. Hier ist Wald, dort ist Wald. Hier ist der Wald dunkler als dort. Hier geht es bergauf, dort bergab. Hier ist es neblig, dort gibt es Dornenhecken. Überall ist es ein bisschen anders ungemütlich. Aber eins ist klar: Hier sollten die beiden nicht sein; wo auch immer „hier“ genau ist. Und deshalb haben sie beschlossen, spontan ein Meeting abzuhalten und über ihre Situation zu diskutieren.

Hänsel_und_Gretel

Man kann nun unterschiedliche Gründe suchen, wie die beiden in diese Lage gekommen sind. Die naheliegendste Ursache ist wohl die Stiefmutter. Es war ja schließlich ihre Idee, die Kinder in den Wald zu schicken. Und jeder weiß, dass Stiefmütter böse sind, also muss sie einfach schuld sein.

Vielleicht steckt da aber auch mehr dahinter. (mehr …)

Ich hab mal ein wenig umdekoriert. Das letzte Design hat fast sechs Jahre durchgehalten, jetzt ist mal was Neues fällig. Ich bin soweit ganz zufrieden. Nicht perfekt, aber sieht auch bei den Textwüsten, die ich normalerweise so produziere ganz ordentlich aus und ist ganz angenehm zum Lesen. Die Startseite ist leider noch nicht responsive, aber das will ich noch machen. Sagt Bescheid, wenn irgendwas nicht funktioniert oder schlecht lesbar ist.

Update: So, responsive sollte jetzt auch alles sein.

Softwareentwicklung

  • Ich hab in letzter Zeit intensiv über Aufwandsschätzungen nachgedacht. Daraus ist ein länglicher Blogartikel geworden, den ich leider immer noch nicht ganz fertig hab. Vielleicht mach ich da auch ne Artikelserie draus. Der Text ist schon echt lang geworden…
  • Zusammen mit meinem ehemaligen Chef bin ich gerade dabei, etwas zu basteln, das lose auf meiner Masterarbeit aufbaut und letztendlich auch wieder Kommunikation verbessern soll. Konkret geht es darum, dass Unterschiedliche Entwickler, bestimmte Argumente/Daumenregeln/Prinzipien unterschiedlich gewichten. Oder um das weniger hochtrabend aus zu drücken: Verschiedenen Leuten sind verschiedene Sachen wichtig. Soweit so trivial. Wie diese Erkenntnis nun Kommunikation verbessert und warum mein Ex-Chef und ich uns mit dieser Frage seit Monaten beschäftigen und warum wir dafür ne Website bauen, das muss ich wann anders erzählen.
  • In vier Wochen werde ich ne interne Schulung halten. Es wird um Clean Code, Refactoring, Architektur, Patterns und Prinzipien gehen. Also quasi das Zeug, was eh so n bisschen mein Steckenpferd ist. Ideen dazu hab ich viele. Wird bestimmt viel Spaß machen. Ich freu mich drauf!
  • Ob ich dieses Jahr auf die Delphi-Tage fahren soll? Ich bin unschlüssig. In den letzten Jahren war ich immer dabei (und das war immer ganz lustig). Mittlerweile hab ich mit Delphi aber quasi nichts mehr zu tun.Hm…

Anderes; Heute: Mein neues Hobby

  • ich schreibe schon seit anderthalb Ewigkeiten. Nicht furchtbar viel und schon gar nicht regelmäßig (wie man hier im Blog ja gut sehen kann), aber doch immer wieder. Und zwar im wahrsten Sinne des Wortes alles Mögliche querbeet. So irgendwie. Aphorismen, Gedichte, Geschichten … Lustiges, Trauriges, Nachdenkliches… achso und offensichtlich auch Sachtexte… Wenn ich Zeit (und Elan) dazu hätte, würde ich auch Bücher schreiben. Seit Anfang des Jahres mache ich jetzt auch Poetry Slam. Ich war jetzt schon zweimal im KOHI, einmal im Kupferdächle und auch in Rastatt im Kellertheater. Und das werden bestimmt nicht meine letzten Auftritte gewesen sein. Ich will versuchen, so im Mittel pro Monat bei einen Slam mit zu machen. Poetry Slam ist toll. Und zwar von beiden Seiten des Mikros aus…
  • Termine rund um Poetry Slam in der Gegend um Karlsruhe gibts auf der Seite der (im übrigen auch sehr empfehlenswerten) Lesebühne AnWortUndStelle
  • Jetzt muss ich mir noch überlegen, was ich mit meinem Blog hier mach. Ich vermute mal, die Leserschaften von Softwareentwicklungsthemen und Poetry-Slam-bezogenem Zeug sind einigermaßen disjunkt. Vielleicht teile ich das Blog also. Vielleicht mach ich zwei Blogs daraus. Oder ein Blog und eine statische Seite. Oder irgendwas anders.

„Die Kunst an der Kunst ist die Kunst, die Kunst für teuer Geld zu verkaufen“, hab ich mal behauptet. Offensichtlich kann man eine Meinung haben, ohne Ahnung zu besitzen. Meine Meinung hat sich mittlerweile geändert und so könnte ich momentan Folgendes, vielleicht nicht weniger Fragwürdiges, über Kunst sagen: Kunst ist eine Form der Kommunikation, bei der der Rezipient (der Leser, Betrachter, Zuhörer, etc.) den Inhalt der Nachricht bestimmt. Kunst muss also Lust machen, über das Werk nachzudenken.

Aber ich hab nicht nur von Kunst keine Ahnung, meine Fähigkeiten was Zeichnen und Malen anbelangt bewegen sich irgendwo zwischen unterirdisch und abartig schlecht. Manchmal kann ich aber ein bisschen schreiben. Es folgt ein Selbstgespräch über Lyrik mit eingewobener Rezension und abschließendem Jammern darüber, dass ich zu blöd für Ironie bin… oder so. (mehr …)

Ich weiß schon, warum ich Entwickler geworden bin. Im Studium hatte ich eine Vorlesung zu „Unternehmensführung“. Strategie, Organisation, Controlling, Personalwirtschaft, internationales Management… alles das hat man mir beigebracht. In der Klausur hab ich sogar ne ganz gute Note gekriegt, wenn ich mich richtig erinnere. Aber wäre ich dadurch ein guter Chef? Ich weiß schon, warum ich Entwickler geworden bin — und warum ich wahrscheinlich niemals ins Management wechseln werde.

Eins ist natürlich klar: Management kann manchmal echt verwirrend sein und zu Missverständnissen führen. Aber was macht eigentlich ein Chef? Fragt man in der Fußgängerzone, wird man vermutlich sowas hören wie „entscheiden und delegieren“. Ein Chef entscheidet, was gemacht wird und weist dann seine Untergebenen an, die dafür notwendige Arbeit zu tun. Dieses Führungsmodell stammt aus dem Militär und der Industrie — und es funktioniert in der Softwareentwicklung nicht. In „Leadership in der IT“ zeigt Johann-Peter Hartmann anschaulich wie sich Führungsstile über die Zeit entwickelt haben und warum man Produktionsstätten nicht mit Softwareentwicklung vergleichen kann. In Handwerksbetrieben ist die Aufgabe des Meisters gegenüber seinen Gesellen und Lehrlingen das Anleiten und nach Außen hin vertreten. In der Industrie ist es, wie gesagt, das Entscheiden und Delegieren. Mittlerweile schon weit verbreitet ist die Auffassung, Chefs sollten Ziele definieren und Feedback geben. Moderner wäre zu sagen, sie motivieren und etablieren Wertesysteme.

Ich behaupte jetzt aber mal folgendes: Ein Chef hat genau zwei Aufgaben: gärtnern und vorgaukeln. Aber ich glaub, das muss ich erklären… (mehr …)