Planet Entropia (CCC Karlsruhe)

Harvesting

Apropos

This planet is made of fresh clean feeds by members of the Entropia bunch

The software

The Harvester is made of fresh flesh, clean design by Tigion, hacked-together Ruby scripts by Astro and Atom support by Neingeist

To Be Fed

wget the RSS-1.0 feed!

Questions

Missing something?
Contact Neingeist via Mail or Jabber: neingeist@23bit.net

Delicious/benedikt_

Delicious/ephes

Delicious/neingeist

Delicious/tag/radiochaotica

Delicious/tag/saugnapf

experimentalworks

15.05.2012 15:09:40

Canonical Way to Build PHP 5.4 on Solaris 11


You need gnu-coreutils installed.
$ wget -O php.tar.bz2 http://us.php.net/get/php-5.4.3.tar.bz2/from/this/mirror
$ tar xvjf php.tar.bz2
$ cd php-5.4.3
$ ./configure \
--with-apxs2=/usr/apache2/2.2/bin/apxs \
--prefix=/usr/php/5.4 \
[other options]
$ gsed -ibak 's,\-mt,,' Makefile
$ gsed -i.bak 's,\-i \-a \-n php5 libphp5\.la,-i -n php5 libphp5.la,' Makefile
$ make -j4
$ sudo make install
$ vim /etc/apache2/2.2/conf.d/php5.2.conf
..change stuff to libphp5.la..
$ svcadm restart apache22

Worked for me so far.

flattr this!

mehr...

The Turkey Curse

14.05.2012 13:48:00

Die schwarze Liste von Anonymous? SRSLY?

Als ich vorhin den Text von Michael Hanfeld mit dem Titel Die schwarze Liste von Anonymous in der FAZ gelesen habe, bei dem es um eine schwarze Liste der Unterzeichner des Aufrufs Wir sind die Urheber! geht, die Anonymous erstellt haben soll, bin ich beim Lesen etwas stutzig geworden - und zwar genau an dem Punkt, an dem von Angriffen mit Mailbomben die Rede ist. Mit diesen Mailbomben soll die Webseite der Krimiautoren, die die Kampagne Ja zum Urheberrecht ins Leben gerufen haben, lahmgelegt worden sein. Die genaue Textpassage:

Die Website des halben Dutzend Krimiautoren, die sich das ausdachten, wurde mit einer Mailbombenattacke lahmgelegt, die Initiatoren wurden mit Hass-Mails eingedeckt und persönlich bedroht, sie haben Anzeige gegen unbekannt wegen Belästigung erstattet.

Während der letzte Teil für jeden, der im Netz seine Meinung äussert, schon fast als Ritterschlag gelten kann und zeigt, dass man ernst genommen wird, hege ich keinerlei Zweifel daran, dass die Autoren diese üblen Mails auch wirklich bekommen haben, glaube an den ersten Teil des Satzes einfach nicht und will auch kurz erklären, warum das so ist.

Eine Mailbombe kann, vereinfacht gesagt, so etwas sein wie eine gepackte Zip-Datei, die bei der Prüfung einer Antivirensoftware auf Schadcode ausgepackt werden muss und dafür sorgt, dass der Arbeitsspeicher des Rechners so belegt wird, dass keine weiteren Operationen mehr möglich sind. Damit ein Webserver davon betroffen ist, muss aber der Mailserver auf demselben Rechner sein, denn nur dann beeinflusst er überhaupt das Verhalten anderer Dienste. Wenn man sich aber mal genau ansieht, welche Mailserver für die Domains der Krimiautoren und der Kampagne zuständig ist, dann sieht man, dass dies ein vollkommen anderer Rechner ist als der, der die Webseiten ausliefert (was nicht wundert, ist das doch ein sogenannter Shared Host, auf dem viele verschiedene Domains gehostet werden).

Für mich steckt hier also schon der erste Fnord drin, der mich direkt zu weiteren Überlegungen bringt: Warum sollten sie lügen? Was haben sie davon, diese Geschichte so aufzuziehen?

Eine Frage, die sich in dem Kontext stellt, ist aber noch eine ganz andere: Warum machen die Krimiautoren im Rahmen des Urheberrechts eine Aktion, die so direkt Anonymous thematisiert? Man kann jetzt natürlich sagen, sie wollten einfach provozieren, wollten, dass die Anons genau so etwas machen. Aber was bringt ihnen das in der ganzen Urheberrechtsdebatte?

Thomans Stadler stellt heute in seinem Beitrag Wer koordiniert die Urheberrechtskampagne? eine Frage, die sich meiner Ansicht nach tatsächlich ergibt, denn da passiert grade etwas, was man so auch noch nicht gesehen hat: Eine Kampagne, die von vielen Seiten her Angriffe auf die vermeintlichen Feinde des Urheberrechts im Sinn hat und mal mehr, mal weniger deutlich macht, auf wen dieser Angriff konkret abzielt, aber letztendlich alles andere als eine Dialogbereitschaft zum Ausdruck bringt.

Der Subtext dieser Kampagne aber ist: Anonymität im Netz ist eine Bedrohung - für Urheber und für die Demokratie. Damit stimmen sie in die immer wieder geforderte Äusserung nach Deanonymisierung des Netzes und Vorratsdatenspeicherung ein, die auch von Seiten des Innenministeriums immer wieder zu vernehmen sind.

Der Zeitpunkt für diese Kampagne ist gut: Das Thema hat nach dem zornigen Interview mit Sven Regener im BR-Radiomagazin “Zündfunk” eine mediale Präsenz wie nie zuvor. Viele der Akteure, die sich seit Jahren mit dem Thema auseinander setzen, sind über den Raum, die diese Debatte endlich einnimmt, sehr froh - gibt es diese doch schon seit mehreren Jahren, und sie wird auch auf recht hohem Niveau geführt.

Neben vielen anderen Forderungen an ein modernes Urheberrechtssystem ist eine, dass diese Regelungen bürgerrechtsschonend sein sollen, also ohne Überwachung der Nutzer auskommt. Es sollte sich u.a. an dem System der Pauschalabgaben messen, welches seit Jahren als Abgabe auf Drucker, Festplatten usw. existiert, aber auf das Internet übertragen werden könnte (dies ist nur ein Aspekt und der Einfachheit halber starkt verkürzt). Eine der Ideen dafür ist eine Kulturflatrate oder der Ansatz Kulturwertmark, der sich zudem noch des Problems der Verteilung Pauschalen annimmt.

Diese Ideen für neue Pauschalvergütungssyteme bedrohen allerdings das bestehende und ruft damit Widerstand hervor. Wenn man z.B. mit Kulturpolikern spricht, so fällt einem auf, dass sie immer wieder gerne auf Systeme abheben, die nur funktionieren, wenn es keine anonyme und pauschale Nutzung gibt, sondern eine, die genau nachvollziehbar ist (ob und wie technisch überhaupt machbar sei mal dahin gestellt).

Und hier sehe ich auch den Zusammenhang der Kampagne: Es geht im Kern darum, Anonymität, die für uns im Alltag selbstverständlich ist, im Netz zu diskreditieren. Dabei wird sogar in dem FAZ-Artikel wenig stringent argumentiert:

Dass diese Daten aber nicht allein aus öffentlichen, leicht zugänglichen Quellen stammen, sondern das Ergebnis von Recherche und Aushorchung sind, kann man schon an dem Beispiel des Enthüllungsjournalisten Günter Wallraff sehen. Auch er, der aufgrund seiner Arbeit besonderen Wert darauf legen muss, nicht für jedermann identifizierbar zu sein, wird von der Anonymous-Gruppe, die diese Datei angelegt hat, als Zielperson aufgeführt.

Es wird also mit zweierlei Mass gemessen: Die gute Anonymität, die für einen Journalisten bei der Recherche nötig ist und die schlechte, die im Internet. Dass es dieselbe Seite derselben Medaille ist, kommt dem Schreiber dabei nicht in den Sinn. Jedenfalls geht es auch hier wieder darum, wie bösartig die Netz-Anonymität ist.

Aber ein System, dass die anonyme Nutzung im Internet unmöglich macht, benötigt ein Komponenten, die prinziell die komplette Nutzung protokollieren und deswegen auch so vehement von den Aktivisten bekämpft werden. Es gibt da auch keine VDS-Light-Lösungen, die nur bei urheberrechtlich geschütztem Material greift, auch wenn das einige denken mögen.

Noch einmal deutlich: Ich halte nichts von irgendwelchen Listen von Leuten, die andere Meinungen haben und diese öffentlich und nachdrücklich vertreten, im Gegenteil. Aber ich frage mich schon, ob diese Liste tatsächlich das ist, was der Artikel vorgibt. Denn wenn man sich diese Liste ansieht, so stammen die Daten nicht aus einem Hack wie bei Sony oder Stratfor, sondern aus öffentlich zugänglichen Quellen - auch im übrigen bei Wallraff. Und ob das wirklich Anonymous war, ein Angry Kid, das früher mal Stress mit Abmahnungen hatte und deswegen freidreht oder vielleicht auch einfach eine False Flag-Nummer, kann man nicht so einfach ermessen.

Egal wie, es ist weit weniger dramatisch, als es in dem Artikel dargestellt wurde, wobei ich verstehen kann, dass die Leute, die dort aufgeführt, vollkommen zu Recht wenig amüsiert sein dürften. Was aber eben schon auffällt ist, dass sich die ganze Debatte von Seiten der (im übrigen recht priviligierten) Urheber um das Thema Anonymität im Netz bzw. dessen Aufweichung dreht.

Nachtrag: Ob die Krimiautoren bewusst gelogen haben oder einfach nur nicht verstanden haben, was da passiert ist, vermag ich nicht zu sagen. Es ist aber einfach eine unsinnige Ansage.

mehr...

nomeata’s mind shares

12.05.2012 10:00:00

10 years of using Debian

Today, it must have been exactly 10 years that I started using Debian. The story of how I came to Debian shows some of its strengths, so I’ll use this occasion to share it.

I spent the first half of 2002 as an high-school exchange student in Wenatchee, USA. I was already a user of Linux at that time: I made my first contact roughly in 1996 and did my first installation at home two years later, but all that time I was dual-booting and my main system was a well-arranged Windows 98. The machine was a regular tower PC, but nevertheless I put the computer into my trunk when I flew to the US. It took away most of the space, and I had to put some of my cloths inside the case.

So I was there, happily using my Windows and my manually set up “Linux From Scratch” until one day the inevitable happened; inevitable at least until you start doing backups: On April 30th, my hard drive crashed, and took the two systems together with 4 years of personal data with it.

Two weeks later I had a new hard drive and was pondering my options. I did plan to install Windows again; at that time Windows XP was just released. But I wanted a German version of Windows, which would be hard to get there. Also, I did not want to use Linux from Scratch any more, and wanted to make a well-founded choice of a distribution. On the other hand, I really wanted to get my machine up and running quickly, to be able to read my mail more comfortably. I had heard that Debian had good support for network installations (downloading a full 700MB CD was something to avoid at that time), so I grabbed some netinst images, burned a CD, and quickly installed Debian.

I was planning to use the system for about two weeks. I did not pay any particular attention to the setup. Heck, I even picked from my Simpsons sidekick machine naming scheme one that I would not miss being used up (“barney”). Nevertheless, I was using this installation for many years (and many upgrades), until I eventually switched to using laptops. In fact, that very installation is still on the machine somewhere and works. I did install Windows XP a few weeks later as well, but hardly used it. So May 12th of 2002 was when I turned into a full-time Linux and Debian user.

I soon became interested in Debian the project and started to contribute. But that is another story for another ten year anniversary blog post, most likely on October 21, 2013...


Flattr this post
mehr...

wakelift

11.05.2012 17:34:00

rapidly recolor websites by hand or automatically with colortater

Recently, someone asked me via the feedback form at the bottom of my blog whether I would be okay with them having their blog look similar to mine. I have no exclusive right to the template (it was made by someone else and provided to me for free by Viktor Persson) and I like the spirit of sharing, I gave them the go-ahead.

What I didn't expect was that the pages look so very similar, because there's not really much original design to my blog anyway like a title picture or something. I didn't want the pages to look so stunningly similar, so I decided to change my color scheme.

That's when my lazyness kicked in. I knew there were about five or six places where I'd put small variations of that tone of green that wasn't in the original template and I didn't feel I could just hack the hex codes and get a good-looking result immediately. Therefore I came up with the simplest plan that could possibly work: Create a tool that automatically classifies colors in css style sheets into groups and offer the user to interactively change them. What could go wrong?

more

mehr...

wakelift

09.05.2012 19:24:00

ipython notebook for more engaging documentation

During my work on zasim, I've found out that the most excellent IPython notebook web application is well suited for creating engaging and enlightening interactive examples and tutorials for your library, framework or program.

You can find examples for all things discussed in this article both in the IPython example notebooks and the zasim example notebooks.

Here's how it works.

Run ipython notebook in the console, perhaps supplying --notebook-dir as the place where notebooks should be kept. Then just create a few notebooks with text cells for explanations and code cells for examples. Other than full examples, that can just be run with "run all", you can also write incomplete code cells and ask the user to fill out the code, perhaps with an assertion at the end that the user has to make pass as an exercise.

But there's more to the IPython notebook than just code input and text output:

Cooler types of output

Displaying different formats in-line

The notebook can display graphics (pngs and svgs for instance) and HTML or javascript snippets as code output and you can input TeX equations in your markdown cells, that will be rendered with MathJax.

Making an object pretty-printable as a png or similar is pretty simple; you just have to implement a method like repr_png or similar that return appropriate data. Look at the documentation of IPython.core.formatters for more information on the available formats.

Displaying multiple things for one cell

If you want to display multiple things in one go, you can import the function display for objects that have appropriate repr_format methods or the different display_foo methods for png, svg, … from IPython.core.display. They can be used in loops for instance to display sequences of images in multiple lines. But we don't have to restrict ourselves to static imagery. With a little trick (that's going to be improved upon "soon"!) we can even get animations.

Displaying (crude) animations

At the moment, this is rather slow and somewhat sloppy with a bit of flickering, but you can use IPython.core.display.clear_output to remove stdout, stderr or "other" output from the cell currently being run. That "other" contains any images or snippets you have displayed with the display function.

With a bit of time.sleep and clear_output, you can make animations. But don't choose too short pauses between the frames, because the web frontend does not wait until the new image is generated and loaded before clearing the output.

With text, of course, this works more smoothly.

Cooler types of interaction

Using gui event loops

Of course, the magic behind the IPython notebook is just the same as the magic behind the qtconsole or the regular interactive shell. That means that you can run different types of event loops and control them from the notebook. For zasim that means that you can use the supplied PySide/Qt-based gui elements and let them show up on the screen. Of course there is no automagic VNC setup going on, so the gui windows will just pop up on the screen of the user where ipython notebook was called and will fail if no gui is available.

All you need to do to get the event loop running and push gui elements around is this little line in one of your cells:

%gui qt

Connecting other frontends

Since every notebook runs a stardard IPython kernel behind the scenes, you can connect any program that supports the IPython zmq protocol. That includes the IPython QtConsole and the regular interactive shell, too.

In the terminal you've started the notebook with, you'll see a couple of lines like this one:

[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing kernel-dcd04517-dd1e-4339-84e8-46ef617e26c1.json

Just supply this --existing argument to your other application and you can interact with the kernel that's running for the notebook.

Currently, commands run in the notebook won't show up in other connected frontends and vice versa, so it can get a bit confusing if you actively change state from the other connected frontend, but it's still very useful to inspect the state of the kernel.

Cooler ways of launching the notebook

Distributing example and tutorial notebooks with your library or framework has just one little problem: The user most likely won't be able to write to the notebooks and keep their changes, due to system-wide installations being read-only. And if the user can write to those notebooks, you may not want them to overwrite the example versions you distributed.

To solve this problem, I wrote a little IPython notebook launcher that creates copies of all the notebook's files and launches the notebook, as well as a browser, for those copies. I even went a little further and added the option to put customised imagery and style sheets in there, so you can brand the notebook web app with your logo or your website style.

This piece of code has a page on the IPython Cookbook section of their wiki and the version I use in zasim can be found in the github repo as well.

Keeping your docs and code in sync

One important thing is to keep the documentation up to date with changes to your internals. Of course you should be on your toes anyway every time you change something that's described in the documentation, but every now and then, one or two sentences in your documentation might slip by unnoticed and become out of date.

Using sphinx for zasim helped me in that aspect, because I can put code examples everywhere as doctest blocks that will be executed whenever the documentation is built. This already helps a fair bit, but one could go even further and add invisible doctests right next to the paragraphs that make statements to ensure that all statements in the documentation hold true even as you change your documentation.

But in addition to that, we can also run our example notebooks as unit tests. This can be done with a rather simple conftest.py file for py.test. Details can be found on the IPython cookbook page.

A large part of this has been done for me by minrk of the IPython project. Thanks!

Exporting notebooks to sphinx

At the moment, sphinx integration is not there, but according to an old blog post somewhere, it's a high priority item. I imagine there would be a plugin for sphinx that would read and/or execute an ipynb file including output cells and imagery and put it right into a sphinx document. That I'd love to see.

Until then you can use the print function in the notebook to open a print-view that you can then save using your browser as an html file with imagery.

That's not ideal, but it will certainly get better. Until then, you can do it like me and just tease your potential users with one or two screenshots.

Conclusion

All in all, the IPython notebook isn't just really useful for end users as a tool, but also for developers of anything that could be learnt through guided experimentation. It is not only more convenient than just text (which the user would have to copy-paste to a shell to try), but also more interactive, because the user can immediately change values inside the cells and re-evaluate. That gets pretty close to immediate feedback.

So do give it a try, either with the IPython example notebooks or the zasim example notebooks.

mehr...

nomeata’s mind shares

07.05.2012 13:24:00

Free Groups in Agda

I must say that I do like free groups. At least whenever I play around with some theorem provers, I find myself formalizing free groups in them. For Isabelle, my development of free groups is already part of the Archive of Formal Proofs. Now I became interested in the theorem prover/programming language Agda,so I did it there as well. I was curious how well Agda is suited for doing math, and how comfortable with intuitionalistic logic I’d be.

At first I wanted to follow the same path again and tried to define the free group on the set of fully reduced words. This is the natural way in Isabelle, where the existing setup for groups expects you to define the carrier as a subset of an existing type (the type here being lists of generators and their inverses). But I did not get far, and also I had to start using stuff like DecidableEquivalence, an indication that this might not go well with the intuitionalistic logic. So I changed my approach and defined the free group on all words as elements of the group, with a suitable equivalence relation. This allowed me define the free group construction and show its group properties without any smell of classical logic.

The agda files can be found in my darcs repository, and the HTML export can be browsed: Generators.agda defines the sets-of-generators-and-inverses and FreeGroups.agda (parametrized by the Setoid it is defined over) the reduction relation and the group axioms. Here are some observations I (disclaimer: Agda-beginer) made:

  • Fun fact: Free groups exist not only in classical logic.
  • Without any automation as in Isabelle, even simple things get quite complicated. A simple substitution of an equality with subst requires me to specify not only the equality and the term I want it to apply, but also to repeat the common part of the terms. Or when using the associativity of list concatenation, I have to pass all three sublists to the lemma. Maybe I am a bit spoiled by Isabelle, but I’d be worried that this would prevent large proofs.
  • The levels are also annoying. Although my theory stays within one level, I have to annotate it everywhere. I’d expect the type inference to figure this out for me.
  • Equality reasoning with begin ... ∎ is quite nice and surprisingly well readable.
  • Besides the additional work, it is nice to be able to do the proof in almost all detail. There is a limitation, though, as some steps are done automatically (if they happen to occur when evaluating/normalizing a term) and the others, even if similar-looking, are not.
  • It’d be great if one would be free in the choice of editor, but vim users generally have a hard time in the field of theorem provers.

If I were to extend this theory, there are two important facts to be shown: That there is a unique reduced word in every equivalence class (norm_form_uniq), and the universal property of the free group. For the former (started in NormalForm.agda) I’m missing some general lemmas about relations (e.g. that local confluence implies global confluence, and even the reflexive, symmetric, transitive hull is missing in the standard library). For the latter, some general notions such as a group homomorphism need to be developed first.

I planned to compare the two developments, Isabelle and Agda. But as they turned out to show quite things in different orders, this is not really possible any more. One motivation to look at Agda was to see if a dependently typed language frees me from doing lots of set-element-checking (see the “mems” lemma in the Isabelle proof of the Ping-Pong-Lemma). So far I had no such problems, but I did not get far enough yet to actually tell.

Thanks to Helmut Grohne for an educating evening of Agda hacking!


Flattr this post
mehr...

Chre kocht Gulasch

04.05.2012 23:26:00

GPN 12 - Beim chilligen Hacken Leute treffen und was lernen

Der Entropia e. V. lädt wieder zur "Gulaschprogrammiernacht" ein! Dieses Mal dauert der große süddeutsche Hacker-Kongress ganze vier Tage -- er beginnt mit Fronleichnam, einem gesetzl. Feiertag in Baden-Württemberg.

Zum Einstimmen:


Zum Merken:


Und jetzt: Anmelden!
mehr...

NervengiftLabs

04.05.2012 23:14:00

WordPress mit Vim benutzen

Heute wurde mir einmal mehr bewiesen, dass Vim alles kann: Ich dachte mir: “Der Editor von WordPress ist doch eigentlich doof (genauer gesagt, versuchte ich Vim-Befehle in den Editor zu tippen :D ), das geht doch sicher alles auch mit Vim.” Und mit “geht in Vim” meine ich nicht “in Vim schreiben und dann Copy-Paste”; wenn schon, dann richtig.

Geht natürlich, zuständig ist das Plugin vim(re)press.

Installation

Einfach von der Seite herunterladen und nach ~/.vim/ entpacken.

cd ~/.vim/
unzip /PFAD/ZUR/vimpress-VERSION.zip

In eurer ~/.vimrc müsst ihr dann noch einen Eintrag nach dem folgenden Schema machen:

let VIMPRESS = [{'username':'user',
            \'password':'pass',
            \'blog_url':'http://your-first-blog.com/'
            \},
            \{'username':'user',
            \'blog_url':'http://your-second-blog.com/'
            \}]

Die Passwortangabe ist optional, wenn nicht, wird man interaktiv in Vim gefragt.

Zusätzlich will man noch python-markdown oder python-markdown2 (AUR) installieren. Das ermöglicht es einem die Blogposts in Markdown-Syntax zu schreiben. Das ist deutlich angenehmer als immer HTML-Elemente benutzen zu müssen.

Benutzung

:BlogNew post

erzeugt einen neuen Blogpost aus der aktuell geöffneten Datei. An die Datei wird oben ein Header mit Meta-Informationen wie Titel, Kategorien und Tags angefügt, die man dann ausfüllen kann/sollte.

:BlogPreview local

zeigt den Blogpost lokal in HTML formatiert an (Ohne Template und CSS, wirklich nur der Artikel).

:BlogPreview publish

veröffentlicht den Artikel hingegen und zeigt ihn dann an.

:BlogSave draft

speichert den Post als Entwurf. Ohne das “draft” wird er publiziert.

:BlogList [post]

zeigt alle Blogeinträge an. Man kann einzelne auswählen und editieren. Will man den Artikel mit Markdown editieren, muss man allerdings im Header “EditType” auf “Markdown” setzen (steht vorher auf “HTML“).

:BlogOpen <Artikel-ID>/<Artikel-URL>

Öffnet einen Artikel direkt zum Bearbeiten.

Sowohl :BlogNew als auch :BlogList kann man auch mit dem Argument “page” statt “post” benutzen, um Seiten statt Artikeln zu bearbeiten.

Dieser Artikel ist natürlich in Vim geschrieben :)

 

mehr...

wakelift

04.05.2012 19:30:00

vim-coverage.py

A few days ago I stumbled upon a blog post about a perl module that generates vim signs for line coverage in perl scripts, which was based off of SimpleCov from the Ruby world. It would generate a vimscript file that would set vim marks in files that were analysed for coverage.

Since I don't use Ruby nor perl5 (although I do dabble in perl6 every now and then), I thought I could port it to Ned Batchelder's coverage.py. It turned out to be pretty simple, as coverage.py is rather well organised.

Thus, my little feature branch for vim sign output for coverage.py was born.

It might be very simple, but it does seem to work fine. Here is a screenshot of it in action:

It works like this:

# run the test suite with coverage enabled, thus creating the file .coverage
py.test --cov mymodule
# generate a vim-"report" of the coverage data
coverage vim
# then, in vim, source the coverage-data.vim file
:so coverage-data.vim

Whenever you open a new file, that's part of your coverage, you have to execute :Cov again to get the signs. When editing the files, vim will try to move the signs around, but you will have to recreate the coverage information manually from time to time.

There are things that could be done to make this more integrated with vim, but I think this'll do.

The next step is to see if I can get the code accepted in upstream coverage.py and get support for it into pytest-coverage, too.

mehr...

NervengiftLabs

03.05.2012 17:10:00

codestre.am vs shelr.tv

Nach meinem Artikel über Shelr.tv bin ich darauf hingewiesen worden (Danke an Timo für den Tipp), dass ich mir doch mal codestre.am anschauen soll.

codestre.am funktioniert im Prinzip ähnlich wie shelr, d.h. man kann Dinge, die man in einer Shell tippt (und was ausgegeben wird) mitschneiden und als ein “Video” speichern.

Im Gegensatz zu shelr, kann codestre.am allerdings Livestreams. Sehr nettes Feature. Online kann man dazu auch chatten, fehlt eigentlich nur noch Voice-Chat (aber das kann man ja auch anders lösen).

Um Aufnahmen mit codestre.am zu machen müsst ihr euch zuerst auf der Website anmelden und eine neue Aufnahme erstellen. Dann bekommt ihr einen Befehl, den ihr ausführen sollt; der sieht ungefähr so aus:

curl get.codestre.am/xxxxxxxxxxxxxxxxxxxxxxxxx | sh

Ihr bekommt also für jedes “Video” ein eigens generiertes Shellskript. Sobald es ausgeführt wird, öffnet sich eine neue Shell, die dann live gestreamt wird. Schließt man die Shell, wird die Übertragung beendet. Durch erneutes Starten des Skripts kann man sie allerdings fortsetzen. Um einen Stream ganz zu schließen, muss man ihn online als abgeschlossen markieren. Dann wird er in ein “Video” konvertiert und kann jederzeit wiedergegeben werden.

Lokal Aufnahmen zu speichern, wie in shelr ist nicht möglich, allerdings lassen sie sich als privat markierten, sodass man sie nur mit dem passenden Link ansehen kann. (Das Feature hat shelr inzwischen auch bekommen).

Hier noch eine kleine Gegenüberstellung ohne Anspruch auf Vollständigkeit:

codestre.am

shelr.tv

  • Livestream
  • Livechat
  • Man kann gut Text aus dem Player kopieren*
  • Embedding von Aufnahmen
  • private Aufnahmen
  • etabliert, d.h. viele durchsuchbare Aufnahmen, zu verschiedenen Themen
  • Aufnehmen sind in “Echtzeit”, d.h. lange Pausen im Stream bleiben erhalten
  • - Pfeiltasten funktionieren in ncurses-Oberflächen nicht
  • Lokale Aufnahmen (ohne Anmeldung)
  • Lokales Abspielen
  • Kommentieren anderer Aufnahmen
  • Embedding von Aufnahmen
  • private Aufnahmen
  • das Format beinhaltet keine Pausen**

* beide Player funktionieren zwar auf HTML-Basis, im shelr-Player passieren allerdings manchmal komische Dinge, wenn man Text auswählen will
** das heißt nicht, dann es keine Pausen gibt, nacheinander Eingegebenes wird auch nacheinander ausgegeben, es gibt allerdings keine langen Pausen, wenn man lange nichts tut

Besonders die Livestream-Funktion hat mich an codestre.am sehr begeistert, aber manchmal will man aber vielleicht auch einen lokalen Client haben, um Aufnahmen zu machen und zu verwalten. Dann muss man eben zu shelr greifen.

Wenn man fertige Aufnahmen sucht, dann ist man auf jeden Fall bei codestre.am besser bedient, da es dort schon eine große Auswahl (sogar nach Programmiersprache sortiert) gibt. Schön wären allerdings Aufnahmen mit Audiospur, die leider beide nicht liefern.

mehr...

Hanno's blog

03.05.2012 16:27:00

Zu Vroniplag und Annette Schavan

Gestern früh machten erste Meldungen die Runde, dass in einem anonymen Blog Vorwürfe erhoben wurden, Annette Schavan (CDU) habe in ihrer Dissertation abgeschrieben. Dass der Fall eine gewisse Brisanz hat, dürfte sofort klar sein: Immerhin ist Schavan Ministerin für Bildung und Forschung.

Die erste Reaktion der Ministerin bestand darin, dem Urheber der Vorwürfe seine anonymität anzukreiden. Ein typischer Ablenkungsversuch, was mir schon ein starkes Indiz dafür schien, dass die Vorwürfe stimmen werden. Es ist schließlich völlig egal, wer aus welchem Grund und mit welchen Mitteln derartige Vorwürfe erhebt. Relevant ist einzig und allein die Frage ob die Vorwürfe korrekt sind oder nicht.

Im Laufe des Tages gab es aber eine nicht unspannende Wendung in der Geschichte. Die Macher der Internetseite Vroniplag meldeten sich zu Wort. Die Arbeit von Vroniplag hat in der Vergangenheit zahlreichen Prominenten wie der EU-Abgeordneten Silvana Koch-Mehrin (FDP) den Doktortitel gekostet, die Macher haben sich inzwischen bei vielen einen guten Ruf erarbeitet. Vroniplag erklärte nun, sie hätten die Dissertation ebenfalls untersucht und seien in einer knappen Abstimmung zu dem Schluss gekommen, die Vorwürfe nicht zu veröffentlichen. Vroniplag-Aktivistin Debora Weber-Wulf bezeichnete die Doktorarbeit im Spiegel als "problematisch", aber sie sei kein mit anderen Fällen vergleichbares Plagiat. Es scheint wohl so, dass einzelne Sätze übernommen wurden, bei denen man eine Quellenangabe erwarten würde, aber eben kein Betrug in großem Stil.

Offenbar fährt Vroniplag hier eine Strategie der Form "Alles oder nichts". Plagiate werden nur dann veröffentlicht, wenn sie eindeutig sind. Ich finde das eigentlich keine sinnvolle Strategie. Was spräche dagegen, wenn Vroniplag in solch einem Fall mit einer eben differenzierten Meldung an die Öffentlichkeit geht? Was andere daraus machen - die Universität, die Politik oder auch nur die allgemeine Öffentlichkeit - bleibt dann denen überlassen.

Klar, ein Problem ist, dass eine solche Meldung schnell ein Eigenleben entwickeln könnte und alle abwiegelnden Worte es nicht in Presseberichte schaffen. Vroniplag hat sich in der Vergangenheit einen Ruf erarbeitet: Wenn dort eine Arbeit als Plagiat bezeichnet wird, stimmt es meistens. Insofern ist es verständlich, dass die dort aktiven sehr vorsichtig mit solchen Grenzfällen umgehen. Sie aber zu verschweigen ist meiner Meinung nach auch keine sinnvolle Lösung.

Die Universität Düsseldorf, an der die Dissertation geschrieben wurde, wird die Vorwürfe nun untersuchen. Das ist gut so. Vielleicht finden sie weitere Plagiate, vielleicht stellen sie fest, dass die Arbeit zwar problematisch, aber im Rahmen des tolerierbaren ist, vielleicht kommen sie zu einem ganz anderen Schluss. Aber die jetzt erfolgte Veröffentlichung des Sachverhaltes ermöglicht es der Universität überhaupt erst, sich eine eigene Meinung zu bilden.
mehr...

NervengiftLabs

23.04.2012 13:18:00

Shell-”Videos” aufnehmen und teilen mit shelr.tv

Wenn man in Tutorials oder Forenbeiträgen mal ein paar Terminalbefehle wiedergeben will, dann schreibt man sie meistens ja einfach nacheinander hin. Manchmal will man aber eigentlich auch zeigen, wie das Ganze aussehen soll, wenn es richtig ist. Und grade, wenn man Programme erklären will, die etwas Interaktion erfordern, wär es doch eigentlich toll, wenn man einfach das ganze Prozedere aufzeichnen und mit anderen teilen kann.

Shelr.tv machts möglich:

Shelr liefert ein Terminalprogramm, das man im AUR findet, oder über rubygems mit

sudo gem install shelr

installieren kann.

Nach dem Aufruf mit

shelr record

wird erst nach einem Namen für die Aufnahme gefragt und dann eine neue Shell startet. Alles, das in dieser Shell ausgegeben wird, und alles, das (sichtbar, d.h. keine Tastenkombinationen oder Passwörter) eingegeben wird, wird mitgeschnitten und gespeichert. Mit Strg-D, oder durch Beenden der Shell, wird die Aufnahme beendet. Gespeicherte Aufnahmen kann man mit

shelr play last/<ID>

wiedergeben, wobei <ID> entweder eine lokal gepeicherte, oder die URL einer auf shelr.tv veröffentlichten Aufnahme sein kann. Hochgeladene “Videos” kann man auch auf der Seite anschauen, da gibts auch ein paar Beispiele.

Eigene Aufnahmen kann man, nachdem man sich auf der Seite angemeldet hat und den API-key mit

shelr setup &lt;API-KEY&gt;

eingetragen hat, mit

shelr push last/&lt;ID&gt; [--private]

hochladen.

 

mehr...

NervengiftLabs

22.04.2012 11:51:00

Gamepad auf Tastatur mappen

Aus Langeweile habe ich mal meine HumbleBundle-Käufe durchgeschaut und nach Spielen gesucht, die ich noch gar nicht gespielt habe. Bit.trip.runner war eins davon (übrigens ein saugeiles Spiel, wers nicht hat: kaufen!). Das wollte ich dann auch gleich spielen. Dummerweise wurden im Spiel bei meinem Gamepad (das ich ja beim Bau des letzten Buzzers so pfleglich behandelt habe, dass es sogar noch nutzbar ist) nicht alle Tasten richtig erkannt/belegt und mit der Tastatur will man das Spiel eigentlich nicht spielen…

Einfachste Lösung: qjoypad (sourceforge.net oder AUR).

Nach dem Start findet man ein neues Icon im Tray. Mit einem Klick darauf öffnet sich ein Fenster, in dem man jede Achse und jeden Knopf mit Tasten oder Mausachsen belegen kann. Man kann auch verschiedene Konfigurationen speichern.

Wenn das Terminalfenster, in dem qjoypad läuft, den Fokus hat, werden dort auch alle Joystick-Events ausgegeben. Man muss allerdings zu den angezeigten Achsen- und Buttonnummern immer +1 rechnen, um zu wissen, welche man in der GUI belegen muss.

mehr...

NervengiftLabs

19.04.2012 17:50:00

Humble Botanicula Bundle

Dieses Mal gibt es bis zu vier Spiele für  Mac, Windows und Linux und außerdem auch einen Film zum selbstbestimmten Preis.

Das Humble Botanicula Bundle besteht aus drei liebevoll gestalteten point-and-click-adventure-Spielen von Amanita DesignBotanicula, Machinarium und Samorost2. Zahlt ihr mehr als der Durchschnitt (aktuell 8.63$), bekommt ihr noch das Spiel Windosill, auch ein point-and-click-Puzzle, und den Film Kooky. Der mit Stop-Motion und Puppen gedrehte Film handelt von einem verlorenen Teddybär, der auf der Suche nach seinem Zuhause ein großes Abenteuer erlebt. (Ich hab ihn mir noch nicht angesehen, aber der Trailer sieht nicht schlecht aus.)

Im Gegensatz zu den bisherigen Bundles ist der Charity-Teil diesmal durch The World Land Trust, die sich um den Schutz des Regenwalds und anderer bedrohter Lebensräume kümmern, abgedeckt.

Wie immer könnt ihr die Verteilung des Geldes selber einstellen.

Steam-Keys gibts natürlich auch dazu :)

mehr...

halcy.de v4

12.04.2012 16:48:00

Revision 2012

The 2012 edition of Revision, a demoparty held annually in Saarbrücken (Germany), has come and gone. SVatG was there with record attendance (4 people!), and for once, we’d actually prepared something before the party, which is not something that usually happens - and this time, two releases!

Please enjoy:

Peridiummmm (A demo for the STM32F4 ARM-based µC)

[Pouet]- [Binary (Arm Cortex M4)]- [Source Code]

Blockparty 5 Non-Invitation

[Pouet]- [Binary (Windows)]

Meeting up with everyone (esp. Saga Musix) was great, of course, but this time, the best part was going to the party with people from my actual demo group, especially nrr, who flew over here just for the party! (Also, Mithaldu, who was spontaneously recruited at the party place).


Left to right: Mithaldu - nrr - ryx - halcy (with las^mercury sprinting in back)

Having finished up before the party, we of course didn’t party code any super dumb party prods filled with ridiculous jokes, a practice we at SVatG despise.

Finally, my favourite release from the party:

Boogietown by Ghostown & RNO

Overall, kickass party, hope to be there again next year. For me, the next party will most likely be Evoke, though I would really, really like to go to Assembly this year and see WAHa_06x36.

mehr...

NervengiftLabs

12.04.2012 14:30:00

Bubbletea-Bubbles selber bauen

Heute mal eine etwas andere Anleitung:

Mein Bruder ist grad voll süchtig nach diesem BubbleTea-Zeug. Letzte Woche hat er mich ewig angenörgelt, ich solle ihm doch einen ganzen Eimer mit dem Zeug bestellen.

Fand ich sinnlos.

Zwei Tage später kamen dann die Chemikalien zum Selbermachen. Das ist nicht sinnlos. :)

Für das Zeug braucht man nur zwei Dinge: Alginat (Handelsname “Algizoon“) und etwas um eine ionenhaltige Lösung zu erzeugen, z.B. Calciumlactat (“Calazoon“). Insgesamt zahlt man knapp 30€ für 300/400g. Das gibt einige Kilo Bubbles, fehlt nur noch eine Maschine, die alles vollautomatisch macht :)

Für einfache Bubbles rührt man sich zwei Lösungen an:

Beides gut verrühren, gerade das Alginat braucht etwas länger um sich ganz zu lösen.

Die Alginatlösung kann man dann mit ca. 100-150 ml Saft, Sirup oder auch Alkohol mischen. Dann muss man diese Lösung nur langsam in die Calciumlösung tropfen. Es bildet sich dann sofort eine Schicht um den Tropfen.

Mit einer Spritze kann man schnell kleine Bubbles machen

Mit einer Spritze oder Pipette kann man die Lösung ganz gut portionieren, allerdings werden die Bubbles, die dabei entstehen ziemlich klein. Bisher ist die beste Lösung für größere Bubbles, die leicht viskose Alginatlösung langsam den Löffel herunterlaufen zu lassen, so dass sich unterm Löffel ein Tropfen bildet (s.Bild) und dann in die Calciumlösung fällt. Mit ein bisschen Übung lassen sich so einigermaßen schnell viele Bubbles machen.

Mit etwas Übung kann man mit einem Löffel schöne große Bubbles herstellen

Nach ein paar Minuten (am besten immer wieder testen) ist die Schicht um die Bubbles dick genug und man kann sie aus der Lösung fischen. Danach sollte man sie mit viel klarem Wasser abspülen, sonst haben sie bald die Konsistenz von Gummibällen :)

Gut abspülen ist wichtig

Die Bubbles kann man dann mit Eistee/Saft/Sirup/… aufgießen und mit dicken Strohhalmen servieren.

Statt für Bubbles kann man mit Alginat aber auch ein paar andere nette (und/oder eklige) Sachen machen. Zum Beispiel kann man eine Alginatlösung mit Sirup und nach Bedarf auch Alkohol anrühren und in ein Schnapsglas füllen. Wenn man dann ein bisschen von der Calciumlösung dazugibt, hat man ein leckeres Gelee. Sieht besonders cool aus, wenn man mehrere farbige Gelees schichtet.

Omnomnom! Buntes Gelee

Am Ende unserer ersten Experimentier-Session haben wir dann noch die Reste an Alginatlösung in die Calciumlösung gekippt… das Ergebnis ist was für ne Halloween-Party:

Schwabbel-Gedärme :)

mehr...

Zeitgeistaustreibung

06.04.2012 13:51:00

Eigentum und andere Dinge

Das Eigentum wie wir es kennen ist im Wandel. Es ist eine schleichende Revolution und ich bin mir ganz sicher, viele werden dies zunächst als steile These abtun - aber es tut sich was und das nachhaltig, da bin ich mir sicher. Doch von vorne:

Seit einigen Monaten lebe ich in einem Zustand, den man für konservative Menschen aus der Generation meiner Großeltern getrost als "Ohne festen Wohnsitz" beschreiben könnte. Das heisst nicht, dass ich nicht wüsste, wo ich heute Nacht schlafen soll. Oder morgen Nacht. Aber das Gefühl eigener vier Wände, und vor allem eigener Möbel und Dinge, das gibt es gerade nicht. Zuerst waren es bauliche Maßnahmen in meiner Karlsruher Wohnung, dann mein Umzug nach Hamburg. Ich bin hier gut untergebracht, keine Sorge. Aber darum geht es hier nicht. Vielmehr um all das, was die letzten Monate mit meinem Bewusstsein angestellt haben.
Continue reading "Eigentum und andere Dinge"
mehr...

Hanno's blog

05.04.2012 17:35:00

Sodom, Gomorra und Schach

SchachEs ereignete sich im mittelfränkischen Weißenburg: Ein paar Schachspieler wollten dort die mittelfränkische Meisterschaft des traditionellen Brettspiels am verlängerten Osterwochenende durchführen. Eine kaum verwerfliche Angelegenheit, sollte man meinen.

Anders sah das allerdings die beiden Groß-KirchenSekten. Schachspielen an Karfreitag - und das mitten in Bayern - das geht schließlich nicht an. Immerhin werden da Damen geschlagen, Bauern geopfert und Türme gezogen - sündiger geht's wohl kaum. Der Bürgermeister des Ortes hatte gerade schon einen Streit mit den Vertretern des katholischen und evangelischen Fundamentalismus hinter sich und fragte in vorauseilendem Gehorsam bei den Kirchenvätern um Erlaubnis, den sündigen Schachspielern eine städtische Halle zu vermieten. Die Kirchenoberen verweigerten diese prompt.

Ich bin ein entschiedener Befürworter von Religionsfreiheit. Jeder Mensch hat das Recht zu glauben was er will, egal wie sinnlos das auch sein mag. Aber die Misere hier ist die, dass Vertreter von Religionsgemeinschaften fordern, dass ihre Regeln auch für andere Menschen zu gelten haben. Da ist eine Grenze überschritten und das bezeichne ich bewusst und deutlich als Fundamentalismus. Egal ob es um Muslime geht, die anderen das Zeichnen von Karrikaturen verbieten wollen oder um Christen, die meinen, an ihren Feiertagen entscheiden zu können, was andere Menschen tun dürfen. In vielen Gegenden Deutschlands gilt beispielsweise noch immer ein Tanzverbot an manchen christlichen Feiertagen.

Die Giordano Bruno Stiftung Mittelfranken ruft aus Anlass der Provinzposse zum Kirchenaustritt auf. Einen Aufruf, den ich nur aus vollem Herzen unterstützen kann.

Bildquelle: Roland Scheicher auf Wikimedia Commons, gemeinfrei
mehr...

The Turkey Curse

03.04.2012 09:55:00

Über (vermeintliche) Nähe der Netz-Vereine zu Parteien

Gestern wurde die Gründung des Vereins CNetz an verschiedenen Stellen kommentiert, einem Verein, der maßgeblich von CDU/CSU-Bundestagstagsabgeordneten gegründet wurde. Damit ist nun ein zweiter Verein dieser Art nach D64, dem Pendant der SPD, im Kontext einer Partei gegründet wurde. Ich persönlich finde es gut, wenn solche Vereine entstehen, denn das zeigt ganz offensichtlich, dass so langsam alle möglichen politischen Grupprierungen verstanden haben, welche Bedeutung das Netz für die Gesellschaft besitzt. Jedenfalls heisse ich diesen Verein, genau wie D64, herzlich willkommen und freue mich über möglichen Austausch.

Der von mir sehr geschätzte Kai Biermann hat in dem Artikel Unionspolitiker gründen Internetlobby CNetz auf Zeit Online folgende (bewusst vorsichtig formulierte) Aussage getroffen:

Damit existieren nun drei netzpolitische Vereine, die jeweils einer Partei nahe stehen: die Digitale Gesellschaft, deren Mitglieder teilweise auch Mitglied bei den Grünen sind, die Initiative D64, die eng mit der SPD verflochten ist und eben CNetz, dessen Vorstand aus Unionsmitgliedern besteht.
Deswegen sehe ich mich genötigt, etwas zu meiner persönlichen Sicht der “Parteinähe” der Digitalen Gesellschaft zu Bündnis 90/Die Grünen zu schreiben.

Es ist richtig, dass bei der Digiges einige Mitglieder der Grünen dabei sind. Es gibt aber schon augenscheinlich einen fundamentalen Unterschied, den Kai auch klar macht: Beim CNETZ und bei D64 sind es Mandatsträger und Parteifunktionäre, die dort einen Verein gegründet haben, während es bei der Digiges eher “Fußvolk” ist, also Leute, die bei den Grünen keinerlei Funktionen oder Mandate haben, ja soweit ich weiss nicht einmal sowas wie Sachverständige Bürger sind.

Eine Ausnahme scheint oberflächlich betrachtet Markus’ Teilnahme an der Internet-Enquete für die Grünen sein, aber das heisst in etwa genauso viel wie die Teilnahme Constanzes für Die Linke oder padeluun für die FDP, nämlich nur, dass diese Parteien Leute dort haben wollten, die vor allem durch Kompetenz glänzen und mit ihnen nicht vollkommen in Widerspruch stehen. Aber diese Enquete ist eine Besonderheit im politischen Betrieb und muss auch so gesehen werden.

Ich würde übrigens sogar soweit gehen, dass die Digiges auch ohne die Existenz der Grünen bestehen würde und der parteipolitische Zusammenhang tatsächlich viel zufälliger ist, als es den Anschein haben mag.

Die Digitale Gesellschaft speist sich aus Leuten, die alle ihre Erfahrungen in Aktivitäten rund um Bürgerrechtsgruppen oder spezialisierten bzw. technikzentrierten Gruppen und Vereinen gemacht haben. Die Notwendigkeit zur Gründung im letzten Jahr erfolgte, soweit ich das beurteilen kann, aus der Einsicht, dass Gruppen wie die AKs, der CCC oder andere zwar alle durchweg ganz hervorragende Arbeit leisten, aber innerhalb dieser Gruppen viel und oft episch über eigentlich Selbstverständliches gestritten wird und teilweise persönliche Animositäten eine Rolle spielen. Nicht falsch verstehen: Ich habe grundsätzlich überhaupt gar kein Problem damit, denn ich bin bekanntermaßen ein Freund des auch ausufernden Diskurses, und diese Gruppen leisten nach wie vor Erstaunliches. Ohne sie wäre so manche politische Entscheidung gefällt worden, die nachhaltige, negative Probleme geschaffen hätten. Dafür bin ich überaus dankbar. Aber die Schlagkraft dieser Gruppen leidet etwas unter diesen Diskussionen, und nur wenige Mitglieder in diesen Gruppen haben Bock, sich die ständig wiederholende, anstrengende und aufreibende Arbeit im Rahmen einer Lobbyarbeit zu geben, die grade so dringend nötig ist.

Ich bin nun seit knapp vier Monaten Mitglied in der Digiges und habe vor allem eine Erfahrung gemacht: Die Signal-Noise-Ratio ist so ganz anders, als ich das bislang gewohnt bin. Das liegt u.a. daran, dass über bestimmte Dinge einfach nicht diskutiert werden muss. Es ist beispielsweise schlicht unnötig, darüber zu streiten, ob das Fluggastabkommen nun auch was Gutes hat. Nein, es ist den Beteiligten klar, so dass man sich innerhalb der Digiges darauf konzentriert, konkrete, schlagkräftige Aktionen dazu zu initiieren. Ich geniesse das sehr, denn ich habe selten in diesem Umfeld eine so effektive Arbeit erlebt (und ich kenne mittlerweile viele solcher Gruppen).

Damit das so schlagkräftig funktionieren kann, ist diese Gruppe weniger offen als andere, was nach wie vor bei einigen Leuten für Unmut sorgt. Wenn es sowas wie ein Auswahlkriterium bei der Digiges gibt, dann ist es die Fähigkeit, anzupacken und Projekte durchzuziehen statt dem üblichen “man müsste mal”, das in anderen Gruppen teilweise für viel Gerede und vergleichsweise dann doch wenig Ergebnisse sorgt - zumindest gemessen am Aufwand. Die Digiges verzichtet schlicht auf Leute, die sich mit der Mitgliedschaft im Verein schmücken, aber ansonsten nichts gebacken bekommen. Deswegen ist die Digiges aus meiner Sicht auch so erfolgreich, obwohl die Anzahl der Mitglieder eigentlich lächerlich gering ist. Es gibt auch keine öffentlichen Listen, bei der jeder Spinner seine Erkenntnisse über Gott und die Welt zum besten geben kann, weil das den Betrieb nur unnötig aufhält und wirklich rein gar nichts bringt.

Diese augenscheinliche Intransparenz bietet, wie gesagt, viel Angriffsfläche, aber ich muss sagen, diese Anwürfe gehen mir vollkommen am Arsch vorbei - frei nach dem Motto: Besser machen! Die beiden Vereine CNetz und D64 haben sich u.a. auch deswegen gegründet, um genau das zu tun. Ob sie es schaffen liegt aber letztendlich im Auge des Betrachters.

Auch ich bin ein Mitglied der Grünen, habe dort meinen Spass und fühle mich dort sehr wohl. Ich bin in der Partei zur Zeit vor allem in die Diskussionen um die Reform des Urheberrechts involviert, die laut und leidenschaftlich vor allem zwischen den Medien bzw. Netzpolitikern und den Kulturpolitikern geführt wird, aber natürlich auch in andere Diskussionen in dem Umfeld, die ins technische Abgleiten und letztendlich Bürgerrechtsdiskussionen sind (z.B. Staatstrojaner, VDS u.v.a.m.).

Die Grünen sind aber eben eine Partei, die wie alle anderen um Mandate kämpft und sich regierungsfähig halten will - und damit zu (auch schmerzhaften) Kompromissen bereit sein muss. Auch damit habe ich prinzipiell gar kein Problem, denn das ist das politische Spiel, also der Wettstreit um Ideen und deren Umsetzung sowie der Übernahme politischer Verantwortung, die damit einher geht, die schlicht was anderes ist als ein “wünsch dir was”, das man sich als NGO oder rein oppositionelle Gruppe leisten kann.

Ich weiss auch, dass ich gar nicht Mitglied in dem Laden sein müsste, um mich dort so zu beteiligen wie es grade tue (so ticken die Grünen nunmal schon immer und hat mit ihrem Selbstverständnis zu tun), aber ich sehe auch ausserhalb meiner politischen Kernthemen sehr viel Überschneidungen, die ich mit anderen Parteien nicht habe - sei es vom Stil her, von der Programmatik oder im Umgang miteinander. So schätze ich es z.B. sehr, dass ich, egal welche Frage ich stelle, oft von den Abgeordneten oder deren Mitarbeitern direkt kontaktiert und mit Informationen versorgt werde - selbst dann, wenn ich dort eine vollkommen andere Meinung vertrete als der betreffende Politker und wir uns im innerparteilichen Wettstreit miteinander befinden. Das ist mir so bei den Piraten nicht untergekommen (dort bedeutet ein Unterschied in der Meinung oft eher Ad Hominem-Attacken und Intrigantentum) und weiss auch nicht, wie das in anderen Parteien läuft. Aber egal, ich bekomme bei den Grünen das, was ich brauche, und das sind vor allem erst einmal Informationen und bin gerne bereit, dort meine Erkenntnisse und Meinung in die Diskussion einzubringen - mit wechselndem Erfolg. Aber man kann mir ganz sicher nicht unterstellen, ich sei ein Parteisoldat.

Die Digiges ist in meiner Wahrnehmung nach jedenfalls der EDRI, dem CCC und den AKs wesentlich näher als den Grünen. Und auch innerhalb der Grünen, beispielsweise aus der Kulturecke, wird die Digiges eher als natürlicher Gegner denn als Verbündeter gesehen, und das wohl auch zurecht. Denn die Digiges nimmt kein Blatt vor den Mund und greift selbstverständlich auch die Grünen heftig an, wenn dort seltsame Diskussionen stattfinden und komische Entscheidungen gefällt werden. Die Digiges begreift die Grünen am Ende des Tages wie jede andere Partei auch: Als einen Akteur, der eine Menge Unsinn verzapft, wenn man nicht genau aufpasst.

Wenn die blosse Parteimitgliedschaft einiger Mitglieder schon als Parteinähe einer Organisation gesehen wird und hier keinerlei Unterschied macht, dann müsste der CCC mittlerweile eine parteinahe Organisation der Piraten gelten. Denn immerhin ist dort mit Maha ein Mitglied der Piraten im Vorstand, sogar eines, dass in den Medien viel Beachtung findet. Aber jeder, der den CCC kennt, sollte wissen, dass das Quatsch ist. Der CCC begreift sich von jeher als überparteilich und handelt als Organisation auch so. Für den CCC sind auch die Piraten eine Partei wie jede andere und wird auch so behandelt: Man kann miteinander reden, aber die Piraten geniessen eigentlich keinerlei Sonderstellung (vielleicht letztendlich eher sogar im Gegenteil).

Genau das war auch für mich damals der Grund, als ich für ein Mandat im NRW-Landtag angetreten bin, meine Aktivitäten innerhalb des Clubs während der Zeit komplett einzustellen, weil ich, obwohl ich mich für moralisch soweit integer halte, um dort ein Trennung der Aktivitäten zu vollziehen, trotzdem wohl nicht hätte verhindern können, dass dem CCC etwas unterstellt wird und ich am Ende für die Partei innerhalb des Vereins irgendwie geworben hätte. Das halten übrigens die Piraten im Abgeordnetenhaus Berlin, die CCC-Mitglieder sind, meiner Wahrnehmung nach auch so, und das ist richtig, und dasselbe gilt auch für Maha, der dort eine klare Trennlinie zieht.

Es ist jedenfalls ganz klar etwas vollkommen anderes, wenn Mandats- und Funktionsträger in solchen Vereinen maßgebliche Mitglieder sind als einfache Parteimitglieder. Denn diese Mandats- und Funktionsträger mögen eine andere Meinung vertreten als ihre Parteien, kämpfen aber am Ende um Macht und Einfluß innerhalb ihrer Partei oder im parlamentarischen Betrieb. Ich finde es auch ehrlich gesagt ein wenig befremdlich, wenn Politiker in Lobbyorganisationen tätig sind, die diese Netzvereine nun einmal sind. Denn sie haben ganz andere Möglichkeiten, politische Aktivitäten zu entfalten, indem sie gezielt Anfragen stellen, bezahlte Mitarbeiter haben, die ihnen helfen und auch sonst ein Menge Instrumentarien haben, um ihre politischen Ziele auf die Bühne zu bringen: Sie können ihre Standpunkte sehr direkt ohne Umwege in die Fraktionen und Parteien einbringen und sollten solche Vereine eigentlich gar nötig haben, denn diese Vereine sind ja grade ein Art Gegenentwurf und verstehen sich eher als ausserparlamentarische Opposition und Lobbyist für Bürgerrechte.

Von daher hat Kai mit seiner vorsichtigen Formulierung in dem Artikel zwar irgendwie recht, aber trotzdem entsteht ein Eindruck, den ich für falsch halte.

Nachtrag: Nach der Veröffentlichung des Artikels ist mir klar geworden, dass mit Jonas Westphal bei der Digiges der Netzpolitische Sprecher der Berliner SPD Mitglied ist. Das zeigt einmal mehr, wie wenig Parteipolitik in der Digitalen Gesellschaft eine Rolle spielt, wenn ich das nicht einmal mitgekommen habe :)

mehr...

Hanno's blog

27.03.2012 23:17:00

Ancient streamed audio formats

I've promised that I'll dig into some old file formats and check how well they can be accessed on today's systems with free software.

Today, I'll start with audio formats. To begin, in general there are two kinds of audio formats. Streamed audio formats start with a more or less raw audio stream, apply some encoding and sometimes (lossless or lossy) compression. There are also tracker audio formats. They have internal information on tone pitches and instruments. Most really old computer audio files are tracker formats (like the popular C64 SID format). This blog post will be about streamed audio formats and I'll save the tracked ones for a later one.

The file formats I've chosen are more or less random, the main criteria being that I once stepped over them and still remember that. There's a hughe collection of all kinds of media file samples on the mplayer server.

The single most important project regarding exotic audio or video formats is ffmpeg, a library that does despite its name much more than decoding mpeg. All major free software media players use ffmpeg.

The file formats I've investigated:
  • Some of the very first files distributing music through the Internet I remember were real audio files (extension .ra or .rm) from the german punk band WIZO. Real audio has a whole bunch of variants, scanning through some of my old backups, most of them used either AC-3 or Real Audio 2.0 as their codec. Thanks to Waybach Machine, you can still find the WIZO downloads (Raum der Zeit - Techno is AC-3, the others are RealAudio 2.0).
  • vqf (or TwinVQ) was once announced having better quality than MP3 and was discussed as its successor. However, it seems it is almost completely distinct today, I didn't find anything at all (except in the above mentioned sample collection) in vqf format for download.
  • Monkey's audio, extension .ape, is a lossless audio codec, which is itself licensed under some kind of noncommercial-use-only license that doesn't qualify as free software. It's not really old, as it's still being developed, but I added it as another example of an uncommon format.
  • Shorten (extension shn) is an old lossless audio format, which was often used by the etree project that collects recordings of concerts. Today, it is mostly deprecated by flac, but the old recordings are still available.
  • voc: The popular dos floppy copying program vgacopy had sound before I had a soundcard - it used the pc speaker to play .voc files it had shipped. It's a format used by some Creative software for their SoundBlaster. It's a more-or-less raw audio format like wav.
ffmpeg is able to decode and play all of these audio codecs. But what I found out was that this doesn't necessarily mean every application using ffmpeg can do this as well. I've tested mplayer, xine, vlc, audacious and totem (based on gstreamer). Although there are quite many free software media players - both for audio and video - out there, this should cover pretty much everything. Most media players use xine, vlc or gstreamer indirectly.

 mplayerxinevlcaudacioustotem/gstreamer
ra AC3YesNoYesYesNo
ra 2.0YesNoNoYesNo
vqfYesNoYesYesNo
apeYesNoNoYesYes
shnYesYesNoYesYes
vocYesScratchyScratchyNoNo

Shorten playback has some problems, seeking often does not work, but this seems to be a limitation of the format itself. If I found feature requests for those formats, I've linked them, I also opened a bunch of them myself.

Conclusion: ffmpeg does a really fine job in playing all the obscure audio streaming formats. However, not every player that's based on ffmpeg plays every format ffmpeg can play. mplayer is the only player that succeeds with everything, probably because mplayer's devleopment is very tightly related to ffmpeg's development.

Update: I forgot to mention libav. It is a fork of ffmpeg. However, there's not that much to say, as ffmpeg and libav are still quite similar in their codec support. audacious does not support libav yet, all other apps just produce the same result.
mehr...

Zeitgeistaustreibung

25.03.2012 18:53:00

Wo sind all die Utopien hin?

Es geht hoch her in den Internet-Debatten. Sei es die spackenkritische Privatsphäria, seien es Anonymous, seien es Diskussionen um Verteidigungskämpfe und wie diese zu führen seien, sei es das ganze Ding mit dem Urheberrecht, der Kulturwertmark und der Abschaffung von allem. Ich habe etwa 2007 mein Engagement in Sachen Netzpolitik von "jede freie Minute" auf "wenn es passt" zurück geschraubt und wenn ich mir das ganze Ding so angucke, viel hat sich nicht verändert.

Wir, und ich meine hier alle, die sich progressive Gedanken zur sich verändernden Welt machen, diskutieren immer noch um die gleichen Dinge, wir führen einen Verteidigungskampf nach dem anderen. Und das meistens unglaublich spät, ACTA war schon damals ein Thema, die Vorratsdatenspeicherung auch. Aus welchem Grund auch immer hat die Politik es geschafft, unsere Geschwindigkeit an die ihre anzupassen.

Continue reading "Wo sind all die Utopien hin?"
mehr...

NervengiftLabs

19.03.2012 23:15:00

Humble Bundle for Android #2

Es ist schön zu sehen, dass es immer mehr tolle Indie-Games auch auf Androidgeräte schaffen.

Das aktuelle Humble Bundle bietet wieder 5 Spiele für Android, Linux, Mac und Windows zum selbstbestimmten Preis. Steam Keys bekommt man auch.

Diesmal gibt es:

Außerdem unterstützt man wie immer den Guten Zweck (EFF und Child’s Play)

Wer jetzt immer noch nicht überzeugt ist: hier das offizielle Promo-Video (englisch)

mehr...

NervengiftLabs

14.03.2012 14:00:00

Compositing mit i3

i3 benutzt man ja eigentlich nicht unbedingt aus ästetischen Gründen, auch wenn es mit einem schönen GTK-Theme (ich empfehle Ubuntus “Ambiance” aus dem AUR-Paket “light-themes“) durchaus schick aussehen kann.

Aber eigentlich können ein paar dezente Effekte auch nicht stören, finde ich. i3 kann von Haus aus leider kein Compositing, das lässt sich aber leicht mit xcompmgr aus dem gleichnamigen Paket nachrüsten.

xcompmgr -cf -r 0 -D 6

gibt einen leichten Überblendeffekt beim Wechseln der Arbeitsflächen und Öffnen von Fenstern. Der Parameter -r 0 deaktiviert Schatten, da das bei Tiling-Windowmanagern ein bisschen sinnlos und – meiner Meinung nach – nicht schön ist.

Bei mir gab es anfangs Grafikfehler, die verschwunden waren, nachdem ich den Befehl in die i3-config eingetragen und mich neu angemeldet hatte. Auf meinem Netbook funktioniert das leider nicht, was ich aber auf den Intel-Grafikchip schiebe.

Ein guter Grund für xcompmgr ist vor allem auch, dass Notification-Dienste, wie notify-osd, schön dargestellt werden und kein schwarzer, eckiger Hintergrund hinter dem Notification-Popup liegt. Docks, wie z.B. der Avant Window Navigator, funktionieren allerdings nicht sonderlich gut, was aber an i3 zu liegen scheint.

mehr...

nomeata’s mind shares

13.03.2012 09:52:00

ghc-heap-view: Complete referential opacity

During the last week, I created ghc-heap-view, a library to investigate the actual memory representation of Haskell values. It is inspired by vacuum and the GHCi debugger, but goes beyond them by allowing the user to look inside thunks and functions and see what other values they refer to. Let me demonstrate it by running the included demo:

ghc-heap-view-demo

Here are a four different lists, where the first three are already evaluated.
The first one, l, was defined as a top level constant as

> l = [1,2,3]

and is now found at 0x00000000006d1750/2 (where the /2 is the pointer tag information) and fully evaluated:

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_STATIC, srtlen = 1}, 
                 ptrArgs = [0x00000000006d16e0/1,0x00000000006d1730/2],
                 dataArgs = [], descr = "ghc-prim:GHC.Types.:"}

The second one, l2, is locally defined

> let l2 = 4:l

and now found at 0x00007fdce19fe4b0/2. See how the cons-cell references l!

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_2_0, srtlen = 1},
                 ptrArgs = [0x00000000006dca50/1,0x00000000006d1750/2],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.:"}

And the binding

> args <- map length `fmap` getArgs

evaluates to the “one”, global empty list at 0x00000000006db640/1:

    ConsClosure {info = StgInfoTable {ptrs = 0, nptrs = 0, tipe = CONSTR_NOCAF_STATIC, srtlen = 0},
                 ptrArgs = [],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.[]"}

And now we have, at 0x00007fdce19fe4c8, the concatenation of them, but unevaluated:

> let x = l ++ l2 ++ args

The thunk keeps a reference to l2 and args, but not l, as that is at a static address, unless you are running this in GHCi:

    ThunkClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = THUNK_2_0, srtlen = 1},
                  ptrArgs = [0x00007fdce19fe4b0/2,0x00000000006db640/1],
                  dataArgs = []}

Now to some more closure types. m and m' locally bound of type the unboxed type Int#, with values 42 resp. 23.

> let f = \x n -> take (I# m + I# x) n ++ args
      t = f m' l2

So here is (0x00007fdce1937d50/2), referencing its free variables args and 42:

    FunClosure {info = StgInfoTable {ptrs = 1, nptrs = 1, tipe = FUN_1_1, srtlen = 65553},
                ptrArgs = [0x00000000006db640/1],
                dataArgs = [42]}

And t is a thunk that applies f (also referenced here) to an unboxed value (23) and l2:

    ThunkClosure {info = StgInfoTable {ptrs = 2, nptrs = 1, tipe = THUNK, srtlen = 0},
                  ptrArgs = [0x00007fdce19fe4b0/2,0x00007fdce1937d50/2],
                  dataArgs = [23]}

Lastly, here is the standard example for self reference:

> let x = id (:) () x

This is what x (0x00007fdce1947940) looks like, at least without -O:

    ThunkClosure {info = StgInfoTable {ptrs = 0, nptrs = 0, tipe = THUNK, srtlen = 1},
                  ptrArgs = [],
                  dataArgs = []}

So it is unevaluated. Let us evaluate it using seq. Now we have, still at 0x00007fdce1947940:

    IndClosure {info = StgInfoTable {ptrs = 1, nptrs = 0, tipe = BLACKHOLE, srtlen = 0},
                indirectee = 0x00007fdce194cc98/2}

The thunk was replaced by an indirection. If we look at the target, 0x00007fdce194cc98/2, we see that it is a newly created cons-cell referencing the original location of x:

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_2_0, srtlen = 1},
                 ptrArgs = [0x00000000006db620/1,0x00007fdce1947940],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.:"}

After running the garbage collector (performGC), we find that the address of x is now 0x00007fdce19f30d0/2 and that the self-reference is without indirections:

    ConsClosure {info = StgInfoTable {ptrs = 2, nptrs = 0, tipe = CONSTR_2_0, srtlen = 1},
                 ptrArgs = [0x00000000006db620/1,0x00007fdce19f30d0/2],
                 dataArgs = [],
                 descr = "ghc-prim:GHC.Types.:"}

Future plans

The output of ghc-heap-view is not really pretty yet; even the indentation in this blog post was added manually by me, so this really needs a pretty printer providing a nicer, possibly more compact representation, including something like what vacuum provides. Maybe vacuum can be ported to use this library, and also include the thunk’s and function’s references in the output. Maybe also the GHCi debugger can be extended to show more information about unevaluated expressions using this. Internally, the library is not very polished yet either. It only handles those closures types that I have seen so far, and is likely to break horribly if run in a threaded or debugging enabled runtime.

How it works

Obviously, this is not standard Haskell 98 code, but rather deep trickery involving the GHC API and some C code. Initially I tried to use the API that vacuum and the GHCi debugger rely on, which is an operation

unpackClosure# :: a -> (# Addr#, Array# b, ByteArray# #)

which takes any Haskell value and returns the address to its info table, the pointers and the non-pointer-data in the closure. Unfortunately, it was not complete in that it was meant only for data closures and will for other closure types, e.g. thunks, return no data and no pointers (as can be seen in the code). So I implemented my own version of this operation:

foreign import prim "slurpClosurezh" slurpClosure# :: Any -> (# Addr#, ByteArray#, Array# b #)

where the returned ByteArray# contains the complete closure, including extra information fields such as the arity of a function. The Array# is again the list of pointers in the closure. At first glance, this is a duplication, as the pointers are of course also contained in the ByteArray#. But as soon as the GHC runtime reigns again, a garbage collector run can happen, the referenced values will move somewhere else, and the words that once were pointers in the ByteArray# become useless. But the corresponding entries in the Array# are updated by the garbage collector, as it knows that these are pointers, and not just words. This way, we get both a faithful copy of the closure on the heap and useful references to the contained data. Here is a demonstration of this effect:

$ ghci -XMagicHash -package ghc-heap-view
GHCi, version 7.4.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
[..]
Loading package ghc-7.4.1 ... linking ... done.
Loading package ghc-heap-view-0.1 ... linking ... done.
Prelude> let {a = [1,2,3,4]; b = 5:a}
Prelude> :m + GHC.HeapView 
Prelude GHC.HeapView> rawHeapData <- getClosureRaw b
Prelude GHC.HeapView> rawHeapData 
(0x000000004080d658,[1082185320,140040739366568,140040739365928],[0x00007f5dc68626a8,0x00007f5dc6862428])
Prelude GHC.HeapView> System.Mem.performGC
Prelude GHC.HeapView> rawHeapData 
(0x000000004080d658,[1082185320,140040739366568,140040739365928],[0x00007f5dc41b3ad8,0x00007f5dc41b3b28]) 

The function rawHeapData is a thin wrapper around slurpClosure# which turns the primitive array in normal lists. Note that the second component of the triple is unchanged, but the third is updated by the garbage collector. Of course this means that the Show instance for the data type that ghc-heap-view uses to reference values is not referential transparent either.

The foreign function import above is of type “prim”, i.e. does not call a C function but rather a Cmm function. Cmm is a reduced C that GHC uses internally to compile the Haskell code to, and most primitive operations are implemented in this language – although I do quickly call regular C from my Cmm code to do the more complicated stuff, mainly figuring out what words of the closure are pointers.

The knowledgeable reader might notice that I am passing a boxed value of type Any to the foreign function. This is currently not possible with foreign prim functions, and to actually use that code, you need the patch in GHC ticket #5931. But you can use ghc-heap-view without that as well (and the Cabal package will by default use that path), using the following hack to obtain the pointer to a Haskell value on the Heap as an unboxed type that can pass to the primitive operation:

foreign import prim "slurpClosurezh" slurpClosure'# :: Word#  -> (# Addr#, ByteArray#, Array# b #)
data Ptr' a = Ptr' a
aToWord# :: Any -> Word#
aToWord# a = case Ptr' a of mb@(Ptr' _) -> case unsafeCoerce# mb :: Word of W# addr -> addr
slurpClosure# :: Any -> (# Addr#, ByteArray#, Array# b #)
slurpClosure# a = slurpClosure'# (aToWord# a)

This works because a Word and a Ptr' have the same closure layout, only differing in the fact that one stores an a, and the other stores a Word#.

Once we obtained the raw representation of the closure, we do the parsing in Haskell. Using the info table and the raw closure, we have enough information to tell which words have to be replaced by the appropriate pointer (which might already have been updated by the garbage collector) in the pointers list.

This work was supported by a scholarship from the Deutsche Telekom Stiftung.


Flattr this post
mehr...

NervengiftLabs

28.02.2012 23:48:00

Umzug &#8211; jetzt in Selbstverwaltung

Hier mal ein paar Worte zu meinem supertollen neuen Hoster Uberspace:

Eigentlich ist wordpress.com ja ganz nett, aber es nervt schon ein bisschen, wenn man nicht einmal Plugins (z.B. für Syntax-Highlighting) installieren kann.

hosted on asteroids

Außerdem wollte ich mir eigentlich auch schon seit längerer Zeit irgendwo einen V-Server zulegen, dass ich da so Sachen, wie ein EtherpadLite und ein immer laufendes irssi, draufpacken kann. War mir bisher aber zu teuer.

Doch letzten Samstag kam dann die Rettung: Ich hatte so nebenbei beim Surfen einen Podcast (raummaschine.de) auf den Ohren. Zugegebenermaßen war ich nicht sehr aktiv am Zuhören, aber als es darum ging, dass sie selbst bei Uberspace ihre Websites liegen haben, weil das da voll toll ist und man da selbst bestimmen kann, wie viel man zahlen will, wurde ich hellhörig und hab mir das gleich mal angeschaut.

Was kriegt man bei Uberspace?

Uberspace sind ein paar Linux-Systementwickler/ -admins, die nebenbei dieses shared-hosting anbieten. Sie machen das nicht aus kommerziellen Gründen, sondern als ihre “Spielwiese”, wie sie es selbst nennen.

Zur Verfügung hat man neben einem Webserver, Mails, MySQL und SFTP-Zugriff auch noch eine SSH-Shell (sogar mit ssh-keys), wo einem alle gängigen Skriptsprachen, wie Python, Perl, Ruby, Lua und mehr, cronjobs, und sogar die Gnu Compiler Collection und eine user-spezifische Paketverwaltung zur Verfügung stehen.

Man kann frei wählen, wie viel man zahlen möchte, das Minimum liegt bei 1€ pro Monat. Dazu lädt man einfach sein Uberspace-Konto per Überweisung auf und der eingestellte Betrag wird monatlich abgebucht. Der erste Monat ist sogar kostenlos.

Standardmäßig bekommt man dann eine Adresse nach dem Schema NAME.HOST.uberspace.de, also bei mir z.B. neuro.aquarius.uberspace.de, auch mit SSL/HTTPS. Man kann aber auch auf Anfrage seine eigene Domain benutzen; falls noch nicht vorhanden, kann man sie sich auch über Uberspace registrieren lassen. Das kostet dann einmalig 5€ und der Mindestbetrag pro Monat steigt um 0,50€.

Der Service ist einfach nur Spitze. Samstag Abend um halb 10 oder so, brauchte ich einen offenen Port für ein Skript. Meine Mail wurde innerhalb von 15 Minuten beantwortet und bearbeitet. Meine Domain war auch innerhalb eines halben Tages bestellt und aufgeschaltet (inklusive Subdomain-Extrawünschen für Soup und Dyndns). Wenn man Support will, dann spricht man da auch mit jemandem, der Ahnung hat, nicht so eine First-Level-Support-Trulla. Man hat regelmäßig das Bedürfnis, den monatlichen Betrag etwas zu erhöhen :)

Ach und habe ich erwähnt, dass die keine persönlichen Daten von euch wollen, weil sie die ja gar nicht brauchen? (Ausnahme ist, wenn ihr eine Domain haben wollt, aber dann wird das auch nur weitergegeben und nicht bei denen gespeichert)

Was mache ich auf Uberspace?

Meinen Blog hosten. Seht ihr ja :P

Außerdem habe ich noch ein EtherpadLite aufgesetzt, um allein, oder mit mehreren Leuten Dinge zu brainstormen. Eine Anleitung, wie man das installiert findet sich im Uberspace-Wiki. Im Prinzip nur Copy&Paste.

Dann habe ich noch in einem screen ein irssi laufen, so dass ich dauerhaft in manchen IRC-Channels online bin und mich einfach über ssh zum chatten oder backlog lesen da reinhängen kann.

mehr...

Zeitgeistaustreibung

26.02.2012 18:13:00

Gedanken zu Crowdfunding

Das mit dem Crowdfunding ist nun beileibe nichts neues. Kickstarter gibt es auch schon seit 2008. Das erste abgeschlossene Millionen-Projekt hätte das LunaTik-iPod-Uhrenarmband sein können, das im Dezember 2010 mit 942.578 Dollar da stand. Und dann kam der Februar 2012. Das Elevation Dock, das Double Fine Adventure und der Order of the Stick Reprint. Letztere noch gar nicht abgeschlossen, alle aber über eine Millionen US-Dollar. Ein Dammbruch? Vielleicht, auch wenn der Einwand "Das sind doch Nerd-Projekte" natürlich gerechtfertigt ist.

Und doch: es tut sich was.
Continue reading "Gedanken zu Crowdfunding"
mehr...

nomeata’s mind shares

26.02.2012 16:25:00

GHC 7.4.1 speeds up arbtt by a factor of 22

More than two years ago I wrote arbtt, a tool that silently records what programs you are using and allows you to do statistics on that data later, based on rules that you define afterwards, hence the name automatic rule based time tracker. I wasn’t doing much with it recently (the last release has been half a year ago), but it nevertheless was running on my machine and by now has tracked a total time span of 248 days in 350000 records.

Yesterday, I had a use for it again: measuring the time spent creating a certain document with LaTeX. So I added a rule to my categorize.cfg and ran arbtt-stats. I knew that it was not very fast, and that my data set has grown considerably since I last used it. And indeed, it took more than 6 minutes to process the data and spit out the result.

Since I’m currently working on the GHC 7.4.1 transition in Debian anyways, I decided to check what happens if I compile the code with that version of the Haskell compiler, instead of the previous version 7.0.4. And behold: The whole process took merely 17.3 seconds to complete! At first I did not believe it, but the result was identical, both binaries were built with the same option, i.e. no profiling enabled or anything like that. Wouldn’t you also like to have such speed ups for free, just by waiting for someone else to improve their work?

I tried to find out the reason for the speed up and created profiling output from both the old and the new binary. The old binary spends 83% of the time in Categorize.checkRegex, which basically just call Text.Regex.PCRE.Light.match. Since the version of pcre-light is the same in both binaries, I conclude that the Foreign Function Interface that GHC provides to interact with C libraries (libpcre in this case) is much faster now, although I do not find any mention in the release notes. And even if I do not count the 83% time spent in checkRegex, the code from the new compiler is still 2.7 times faster. Thanks, GHC devs, great work!


Flattr this post
mehr...

Zeitgeistaustreibung

25.02.2012 17:58:00

Rede auf der Anti-Acta-Demo Hamburg

Mein Freund mc.fly hat für den CCC Hamburg auf der Anti-Acta-Demo eine Rede gehalten. Da ich maßgeblich am Entstehungsprozess dieser Rede beteiligt war, möchte ich diese nun auch hier dokumentieren.


Hallo. Ich bin der mc.fly vom Chaos Computer Club Hamburg.
schoen schon wieder so viele von euch zu sehen.

Unglaublich, das das noetig ist, oder? Vor 2 Wochen haben wir, gemeinsam mit über hundert tausend anderen Menschen überall in Europa, schonmal gegen ACTA demonstriert. Aufgeweckt durch Proteste haben einige Regierungen schon im Vorfeld versucht, zu beschwichtigen.

Sie haben Gesetze "Vorläufig" nicht unterschrieben. Sie haben uns erzählt, Acta sei ja nicht so schlimm.Das Europäische Parlament hat den Gerichtshof vorgeschickt, um sich selbst aus der Schusslinie zu nehmen.

Aber nur, weil jeder mit dem Finger auf andere zeigt, sollten wir nicht glauben, dass niemand mehr Verantwortung trägt. Das Thema ist nicht "Durch". Wir haben es zu oft erlebt, dass kritisierte Vorlagen verzögert, aus den Medien genommen und schließlich im Fischereiausschuss verabschiedet werden. Und wenn es erstmal in einem solchen Ausschuss verabschiedet wurde, dann können sich die Parlamente auch schön darauf berufen.

Wir sind hier um ihnen zu sagen: "Ihr könnt euch nicht verstecken." Deutschland nicht hinter der EU und das europäische Parlament nicht hinter dem Gerichtshof oder irgend einem Ausschuss!

Und so lange werden wir weiter auf die Staße gehen müssen. Wir werden weiter für unser Internet, unsere Freiheit und unseren Lebensraum kämpfen müssen. Ja, Lebensraum, liebe Abgeordnete und Minister, für die das Internet ein Stapel Papier ist, der morgens vom Referenten auf den Schreibtisch gelegt wird.

Um das mal in aller Klarheit zu sagen:

Wir, wahrscheinlich alle die wir hier stehen, gehen nicht ins Internet. Wir machen nicht "extra den Computer an", wir sind auch nicht "mal eben Surfen". Wir sind, wenn überhaupt, mal kurz "OFFLINE". Ihr redet, fast zwanzig Jahre nach Erfindung der MP3, von "Neuen Medien". Für euch ist das Internet ein Absatzmarkt.

Aber wie auch hier auf dem Rathausmarkt am Rande Geschäfte stehen, und in sich in der Mitte Menschen begegnen ist das Internet für uns ein Ort, an dem wir uns austauschen, Freunde treffen, diskutieren und unsere Meinung sagen. Und ja, auch mal Einkaufen gehen. Und diese Freiheit, zu sagen was wir wollen, lassen wir uns nicht nehmen!

Nicht durch ACTA, nicht durch IPRED und nicht durch all die perfiden Pläne, die ihr sonst noch so in der Schublade habt, um eure Geschäftsmodelle zu sichern. Ihr kommt aus einer Zeit, in der die "Kreativwirtschaft" Dinge geschaffen hat, die ihr euch dann im Radio und Fernsehen, im Kino oder auf runden Scheiben angehört und angesehen habt.

Und ich kann das gut verstehen.

Es wäre schön, wenn auch kreative Menschen von ihrer Arbeit leben können. Aber nicht zum Wohle einer Urheberrechtsindustrie, die in die eigenen Taschen wirtschaftet, statt Kultur zu fördern und nicht auf Kosten unserer Freiheit!

Und das ist nur der Urheberrechts-Teil von ACTA. Einem Vertrag, der einst verhindern sollte, dass falsche Louis-Vuitton-Handtaschen oder iPods verkauft werden können. Aber "Gefälschte Produkte", da hat sich dann auch die Pharmaindustrie gedacht, das betrifft sie und nun soll es für die ärmsten Länder der Welt unmöglich sein, generische Medikamente zu erwerben. Medikamente die sie brauchen, weil Menschen an AIDS sterben.

Von Handtaschen über das Internet zu AIDS-Medikamenten. Das muss man sich mal auf der Zunge zergehen lassen. ACTA ist ein Rundumschlag von Lobbygruppen. Über Jahre hinweg in geheimen Verhandlungen ausbaldowert, der Öffentlichkeit vorgelegt kurz bevor alles zu spät sein sollte. Bloß nicht einbeziehen, diese störende Zivilgesellschaft. Keine Diskussion, das stört nur. Demokratische Prozesse? Gefährden nur den Abschluss.

Unter dem Banner "Geistige Eigentumsrechte" werden Ideen eingesperrt, Meinungen eingeschränkt und Menschen getötet. Die Interessen einzelner Industriesparten werden über unsere Grundrechte gestellt. Das geht nicht nur ein bisschen zu weit, weil es unseren Tauschbörsen an den Kragen soll, Das ist inakzeptabel!

Und darum stehen wir hier und darum werden wir so lange immer laut sein, bis ACTA begraben ist!

Und nun möchte ich mich für eure Anwesenheit bedanken. Und für euer Zuhören. Aber wenn ihr nun nach Hause geht, dann ist die Arbeit noch nicht getan. Schreibt euren Abgeordneten. Diskutiert mit Freunden. Bloggt und twittert. Füllt eure Facebook-Timeline, informiert eure Eltern, Lehrer, Arbeitskollegen.
Lasst uns gemeinsam dafür sorgen, dass das Thema nicht aus den Medien und dem Bewusstsein verschwindet. Das wir alle, als Gesellschaft, darüber diskutieren, wie unser Lebensraum Internet aussehen soll. Damit auch die mit den Druckern verstehen, warum uns dieses Thema zu wichtig ist!
mehr...

NervengiftLabs

17.02.2012 19:27:00

Humble Bundle Mojam

Ein neues Humble Bundle!!!11elf.

Diesmal was ganz besonderes: Mojang, die Entwickler von Minecraft, werden das Spiel, das man bekommt, dieses Wochenende live erstellen. Den Stream (mit Chat) aus dem Mojang Hauptquartier findet man auf der Humble Bundle Seite und bei twitch.tv.

Im Voraus konnte man über Thema und Genre abstimmen.  Jeweils das Erste und das Letzte wurden dann ausgewählt. Es wird ein “real-time strategy shoot ‘em up with a steampunk ancient Egypt theme”. Könnte interessant werden.

Kaufen kann man sich das Spiel das ganze Wochenende lang wie gewohnt zum selbst gewählten Preis. Der Erlös geht dabei diesmal vollständig an wohltätige Organisationen: die Electronic Frontier Foundation (EFF), Child’s Play, charity: water und das amerikanische Rote Kreuz.

Kleines Update: Oxeye Game Studio, die das Spiel Cobalt entwickeln, das Mojang als Publisher betreut, liefern auch ein Spiel:
[tweet https://twitter.com/OxeyeGames/status/170584018595741696 lang='de']

Oh und nochmal Update: Wolfire machen auch noch eins. Langsam lohnt sichs richtig (nicht, dass ichs mir nicht schon lange gekauft hätte) :)

[tweet https://twitter.com/Wolfire/status/170590978527334400 lang='de']

mehr...

nomeata’s mind shares

15.02.2012 13:45:00

Including full LaTeX documents in another LaTeX document

Assume the following situation: You set problem sheets for a class, and at the end of the semester, you have 13 individual LaTeX files, including the preamble (the stuff from \documentclass to \begin{document}). Now you want to provide a file that contains all problems, followed by all problems with solutions. You could just concatenate the resulting PDFs, but that would waste quite a bit of paper, as most problem sheets do not fill the whole page. You could just copy’n’paste the LaTeX code, but that is not neat either.

So you want to include the 13 individual documents in one LaTeX document. LaTeX provides \include and \input commands, but these would require that the content of the individual files, i.e. the stuff between \begin{document} and \end{document}, is put in a file of its own. You cannot just \input the full problem sheet document, as there must be only one \documentclass command, and a few preamble commands are invalid within the document.

There are various solutions suggested, e.g. on Wikibooks and StackOverflow, and there are packages helping with that functionality, such as combine or subfiles. I chose a rather rough, hands-on solution that worked great in my case: The idea is to simply re-define all commands that you have in your preamble to do nothing, including the document environment, before including the other files and constraint to a group. In my case, the preambles were relatively small, as the common definitions of the problem sheets were in a file of their own. I am also using the \foreach command provided by the TikZ package for a convenient loop over all problem sheets:

\foreach \x in {0,...,13} {
  {
    \excludecomment{solution}
    
    \DeclareDocumentCommand{\documentclass}{om}{}
    \DeclareDocumentCommand{\usepackage}{om}{}
    \newcommand{\Blattnummer}[1]{}
    \DeclareDocumentCommand{\FirstDueDate}{mmm}{}
    \DeclareDocumentCommand{\ThisDueDate}{mmm}{}
    \newcommand{\SkippedWeeks}[1]{}
    \renewenvironment{document}{}{}
    \section*{Problem Sheet \x}
    \setcounter{problem}{0}
    \input{GraphTheoryProblems\x}
  }
}
\clearpage
\label{sols}
\foreach \x in {0,...,13} {
  {
    \newenvironment{solution}{
      \par\addvspace{1em}
    }{
    }
    \DeclareDocumentCommand{\documentclass}{om}{}
    \DeclareDocumentCommand{\usepackage}{om}{}
    \newcommand{\Blattnummer}[1]{}
    \DeclareDocumentCommand{\FirstDueDate}{mmm}{}
    \DeclareDocumentCommand{\ThisDueDate}{mmm}{}
    \newcommand{\SkippedWeeks}[1]{}
    \renewenvironment{document}{}{}
    \section*{Solution Sheet \x}
    \setcounter{problem}{0}
    \input{GraphTheoryProblems\x}
  }
}

To redefine commands taking optional arguments, using the xparse package is convenient. You can see how I include every file twice, first with the solution environment turned into a comment and then again with the solution environment actually showing its content. I create a section header based on the counter of the foreach loop, but I could have easily redefined \title and use that for a header, if my problem sheets had used that command (They don’t, as they calculate the problem sheet number and the due date based on the number in the filename – very convenient, and maybe worth a blog post of its own). The problem counter is reset for each file, so that the problems are numbered individually. I could have left this out, then the problems would be numbered consecutively across all included problem sheets.

The individual and resulting files can be found on the Graph Theory course website.


Flattr this post
mehr...

The Turkey Curse

10.02.2012 15:07:00

Zu Konrad Lischkas Betrachtung der &#8220;Contentmafia&#8221;-Feinde

Der von mir sehr geschätzte Konrad Lischka hat bei Spiegel Online den Text Die Feinde der “Contentmafia” sind Heuchler veröffentlicht, dem ich gerne meine Sicht entgegen setzen würde.

Zum Geleit: Ich gelte im Allgemeinen als Vertreter jener, die eine sehr kritische Meinung zur Konstruktion des “geistigen Eigentum” haben und habe zudem eine eher kapitalismuskritische Haltung - bin insofern wohl auch gar nicht wirklich als Empfänger seines Textes gedacht. Diese Replik will ich aber nicht zum Gegenstand einer politiktheoretischen Diskussion machen, weil es ohnehin zu nichts führt. Ich will eher versuchen, die sachlichen Argumente zu hinterfragen, die ich sehe.

Konrad wirft den Kritikern von SOPA und anderer Abkommen dieser Art vor, sie betrachten die Diskussion sehr einseitig. Dem kann ich, als Konsument und politisch denkender und handelnder Mensch, nur entgegnen: Ich zahle für virtuelle Güter und MMORPGs, kaufe Musik, Apps, Texte und bin sehr froh darüber, dass es mittlerweile überhaupt einigermaßen nutzbare Angebote gibt, die mich in die Lage versetzen, für Werke auch im Internet zu bezahlen. Trotzdem bin auch ich ein Kritiker von SOPA, PIPA und wie sie nicht alle heißen. Ich bin schlicht nicht bereit, meine Freiheitsrechte gegen Partikularinteressen verhandeln zu lassen. Auch Konrad wird nicht verleugnen können, dass diese Abkommen einen nicht zu unterschätzenen Einfluss auf Gegenwart und Zukunft des Netzes hätten, sollten sie in der Form durchgesetzt werden. Diese Vorhaben sehen sehr weitgehende Eingriffe vor, und grade einem Journalisten seines Formates sollte das auch klar (und ist es selbstverständlich auch, wie unschwer an seinen Texten zu sehen ist).

Im Weiteren geht Konrad auf die Stellung des Urhebers in einer kapitalistischen Gesellschaft ein, und ich kann dem kann man sicher zustimmen: Es geht hier in erster Linie um ein Schutzrecht, damit der Urheber die Möglichkeit hat, aus seinem Werk auch leben zu können. Und es ist für mich auch vollkommen klar, dass nicht jeder Urheber in gleicher Weise von den Werken leben kann: Es ist Quatsch, die schreibende Zunft dazu zu bringen, ihren Lebensunterhalt durch die Rezitation ihrer Texte verdienen zu lassen, und nicht jedem Musikschaffenden ist es gegeben, die Musik auch aufführen zu können oder zu wollen. Danach aber kommen Statements, die ich kritisch finde, weil Konrad einige wie ich finde sehr wichtige Details, bewusst oder unbewusst, vernachlässigt.

So kommt er zu einer Kritik an Modellen wie der Kulturflatrate. Die Kritik bezieht sich, wenn ich das richtig verstanden habe, vor allem darauf, dass dabei nicht alle Fälle berücksichtigt werden. Das ist richtig, aber meiner Meinung nach begeht Konrad den Kardinalsfehler, Einzelfälle in der Diskussion zur Norm zu erheben.

Auch in der analogen Welt gibt es seit Jahrzehnten ein Pauschalvergütungssystem. Hintergrund ist dabei, dass es auch dort schon allein aus technischer Sicht praktisch unmöglich ist, eine nutzungsgenaue Gebühr zu erheben. Hierbei gibt es die Kritik, die sich z.B. auf die Verteilungsschlüssel etwa der GEMA bezieht, die E-Musik unangemessen der U-Musik gegenüber bevorzugt. Aber auch die Art der Bindung der Künstler an die GEMA wird kritisiert, wie beispielsweise von John Hendrik Weitzmann in seinem Artikel Doppelt Überkreuz: Die GEMA und Creative Commons bei iRights.info genauer ausführt. Wie das bei der VG Wort aussieht kann ich allerdings nicht so genau einschätzen, weil ich mich damit bislang nicht beschäftigt habe, und Menschen, die von professionellen Texten leben, ohnehin nochmal einen wie ich finde sehr speziellen Fall darstellen. Ohnehin ist die Diskussion schwierig, wenn nicht differenziert wird, über welche Werke man redet. Anyways, die Bewertung dieser Punkte zumindest in Bezug auf die GEMA ist jedenfalls, je nach Betroffenen, sehr unterschiedlich - nicht zuletzt wohl danach ausgerichtet, ob und wie davon profitiert wird oder eben nicht.

Die Idee, eine Pauschalabgabe in Form einer Kulturflatrate oder Kulturwertmark für das Netz zu gestalten, folgt einem sehr ähnlichen Ansatz wie dem der Pauschalabgaben in der analogen Welt - hundertprozentig gerecht wird es aber auch hier nicht zugehen. Es gibt viele Spezial- und Einzelfälle, in denen so ein System keine wesentliche Verbesserung herbeiführen kann, was auch genauer diskutiert werden muss. Für einen großen (den größten?) Teil der Fälle scheint mir jedoch so eine Regelung ein Ansatz zu sein, zwei wichtige Grundanforderungen für ein modernes Urheberrecht in der digitalen Welt zu erfüllen: Bürgerrechtsschonend zu sein und eine Ausgleichsleistung für Urheber zu schaffen. Ich sehe ansonsten nur Ideen, die wahlweise Urheber über den Tisch ziehen oder einen nicht akzeptablen Eingriff in die Freiheit vollziehen.

An einigen Stellen überholt die Realität existierende Geschäftsmodelle aber bereits unsere Diskussion: Wie ich mit etwas Erstaunen festgestellt habe, zahlt Apple scheinbar den Rechteinhabern der Musik, die bei Match aus der Cloud geladen wurden, einen Pauschalbetrag, der zwar nicht hoch sein kann, ich aber doch an einem Punkt bemerkenswert finde: Auf diese Art und Weise legalisiert der Nutzer praktisch seine aus Tauschbörsen gezogenen Titel und der Urheber bekommt noch was von einem Kuchen ab, von dem er sonst gar nichts bekommen hätte. Wenn man mich fragt sieht mir das nach einer, oberflächlich betrachtet, funktionierenden Kulturflatrate-Variante aus, auch wenn ausschließlich auf Musik bezogen und von einem mächtigen, kommerziellen Player aufgezogen. Ich muss hier aber zugegebermaßen noch selbst mal genauer überlegen, welche Implikationen das eigentlich genau hat.

Wenn es in der Diskussion aber so weitergeht wie bisher, halte ich es für nicht unrealistisch, dass es auf eine technische Hochrüstung hinausläft, die Urheber langfristig betrachtet eher verlieren werden. Denn am Ende würde das auf sowas Krypto- bzw. Protokollverbote oder ähnliches hinauslaufen, will man effektiv den Tausch virtueller Güter unterbinden. “Das Netz” wird technisch betrachtet, wie man so schön sagt, Eingriffe in die Infrastruktur als Unfall behandeln und einfach drum herum routen - durch neue Protokolle oder kreative Anwendung bereits existierender.

Was mich hingegen etwas ärgert ist, dass wieder einmal eine Kritik an Kritikern des aktuellen Urheberrechts geäussert wird, ohne selbst Modelle vorzuschlagen. Heisst das denn in der Konsequenz, dass die aktuelle Situation so gut ist wie sie ist? Wozu dann SOPA und ähnliche Ansätze? Wenn nicht, wo bleiben die konkreten Vorschläge, um einer veränderten Welt der veränderten Form der Werkverbreitung Rechung zu tragen?

Gut, Konrad hat auch einen sehr speziellen Blickwinkel in diesem Text eingenommen, so dass ihm gar kein Vorwurf zu machen ist. Dennoch wäre es für die Diskussion wesentlich zielführender, wenn grade auch Leute wie z.B. die Netzwelt-Crowd, die den Kern der Problematik nicht nur im Ansatz verstehen, an praktikablen und einigermassen gerechten, ausgleichenden Lösungen mitarbeiten würden.

mehr...

halcy.de v4

24.01.2012 21:03:00

Stallman Box

<halcy> Oh I know what you should make <halcy> WAHa_06x36: Make a STALLMAN BOX <halcy> WAHa_06x36: Like a buddha box except it displays cool saint ignucius effects and it plays the free software song

And then I went and made it myself.

Stallman box

It is, of course, free software. You can find the source code on github. Users of GNU/Linux are assumed to be capable of compiling it themselves (It pretty much works out to “run make”, needs SDL and freeglut and glew). GNU/Linux graphics drivers are usually proprietary and sometimes terribly buggy, so it might or might not work.

For Microsoft Windows, there is a binary version.

Download:

(It requires a relatively new version of OpenGL to actually run, sorry about that)

Some audio and png code taken from WAHa_06x36 - thank you!

mehr...

experimentalworks

23.01.2012 14:58:46

Removing a directory from a git repository the fast way

Note to myself:
To remove a directory from an existing git repository there are various ways to do it. The obvious way is

$ git filter-branch --tree-filter 'rm -rf directory/'

Which is just fine for smaller repositories but can take a long time on large repositories with a lot of large files in that directory.
The faster way is to manipulate only the index:

git filter-branch --index-filter 'git ls-files -- DIRECTORY | xargs git update-index --remove' --tag-name-filter cat --prune-empty -f -- --all;

Done.

flattr this!

mehr...

nomeata’s mind shares

15.01.2012 10:13:00

c't features heisse-news

Several years ago, I created a computer news parody page called “heisse news”, emulating the look-and-feel of the German “heise news”, an online newsticker run by the most important German computer magazin publisher. Although my page did not see an updated since almost four years, it's featured in the latest issue of the publisher’s main print magzine, c't, in the section “Websites aktuell” on page 168, which I find very cool. As it is only fair to give and take, I posted a new entry on heisse news, featuring their website in the same manneras they featured mine...


Flattr this post
mehr...

Hanno's blog

03.01.2012 20:17:00

Old file formats

I recently had a discussion about the accessibility of today's computer content in the future. We started asking ourselves how well the support in current software is to read and use old legacy data formats - graphics, videos, text, layout documents, whatever may still be interesting today.

I remembered having such a discussion some years ago and back then, Works documents were mentioned by someone as a somewhat difficult format. Back then, libwps existed with some command line tools to convert to staroffice format (which could then be opened by openoffice) and experimental patches existed for openoffice itself. Seems at least here the situation has improved. The current version of libreoffice reads Works documents out of the box.

Free software projects play an important role in keeping old data accessible. Just to name two, ffmpeg does a great job in supporting a large number of old and exotic video formats. It's used by a bunch of popular video players like mplayer and vlc. For graphics files, there is imagemagick, which provides a conversion tool to up-to-date formats like PNG.

In some upcoming blog entries, I'll try to explore things, will look for old files and see if I am able to use them.

A call to my readers: Do you have any old stuff laying around that you'd find interesting to access today? Which file formats are difficult to access? Are you searching for tools to open / convert them? Do you have something old that might be worth publishing to others as well? Send me your stuff, I'm very interested.
mehr...

Hanno's blog

26.12.2011 21:27:00

Videoüberwachung in der Umkleidekabine - abgebaut

Videokamera in der UmkleideIm Frühjahr hatte ich die Thermen am Europa-Center in Berlin besucht - ein Luxus-Schwimmbad mit Sauna.

Ich habe in Sachen Videoüberwachung ja schon manches erlebt, aber das hat mich dann doch ziemlich erschrocken: In der Herrenumkleidekabine wurde per Kamera überwacht. Ich war zunächst ziemlich empört - und später dann auch ziemlich sicher, dass das kaum rechtlich zulässig sein kann. Eine kurze Google-Recherche zu ähnlichen Fällen bestätigte mir dies.

Erschwerend kam hinzu, dass man als Kunde das natürlich erst bemerkt, wenn man schon bezahlt hat. Ein Hinweisschild im Eingangsbereich oder ähnliches war nicht zu finden, wovon ich mich beim Gehen nochmals überzeugte.

Hinweisschild in der UmkleideIch habe mich also folgerichtig an den Berliner Datenschutzbeauftragten gewandt. Vor wenigen Tagen erhielt ich nun einen dreiseitigen Brief mit dem - doch recht erfreulichen - Ergebnis.

Das Amt des Datenschutzbeauftragten hat eine datenschutzrechtliche Kontrolle der Räumlichkeiten vorgenommen. Sie sind zu dem Schluss gekommen, dass die Überwachung der Umkleide eindeutig gegen das Bundesdatenschutzgesetz verstößt. Weiterhin wurde festgestellt, dass die Überwachung im Eingangsbereich zwar zulässig ist, aber die Hinweise auf die Videoüberwachung unzureichend waren. Die Kameras in der Umkleide wurden entfernt und vor dem Eingang wurde ein Zusätzliches Hinweisschild angebracht.

Ich finde es doch erfreulich, dass man sich wenigstens manchmal noch gegen das Ausarten der Überwachung des öffentlichen Bereichs wehren kann. Ein ausdrückliches Lob an die Mitarbeiter der Berliner Datenschutzbehörde (mit denen ich schon in der Vergangenheit gute Erfahrungen gemacht habe).
mehr...

nomeata’s mind shares

24.12.2011 10:47:00

First (academic) publication

Nice christmas present: I just got message that the paper “Loop subgroups of Fr and the image of their stabilizer subgroups in GLr(ℤ)” that I extracted from my Diploma thesis in Mathematics, and which I submitted to the Israel Journal of Mathematics in November 2010 was finally published today, in “Online First“ form and under the doi 10.1007/s11856-011-0213-3.


Flattr this post
mehr...

Hanno's blog

07.12.2011 18:31:00

Keine Ahnung und das soll auch so bleiben

Gert Hoffmann
Versteht von solchen Dingen nichts: Gert Hoffmann (Quelle: Kontraesan / Wikipedia, Creative Commons by-sa by)
In Braunschweig hat sich die Piratenpartei darüber beschwert, dass die Internetzugänge der Ratsfraktion in Braunschweig überwacht werden. So wird etwa jede aufgerufene Webadresse gespeichert.

CDU-Oberbürgermeister und Ex-NPD-Mitglied Gert Hoffmann hat dazu folgendes mitzuteilen:
»Ich habe davon natürlich nichts gewusst, verstehe von solchen Dingen nichts und interessiere mich auch nicht dafür. Das wird auch so bleiben.«


Und nein, das ist keine Satire, sondern steht tatsächlich genau so in der Pressemitteilung der Stadt.
mehr...

nomeata’s mind shares

06.12.2011 21:16:00

Guest lecture on Haskell performance

Today, I had some business in Bonn, so Janis Voigtländer invited me to hold a guest lecture in his advanced functional programming course, maybe telling the students more about “real world” use of Haskell, given that he teaches mostly the theoretical foundations. I chose to discuss an experience I made while implementing SAT-Britney, namely that for the sake of good runtime and memory performance, it may be neither ideal to evaluate a list fully lazily, nor fully strict, but to have something in between. For the talk, I demonstrated this by a small example, showed how to use the GHCi debugger to get some insight in the evaluation order of things, how to benchmark the program and read the ghc statistics and a profiling chart, and finally how to get the most out of GHC’s List Fusion. I wanted to also touch on QuickCheck, but skipped it to finish in time. The full text of my talk (including graphs) is available, but in German; if you want an English version convince your prof to invite me for a guest lecture as well.

Afterwards I sat down with one of the students of the course, Helmut Grohne, who happened to take part in the Debian bug squashing party last weekend and had filed a release critical bug against the Haskell grammar generator frown (no better link available, homepage seems to be down) to debug the problem. It quickly became clear that the bug was introduced by me (can you spot it?) when trying to make it compile with a modern GHC – slightly embarrassing for me.


Flattr this post
mehr...

nomeata’s mind shares

03.12.2011 21:19:00

Some late recognition of metainit

Four years ago, during DebConf 7 in Edinburgh, I had the idea of creating init scripts not by hand, but rather describe them in a declarative way that handles most common cases and generate the real init scripts from them. Back than, this was partly motivated by the varying quality of init scripts and the advent of an alternative init system, upstart, for which proper service files could be generated as well.

I implemented the idea and uploaded it as metainit to Debian, but it did not take off. Only one package uses it, and this package is not used much either. The project basically fell dormant.

Yesterday, I got this mail:

Hi Joachim,

I'm not very familiar with Debian ecosystem, however our company has recently switched to exclusively using Debian based servers, please forgive me if there exists a better channel for sending patches.

We need (in house) to create a lot of trivial services and the sysv init system seems an ideal way to manage them, and metainit an great way to keep the config simple.

However all our scripts require a heartbeat, the way we normally do this is with a bunch of checkers launched from cron. Metainit was ideal, but lacked the simple 'status' task found in most init scripts.

This small patch adds that task, I hope you and others find it usefull.

Regards,

together with the mentioned patch. So it turned out that the idea was a useful one after all, although it found its use on our user’s machines, and not within the Debian packages, as I originally anticipated. Nice!

During the recent discussions about the latest init system, systemd, there were more thoughts about generating init scripts/upstart service descriptions/systemd units from a declarative description, and if metainit had taken off back then, things would be easier now. So if anyone feels like reviving the project: Please do.


Flattr this post
mehr...

nomeata’s mind shares

01.12.2011 17:11:00

Poetry in the problem class

I’m currently running the problem class for the graph theory course at the Karlsruhe Institute of Technology, held by Prof. Maria Axenovich. On one problem sheet, I felt like setting the question in verse, and indeed, two students submitted their solution is in verse form as well. I have assembled the problem and both solution – enjoy!


Flattr this post
mehr...

Hanno's blog

27.11.2011 10:08:00

Heute mit "Ja" abstimmen

Ich wohne selbst leider nicht mehr in Baden-Württemberg und kann somit heute nicht abstimmen.

Aber mein dringlicher Aufruf an alle, die dort gemeldet sind: Bitte geht heute zur Volksabstimmung. Es ist wichtig.
mehr...