Tut nicht so als wüsstet ihr was ihr da tut!

vom 29. March 2012

Es ist schon interessant zu sehen, wie sich das Internet entwickelt; Eigentlich hat niemand damit gerechnet, dass uns dieses Konstrukt so allumfassend vereinnahmt und überrollt. Keiner hat das vorausgesehen. Außer ein paar Spinner vielleicht. Und nun stehen wir da: Keiner weiß so recht, wie man damit umgehen soll. Jeder hat zwar eine grobe Vorstellung, aber seien wir mal ehrlich: Niemand weiß wirklich wie das ganze Anzupacken ist.

Vor dem Internet war alles klar geregelt. In jedem Land gibt es einen Gesetztestext und wenn der nicht aussagekräftig genug ist, entscheidet ein Richter wie dieser zu interpretieren ist. Das Internet passt nicht in dieses Muster, auch wenn sehr viele sehr angestrengt versuchen, die bekannten Muster darauf zu adaptieren. Leider geht das nicht so einfach -- denn das Internet ist etwas ganz anderes.

Im Internet geht es nicht um Ländergrenzen, Copyright oder Benutzeridentifikation. Das Internet ist da um zu teilen und uns etwas weiter zusammenzubringen (so ist zumindest mein subjektives Verständnis davon). All die Anstrengungen den Status Quo der analogen Welt im Internet aufrecht zu erhalten sind gescheitert und werden es weiterhin. Es ist nicht nur ein anderes Medium sondern etwas ganz anderes.

Die einen meinen sie hätten "es" im Griff, wüssten wie das Internet tickt und wie es in fünf Jahren aussähe. Einige vertrauen dem Internet komplett und gehen mit Facebook und Twitter komplett darin auf. Andrere haben Angst und versuchen mit allen Mitteln gegen alles Neue anzukämpfen. Wieder andere haben sogar so viel Ehrfurcht und Zweifel vor "diesem Internet", dass sie es nicht mal anrühren. All das ist berechtigt, doch sollten wir uns alle klar sein: Die Menschheit macht hier gerade einen Zeitaltersprung durch, bei dem keiner das Ende kennt und auch keiner jemals zuvor eine solche Situation durchgemacht hat. Dieses Situation ist für alle neu. Auch für die Musikindustrie, Großkonzerne, Entscheidungsträger, Gesetzesverabschieder und andere Staatsorgane.

Edit: Auch ganz nett und irgend wie passend zum Thema ist dieser Artikel von "der Netzgemeinde": Antwort auf den offenen Brief der Tatort-Drehbuchschreiber

Kommentar schreiben, delicious bookmark del.icio.us, Es ist schon interessant zu sehen, wie sich das Internet entwickelt; Eigentlich hat niemand damit gerechnet, dass uns dieses Konstrukt so allumfassend vereinnahmt und überrollt. Keiner hat das vorausgesehen. Außer ein paar Spinner vielleicht. Und nun st


Ein Versuch, die Motivation von Open Source zu erklären

vom 11. September 2011

xkcd xkcd #743

Der Grund,warum ich leidenschaftlich programmiere hat mehrere Gründe. Zum Einen ist es diese absolute Gleichheit und Fairness, mit der man unermütlich konfrontiert wird. Jeder startet mit den selben Grundvoraussetzungen. Es wird niemand bevorzugt, weil er einen Anzug trägt und viel Geld hat oder benachteiligt, weil er einen langen Bart und eine verschlissene Jeans trägt.

Compiler und Interpreter kann sich jeder kostenlos aus dem Internet herunterladen und installieren. Auf den meisten Computern sind bereits eine Hand voll davon installiert. Überall wo ein Browser läuft, wird eine mächtige Programmiersprache bereits mitgeliefert. Den geeigneten Texteditor gibt es ebenfalls gratis dazu. Damit hat jeder Programmier die gleichen Voraussetzungen und jedes Programm beginnt mit einer leeren Datei in einem einfachen Texteditor. Keiner kann sich eine bessere Startposition erkaufen oder irgendwoher stehlen. Jeder fängt gleich an. (Mal abgesehen von Biblitheken o.ä.)

Was man dann daraus macht, hängt vom Programmierer ab. Man kann sich daran versuchen, die perfekte Symphonie zu komponieren oder man wirft mit Farbeimer um sich wie die Blue Man Group. Der Charakter des Programmierers spiegelt sich in seinem Code wieder, so fällt auch schnell auf, wenn der eine Dinge vom anderen abkupfert. Natürlich gibt es auch den Mainstream der Best Practices, der versucht vordefinierte Formen zu liefern, so dass möglichst viele mit dem Code klar kommen. Für welchen Weg man sich entscheidet oder ob man von allem etwas nimmt, kann jeder für sich selbst entscheiden.

Das Programmieren im Allgemeinen fängt eigentlich schon viel früher an. Man hat eine Idee oder sucht eine Lösung für ein bestimmtes Problem. Man schleicht um das Problem, schaut es von allen Seiten an und versucht es zu knacken. Das Gefühl, die "perfekte" Lösung gefunden zu haben, ist dann als hätte man gerade den Weg aus einem richtig schweren Sudoku gefunden. Es gibt immer unzählige Möglichkeiten und Lösungswege; Stürtzt man sich direkt auf das Problem, stellt man meist irgendwann fest, dass ein anderer Weg sinnvoller gewesen wäre. In solchen Fällen muss man dann eine harte Entscheidung treffen: Zurückrudern, weitermachen oder umbauen? Oft ergibt sich auch während der Programmentwicklung ein besserer Weg, da man das Problem besser verstanden hat und deshalb die Lösung besser vor Augen hat. Das ist auch der Grund, warum die meiste Software mehrere Evolutionsstufen (Versionen) durchlaufen, bis sie stimmig und performant sind.

Grundvoraussetzung dazu ist natürlich, dass man seine Werkzeuge die man verwendet verstanden hat und damit umgehen kann. (Würde man einem Zahnarzt trauen, der seine Instrumente nicht im Griff hat?) In den allermeisten Fällen ist nicht der Computer schuld, sondern der Programmierer hat seine Wünsche nicht korrekt geäußert -- oder nicht gewusst wie man sie äußert. Es hat aber nicht nur etwas mit Wissen und Ausdrucksfähigkeit zu tun, sondern auch sehr viel mit Kreativität und dem Mut seine Gedanken zu verwirklichen. Feige Programmierer erkennt man daran, wenn sie stets auf altbewährtes setzen und Probleme immer nach dem gleichen Muster zu lösen versuchen. Nicht jedes Programm zählt Zahlen in Zellen und Spalten zusammen. Es gibt so unglaublich schöne Software, die nicht nur von außen schön aussieht, sondern auch als Programmcode ein Genuss sind sie zu lesen.

Die theoretische Informatik versucht seit Jahren vergeblich zu beweisen, dass die Anzahl der möglichen Programme endlich sei, schafft es aber nicht. Das ist ein schönes Gefühl -- das Gefühl unbegrenzter Möglichkeiten.

4 Kommentare, delicious bookmark del.icio.us, ![xkcd](http://aaron-mueller.de/bilder/20110911_opensource.png) [xkcd #743](http://xkcd.com/743/) Der Grund,warum ich leidenschaftlich programmiere hat mehrere Gründe. Zum Einen ist es diese absolute Gleichheit und Fairness, mit der man unermütlich


Mehr Power!

vom 11. September 2010

Binford tools
(Bild: Walt Disney Studios - "Home Improvements")

In letzter Zeit höre ich immer häufiger, das man hier oder dort mehr Leistung, mehr Server, mehr Mitarbeiter oder mehr Software-Tools braucht. Natürlich ist es nicht schlecht wenn man von allem viel und reichlich hat, doch ich bin der Meinung, dass oftmals mit ein wenig Anstrengung mehr mit begrenzten Mitteln erreichen lässt.

Besonders bei der Programmierung lässt sich häufig ein vielfaches an Rechenpower oder Speicherverbrauch einsparen. Ein simples Profiling der Anwendung zeigt schnell Engstellen auf, die sich mit ein paar einfachen Zeilen Code (Eine Variable an einer anderen Stelle definieren, Abbruchkriterien an den Anfang der Methode schreiben, Wiederverwendung von Speicher, unnötiges Kopieren, unnötige SQL-Joins rauswerfen etc.) eliminieren lassen.

Im Serverbereich ist es natürlich das einfachste, neue Hardware zu bestellen, sobald der Server in der momentanen Konfiguration anfängt, an einer seiner Grenzen (Platz, Antwortzeit, Zugriffszahl) zu stoßen. Beim Aufsetzen eines Systems wurde anfangs vielleicht nicht daran gedacht, dass zwei Monate später 2000 User täglich einen inperformanten Service nutzen. Oft lohnt es sich, Feintuning an den Parametern vorzunehmen oder schlankere Software einzusetzen. Es braucht nicht immer ein J2EE Application Server in einer eigenen VM zu sein, um ein paar statische Webseiten auszuliefern.

Oft reicht es auch, die Zeiten zu nutzen, in denen die Hardware sowieso nichts zu tun hat. Vermutlich stört es nicht weiter, wenn nachts um 2 Uhr ein Skript 10.000 Bilder umkonvertiertund und zuschneidet. Den Cloud-Ansatz von Google, Amazon und Co. finde ich auch nicht so verkehrt.

Auch bei Software-Tools bin ich immer wieder überrascht, wie viel Geld dafür ausgegeben wird und wie ineffizient diese dann genutzt werden. Ich bin ein großer Freund von Open Source und ich bin bis auf ein paar wenige Ausnahmen sehr zufrieden und auch produktiv damit.

In dem Buch "7 Habits of Highly Effective People" von Stephen Covey (Seite 172) ist eine Grafik beschrieben, die mir seit Jahren in solchen Situationen immer ins Gedächtnis springt:

manager/producer

Ich finde gerade das (aus bestehendem das Maximum herausholen) so spannend. Fast alles lässt sich mit etwas Verstand effizienzer/performanter/einfacher gestalten. Diese Lektion habe ich noch einmal sehr deutlich gegen Ende meines Studiums erfahren: Ein komplexes Problem muss nicht komplex programmiert werden. Die einfachen Lösungen sind nicht nur leichter zu verstehen, sondern meistens auch performanter und schneller.

Allerdings erfordert diese Art der effizienten Ressourcenplanung auch Zeit, Geduld und Hirnschmalz. Wie seht ihr das? Ist es das wert oder ist die Arbeits(kraft|zeit) zu teuer, um sie mit solchen Dingen zu behelligen?

6 Kommentare, delicious bookmark del.icio.us,

![Binford tools](http://www.crazy-media.de/bilder/tv/hoer-mal-wer-da-haemmert/screen1.jpg)
*(Bild: Walt Disney Studios - \"Home Improvements\")*
In letzter Zeit höre ich immer häufiger, das man hier oder dort mehr L


Code Kata

vom 18. July 2008

Auf codinghorror.com habe ich neulich einen interessanten Artikel gelesen, der sich mit der generellen Frage beschäftigt, ab wann man ein Experte ist, ab wann man dazulernt und warum Praxiserfahrung wichtig ist.

[...]Contrary to what you might believe, merely doing your job every day doesn't qualify as real practice. Going to meetings isn't practicing your people skills, and replying to mail isn't practicing your typing. You have to set aside some time once in a while and do focused practice in order to get better at something. I know a lot of great engineers -- that's one of the best perks of working at Amazon -- and if you watch them closely, you'll see that they practice constantly. As good as they are, they still practice. They have all sorts of ways of doing it, and this essay will cover a few of them.[...]

Von täglicher Routine wird man nicht besser. Erst wenn man sich Zeit für neues nimmt, an seine Grenzen stößt und genau dort weitermacht wo man scheitert, wird man besser. Jeff Atwood hat eine interessante Liste mit Tipps zusammengetragen, von denen ich ein paar für sehr wichtig halte und deshalb - zusammen mit einigen Tipps von mir - hier noch einmal aufführe.

Such dir einen Helden

Schau dir auf Wikipedia die Pioniere der Informatik an und such dir einen davon raus. Folge allen Links und lese über ihn. Finde heraus, mit was sich dein Held beschäftigt (hat) und versuche seine Lösungswege zu verstehen.

Lese fremden Code

Lies täglich 20 Minuten lang Code von anderen Programmierern. Wenn du keinen Code von Arbeitskollegen oder Freunden bekommen kannst, such dir ein Open-Source-Projekt das dir gefällt und arbeite dich in den Code ein. (Beispielsweise Firefox, RubyOnRails, Django, Subversion, o.ä.) Anfangs scheint es so, als wäre der Code in einem Leben nicht zu überschauen, doch mit der Zeit findet man Muster, versteht die Zusammenhänge, erkennt wie Probleme gelöst wurden und lernt Techniken und Architekturen kennen. Auch erkennt man auf diese Weise, was guten Programmcode ausmacht.

Lasse andere deinen Code lesen

Such dir eine Person, die deinen Code lesen will und lasse diese deinen Code bewerten. Gute- sowie schlechte Programmteile müssen hervorgehoben werden, nur so lernt man dazu. Ein "Ja, ist ganz nett" bringt niemanden weiter.

Nutze deine Programme besser

Mach eine Liste mit deinen 10 meistgenutzten Tools und lese für eine Stunde das Hanbruch/Dokumentaton/ManPage eines zufällig ausgewählten Programms. Versuche in dieser Stunde neues über dieses Programm herauszufinden und Arbeitsabläufe zu beschleunigen. Beispielsweise Shortcuts, Features von denen du noch nichts gehört hast oder Konfigurationseinstellungen, die die Bedienung einfacher machen.

Programmiere!

Theorie schön und gut, aber ohne richtige Programmiererfahung wird man nicht weit kommen. Der Beste Weg dafür ist es einfach zu tun. Probiere neue Technologien aus, schaue dir unterschiedliche Frameworks an und hacke was das zeug hält!

Wer ist der Beste?

Suche und arbeite zusammen im Team an Projekten. Finde heraus, was es bedeutet, der beste und der schlechteste Programmierer zu sein. So kannst du herausfinden, wie du besser werden kannst.

Code-Pflege

Lerne fremden Programmcode, den du nicht geschrieben hast zu warten. Am Besten funktioniert das, in dem man ein verwaistes Projekt wieder auferstehen lässt (fork) oder Fehler behebt (bug-fixing). So lernt man, was es ausmacht, wartbaren Code zu schreiben.

Lerne verschiedene Programmiersprachen

Such dir eine Programmiersprache heraus, die komplett andere Konzepte und Strategien verfolgt, welche du bis jetzt noch nie genutzt hast oder welche dir bis jetzt noch nie bewusst waren.

Für weitere Tipps und Kritik steht die Kommentarfunktion und die Anmerkungen am Linken Rand bereit :)

5 Kommentare, delicious bookmark del.icio.us, Auf codinghorror.com habe ich neulich einen [interessanten Artikel][0] gelesen, der sich mit der generellen Frage beschäftigt, ab wann man ein Experte ist, ab wann man dazulernt und warum Praxiserfahrung wichtig ist. *[...]Contrary to what you might b


Metal Gear Solid 4 und Usability

vom 21. June 2008

Mein Bruder hatte sich vor ca. einer Woche Metal Gear Solid 4 für die PS3 gekauft und ich muss sagen, ich hab noch nie so ein grandioses Spiel gesehen und gespielt. Die Grafik ist einfach umwerfend. Man kommt sich vor, als würde man in einem Film mitspielen und die Handlung beeinflussen. Wie auch die vorherigen MetalGear-Teile gibt es auch in diesem Teil so viele Details und Gimmicks das man hier wirklich von Perfektion reden kann.

Und das Beste: Man kann das Spiel auch über das Internet spielen. Doch dazu braucht man allerdings einen Login, und hier wurden wir geschockt:

Registrierungsformular

Um einen Zugang zu bekommen öffnet sich auf der PS3 der integrierte WebBrowser mit einem Formular. Nach Auswahl der Sprache gelangt man zu einem etwas längerem Formular. Mein Bruder tippte sich die Finger wund, aber das war ok, schließlich wollten wir im Internet spielen. (Ja, man kann auch eine USB-Tastatur anschließen, aber auf die Idee sind wir erst später gekommen). Wieso wir eine KONAMI-ID und eine GAME-ID brauchten war und nicht klar, wir vermuteten schon, dass man hier evtl. die Seriennummer des Spiels eintippen musste. Am Ende des Formulars gab es zwei Buttons: "Weiter" und "Start". Leider war der "Start"-Button mit dem ersten Formular verlinkt, also nochmal alles in mühevoller Kleinarbeit ausfüllen. Nach einem Klick auf "Weiter" bekamen wir eine ziemlich lange Liste mit Hinweisen, was alles falsch ausgefüllt wurde. Nach ca. 5 weiteren Submit-Versuchen waren alle Fehler verschwunden, aber es passierte nichts! Keine Fehlermeldung, kein weiteres Formular, nichts.

Da wir offentlichtlich in einer Sackgasse gelandet waren, haben wir es nochmal am PC versucht, allerdings ging es hier ebenso nicht mehr weiter. Nach etwas Recherche fanden wir hunderte von anderen die das selbe Problem hatten. Es gibt bereits mehrere "Tutorials" um dieses Formular erfolgreich auszufüllen, die aber alle nicht funktionierten.

Hier frage ich mich, wie sowas passieren konnte? Das Spiel ist nahezu makellos und es stecken Jahre an Entwicklungs- und Denkzeit darin, und dann blockiert ein dermaßen bescheuertes Registrierungsformular das halbe Spiel.

4 Kommentare, delicious bookmark del.icio.us, Mein Bruder hatte sich vor ca. einer Woche [Metal Gear Solid 4](http://de.metalgear.wikia.com/wiki/Metal_Gear_Solid_4) für die PS3 gekauft und ich muss sagen, ich hab noch nie so ein grandioses Spiel gesehen und gespielt. Die Grafik ist einfach umwerfend


Auserwählt?

vom 9. February 2008

Heute hab ich im Briefkasten einen merkwürdigen Brief entdeckt. Darin befand sich nur eine kleine blaue Sanduhr mit einem Zettel auf dem eine URL, und auf der Rückseite "Problems?" stand.

Image Alt Text

Die URL führt zu einer Präsentation mit einigen Rätseln. Nach etwas Recherche hab ich zwei weitere (der 10 Auserwählten) gefunden: Florian und Joerg. Die anderen heißen Alexander, Frank, Gollo, Hardy, Jan, Joachim und Markus. Florian hat die einfacheren Rätsel schon gelöst: Beispielsweise fühen die Koordinaten 48.856667°N 2.340833°E zu einer Brücke in Paris. Die Morsezeichen bei Folie a führen zu einem Wikipedia-Artikel.

Einige Aufgaben sind allerdings (noch) total nichtssagend. Beispielsweise 2D = 45 oder "Navfbfgvpgn abirzqrpvzchapgngn".

Meine Vermutungen: Die Folie 1 auf der eine Tabelle mit Einsen dargestellt ist verbindet die einzelnen Aufgaben anhand der Buchstaben. Eine andere Vermutung ist, das alle Lösungen irgend wie auf Orte bezogen werden kann und dies am Ende (wenn die Punkte in der richtigen Reihenfolge verbunden werden) ein Bild ergibt. (Vielleicht auch die Wohnorte von uns?). Also: Für alle, die auch eine Sanduhr bekommen haben sollten sich schnell melden :)

Von wem die Post stammt ist uns allerdings noch völlig unklar. Vielleicht verrät uns das die Lösung des Spiels. Nur dumm das ich momentan mitten in den Klausuren stecke und ich mich eigentlich mehr auf Verteilte Systeme II konzentrieren sollte.

Nachtrag: Es sieht so aus, als wäre ich geradewegs in ein ARG reingerutscht. Mehr Infos dazu gibts im Wiki und im IRC (irc.chat-solutions.org, #ARGR).

4 Kommentare, delicious bookmark del.icio.us, Heute hab ich im Briefkasten einen merkwürdigen Brief entdeckt. Darin befand sich nur eine kleine blaue Sanduhr mit einem Zettel auf dem eine URL, und auf der Rückseite \"Problems?\" stand. ![Image Alt Text](http://aaron-mueller.de/bilder/20080209_sa