Coming-Out
Stehe ich unter Stress, esse ich weniger und manchmal tagelang überhaupt nichts. Dadurch nehme ich ab: Während der Arbeit am Internetmem-Buch verlor ich im Zeitraum eines Jahres etwa zehn Kilogramm Körpergewicht, in den letzten zweieinhalb Monaten weitere fünf. Offensichtlich habe ich eine Essstörung.
Gesundheitliche Sorgen muss man sich allerdings (noch) nicht machen: Bei einer Körpergröße von 172cm wiege ich etwa 70kg, mein Body-Mass-Index befindet sich im Normbereich. Habe ich keinen Stress, esse ich gerne und genug – tendenziell esse ich eher zu viel, denn mir fehlen Hunger- und Sättigungs-Gefühl.
Trotzdem fühle ich mich in meinem Körper unwohl: Meine Arme kommen mir dürr und kränklich vor; beim Laufen habe ich das Gefühl, dass mein Hintern zu klein ist. Bei Kuscheln und Sex vermisse ich immer wieder meine früheren Fettpolster. Beim Gedanken an eine übergewichtige Exfreundin fühle ich Neid.
Um mich in meinem Körper wohler zu fühlen, möchte ich das verlorene Gewicht wieder zunehmen. Die gewichtsangleichende Operation besteht darin, mehr zu essen. Ich bin transfett.
minime – a minimalist Unix text editor
Unix philosophy encourages developers to focus on minimal programs that communicate using text streams. However, most text editors for unixoid operating systems do not follow these guidelines, relying on internal functionality instead of standard text manipulation applications like the GNU core utilities.
This architectural choice implies complexity and hinders re-use: Emacs contains a complete environment for a dialect of the LISP programming language; applications such as IRC clients written in Emacs LISP cannot easily be used outside Emacs.
The minimalist editor minime (source code) conforms to Unix philosophy in the most simple way: Inspired by the text editor sam, all programmatic text transformations are done by piping text to external programs; see the minime README for details.
Keys are bound to shell commands in a CSV configuration file called minimerc (screencast).
Linkschleuder (31)
Bilder
Comics
- All About The Spotting Deer — ein seltsames Tier (via)
- A Light That Never Goes Out — Lucy Knisley vermisst jahrelang ihren Exfreund, schließlich heiraten sie (via)
- PAOLA-4 — Zeitreise in die eigene Kindheit (via)
- Ant Comic — surreales Insektenleben (via)
Musik
- Not the End of the World — Weltuntergangs-Gesang mit Stylophone (Bandcamp; danke, foxitalic)
- Gang Garrison Rocket Jump Waltz — Chiptunes-Hintergrund des Spiels Gang Garrison 2 (via)
- This Party Place Needs More Bass — Hardstyle-Partymusik der Evoke 2013 (mehr Evoke-Musik; danke, zakx)
- The Most Unwanted Song — maximal unangenehme Musik (Erklärung; Wikipedia-Artikel; danke, plomlompom)
Spiele
- Physica — abstraktes Rätsel-Jump ’n’ Run (GitHub; via)
- Love Hotel — Wirtschaftssimulation mit Stundenhotel (via)
- Your Swimsuit Jumped Over Its Own Weathercock, You Liar! — Erogē mit durch Markow-Ketten generiertem Dialog (via)
- Curse of War — 2D-Echtzeitstrategiespiel im Terminal (via)
- FreeOrion — rundenbasiertes Globalstrategiespiel (via)
Fragmente
Time has a different meaning at the South Pole if you are working with offsite people, as is typical of the science winter overs. “Day” is when the internet connection is working. “Night” is when it is not. There is only satellite coverage for half the day.
I once asked one of my employees, “What do you want to do with your career? What do you want to be?” I was terribly disappointed by his answer: “I want to be a J2EE architect.” I asked why not a “Microsoft Word designer” or a “RealPlayer installer?”
(via)An Indian leader came to the British officer in charge of a region and complained that the British wouldn’t let them burn their widows on their husband’s funeral pyre as was tradition. The officer said that if they wanted to practice their tradition it was fine but then he would be forced to practice the British tradition of hanging men who burned women alive.
Popkultur
- Fight Club: How Gay is MMA?
- Vergewaltigung in Battlestar Galactica (via)
- The significance of plot without conflict (danke, foxitalic)
- how to choose between equivalent options (via)
- When It Comes to Security, We’re Back to Feudalism (via)
Politik
- The Ecuadorian Library — Bruce Sterling über die Dissidenten Manning, Assange, Snowden (via)
- Regierungen als Verschwörungen (via)
- More Encryption Is Not the Solution
Ergonomie
- Your app makes me fat (via)
- Gamification is Bullshit (via)
- Turing Complete User (via)
- Crippling the Web — Barrierefreiheit als definierender Unterschied von Webseiten und nativen Anwendungen (via)
- The Anti-Mac Interface — Nutzerschnittstellen des WWW als Antithese zu den Apple Human Interface Guidelines
Technik
- Wie ich für todkrank erklärt wurde und mich wieder gesund debuggte — Genomanalysefehler analysiert (danke, mntmn)
- Digital Show & Tell — Christopher Montgomery erklärt Grundlagen digitaler Signalverarbeitung (Transkript)
- Why HTTP/2.0 does not seem interesting (via)
Programmierung
Considering that 8 bit BASICs of the 70s had range checked and garbage collected strings, it is amazing how much damage C has done.
(danke, dridde)command-line interfaces are inherently lazier than GUIs. I say this because I’ve made both. The work that goes into a good command-line interface is less than the work that goes into a good GUI interface.
APIs are currently the core fabric by which communication occurs within a computing system. As long as we use them, we end up with specialization of communication between computing systems.
Anwendungen
- Semantic Data Extractor — zeigt Bedeutung von HTML
- Kitchen Timer — Wecker für Android, geeignet zur Erinnerung an Medikamenten-Einnahme (via)
- hachoir-urwid — Dateiexplorer für Binärdateien (Bitbucket)
- apt-listbugs — weist vor Installation oder Aktualisierung auf kritische Fehler von Debian-Paketen hin (danke, dridde)
- avconv — Konvertierung von Audio- und Video-Dateien
Sicherheit
- Web-Sicherheitslücken ohne JavaScript (danke, linuzifer)
- Chaffing and Winnowing: Confidentiality without Encryption (Wikipedia-Artikel: Spreu-und-Weizen-Algorithmus; via)
- Stealing cross-origin pixels: Timing attacks on CSS filters and shaders
- Holographic Vulnerability Studies: Vulnerabilities as Fractures in Interpretation as Information Flows Across Abstraction Boundaries (via)
Making music with a C compiler
At SIGINT 2013 I gave a talk about the creation of synthesizer music by piping the output of short C programs into /dev/dsp
. I ended the presentation live coding music with libglitch. Watch:
I have also uploaded the submission, the slides (PDF) and the source code for the presentation (needs pinpoint and SoX).
My talk can also be seen on YouTube, but the description includes wrong licensing information. I hereby declare the license of my performance to be CC BY 3.0.
Sinnlose Verschlüsselung bei MyVideo.de
Das LG Hamburg verbot die Software JDownloader2, weil diese von der Webseite MyVideo.de Videos herunterladen konnte (Beschluss als PDF). Angeblich waren diese Videos mit einem Verschlüsselungsverfahren
geschützt, das das Gericht als wirksame technische Schutzmaßnahme
beschreibt. Wie aber funktioniert diese Verschlüsselung? Um das herauszufinden, schaute ich mir den Quellcode von MyVideo.de an; als Beispiel wählte ich eine Folge der Anime-Serie Naruto.
Die Herstellerfirma von JDownloader2 erläutert: Die Funktion war lediglich vorübergehend in einer Beta-Version der Software, also den Nightly-Builds des JDownloader2, enthalten.
Auf entsprechenden Hinweis ist diese Änderung selbstverständlich rückgängig gemacht worden. Sowohl der JDownloader als auch die aktuellen Nightly-Builds (JDownloader2) sind also weiterhin legal.
Die Webseite enthält zwei Variablen, die an den eingebetteten Flash-Player übergeben werden: _encxml mit dem Wert http%3A%2F%2Fwww.myvideo.de%2Fdynamic%2Fget_player_video_xml.php und ID mit dem Wert 8336292. Die erste Variable ist URL-kodiert; dekodiert lautet sie http://www.myvideo.de/dynamic/get_player_video_xml.php. Übergibt man die zweite Variable als Parameter im Query String, erhält man http://www.myvideo.de/dynamic/get_player_video_xml.php?ID=8336292 – dort befindet sich ein unleserliches – vermutlich verschlüsseltes – Dokument.
Den notwendigen Schlüssel berechnet der Flash-Player von MyVideo.de aus einem Generalschlüssel und der Variable ID – die Formel lautet md5(Generalschlüssel+md5(ID)). Der Generalschlüssel ist mit der Kommandozeile ermittelbar: Die Eingabe von tail -c+9 ming.swf | openssl zlib -d | strings | grep KEY ergibt unter Anderem MASTER_KEY@c8407a08b3c71ea418ec9dc662f2a56e40cbd6d5a114aa50fb1e1079e17f2b83. Mit echo -n c8407a08b3c71ea418ec9dc662f2a56e40cbd6d5a114aa50fb1e1079e17f2b83`echo -n 8336292 | md5sum | cut -d' ' -f1` | md5sum erhält man schließlich den Schlüssel 36210cd70cc7f123dfd358bf8653eb4a.
Die Entschlüsselung erfolgt mit dem RC4-Algorithmus (Beispiel-Code in Python); das Ergebnis ist eine XML-Datei – im vorliegenden Beispiel gehört diese allerdings nicht zu Naruto sondern zu einem Werbe-Video mit David Hasselhoff. Der Grund dafür sind fehlende URL-Parameter: Entschlüsselt man den Inhalt von http://www.myvideo.de/dynamic/get_player_video_xml.php?domain=www.myvideo.de&flash_playertype=SER&ds=1&autorun=yes&ID=8336292&_countlimit=4, erhält man Informationen zum gewünschten Video, das sich dann mit dem Programm rtmpdump lokal speichern lässt.
Weswegen Myvideo.de die zum Abspielen eines Videos notwendigen XML-Dateien verschlüsselt, dann aber sämtliche Schlüssel öffentlich zur Verfügung stellen, ist mir unklar: Ich selbst habe zwar kein Interesse an dort angebotenen Videos (und auch nicht genug Bandbreite), kann mir jedoch kaum vorstellen, dass eine derartige Maßnahme Leute am Herunterladen der Videos hindert.
Vermutlich haben die Entwickler nicht verstanden, dass der Einsatz von Verschlüsselung Inhalte nicht schützen kann, wenn man alle Schlüssel veröffentlicht. Für diese Vermutung spricht auch der Einsatz von RTMPE, das für die Verschlüsselung ebenfalls nur öffentlich zugängliche Daten verwendet.
Meiner Ansicht nach handelt es sich bei der Verwendung des Flash-Players um eine wirksamere technische Maßnahme, bestimmte Leute vom Ansehen der Videos auszuschließen. Zum Einbetten von Videos empfehle ich die Verwendung des <video>
-Elements.