Hackety hack hack

Atypisches Nutzerverhalten mit Rat und Tat.

Laufende Projekte

Neben meiner Arbeit beschäftigen mich zur Zeit zwei Projekte (plus einige andere Dinge, die ein anderes Mal erzählt werden sollen), die ich noch nicht direkt in diesem Blog erwähnt habe.

Das Curry-Buch - Funktional programmieren lernen mit JavaScript von Jens Ohlig, Stefanie Schirmer, Hannes Mehnert

Ende Juni erscheint unsere Einführung in die funktionale Programmierung am Beispiel von JavaScript bei O’Reilly. Wir haben lange an diesem Buch gesessen, vielleicht sogar ein bisschen zu lange, aber ich bin mit dem Ergebnis sehr zufrieden. Neben map, reduce und Kolleginnen, dem Lambda-Kalkül und den gefürchteten Monaden-Gesetzen treten dort auch Vindaloo-Curry, Auberginen und ein leckeres Mango-Lassi auf, denn gutes Programmieren ist wie gutes Kochen und der Begriff Curry hat nicht nur in der indischen Küche, sondern auch in der theoretischen Informatik eine besondere Bedeutung. Ich bastle gerade an der Webseite zu dem Buch, die sicher bald folgt.

Das Buch konnte bei O’Reilly unter einer CC-Lizenz, nämlich CC-BY-NC-SA 2.0 DE erscheinen, was mich besonders freut, dass der Verlag bei so einem mutigen Experiment dabei ist und die Weitergabe zu nicht-kommerziellen Zwecken gestattet. Nach etlichen Schreib- und Korrektursessions der letzten Monate, bei denen ich das Projekt streckenweise fast nicht mehr sehen konnte, bin ich jetzt sehr stolz auf das, was daraus geworden ist. Wie mir jemand schrieb ist es das Buch, dass er gerne gelesen hätte, als er anfing, sich mit funktionaler Programmierung zu beschäftigen. Genauso ging es uns auch. Deshalb haben wir dieses Buch geschrieben.

Ohai Brause

Irgendwann kam mein Arbeitskollege Abraham zu mir und berichtete davon, dass er völlig übermüdet mit seinem Kumpel Markus aus Karlsruhe eine Vision hatte. Statt sich mit Club- oder sonstiger Mate aufzutanken, wäre doch eine koffeinhaltige Schleckbrause aus dem Tütchen, wie wir es aus unserer Kindheit kennen, eine tolle Idee. Nach einigen Experimenten und viel Zittern und erhöhter Herzfrequenz beim Austüfteln der richtigen Koffeinladung haben wir einen ziemlich bitteren Prototypen entwickelt, der mit Zitronenaroma einen Geschmack in Richtung Grapefruit bekommt und so richtig wach macht (fast doppelt so wach wie ein Energy-Drink oder fast dreimal so stark wie ein Espresso).

Unser Kleinunternehmen, das hauptsächlich von dem übermenschlichen Engagement von Abraham und Markus lebt, läuft ganz gut. Neugierige können sich die Tütchen mit der Matrix-Katze, die überrascht “OHAI!” ausruft, online bestellen. Ausserdem gibt es Ohai Brause bei ausgewählten Händlern, in Berlin z.B. in der c-base, bei der Meta Mate Bar oder bei der Filmkunst-Videothek Delikatessen, aber schaut selbst in die Liste. Diesen Sommer gibt es unser kleines Produkt dann auch bei einigen Events, etwa der GPN Gulaschprogrammiernacht. Bleibt wach, okay?

Neues vom Angriff der Zukunft auf die Gegenwart

France in XXI Century. Electric scrubbing

Eine kleine Sammlung an Links:

Python und die Liebe

1
2
3
4
5
# Python on love:
import this
love = this
this is love, love is not True or False, love is love
>> (True, True, True)

Plötzlich Semikolon — Automatic Semicolon Insertion

Für ein Buch, an dem ich gerade arbeite, war der folgende Text zu lang und zu ausführlich. Wegwerfen wollte ich ihn aber nicht, so dass er hier im Blog landete, in dem schon lange nichts mehr aus dem Bereich Programmieren vorkam.

JavaScript und Semikolons

Das automatische Einfügen von Semikolons (Automatic Semicolon Insertion, ASI) ist eine der verwirrendsten und umstrittensten Eigenschaften von JavaScript. Die Regeln für das Einfügen von Semikolons beginnen im Sprachstandard ECMA 262 recht simpel: Wenn ein gültiges JavaScript-Statement von einem anderen gültigen JavaScript-Statement durch einen Zeilenumbruch (linefeed) oder das Zeichen ”}” getrennt wird, dann wird ein Semikolon vor dem Trennzeichen eingesetzt. Am Ende einer Zeile oder eines Blocks können Semikolons also normalerweise weggelassen werden.

Ein Semikolon kann zudem am Ende eines Programms weggelassen werden. Es muss also nicht als letztes Zeichen in der Datei stehen. Dies sind schon alle einfacheren Bedingungen für ASI. Es gilt zudem die Regel, dass ein Semikolon niemals automatisch eingefügt wird (und damit auch nicht weggelassen werden kann), wenn dadurch ein leeres Statement zustande käme. Auch in der Klammer mit den Bedingungen einer for-Schleife wird niemals automatisch ein Semikolon ergänzt.

Die Postfix-Ausdrücke ++ und -- und die Befehle continue, break, return und throw haben ihre eigenen Regeln. Wenn ++ oder -- als Postfix-Operator geparst werden können und sie vom vorhergehenden Zeichen durch einen Zeilenumbruch getrennt werden, dann fügt JavaScript vor ihnen ein Semikolon ein.

a = b
++c

wird also zu:

a = b;
++c;

Wenn bei continue, break, return und throw das nächste Zeichen erst nach einem Zeilenumbruch folgt, dann fügt JavaScript nach diesen Befehlen ein Semikolon ein.

return
a + b

wird demnach zu:

return;
a + b;

Rund um die ASI ist ein geradezu religiöser Streit in der JavaScript-Community entstanden. Ursprünglich dachte Brendan Eich, dass sich mit ASI die Anzahl der Fehler beim Parsen von Programmcode verringern lassen — JavaScript war schließlich für weniger versierte Programmiererinnen und Programmierer gedacht. Douglas Crockford, Autor des wahrscheinlich meistgelesenen JavaScript Stil-Handbuchs “JavaScript: The Good Parts” und einflussreicher Entwickler von Technologien wie JSON (JavaScript Object Notation, also der Serialisierung von Daten in JavaScript), empfiehlt, ASI vollständig zu missachten und jedes Statement einfach mit einem Semikolon abzuschließen, ohne auf die eingebaute Magie des Parsers zu vertrauen.

Demgegenüber steht das meist beobachtete Projekt auf Github, das Framework Twitter Bootstrap, das in seinem JavaScript-Code völlig auf Semikolons verzichtet. Crockford kommentierte das renommierte Bootstrap-Projekt in Hinblick auf seinen JavaScript-Komprimierer JSMin drastisch: ”That is insanely stupid code. I am not going to dumb down JSMin for this case. (…) Learn to use semicolons properly. ! is not intended to be a statement separator. ; is.””

Woraufhin der Bootstrap-Entwickler Jacob Thornton antwortete: ”I have learned to use them, that’s why there isn’t one present.

Aus praktischen Gründen empfiehlt es sich, sich hauptsächlich an Crockford zu halten. Allerdings sollten wir zur Kenntnis nehmen, dass es auch andere religiöse Ansichten zu Semikolons gibt, die wir zu respektieren haben.

Die Spam-Bibliothek von Babel

Das Infinite-Monkey-Theorem, auch deutsch Theorem der endlos tippenden Affen, besagt, dass ein Affe, der unendlich lange zufällig auf einer Schreibmaschine herumtippt, fast sicher irgendwann alle Bücher in der Bibliothèque nationale de France, der Nationalbibliothek Frankreichs, schreiben wird. In englischsprachigen Ländern heißt es, dass so irgendwann die Werke William Shakespeares entstehen werden.

Der Kindle-Store von Amazon wird derzeit von einer Menge an seltsamen Büchern überschwemmt. Eins der Werke, die dort angeboten werden, beinhaltet den Liedtext des Nerv-Klassikers “The Song That Never Ends”, immer wieder wiederholt auf über 700 Seiten, andere Titel sind Bestsellern zum Verwechseln ähnlich. E-Books und textgenerierende Algorithmen machen es möglich.

Hier sind zwei Fragen für juristisch interessierte Futurologen: Wenn on Demand von einer unendlichen Anzahl von Affen (oder Algorithmen) jeder beliebige Text, jede mögliche Buchstabenkombination verlegt und bei Amazon verkauft werden kann, wer bekommt dann die Einkünfte aus dem Leistungsschutzrecht für automatisch generierte Texte? Und: Wenn mit einer gewissen Wahrscheinlichkeit irgendwann der Affe/Algorithmus “Mein Kampf” generiert und bei Amazon zum Verkauf anbietet, macht sich der Affe/Algorithmus dann strafbar? Schirrmacher, hilf!

Leichter Neid zum Berlin Geekettes Hackathon

Ich habe heute kurz zum Abschluß, wo auch Gäste zugelassen waren, ein paar Präsentationen von Projekten angesehen, die über das Wochenende beim Berlin Geekettes Hackathon entstanden sind. Ich bin geflasht und beeindruckt. Es gab einen morsenden Mini-Hubschrauber, eine E-Book-Leseapp für Hörbücher, Gürtelschnallen zum Tetris-Spielen, einen Wecker, der bei jedem mißlungenen Versuch ihn abzustellen immer schlechtere Musik spielte, eine App die ausgehend von Etsy-Einkäufen Immobilien vorschlägt und vieles mehr, was in ca. 24 Stunden entstanden ist.

Deutschlands (wahrscheinlich) erster Women-Only-Hackathon, den die Berlin Geekettes organisiert wurde, schien für all die kreativen Hackerinnen dort ein großer Spaß gewesen zu sein. Ich war auf eine sehr schöne Art und Weise neidisch darauf, einfach mal nicht gemeint zu sein, wenn es um den kreativen Umgang mit Technik geht. Ich wünsche mir mehr Momente dieses Neids. Irgendwann in ferner Zukunft könnte es dann auch auch mal sein, dass so ein Neid nicht mehr nötig ist. Aber das ist ein Märchen von Übermorgen.

Geheim und sicher wählen im Internet?

Ich habe ein Verständnisproblem und hoffe ganz ernsthaft, ihr könnt mir helfen. Geheime, sichere und nicht manipulierbare Wahlen über das Internet sind nicht möglich, soweit mein bisheriger Kenntnisstand. Schon Wahlen auf Papier sind manipulierbar, wenn ein Computer ins Spiel kommt, der beliebig programmiert werden kann, skaliert die Manipulierbarkeit ins Unendliche. Das ist letztendlich auch der Hintergrund für das Urteil des Bundesverfassungsgerichts am 3. März 2009, dass der Einsatz von Wahlcomputern bei der Bundestagswahl 2005 verfassungswidrig war, da der Wähler weder die abgegebenen Stimmen noch deren Auszählung selbst kontrollieren konnte. Der Chaos Computer Club hat sich um die Ächtung von Wahlcomputern in den letzten Jahren verdient gemacht.

Bis ins Jahr 1997 existierte an der Universität Göttingen der Wolfskehl-Preis, der für den Beweis des großen Fermatschen Satzes ausgelobt war. Am Göttinger Mathematischen Institut waren fast 90 Jahre (1908-1997) lang ein oder zwei Assistenten mit der Bearbeitung von Einsendungen beschäftigt, die von Unmengen von Amateuren eingeschickt wurden. Meist reichte ein einfacher Formbrief als Antwort, in dem nur eingetragen werden musste, auf welcher Seite und in welcher Zeile sich der erste logische Fehler im “Beweis” befand.

Wenn jetzt ein Paper behauptet, das Problem geheimer und sicherer, manipulationsresistenter Wahlen per Computer gelöst zu haben, ist Skepsis angebracht. Deshalb meine Frage: Wo in diesem Paper befindet sich der erste logische Fehler?

CommitCoin: Carbon Dating Commitments with Bitcoin

Can you have both secret ballots and verifiable results?

Yes. Crypto can do seemingly impossible things. One of those things is
having a voting system where ballot is anonymous (you can’t prove how
you voted) and yet you can make sure that your ballot is included
unmodified in the final tally! Crypto voting systems are often called
E2E or end-to-end verifiable. Scantegrity is one, there are others.
Scantegrity is the only one that has been used in an actual governmental
election (two municipal elections in Takoma Park, Maryland, USA).

Oh! Onigiri

Es besteht die Möglichkeit, dass ich mich für den nächsten Hype entschuldigen muss, wenn die Zeit gekommen ist. Die Tatsache, dass ich Bubble Tea vor einer gefühlten Ewigkeit (ca. letzter Sommer) noch abfeierte, weil es ihn endlich häufiger so zu kaufen gab, wie ich ihn aus New Yorks Chinatown kannte und liebte, lastet immer noch ein bisschen auf mir und mein Enthusiasmus tut mir leid. Ich bin voll in die Hipster-Falle getappt, plötzlich wurden die Innenstädte von Bubble Tea überschwemmt, Läden machten auf und gingen kurz danach ein und am Schluß gab es überzuckerten Schlabber mit Perlen sogar bei McDonald’s — of all places. Bitte verzeiht mir.

Jetzt also Onigiri. Japanische Reisbällchen, oft in Dreiecksform, gefüllt mit Sachen (Lachs oder Hühnchen oder Sesam und Gemüse), bisweilen umhüllt von einem Algenblatt: Das bessere Butterbrot, ab zwei oder drei Stück erstaunlich sättigend, was wohl am Reis liegt. In Japan sind Onigiri viel verbreiteter als alles, was wir hier an japanischem Essen zu kaufen bekommen: Oft daheim zubereitet werden sie zur Arbeit mitgebracht, im Supermarkt werden sie in langen Reihen im Kühlregal fertig angeboten. Aus Korea kenne ich sie als Chumokbap (추믁밥), was “Faust-Reis” heisst. Ich mag Onigiri und ich habe mich gefreut, als ich nur kurze Zeit hintereinander zwei Möglichkeiten in Berlin entdeckt habe, um mir den Bauch mit ihnen vollzuschlagen.

Da gibt es zunächst am U-Bahnhof Schönleinstraße den Onigiri-Stand Rice Up, den ich deshalb als ersten erwähne, weil er jeden Morgen auch ein potenzielles Anlaufziel auf dem Weg zur Arbeit für mich darstellt. Schön Bio alles, etwas kleine (und dafür teure) Portionen, aber durchaus gut: Jeden Tag vegane Onigiri und welche mit Fleisch oder Fisch (Lachs mit scharfer Pflaume ist ein prima Frühstück). Natürlich ist der Stand gut zu erreichen, weil er ja genau auf dem Bahnsteig liegt, aber insgesamt gehen bei dem Angebot schon leichte Hipster-Alarmglocken los. Sei’s drum. Es schmeckt.

Dann gibt es die unglaublich nette Natsuko, die mit ihrem Samurai Snack eine lustige Idee verfolgt: Zur Mittagszeit liefert sie an Büros (hauptsächlich Start-Ups, wenn ich das richtig verstanden habe). Wenn sie beladen mit ihren Onigiri, die man tags zuvor über ein Formular per Mail bestellt, in unserem Büro auftaucht, pünktlich um 11:30 Uhr, ist die Freude groß. Statt irgendwelchem Fast-Food-Quatsch einfach mal Onigiri in der Mittagspause, da gibt es eigentlich keine Gegenargumente, zumal ihre Onigiri nur die Hälfte von denen an der Schönleinstraße kosten, dafür aber größer und viel leckerer sind. Die ersten Male gibt es die Onigiri sogar kostenlos, wenn man ihr Feedback und Kommentare gibt. Natsuko holt sich Rezepte für Onigiri regelmäßig bei ihrer Mutter in Japan ab und ich finde man schmeckt die Mühe, die sie in ihr kleines Unternehmen steckt.

In einer Stadt mit gleich zwei Onigiri-Optionen zu leben ist irgendwie auch Luxus ausserhalb Ostasiens. Hoffen wir mal, dass der Hypezirkel bis zum Absturz in die Peinlichkeit diesmal nicht ganz so rasant verläuft wie bei Bubble Tea.