Informatik
- Wie man einen Graph plottet
- Nächstes Frühjahr werd ich mit dem Studium fertig und stürz mich ins Berufsleben. Ich hoff dann mal, dass ich dann nicht sowas erleben muss: Joy of Programming: SNAFU — Situation Normal, All Fouled Up!. Bei Firmenkontaktmessen, Exkursionen und Co. ist es ja ganz sinnvoll, die Leute dort auszufragen, um nen Eindruck zu kriegen. Vielleicht sollte ich meinen Fragenkatalog erweitern, um solche Fälle zu erkennen. Hm…
- Letztens hat jemand behauptet, dass Joel Spolsky ja so konservativ wäre. Mal davon abgesehen, dass ich Leute kenne, die noch viel konservativer sind, wusste ich erstmal nicht so ganz, woran man das festmachen sollte. Und ich hab mich gefragt, ob ich auch so “konservativ” bin. Zumal ich seine Ansichten über Management gar nicht so konservativ finde. Letztens hab ich aber seinen Artikel How Microsoft Lost the API War gelesen. Und da seh ich manches denn doch etwas anders. Nicht in der Kernthese des Artikels: Dass es MS mittlerweile schwerer hat, weil SaaS und die Cloud immer wichtiger werden und iOS und Android auch Windows bedrohen, zeigt eigentlich, dass Spolsky schon vor 8 Jahren nicht ganz unrecht hatte mit der Entwicklung. Über weite Strecken erzählt er aber — durchaus lesenswert — von zwei Lagern bei MS. Die einen, die Rückwärtskompatibilität über alles stellen und die anderen, die gerne mal was Neues machen. Und er beklagt, dass letztere “gewonnen” haben. Seine Argumente sind nicht ganz falsch. Aber er unterschlägt, dass es auch immer wieder neue Produkte gibt und manchmal nur ein Bruch in der API wirklich Fortschritte bringt. Es ist kein Schwarz oder Weiß. Es ist immer eine Abwägungssache.
- Wenn wir schon dabei sind: Noch ein interessanter Text von Joel Spolsky: Getting Things Done When You’re Only a Grunt
- Wie schon erzählt, mache ich mir momentan so ein bisschen Gedanken darüber, wo ich nach meinem Studium hin will. Dass ich in die Softwareentwicklung will, steht fest. Dabei stellt sich für mich aber u.a. auch die Frage, ob ich lieber Standardsoftware oder Individualsoftware entwickeln will. Beides hat wohl seine Vor- und Nachteile. Außerdem frage ich mich, ob ich lieber plangetrieben oder lieber agil Software entwickeln will. Auch das hat seine Vor- und Nachteile und ich kann mir beides vorstellen. Bei den ganzen Überlegungen merke ich aber mal wieder: Der eigentliche Unterschied liegt in der Denkweise. Man kann auch einen klassischen Ansatz mit Scrum verbinden. Ob das Ergebnis dann “agil” ist, ist ne andere Frage, aber das heißt nicht, dass das Ergebnis schlecht wäre. Die Idee finde ich jedenfalls ganz interessant.
- Über Technical Debt bzw. techische Schulden hab ich ja schon des öfteren erwähnt. Ich finde das ist eine sehr hilfreiche Metapher. Eine detailliertere Taxonomie beschreibt Steve McConnell. Lesenswert. Und noch ein Artikel zu dem Thema: Understanding technical debt
- Wenn wir grad beim unsortierten Auflisten von Artikeln sind, die ich gelesen hab: Hier ist noch einer: Death by UML Fever. Ich mag die UML. Eigentlich. Man kann sie aber sehr unterschiedlich einsetzen. Der Artikel behandelt problematische Anwendungen der UML.
- Irgendjemand hier, der wissen will, wie und warum man Entwickler wird? Und wie man ein besserer wird? Vermutlich wissen das die meisten von euch schon. Egal. Hier ist trotzdem ein interessantes Video, das das veranschaulicht: So You Want to Be a Developer Part 1 und Part 2
- Wie ein paar Praktikanten innerhalb von 12 Wochen eine marktreife Software schreiben: Aardvark’d: 12 Weeks with Geeks
Anderes
- Ich war noch nie ein großer Comic-Leser. Was ich aber ganz gerne lese, sind Web-Comics wie xkcd. Randall Munroe, der Autor von xkcd, hat aber noch ein paar andere Projekte, die mitunter auch ganz interessant sind. Das neueste ist “what-if“. Dort gibt er physikalische Antworten auf hypothetische Fragen. Beispielsweise, was passieren würde, wenn man einen Baseball auf 90% der Lichtgeschwindigkeit beschleunigen könnte. Das Ergebnis liest ich überraschend und unterhaltsam.
- Momentan läuft ja The Amazing Spider-Man in den Kinos. Kurzreview hierzu: Ich war ganz gut unterhalten, aber viel mehr auch nicht. Die Story verschenkt einige Potenziale und ist ziemlich vorhersehbar linear. Schade. Außerdem dachte ich, dass 3D bei den Wolkenkratzer-Szenen beeindrucken sein müsste. Weit gefehlt: Durch die Bewegungsunschärfe verschwimmt der Hintergrund und der Effet verschwindet.
Informatik
- Continuous Delivery und Feature Branching
- Isotopp über Performancepeaks auf Websiten
- Warum Wiederverwendung nicht immer gut ist: Package Cutomization
- Comment Only What the Code Cannot Say. Kann ich so unterschreiben. (via)
- Beauty Is in Simplicity. Ja, das stimmt wohl. Nur fehlt mir irgendwo im Text, dass “einfach” nicht “kurz” heißt. Ein bekanntes Zitat lautet: “Bitte entschuldigen Sie den langen Brief, ich hatte keine Zeit, einen kurzen zu schreiben.” Es wird irgendwie wahlweise Blaise Pascal, Karl Marx, Mark Twain, Voltaire, Goethe oder sonstwem zugeschrieben. Egal wers war: Es ist was Wahres dran.
- Eine interessante Sichtweise auf Code Reviews. Hab das bisher so noch nicht gesehen. Muss ich mir noch ne Meinung drüber bilden.
- Versionsverwaltung ist wichtig und überaus praktisch. Und die Tools unterscheiden sich ein bisschen. Hier gibts ein Buch darüber und hier ein Heise-Developer-Artikel. Beides hab ich noch nicht gelesen. Muss ich noch nachholen.
- Industrieanlagen-Steuerungen ungeschützt im Netz. Ähm… irgendwie fällt mir kein Kommentar ein, der treffend beschreiben würde, wie ich darüber denke. Aber ich fürchte, wenn ich einen finden würde, könnte man ihn als Beleidigend empfinden…
Anderes
- Mein gut gefüllter Feedreader enthält unter anderem auch xkcd. Wer das nicht kennt, sollte sich das unbedingt ansehen. Nun sind die Comics leider nicht immer so einfach zu verstehen. Und auch ich muss zugeben, dass ich sie nicht immer verstehe. Oder zumindest nicht ganz. Abhilfe schafft da http://www.explainxkcd.com/
- Fertig gelesen: Niemalsland von Neil Gaiman. Der erste Urban-Fantasy-Roman, den ich gelesen hab. Ein sehr gutes Buch, das ruhig noch etwas länger hätte sein können. Direkte Folgebände gibt es leider auch nicht. Gaiman entwirft eine traumhafte Welt unter Londons Straßen. In U-Bahnhöfen, Schächten und Kanälen. Was ich an Romanen oder allgemein an Geschichten mag, ist, wenn sie einen mitnehmen in eine andere Welt, wenn diese Welt funktioniert und einen immer neue Details und womöglich Absonderlichkeiten entdecken lässt. Das ist hier definitiv der Fall. Über Kleinigkeiten kann man immer meckern, aber das hat das Buch hier nicht verdient. Also las ich das mal bleiben. BTW: Auf YouTube gibt es Ausschnitte aus der zugehörigen Fernsehserie. Das, was ich da gesehen hab ist schlecht. Wirkt auf den ersten Blick alles dilettantisch und hölzern. Ich linke besser nicht darauf. Das Buch ist um Welten besser und hat diese Probleme nicht.
- Jetzt lese ich Lechts oder Rinks ein Sachbuch, das erklären will, wie wir Fehler machen. Das Buch ist interessant geschrieben, auch wenn ich bisher noch nichts aus dem Inhalt für meinen Vortrag auf den Delphi-Tagen verwenden konnte. Aber vielleicht kommt das noch. Mal sehen.
Trapped

Socrates could've saved himself a lot of trouble if he'd just brought a flashlight, tranquilizer gun, and a bunch of rescue harnesses.
Comic CC-BY-NC 2.5 by Randall Munroe
Zum Hintergrund:
Informatik
- Schon ewig alt und altbekannt, aber ich find den Text immer wieder klasse: Dojo
- Eigentlich wollte ich darüber ein bisschen mehr schreiben, aber aus Zeitmangel hierzu nur so viel: Fluent Interfaces sind etwas Merkwürdiges. Es ist eine vollkommen andere Art und Weise, wie man Schnittstellen aufbaut. Auch Martin Fowler hat etwas dazu. Als ich zum ersten Mal von Fluent Interfaces gelesen hatte, fand ich die zwar ganz lustig, aber mehr Spielerei als ernst zu nehmende Alternative. Mittlerweile sehe ich das ein bisschen anders. Fluent Interfaces machen zwar die Implementierung – sofern man sie denn richtig machen will – meist deutlich komplizierter, die Benutzung aber einfacher. Und es heißt ja nicht umsonst eine Schnittstelle sollte sich nur schwer falsch, aber intuitiv richtig verwenden lassen. Damit sind Fluent Interfaces insbesondere für solche Fälle geeignet, bei denen Code nur selten verändert, aber häufig genutzt wird. Bei APIs, Frameworks und ähnlichem. Natürlich kommt das mal wieder auf den konkreten Anwendungsfall an. Letztens habe ich so einen gefunden. Und zwar bei Nick Hodges: THTMLWriter. Das ist eine Klasse mit der sich auf einfache Weise HTML-Ausgaben erzeugen lassen. Und für einen solchen Zweck eignen sich Fluent Interfaces (bzw. genauer gesagt Method Chaining) hervorragend.
- Die Entwicklung von HTMLWriter geht munter voran und es lohnt sich, immer mal wieder vorbei zu schauen. So sind mittlerweile auch Interfaces dazu gekommen. Interfaces führen in Delphi immer noch ein Schattendasein. Durch die implizite Referenzzählung muss man die richtige Verwendung erstmal lernen. Leider ist das in Delphi nicht so einfach wie in Java oder C#. Dennoch könnten Interfaces wohl häufiger Verwendung finden. Wie das Beispiel hier zeigt, kann sich das wirklich lohnen.
Anderes
- xkcd: Misconceptions
- Philosophie ist etwas Tolles. Insbesondere die Erkenntnistheorie finde ich hochgradig interessant. Wenn man damit (beruflich) etwas anfangen könnte und Informatik nicht so interessant wäre, würde ich vielleicht Philosophie studieren. Unter anderem im Bereich der Logik gibt es zwischen Informatik und Philosophie sogar ein paar Überschneidungen. Interessant finde ich insbesondere die Tatsache, dass es verschiedene Logiken gibt. In manchen gelten bestimmte Regeln und in anderen gelten sie nicht. Das wirft natürlich die Frage auf, woher wir denn wissen, dass manche logische Schlussfolgerungen überhaupt gültig sind. Bis ich da aber einigermaßen durchblicke und mir eine Meinung gebildet habe, läuft noch viel Wasser den Rhein runter…
Das Sortieren ist ein typisches Problem der Informatik. So typisch, dass es mittlerweile dermaßen gut erforscht ist, dass es schon seit mindestens zwei halben Ewigkeiten eine Reihe von Sortieralgorithmen gibt, die quasi jeder Informatiker kennt. Und das obwohl kaum jemand heute noch in der Praxis Sortieralgorithmen schreibt. In der Regel wird ein Problem wie das Sortieren einmal gelöst (d.h. einmal der Algorithmus implementiert) um dann nur noch die bereits bestehende Implementierung zu nutzen. Jede Standardbibliothek für eine x-beliebige Programmiersprache bringt normalerweise einen implementierten Sortieralgorithmus (oft QuickSort) mit, den man dann einfach nur noch benutzt.
Dennoch ist es sehr sinnvoll, die grundlegenden Sortieralgorithmen zu kennen, da diese sehr schön prinzipielle Herangehensweisen an typische Probleme, verdeutlichen. Also auch, wenn man das Sortieren wohl kaum selbst implementieren wird, so wird man ähnliche Algorithmen implementieren, die bestimmte Ideen nutzen, die sich auch in den Sortieralgorithmen finden.
Zu diesen grundlegenden Sortieralgorithmen gehören SelectionSort, InsertionSort, BubbleSort, MergeSort, QuickSort und HeapSort. Diese haben alle gewisse Vor- und Nachteile und zeigen bestimmte Herangehensweisen an algorithmische Probleme.
weiter lesen »