Textstückchen

Ganz kleine Textstückchen zu Allerlei.

How to run Racket on the Raspberry Pi 2

I got a Raspberry Pi 2 Model B to play with. I was wondering how difficult it is to get Racket running on the Raspberry Pi. I downloaded the Unix source + built packages tarball from Racket’s homepage because I only wanted to compile the core of Racket. After unpacking the tarball I was suprised that the instructions were quite short:

1
2
3
4
5
6
7
8
From this directory (where the `configure' file is), run the following
commands:

  mkdir build
  cd build
  ../configure
  make
  make install

Between make and make install I had to wait for about 40 minutes but then everything was fine and I could even use DrRacket on the Raspberry Pi:

DrRacket on Raspberry Pi

Very nice and easy to get Racket running on ARM.

PS: Because the Raspberry Pi 2 Model B has an ARMv7 processor the binary runs on my Jolla smart phone as well.

Running Racket on AWS Lambda

I started to use AWS for some projects recently. But I only use few of their services. From time to time I look into some of there services and wonder if they are useful for my tasks. I looked into AWS Lambda, “… a compute service that runs your code in response to events and automatically manages the compute resources for you, making it easy to build applications that respond quickly to new information.” Nowadays these “lambda functions” could be written in NodeJS or Java. When I was looking for a roadmap of the supported languages I found an interesting blog post by Ruben Fonseca. He explaind how to run Go code on AWS Lambda.

I tried the same with Racket and wrote a short Racket programm test.rkt:

1
2
3
#lang racket/base

(display (format "Hello from Racket, args: ~a~%" (current-command-line-arguments)))

Then I used raco to create a binary test:

1
raco exe --orig-exe test.rkt

I took the NodeJS wrapper from Ruben’s blog post and put it in a file main.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
var child_process = require('child_process');

exports.handler = function(event, context) {
  var proc = child_process.spawn('./test', [ JSON.stringify(event) ], { stdio: 'inherit' });

  proc.on('close', function(code) {
    if(code !== 0) {
      return context.done(new Error("Process exited with non-zero status code"));
    }

    context.done(null);
  });
}

Then I put both files in a zip archive, created a new AWS Lambda function, uploaded the zip file and invoked the function:

Invocation of AWS Lambda function

Fine!

PS: Only question is: When is AWS Lambda coming to the region eu-central-1, located in Frankfurt?

Lisp und ich

Dieser Beitrag ist kurzer Hintergrund für meine bisherigen und zukünftigen Beiträge zur Programmierung und Software-Entiwcklung. Eigentlich ist es eher ein Disclaimer, denn ich habe das gar nicht professionell gelernt. Ich habe ein sozialwissenschaftliches Fach studiert und meine Kenntnisse aus dem Bereich der Programmierung entstammen im Wesentlichen meiner Schul- und Studienzeit und sehr viel autodidaktes Lernen. Insofern ist aller Code von mir mit einer gewissen Vorsicht zu genießen; möglicherweise ist das nicht immer die beste und schönste Variante ein Problem zu lösen.

Der Rundfunkrat des hr übt den Diskurs

Am 15. Dezember 2014 hat der Wissenschaftliche Beirat des Bundesministeriums des Finanzen ein Gutachten zu “Öffentlich-rechtliche Medien - Aufgabe und Finanzierung” veröffentlicht.

Der Inhalt wollte dem einen oder anderen Vertreter der öffentlich-rechtlichen Medien nicht schmecken. So haben sich der Runkfunkrat und der Verwaltungsrat des Hessischen Rundfunks “ausführlich” mit dem Gutachten und einer Stellungnahme des “hr-Justitiars” befasst und einen “einstimmigen Beschluss” hierzu gefasst.

Ich möchte nun nicht auf sämtliche Aspekte des Gutachtens und was dafür oder dagegen spricht eingehen. Allerdings hat mich das eine oder andere in dem “Beschluss” der hr-Gremien etwas stutzig gemacht. Es heißt dort gleich zu Beginn:

“1. Der Rundfunkrat und der Verwaltungsrat kritisieren, dass sich ein für Rundfunktfragen unstreitig unzuständiges Gremium ein Papier veröffentlicht hat, das längst überholte ökonomische Positionen wieder aufleben lässt und Auffassungen vertritt, die sich weder ökonomisch noch rechtlich halten lassen.”

In Deutschland hat sich neben der Wirtschaftstheorie und Wirtschaftspolitik ein eigenes Gebiet der “Finanzwissenschaft” als Lehre von den öffentlichen Haushalten, der Besteuerung, der Staatsausgaben, der öffentlichen Schuld, der Staatstätigkeit etc. herausgebildet. Einige Vertreter dieses Faches sind Mitglieder des Wissenschaftlichen Beirats beim Bundesministerium der Finanzen.

Eine der ersten Fragen in der Finanzwissenschaft, die man sich bspw. in der universitären Ausbildung stellt, ist: “Was gehört eigentlich zum ‘Staat’?” Mitunter zuerst fallen einem die Gebietskörperschaften (Bund, Länder und Gemeinden) und ihre Haushalte ein. Daneben spielen aber auch öffentlich-rechtliche Institutionen eine bedeutsame Rolle, die man mit dem Begriff der “Parafisken” bezeichnet, sie erfüllen öffentliche Aufgaben und finanzieren sich in der Regel über Zwangsabgaben. Hierzu zählt man beispielsweise die Sozialversicherungen, aber auch Kammern, soweit sie öffentliche Aufgaben wahrnehmen. Auch sie sind Gegenstand der Finanzwissenschaft. In meinem Exemplar von Zimmermann/Henke, Finanzwissenschaft, 7. Auflage, 1994 sind einige Ausführungen zu den Parafisken auf den Seiten 8 bis 11 zu finden.

Und hierzu gehören aus diesem Blickwinkel unstreitig auch die Institutionen des öffentlich-rechtlichen Rundfunks. Eine etwas ausführlichere Darstellung zu den Parafisken findet sich in einem Gutachten des DIW Berlin von C. Katharina Spieß aus dem Jahr 2014 (das allerdings nicht den Rundfunk, sondern familienpolitische Leistungen zum wesentlichen Inhalt hat) in den Kapiteln 2 bis 3, für den öffentlich-rechtlichen Rundfunk im Abschnitt 3.3.

Wenn nun die öffentlich-rechtlichen Rundfunkanstalten Parafisken sind, die Parafisken zum Gegenstand der Finanzwissenschaft gehören, dann wäre es meines Erachtens sträflich, würde sich der Wissenschaftliche Beirat beim BMF nicht damit befassen.

Insofern halte ich die Behauptung, der Beirat sei “unstreitig unzuständig” für falsch und irreführend.

Außerdem beschreibt die Satzung des Beirates seine Aufgaben recht weit:

Ҥ 1 Aufgaben des Beirats

Der Beirat soll den Bundesminister der Finanzen in voller Unabhängigkeit und ehrenamtlich in allen Fragen der Finanzpolitik beraten.”

Die hr-Gremien haben insgesamt 7 Punkte beschlossen. Obwohl sie in dem oben zitierten ersten Punkt dem Beirat Auffassungen unterstellen, die sich ihrer Ansicht nach ökonomisch nicht halten lassen, so finden sich in den beschlossenen Punkten nahezu keinerlei ökonomische Entgegenungen:

  • In Punkt 2 werden die unterstellten Marktmechanismen in Bezug auf den Zeitungsmarkt in Frage gestellt.
  • In Punkt 3 wird im Kern argumentiert, man hätte doch auch das Angebot des öffentlich-rechtlichen Rundfunks beachten sollen.

Demgegenüber wird bis auf Punkt 2 durchgehend mit “verfassungsrechtlich” (kommt als Wort insgesamt 5mal vor) oder dem “Bundesverfassungsgericht” (4 Vorkommen, 3mal als “Bundesverfassungsgericht” und einmal als “höchste deutsche Gericht”) argumentiert.

Zum Schutz der hr-Gremien muss man allerdings noch erwähnen, dass der Beirat in seinem Gutachten neben eher finanzpolitischen Überlegungen auch einen Abschnitt über verfassungsrechtliche Perspektiven verfasst hatte.

Es bleibt aber dabei, dass die hr-Gremien sich bis auf ihren Punkt 2 mit den ökonomischen Fragestellungen aus dem Gutachten eigentlich nicht recht auseinandersetzen wollen. Dabei wäre das dringend nötig. Die Auseinandersetzungen um Druckerzeugnisse vs. Rundfunk, “Tagesschau-App”, Depublizierung, neuartige Rundfunkgeräte, etc. machen meines Erachtens deutlich, dass hier ein Austausch von Argumenten dringend nötig wäre. Hierzu haben die hr-Gremien allerdings entweder nicht die Kraft oder nicht das Verlangen. Statt dessen werfen sie dem Wissenschaftlichen Beirat eine Entgleisung vor, wenn sie schreiben:

“Das Ignorieren der mittlerweile 50jährigen kontinuierlichen Rechtsprechung des Bundesverfassungsgerichts zur dualen Rundfunkordnung … ist … nicht nur eine indiskutable Ohrfeige an das höchste deutsche Gericht, …”

An diesem Zitat zeigt sich für mich auch, dass ein Austausch von Argumenten wohl gar nicht gewollt ist. Die Positionen des Beirats werden mit kernigen Formulierungen belegt: “Auffassungen vertritt, die sich weder ökonomisch noch rechtlich halten lassen”, “indiskutable Ohrfeige an das höchste deutsche Gericht”, “mit der Entwicklung der Rundfunkordnung … in keiner Weise ernsthaft auseinandergesetzt”, “verkennt in erschreckender Weise”, “völlig unverständlich”, “völlig abwegig”, “hat sich keinerlei Mühe gemacht”, “macht deutlich, wie wenig sich der Beirat mit den rechtlichen und verfassungsrechtlichen Fakten befasst hat”, “völlig untauglich”, “keine Alternative” und im letzten Satz “[a]ngesichts der vielfachen Defizite des Papiers kann es auch nicht den Anspruch erheben, wissenschaftlich zu sein.”

Im Ergebnis: In meinen Augen zeigen die hr-Gremien einen oft zu beobachtender Reflex: Die Gegenseite wird zuerst einmal für nicht zuständig erklärt, anschließend ihre Argumente ignoriert und auf einer anderen Ebene gegen sie argumentiert. Dies passiert schlussendlich noch in einem Duktus, der auch keine Antwort mehr erwartet.

Insgesamt doch eher unbefriedigend und nicht von der Fähigkeit zum Diskurs gekennzeichnet. Vielleicht hätte man nicht nur den hr-Justitiar, sondern auch den hr-Ökonomen befragen sollen.

PS: Nach wie vor macht mich etwas stutzig, wie Rolf-Dieter Postlep das hat unterschreiben können.

Lexmarks Druckerpatronen-Lizenz

Heute benötigte ich eine Ersatzpatrone für meinen Lexmark-Drucker. An der Aufreißlasche prangen Ausrufezeichen und der Hinweis: “Attention: Updated License Terms”.

Lizenzbedingungen? Für eine Druckerpatrone? Also mal ein Blick aufs Kleingedruckte:

Bitte vor dem Öffnnen lesen. Durch das Öffnen der Verpackung oder die Verwendung der mitgelieferten patentierten Kassette erklären Sie sich mit der folgenden Lizenz-Vereinbarung einverstanden. Diese patentierte Tonerkassette wird zu einem Sonderpreis verkauft und unterliegt der Patenteinschränkung, dass sie nur einmal verwendet wird. Nach ihrer erstmaligen Verwendung verpflichten Sie sich, sie zur Wiederaufbereitung und/oder zum Recylcing nur an Lexmark zurückzugeben. Die Tonerkassette funktioniert nach der Abgabe einer bestimmten Tonermenge nicht mehr. Wenn sie ersetzt werden muss, kann sie noch Resttoner enthalten. Die Kassette ist zusätzlich so konzipiert, dass die Informationen zur Kassettenkompatibilität im Druckerspeicher automatisch aktualisiert werden. Auf diese Weise kann die Verwendung gefälschter Kassetten und/oder bestimmer Drittprodukte eingeschränkt werden. Durch die Installation der beiliegenden Kassette gestatten Sie Lexmark, diese Änderungen vorzunehmen. Wenn Sie mit den vorgenannten Bedingungen nicht einverstanden sind, geben Sie die ungeöffnete Verpackung an Ihren Händler zurück. Nicht im Rahmen dieser Bestimmungen verkaufte Ersatztonerkassetten sind unter www.lexmark.com erhältlich.

Irgendwie ja auch ein bisschen putzig, wie um einen Alltagsgegenstand wie Toner so ein Bohei gemacht wird. Zwei Gedanken kommen mir da in den Sinn: 1. Es verfestigt sich mein Eindruck, dass das Patentsystem recht nahe an kaputt ist. 2. Unternehmen, die so etwas machen, sollten weniger Geld für Juristen, Patentanwälte ausgeben und das Geld eher in coole Produkte investieren.

Spielt ALBA Berlin nun Handball oder Basketball? Der Sportschau ist es egal

Mit Stand vom 14. Januar 2015 erschien auf der Homepage der Sportschau ein Artikel über die Bamberger Basketballer. Darin findet sich ein Satz über die ALBA Berlin (ebenfalls eine Basketball-Mannschaft):

ALBA Berlin dominiert aktuell in der Liga und ist das einzig verbliebene deutsche Team in der Euro League, der Champions League des Handballs.

Ah! ALBA spielt auch noch Handball? Oder doch nicht? Jedenfalls sollte da wohl “in der Euro League, der Champions League des Basketballs” stehen, denn die Euro League ist ein europäischer Wettbewerb von Basketball-Vereinsmannschaften.

Denke ich mir also: “Ach, wie lustig, das kann ja mal passieren” und twittere die Sportschau am 15. Januar 2015 und 18. Januar 2015 mit einem Hinweis auf den Tippfehler an. Beim heutigen Durchblättern der Sportschau-Seite stieß ich erneut auf den Text und der Fehler ist heute, also am 30. Januar 2015, nach wie vor dort zu sehen:

Homepage Sportschau

Ich meine, man kann sich ja mal vertun, aber dann auf einen Leserhinweis so gar nichts zu unternehmen, ist der Sportschau eigentlich nicht würdig.

Update: Ich twitterte die Sportschau mit meinem Blog-Post an und unmittelbar danach wurde der Fehler korrigiert. Sehr prompte Reaktion.

3. Docker-Meetup in Frankfurt

Am 13. Januar 2015 fand in Frankfurt das bereits dritte Docker-Meetup statt, hier einige Notizen von mir dazu.

Neues zum Them Orchestrierung

Peter Rossbach hat in einem munteren Vortrag einige Neuerungen aus dem “Docker Universum” zum Thema Orchestrierung vorgestellt. Unter anderem Docker Machine, Docker Swarm, Docker Compose (ehemals fig.sh, das wohl aufgrund von Aussprachemehrdeutigkeiten umbenannt wurde) etc. Ein sehr interessanter Überblick, insbesondere da Peter auch die ganzen Sachen immer mal angefasst und ausprobiert hat. Im Kern scheint es mir jedoch so zu sein, als wäre die Frage nach “Was nimmt man am besten, um Docker auf einer oder mehreren Maschinen im Produktivbetrieb zu nutzen?” noch recht in Bewegung. Für mich kristallisiert sich für meine Anwendungsfälle da bisher noch keine überzeugende Lösung heraus. Was ich jedoch einmal testen werde ist das fig.sh bzw. Docker Compose, da man damit eigentlich sehr schön in einem YAML-Dokument mehrere Container und ihre Abhängigkeiten darstellen kann.

Docker Linking

Erkan Yanar hat in einem Einsteigervortrag die Grundlagen von Links zwischen Containern vorgestellt. Hier scheint die Entwicklung auch noch in Bewegung zu sein, insbesondere Links über mehrere Hosts hinweg scheinen doch noch nicht so ganz einfach handzuhaben zu sein (vorgestellt wurden Ambassador-Ansätze mit socat und anderes).

Besonders erhellend fand ich den Hinweis, dass ab Docker Version 1.3 nun bei Links zwischen den Containern die /etc/hosts auch nach Neustarts von gelinkten Containern immer deren richtige IP-Adresse erhält, wohingegen die Umgebungsvariablen nur die Ursprungs-IP-Adressen enthalten (also ein klares “Verlasst Euch nicht auf die Umgebungsvariablen!”).

Netzwerken mit Docker

Andreas Schmidt stellte eine ganze Reihe von Varianten vor, mit denen man die Container im Netzwerk auf unterschiedliche Arten und Weisen verknoten kann. Soweit ganz interessant, aber nicht meine “Liga”, wo ich mich gut auskenne.

Fazit

Bei Docker in Bezug auf Orchestrierung und Container-Linken gibt es recht viel Bewegung und für mich kristallisieren sich die überzeugenden Konzepte noch nicht so richtig heraus, um damit in eine Produktivumgebung zu gehen. Im Bereich der Entwicklung und der Tests nutze ich die Container von Docker schon recht gerne, bei Produktiv-Umgebungen schreckt mich die Vielzahl an Werkzeugen und zum Teil auch die Komplexität doch noch etwas.

Jedenfalls wieder ein gutes Meetup mit Ideen und Anregungen. Ich finde das schon sehr außergewöhnlich (besonders wenn man es mit anderen Branchen vergleicht), dass sich Leute zum Austauschen über Technologie treffen, Vorträge vorbereiten etc.

Links zu den Folien

Eindrücke vom 31C3

Dieses Jahr habe ich mich einmal aufgerafft und bin das erste mal zum Congress des CCC nach Hamburg gefahren. Im Folgenden ein paar Eindrücke:

Drumherum

Ich fand den 31C3 ein tolles Ereignis: Sehr professionell und umsichtig organisiert. Überall, wo ich hinkam, war man nett und freundlich, insgesamt eine sehr willkommende Atmosphäre. Nur der Termin, der ist ja doch etwas sperrig.

Vorträge

Ich konnte einige Vorträge anhören, von denen haben mir die folgenden besonders gut gefallen (ich habe mal die Links zu den Videos und die Links zu den Einträgen im Fahrplan aufgeführt, oft gibt es im Fahrplan auch noch zugehöriges Material und weitere Hinweise):

  • “Wir beteiligen uns aktiv an den Dikussionen” (Link im Fahrplan) von Martin Haase, der die Digitale Agenda der Bundesregierung aus sprachwissenschaftlicher Sicht entlarvt als das, was es ist: Heiße Luft und wenig Konkretes, schon gar nicht für den “Bürger”. Besonders spannend fand ich den Teil des “PDF befreien”, denn die Bundesregierung hat nur ein wenig konsistentes PDF bereit gestellt, dass maha erst einmal in einen Text umwandeln musste, mit dem er mit seinen Werkzeugen arbeiten konnte. In der Diskussion wurde er dazu auch noch einmal befragt und meinte, Markdown, das sei eigentlich ein ganz gutes Format.

  • Die beiden SS7-Vorträge von Tobias Engel (Fahrplan) und Karsten Nohl (Fahrplan): Die Talks fand ich incl. der Live-Vorführungen sehr eindrücklich und haben mir vor Augen geführt, dass es mit der Sicherheit im Mobilfunk noch schlechter aussieht, als ich so befürchtet habe.

  • ECCHacks (Fahrplan) von djb und Tanja Lange: Ein Bekannter empfahl mir den Vortrag und meinte, ich könnte da schon was verstehen, obwohl ich mich mit diesen Ellpitischen Kurven nicht wirklich auskenne. Der Talk war didaktisch sehr gut aufbereitet und ich habe trotz der späten Stunde ein bisschen verstanden (glaube ich), worum es da eigentlich geht.

  • Vor Windows 8 wird gewarnt (Fahrplan) von ruedi: Ein kurzweiliger Vortrag über “Secure Boot” und andere Schwierigkeiten mit “Windows 8”.

  • Reconstructing naraatives (Fahrplan) von Jacob Appelbaum und Laura Poitras: Das war im voll besetzten Saal 1 ein sehr eindrücklicher Vortrag, der mit Standing Ovations endete.

  • What Ever Happened to Nuclear Weapons? (Fahrplan) von Michael Büker: Diesen Vortrag fand ich vom Aufbau und der Didaktik sehr gut vorbereitet. Als wichtige Erkenntnis habe ich für mich den Kernwaffenstopp-Vertrag (englisch Comprehensive Nuclear-Test-Ban Treaty) mitgenommen, einen internationalen Vertrag, der sämtliche Kernwaffentests verbietet, der aber noch nicht in Kraft getreten ist; dieser Vertrag geht weiter als der Nuclear Test Ban Treaty aus den 1960er Jahren, der Kernwaffenversuche in der Atmosphäre, im Weltraum und unter Wasser verbietet. Dennoch gibt es hierzu schon eine Organisation, die Preparatory Commission for the Comprehensive Nuclear-Test-Ban Treaty Organisation, der man auch auf Twitter folgen kann. Diese “Preparatory Commission” bereitet das Inkraftreten vor und baut ein Überwachungssystem auf.

  • EFI bootkits for Apple MacBooks (Fahrplan) von Trammell Hudson: Ich fand das sehr spannend vorgetragen (incl. Hexdumps etc.), wie Trammel Hudson durch “Reverse Engineering” auf ein Sicherheitsproblem bei Apple-Produktion gestoßen ist und dieses dann in einem Proof-of-Concept auch ausnutzen konnte.

Aufgrund des riesigen Angebots an Vorträgen, Workshops etc. muss ich mir in den kommenden Tagen glaube ich noch den einen oder anderen Vortrag als Video ansehen.

MorgenGrauen-Stammtisch

Etwas spontan und nicht so sonderlich koordiniert haben wir auch einen MorgenGrauen-Stammtisch ausgerufen und siehe da: Drei Spieler und zwei Gäste fanden sich ein, so dass man bei einem Bier ein wenig plaudern und sich austauschen konnte.

Aus zwei mach eins

Bisher hatte ich meine Blog-Einträge auf zwei Blogs aufgeteilt, eines mit mehr technischen (und zum Teil englischen Texten) und dieses hier mit deutschen Texten. Ich denke, ich werde das auf dieses eine Blog hier konzentrieren. Das reduziert doch etwas den Verwaltungsaufwand. Ich habe die Texte vom nun etwas still gelegten Blog hier herüber kopiert.

Ich habe mal Octopress aktualisert

Neulich fiel mir auf, dass die Suchfunktion, die auf Google basiert, nicht nur auf der eigenen Homepage, sondern im “gesamten” Suchindex von Google gesucht hat. Eben flatterte dieser Tweet mit Link zu einem Fix an mir vorbei und da hat sich wohl die API geändert.

Octopress-Tweet

Also habe ich mich einmal an den Hinweisen zum Aktualisieren von Octopress orientiert. Hierzu werden die folgenden Schritte vorgeschlagen:

1
2
3
4
git pull octopress master      # Get the latest Octopress
bundle install                 # Keep gems updated
rake update_source             # update the template's source
rake update_style              # update the template's style

Soweit lief das auch. Es tauchten anschließend zwei Probleme auf:

  1. Das execjs jammerte, dass ihm irgendwie eine JavaScript-Bibliothek fehlte. Nach kurzer Recherche gab es die Empfehlung, die Zeile gem 'therubyracer' in das Gemfile aufzunehmen. Okay, das funktionierte schon einmal.

  2. Bei den Feeds für die Kategorien jammerte das Octopress ein ungültiges Layout an. In category_feed.xml stand in der Tat layout: nil. Ich habe das auf layout: page geändert. Nun tat auch dies.

Mit dem Update funktioniert nun auch das Such-Formular wieder.

Ergänzung: Ich lasse das Jekyll und Octopress in einem Docker-Container laufen und irgendwie bekam ich bei rake preview meine Seite nicht mehr zu sehen. Da ich mich mit Ruby und den Komponenten nicht so gut auskenne, weiß ich nicht, ob mein “Fix” so gut ist: Ich habe im Rakefile den rackup-Aufruf um den Parameter -o 0.0.0.0 ergänzt. Dann bekam ich vom Host wieder eine Verbindung zum Webserver im Octopress-Container.

Update vom 04. Januar 2014: Nach einem kurzen Gespräch via Twitter habe ich mich entschieden, den eingebauten Server doch wieder so zu belassen, wie es im Rakefile ursprünglich stand. Statt dessen habe ich einfach in dem Docker-Container einen nginx hinzuinstalliert, der dann mein public-Verzeichnis an den Port 4000 ausliefert. So funktioniert es wieder prima: Ich starte den nginx und lasse dann das rake watch laufen, um die Seiten immer wieder neu zu erzeugen, wenn sich Dinge geändert haben.