Linkschleuder (21)

Spiele

Musik

Musikvideos

Porno

Überlegungen

Analyse

Software

18. Oktober 2011 von erlehmann
Kategorien: Linkschleuder | 5 Kommentare

Ich glaub, es hackt.

Christopher Lauer ist ja bekannt dafür, dass der schon immer für alle Vorschläge der Blogger-Mafia zu haben war. Und jetzt ratet mal, für wen der neuerdings Werbung macht. DA KOMMT IHR NIE DRAUF!!1

Ein Blog in C, mit dietlibc, libowfat, unter gatling laufend und mit tinyLDAP-Backend.

Nebenbei: Ich lese Fefe ja nur wegen der leckeren Rezepte.

Für Alle, die Ähnliches vorhaben, gibt es das Bild auch als SVG.

17. Oktober 2011 von erlehmann
Kategorien: Bastelei, Netzkultur | Schlagwörter: , , | 5 Kommentare

The IT Crowd Theme in C

Inspired by VIznut, in the last few days I have experimented with music creation using a C compiler. This morning, I chose to write small program playing a melody not entirely unlike the theme of The IT Crowd when piped to /dev/dsp. True to the spirit of the intro, it ends with a division by zero.

#include <stdio.h> main() {long int t;for(t=0;;t++) {fputc((int)( (0/(128000-t))|(((t<92000)*0xff)& (t%2000*(" $& %' '% %$"[t%32000/2000]-32) |t%2000*("$$ %% '' %% "[t%32000/2000]-32)/2)| (t%2000*("'&"[t%92000/2000]-32)&(t>92000&&t<96000)*0xff)| (t%4000*("'&(&*$,* "[t%96000/4000]-32)&(t>96000)*0xff)) ), stdout);}}

Much smaller version that sounds even better:

#include <stdio.h> main() {long int t;for(t=0;;t++) {fputc((int)((1/(128000-t))|(t>96e3)?t%4000*("'&(&*$,*"[t%96000/4000]-32):(t%2000* ("$$$&%%%''''%%%'&"[t%32000/2000]-32-(2*((t>28e3)&(t<32e3)))))/(1+(t%8000<4e3))), stdout);}}

14. Oktober 2011 von erlehmann
Kategorien: Bastelei, Netzkultur, Software | Schlagwörter: , , | Schreibe einen Kommentar

Fixing IPython Pipe Handling

On my Laptop, I use IPython as the default shell. Lately, I noticed pipe handling to be broken in some specific cases. I could trace this back to Python ignoring the SIGPIPE signal.

SIGPIPE gets sent to a process when it tries to write to a pipe that is not read by another process. The default action for a process under these circumstances is to terminate.

Imagine a process yielding a huge amount of text, piped to head to print the first ten lines. With SIGPIPE ignored, the process will continue after head has stopped reading. Usually, this will only affect runtime – however, if the original process outputs an endless data stream, the shell will hang.

To check whether your shell ignores SIGPIPE, try the following command: yes | tee | head. It should print 10 lines with a single y each, then terminate. If the shell hangs, printing a message similar to tee: standard output: Broken pipe, SIGPIPE is ignored.

TL;DR: In IPython, proper SIGPIPE handling can be restored using the signal module: signal.signal(signal.SIGPIPE, signal.SIG_DFL).

Further reading

10. Oktober 2011 von erlehmann
Kategorien: Software | Schlagwörter: , , , , | Schreibe einen Kommentar

Vortragsfolien: „Quo vadis, Web?“

Wie angekündigt fand auf der diesjährigen re:publica eine Podiumsdiskussion zu Webstandards statt (Foto). Als Einleitung hielt ich einen Kurzvortrag zur Geschichte der im Web verwendeten Technologien; hier sind die Folien, hier meine Notizen.

Peter Zschunke hat den Verlauf der Veranstaltung zusammengefasst; mein Fazit steht bei Peter Kröner in den Kommentaren:

Aufnahmen gibt es wohl keine, aber die zu meiner Überraschung dann doch ganz gut angekommenen Folien poste ich alsbald bei mir im Blog, sobald ich den Fehler im Folienskript gefunden, gefixt und ein PDF generiert habe.

Kritik war unisono, dass eine Stunde zu wenig war für dieses relativ große Fass – ähnliche Erfahrungen machte ich bereits beim Troll-Vortrag auf der letzten re:publica, nächstes Mal bestelle ich dann einen größeren Slot oder übe vorher mit Lichtdoubles. Titel und Lineup hatten bei manchen außerdem eine eher technische Diskussion erwarten lassen.

Highlights: Peter betonte, dass es zwischen dem ursprünglichen Modell von Webseiten und heutigen Webapps Unterschiede gibt – so darf etwa eine WebGL-Anwendung durchaus Hardwareanforderungen stellen. Max stellte neben Nutzer und Webentwickler noch den Medien-Produzenten als weitere Fraktion mit teilweise konträren Motivationen vor (Videos doppelt und dreifach kodieren ist Arbeit) und Regine erklärte mit einem Rückgriff auf DIN-Standards, warum Normierung traditionellerweise eher in Industriekonsortien als im akademischen Kontext geschieht.

Von mir wahrgenommenes Fazit: Sich selber als Entwickler in Standardisierungsprozesse einzubringen ist einerseits schwierig und demotivierend, andererseits kommt man bisweilen selber schon gar nicht mehr hinterher mit den Neuerungen. Den Browserherstellern gegenüber sind wir alle Bit-Steller (höhöhö).

Die Folien erstellte ich mit Inkscape und Inkscape Slide. Die beiden Grafiken zu Teichenbeschleunigung und frühen Webbrowsern stammen von hier und hier.

16. September 2011 von erlehmann
Kategorien: In eigener Sache, Software | Schlagwörter: , , , , , | 1 Kommentar

← Ältere Artikel

Neuere Artikel →