Swirly Mein Kopf

Saturday, July 19. 2014

Good bye GNOME

Digital World

When I was young...

I have been a user of GNOME for a long time. I must have started using it in either 2000 or 2001, when LinuxTag was in Stuttgart. For some reason I wanted to start using one of the two Desktop Environments available (having used fvwm95 and/or IceWM before, I believe). I approached one of the guys at the GNOME booth and asked the question “Why should I use GNOME over KDE?”, knowing that it is quite a silly question, but unable to come up with a better one. He replied something along the lines of “Because it is part of GNU”, and that was good enough for me. Not that it matters a lot whether I use one or the other, but it was a way to decide it.

Back then GNOME was still version 1.2, with detachable menus and lots of very colorful themes – I first had something with thick yellow borders and then a brushed metal look. Back then, sawfish was the window manager of choice.

I used GNOME for many years. People complained when GNOME 2.0 came out, but I liked the approach they were taking: Simplicity and good defaults are a time saver! I did my bit of customization, such has having my panel vertically on the left edge, and even had a tool running that would react on certain events and make the window manager do stuff, such as removing the title bar and the borders from my terminals – naked terminals are very geeky (I forgot the name of the tool, but surely some will recognize and remember it).

Leaving the path of conformance

In 2009 I got more and more involved in Haskell and stumbled over xmonad, a tiling window manager implemented and configured in Haskell. I found this a user interface that like a lot, so I started using it. This was no problem: GNOME happily let me replace the default window manager (metacity) with xmonad, and continue working. I even implemented the necessary support in xmonad so that it would spare out the gnome-panel, and that the pager (which displays the workspaces and windows) would work, and even interact with xmonad.

I was happy with this setup for a few more years, until GNOME3 came out. Since then, it has become harder and harder to maintain the setup. The main reason is gnome-shell, which replaces both gnome-panel and doesn’t work with any window manager but the new default, mutter. I want to use GNOME’s panel, but not its window manager, so I was stuck with a hardly maintained gnome-panel. I fixed what I could (with some patches applied upstream two years after submission, and some not at all) and lived with the remaining warts.

The end (for now)

But a few days ago, GNOME 3.12 was pushed to Debian and I couldn’t even logout our shut down the computer any more, as gnome-session tries to talk to gnome-shell now to do that. Also, monitor configuration (e.g. remembering what setup to use when which monitors are attached) has been moved to gnome-shell. I tried to work around it a bit, but I quickly realized that it was time to make a decision: Either do it the GNOME way all the way, including using gnome-shell, or ditch GNOME:

Now as I said: I like the design and the philosophy of GNOME, including GNOME3, and I have told people who were complaining about it first to give it a try, and succeeded. I also tried it, but after years using a tiling window manager, I just couldn’t adjust to not having that any more. If xmonad could be changed to remotely control gnome-shell, I this might actually work for me! I think one of the biggest problems I had was to adjust to how gnome-shell handles multiple monitors. In xmonad, my workspaces are independent of the monitors, and I can move any workspace to any monitor.

So I had to ditch GNOME. My session now consists of a shell script making some adjustments (blank black background, loading the xmodmap), starts a few tools (taffybar, mail-notification, nagstamon, xscreensaver and dunst) and executes xmonad. So far it works good. It boots faster, it suspends faster.

I still use some GNOME components. I login using gdm (but it is auto-login, I guess I could try something faster), and gnome-keyring-daemon is also started. And I still use evolution (which has its own set of very disappointing problems in the current version).

Compared to my old setup, I’m still missing my beloved link-monitor-applet, but I guess I can implement an approximation to that in taffybar. The same for some other statistics like cpu temperature. I don’t have the GNOME menu any more, which I did not use regularly, but was useful occasionally.

The biggest problem so far is the lack of session management: I yet have to find a good way to logout and shutdown, while still giving Firefox time to finish without believing it crashed. Dear lazyweb: What is the best solution for that problem? Can systemd help me here somehow?

All in all I want to thank the GNOME guys for providing me with a great desktop environment for over a decade, and I hope I’ll be able to use it again one day (and hopefully not out of necessity and lack of viable alternatives).

Thursday, June 19. 2014

Another instance of Haskell Bytes


When I gave my “Haskell Bytes” talk on the runtime representation of Haskell values the first time, I wrote here “It is in German, so [..] if you want me to translate it, then (convince your professor or employer to) invite me to hold the talk again“. This has just happened: I got to hold the talk as a Tech Talk at Galois in Portland, so now you can fetch the text also in English. Thanks to Jason for inviting me!

This was on my way to the Oregon Summer School on Programming Languages in Eugene, where I’m right now enjoying the shade of a tree next to the campus. We’ve got a relatively packed program with lectures on dependent types, categorical logic and other stuff, and more student talks in the evening (which unfortunately always collide with the open board game evenings at the local board game store). So at least we started to have a round of diplomacy, where I am about to be crushed from four sides at once. (And no, I don’t think that this has triggered the “illegal download warning” that the University of Oregon received about our internet use and threatens our internet connectivity.)

Sunday, June 8. 2014

ZuriHac 2014


I’m writing this on the train back from the ZuriHac Haskell Hackathon in Zürich, generously sponsored by Better and Google. My goal for this event was to attract new people to work on GHC, the Haskell compiler, so I announced a „GHC bugsquashing project“. I collected a few seemingly simple ticket that have a good effort/reward ratio for beginners and encouraged those who showed up to pick one to work on.

Roughly six people started, and four actually worked on GHC on all three days. The biggest hurdle for them was to get GHC built for the first time, especially those using a Mac or Windows. They also had to learn to avoid recompilation of the whole compiler, which takes an annoying amount of time (~30 minutes for most people). But once such hurdles weren taken all of them managed to find their way around the source code to the place they need to touch and were able to produce a patch, some of which are already merged into GHC master. When I wasn’t giving tips and hints I was working on various small tickets myself, but nothing of great impact. I very much hope that this event will pay off and one or two of the newcomers end up being regular contributors to GHC.

We took breaks from our respective projects to listen to interesting talks by Edward Kmett and Simon Marlow, and on Saturday evening we all went to the shores of the Zurisee and had a nice Barbecue. It was a good opportunity to get into contact with more of the attendees (the hacking itself was separated in multiple smaller office rooms) and I was happy to hear about people having read my recent Call Arity paper, and even found it valuable.

Thanks to the organizers and sponsors for this nice opportunity!

Wednesday, May 28. 2014

Predicting the livetime of a Hackage package


The Debian Haskell Group has no proper policy about when to update a certain package to a new version from Hackage. So far, we upgrade when one of us personally needs something, when someone nudges us, if its required as a dependency or just when we feel like it. I was thinking about ways to improve that.

One thing that we should definitely do is to upgrade to new versions that differ only in the forth version number, e.g. from to – these are most likely bug fix uploads and have little risk of breaking things. (Unless they are only changes to the .cabal file, then they might not be an improvement for our users or us.) I plan to code that soon.

But what else can we do? Ideally we’d package versions that will be the newest version for a long time, and not versions that are going to be replaced the next day. Unfortunately, deciding that requires visionary powers. But maybe there is a correlation between the upload history and the lifetime of a new package? Maybe there are patterns, e.g. the first upload after a long time tends to be replaced fast, but the third package in a short succession has a high chance to live long? Can we predict the livetime of a freshly uploaded package? So after a bit of hacking I got this graphic:

It needs a bit explanation: Both axis are time differences, the picture is one year by one year. For every release of which we know the lifetime (i.e. there has been an upload later), we draw its history on a vertical line. The horizontal position of the line corresponds to the lifetime of the release: A package that was superseded immediately later (which I sometimes do after spotting annoying typos) would appear on the far left, a package that is stable for one year on the far right.

The history itself is a series of dots, representing the previous uploads of that package, with their distance from the lower edge indicating the time that has passed since then. So if a package had two updates half a year ago, and then no update for another half year, it would contribute two dots right above each other in the middle of the picture.

Unfortunately, the picture does not yield any insight, besides that short-lived packages are more frequent than long-lived packages.

So I tried another view:

I grouped uploads by the livetime of their two preceding uploads. For each such groups, the circle indicates the average livetime. The darkness indicates the absolute number in the sample. So we see a correlation between the packages livetime and the livetime of its predecessor, which is also not very surprising. We can state some hypothesis, like: “A package replacing a very old package is likely to be long-lived if its pre-predecessor lived very long or very shortly, but less so if that lived for a few months.“ But I’m not sure of the significance of these.

I could have also taken into account which uploads are major and which are minor, by looking at the version number, but I didn’t.

What’s the conclusion? Nothing much. I got some funny looking graphs. And there needs to be a way to render pictures like the first within the axes of a Chart diagram. I put the (somewhat hackish) code online – feel free to play with it.

Monday, May 26. 2014

Does list fusion work?


I’m writing this in the lunch break of TFP in Soesterberg. The invited talk this morning was by Geoffrey Mainland, and he talked about the difficulties of (informal) reasoning about performance in high-level languages like Haskell, especially with fancy stuff in the compiler like fusion. So I couldn’t help but think about a (very small) help here.

Consider the the two very similar expressions foldl (+) 0 [0..1000] and foldr (+) 0 [0..1000]. Which of these fuse away the list? Hopefully both, but hard to predict.

So with my list-fusion-probe library, you can write

import Data.List.Fusion.Probe (fuseThis)
main = print $ foldr (+) 0 (fuseThis [0..1001])

and find out. If you compile this (with -O!), it will print


If you change the foldr to foldl, it will print

Test: fuseThis: List did not fuse

So you can see that the function fuseThis :: [a] -> [a] does nothing if the list gets fused away, but causes a run-time error if not. It allows you to annotate your code with your assumptions of list fusion, and get shouted at if your assumptions are wrong.

It wouldn’t be hard to have the compiler give a warning or error message at compile time; we’d just need to introduce a special function abortCompilation that, when found in the code during compilation, does just that.

Note that you’ll have trouble reproducing the above in GHC HEAD, where foldl does fuse (which is what I’m going to talk about tomorrow here).

Friday, May 9. 2014

Going to TFP 2014


Near the end of my internship with Simon Peyton Jones at MSR Cambridge I tackled the problem that foldl is not a good consumer in the sense of list fusion, as the resulting code compiles quite badly. I found an analysis that would allow GHC to safely do the required transformation to fix this in the common case; I dubbed this analysis Call Arity. The code is in GHC master (but not in 7.8), and I get to present at the Trends in Functional Programming conference in Soesterburg in 2½ weeks. If you are curious you can either look at the code in CallArity.hs or the submitted paper, which yet has to go through the formal post-conference peer review in order to be officially accepted.

If you are going to TFP as well and want to get your GPG key signed, just talk to me there!

Friday, April 25. 2014

gtk-vector-screenshot screencast

Digital World

I recently installed piwik on my website, to get some idea about how it is being used. Piwik is a very nice and shiny tool, although it is slightly scary to watch people walk through your website, click for click. Anyways, I now know that I get around 50 visitors per day.

But I also learn where they are coming from, and this way I noticed that “Shnatsel” did a very nice screencast of my gtk-vector-screenshot tool – if I had not created it myself I would think it was fake.

Wednesday, April 2. 2014

Steuerhinterziehung bei Subway?


Kürzlich war ich, wie üblich vor dem (sehr zu empfehlenden) Spieleabend in der Karlsruher Spielepyramide bei Subway essen. Heute wollte ich wissen, wie viel ich da eigentlich ausgegeben habe. Den Kassenzettel hatte ich nicht mitgenommen, aber da ich bei Subway Punkte sammle kann ich da ja problemlos nachschauen, was mich das Essen gekostet hat.

Den Eintrag „Kauf 8.59 €“ an dem Tag finde ich – allerdings am gleichen Tag auch einen Eintrag „Kaufstornierung -8.59 €“, samt entsprechendem Punkteabzug. Das Sandwich hatte ich gegessen, das Geld habe ich auch nicht mehr, also ist irgendwas faul.

Meine Vermutung ist: Steuerhinterziehung. Wie kürzlich in Der Zeit beschrieben ist es wohl unter Gastronomen zum Teil gängige Praxis, am Abend ein paar Einnahmen aus der Kasse zu löschen – weniger Einnahmen heißt weniger Steuerlast. Bevorzugt natürlich jene bei denen der Kunde den Kassenbon nicht mitgenommen hat. Nun scheint die Subway-Kasse direkt an das Punktesammelsystem angeschlossen zu sein, so dass das Stornieren auch meine Punkte gelöscht hat.

Zum einen bin ich etwas sauer: Nicht nur dass sich ja jemand auf unser aller Kosten um seine steuerlichen Pflichten drückt (sozusagen ein 100000000tel Hoeneß), mir entgehen auch noch meine sauer erfressenen Bonuspunkte!

Andererseits haben es Fast-Food-Franchisenehmer alles andere als einfach, und Subway ist hier wohl ein besonders heftiger Fall – gut möglich dass es der Händler solche Tricks nötig hat, um über die Runden zu kommen. Im Vergleich zu z.B. dem Karlsruher Freshsub haben die bei Subway ganz offensichtlich weniger zu lächeln...

Außerdem entgeht so nicht nur dem Staat ein wenig Geld, sondern auch Subway selbst, die – so schätze ich – einen Anteil des Gewinns oder gar des Umsatzes vom Franchisenehmer einfordern. Dazu passt auch dass Subway auf seiner Facebookseite sehr erpicht darauf war, in einem ähnlichen Fall genau zu erfahren, welcher Händler hier ein Storno durchgeführt hat.

Was lerne ich daraus? In Zukunft den Kassenbon mitnehmen, und wenn mir öfter die Punkte durch den Lappen gehen werde ich den Händler mal drauf ansprechen.

Wednesday, March 5. 2014

Creative use of screen-message

Digital World

I just learnt that the math and computer science student body is using screen-message to power an information screen in their room:

There are five instances of screen-message, configured to use non-standard colors and a fixed-width fonts, and controlled by the rather new remote control feature, where screen-messages repeatedly keeps reading text from standard input until a form feed character (ASCII 0x0C) comes, and displays that. The window manager ratpoison takes care of tiling the instances.

It looks quite a bit like a poor man’s version of dividuum’s great info-beamer. I was told that they also tried out info-beamer, but the Raspberry Pi was too slow and weak for that, while screen-message and ratpoison run happily on such small hardware.

Correction: Info-beamer was not tried, but rather ruled out as overkill for this task.

Monday, February 10. 2014

Personalisierte Tip-Toi-Datei als Geschenk

Digital World

Mein Neffe, gerade frisch 5 Jahre alt geworden, ist ein großer Fan der Ravensburger Tip-Toi-Bücher, und ich glaube er hat inzwischen alle für sein Alter geeignete. Wer das Konzept nicht kennt: Man kauft im Spielwarenladen (z.B. die gut sortierte Spielepyramide in Karlsruhe) recht teure Erklärbücher mit vielen Bildern und wenig Text, und dazu braucht man noch so einen dicken Stift. MIt dem kann man auf die Bildchen im Buch zeigen, und dann erzählt einem der Stift etwas. Im Stift ist ein kleiner Micro-Controller, das heißt er kann auch ein bisschen Logik – etwa: Finde alle Mäuse auf der Seite, dann sagt er einem sowas wie „Gut gemacht“ oder „Die Maus hast du schon“ oder „Das ist doch keine Maus!“. Das Video auf ravensburger.de erklärt das auch nochmal.

Zu jedem Buch gibt es auf ravensburger.de die entsprechende Datei zum Herunterladen und per USB auf den Stift kopieren. Und wer Computer-Freaks kennt weiß was jetzt passiert: Die Datei wird natürlich einmal im Hex-Editor aufgemacht...

Und nach vielen Stunden Hex-Dateien anschauen haben ein paar Leute, die sich nach und nach bei mir gemeldet haben und mitmachen wollten, und ich es letztendlich geschafft, das Dateiformat zu verstehen: Wir können die vorhandenen Dateien dekodieren und die enthaltenen Audio-Dateien als auch die zugehörige Logik, also was wann wie abgespielt wird, auslesen. Und es geht auch andersrum: Aus eigenen Audio-Aufnahmen komplett eigene GME-Dateien erstellen!

Und so gab es für meinen Neffen zum Geburtstag eine Spezial-Edition des Weltatlas-Buches, wo ich zu einigen Sachen auf den ersten beiden Seiten ihm etwas erzählt hab, mal was mir zu dem Land eingefallen ist, mal was den Ort mit unserer Familie verbindet, oder einfach nur die Geräusche eines Lastschiffes oder eines Löwen nachgemacht. Insgesamt 60 Aufnahmen, und trotzdem nur einen kleinen Teil des Buches abgedeckt – kein Wunder sind die so teuer. Beim Geburtstag kam das dann wohl gut an, wurde mir berichtet, wobei ich nicht einschätzen kann ob es nicht die anwesenden Erwachsenen (die ja eher erwarten dass sowas eigentlich nicht geht) mehr beeindruckt hat als das Geburtstagskind selbst.

Der nächste Schritt wäre jetzt, auch eigene Bücher (oder zumindest Bilder) zu erstellen. Theoretisch wären wir soweit, die optischen Codes sind verstanden, nur braucht man wohl einen etwas besseren Drucker als die die man üblicherweise zu Hause hat. Und ich selbst kanns nicht probieren, weil mir die Hardware fehlt; meine bisherigen Experimente musste ich immer durch andere testen lassen.

Du willst auch so eine GME-Datei für deine Verwandschaft erstellen? Sehr schön! Ich habe eine Anleitung (in Englisch) geschrieben; wenn dabei Probleme auftauchen, einfach nachfragen. Und wenn nicht, würde mich trotzdem sehr interessieren, was du draus gemacht hast und wie es angekommen ist.

Es gibt noch mehr zu tun, z.B. die Logik für die Spiele (also das was mit via dem Würfel unten rechts startet) dekodieren. Mithelfer sind sehr willkommen!

Sunday, January 19. 2014

Eine Woche Freizeitstress in Cambridge

So als Strohwitwer hat man ja wenig Gründe, den Feierabend einfach nur zu hause herumzusitzen, und daher habe ich meine Woche inzwischen gut mit Programm gefüllt. Die letzte Woche beispielsweise sah so aus:


Montag abends gings zu einem Tanzkurs des Cambridge Dancer’s Club, dem Tanzverein der Universität. Ich habe mich am Kurs „Ballroom and Latin Advanced“ versucht, und eigentlich war das auch mal mein Tanzniveau, aber das ist etwa 11 Jahre her... und so tat ich mich doch recht schwer. In dem Kurs ging die Zahl der Frauen und Männer auf, und so tanzte ich durchgehend mit einer vielleicht 70-jährigen Dame, die ebenso Schwierigkeiten mit den Figuren hatte, was natürlich auch nicht geholfen hat. Direkt im Anschluss war ein etwas einfacherer Kurs, in dem ich besser mithalten konnte. Hinterher habe ich gesehen dass dieser als  „DanceSport Ballroom Improvers“ deklariert ist, also für Leute die in Richtung Tanzwettbewerb gehen wollen, was ja nicht mein Ziel ist. Ich bin mir noch unschlüssig ob ich hier weiter mache, oder den Tag anders füllen will.


Diestag abend ist die traditionelle „Microsoft Research Interns Movie Night“, deren Organisation inzwischen bei mir gelandet ist. Diese Woche haben wir die neuste Folge der BBC-Serie „Sherlock“ im Auditorium – also mit großem Beamer und Kino-mäßigen Sesseln – geschaut; für nächste Woche ist „Gran Turino“ geplant.


Mittwochs gehts stets zu einer Brettspielrunde, die ich übers Internet gefunden habe, mit einer Spielauswahl fast so groß wie beim Spieleabend in der Karlsruhe Spielepyramide, darunter sehr viele Spiele aus Deutschland, oft auch in der deutschen Ausgabe, mit einer aus dem Internet besorgten englischen Übersetzung. Zum Abschluss spielen wir immer noch eine Runde Bohnanza, wobei aus der Brechbohne dann die „Breckbean“ wird.


Ich bei meinem Schüleraustausch in den USA vor 12 Jahren dort ein bisschen Swing, insbesondere Lindy Hop, getanzt, und seit dem nicht mehr. Daher war ich hoch erfreut zu sehen, dass hier gerade wieder ein Kurs beginnt: Diesmal nicht von der Universität aus, sondern von Cambs and Beds Lindy Experience, die in der Village Hall von Grantchester (da wo die berühmten Cambridger Auen sind) erst Lindy Hop und dann Balboa lehren. Von Lindy Hop hab ich sogar noch einen kleinen Rest im motorischen Gedächtnis, welches mir aber beim Balboa Schwierigkeiten macht: Der Tanz ähnelt oberflächlich dem Disco Fox, das heißt wenn ich auf die Füße achte, mache ich plötzlich Disco-Fox-Figuren (und verwirre meine Tanzpartnerin), und wenn ich auf die Figuren achte machen die Füße Mist. Da hilft wohl nur üben...


Freitags kann ich dann üben, allerdings wiederum Latein- und Standardtanz, beim freien Tanzen in der Cafeteria des University Centers. Diese Woche mit dem unerfreulichen Zusatzprogramm „Fahrradschieben“, weil sich ein Glassplitter in den Reifen gebohrt hat. Aber ich bin hier ja ein verwöhnter Leihfahrradfahrer und hab das Rad also auf dem Rückweg beim Fahrradladen am Bahnhof (soweit sehr zu empfehlen!) angeschlossen, den Schlüssel mit einer kleinen Notiz in den Briefkasten geworfen und am nächsten Morgen frisch repariert und gewartet abholen können – daran könnte man sich gewöhnen.


Samstags hab ich noch nichts wöchentlich regelmäßiges; diese Woche war ein Brettspieletag in Ely (etwa 40 Auto-Minuten nördlich von Cambrige), mit noch mehr neuen Brettspielen. Dort wurde ich auch auf yucata.de hingewiesen, ein Portal, in dem man viele Brettspiele kostenlos und asynchron, also ohne ständig online zu sein, spielen kann. Das wäre die ideale Plattform für meine eigenen Versuche, Brettspiele umzusetzten (zuletzt meine Adaption von Sim Salim als Sum Serum), doch leider ist mir die technische Umsetzung mit .NET und anderen Microsoft-Produkten doch zu fremd – was hab ich denn schon mit Microsoft am Hut?


Aber eigentlich brauch ich ja auch nicht unbedingt mehr Projekte, meine aktuellen langen ja auch um den Sonntag gut zu füllen. Z.B. in dem ich diesen Blogeintrag schreiben. Aber zur Zeit beschäftigt mich allerdings vor allem das Tip-Toi-Reverse-Engineering, bei dem wir inzwischen in der Lage, nicht nur die Audio-Daten der Tip-Toi-Dateien zu extrahieren, sondern sogar solche Dateien mit komplett eigenen Töne und Spiellogiken für existierende Bücher zu erstellen. Und wenn ich das richtig sehe dann scheitert das basteln von eigenen Büchern nur an der meist zu geringen Auflösung von haushaltsüblichen Druckern.

Kleines PS für die Karlsruher: Wenn ihr das Uni-Kino AFK gut fandet, überlegt doch ob ihr auch deren Crowdfunding-Kampagne unterstützen wollt!

Sunday, December 29. 2013

Sim Serim as a browser game

Digital World

Recently, I gave the very elegant board game “Sim Serim” away as a present, without actually playing it, leaving me curious about the game. One can easily play it on paper (you just need a paper, and 4 tokens like coins for each player, BoardGameGeek has English rules the of game), but I took this as an opportunity to learn more about HTML5 canvas and nodejs, and so I created the browser game “Sum Serum”, implementing the game mechanics of “Sim Serim”. You can play it locally with two people, or over the network. Contributions are welcome! Especially slicker graphics...

In other news, given that in recent years I became one, I’m on BoardGameGeek myself now, see my profile there.

Friday, December 20. 2013

My contribution to XKCD’s #949 is not needed

Digital World

A few hours ago I posted about share-file, a small tool to make a local file available at a public URL so that it is transferred from my machine, without being stored at some central server. I wanted to create something like FileTea, but usable from the command line.

My post made it to HackerNews (which brought my server to its knees for a while; let’s say I had the opportunity to find out what setting for apache’s MaxClient option works on my machine...), where the comments (besides some misunderstanding about the notable features of share-file) contained interesting links related to solving #949:

  • First of all, James Brechin implemented a command line client for FileTea. It is not clear to me whether he created it in response to my posting, or whether it lay around for a while, but I don’t care: It does precisely what I need, making share-file obsolete for me. Lazyweb works!
  • There is a service very similar to FileTea, but seemingly developed independently, at https://fipelines.org. It seems that this task is best solved using unorthodox programming language choices; while FileTea uses C and glib (not common in web applications), fipes, the software behind fipelines, is implemented in Erlang.
  • The new and shiny thing for peer-to-peer communication without additional software is WebRTC, which only needs a modern browser, and there is a chat- and file-transfer program at https://rtccopy.com/. I did not test how well it handles the case where both sides are behind a NAT, though, and sending a ready-to-use link is still simpler for the other side.
  • I found another WebRTC-based tool that focuses on sharing files only, and where users who have downloaded a file will, as long as their browser tab is open, help uploading it –  a bit like Bittorrent. So if you need to share a file with many people (all of which are using up-to-date non-IE browsers), sharefest is worth a try.

Thursday, December 19. 2013

My contribution to XKCD’s #949

Digital World

Randall Munroe rightly put shame on all the geeks in the world when he pointed out that transferring files over the internet is still an unsolved problem.

I am a big fan of FileTea’s approach to transferring files, where they are streamed from browser to browser, without registration and without being stored on some central server, and where closing the browser tab reliably cleans up the transfer. But I wanted something that works from the command line, so I created a small tool called share-file that will use SSH port forwarding to serve the files from a local, embedded web server at a publicly available port, as shown in these screenshots:

It works without additional dependencies (but better with python-magic installed) and requires a publicly available SSH server configured with GatewayPorts clientspecified. For more details, see the README, and to try it out, simply fetch it with git clone git://git.nomeata.de/share-file.git.

BTW, if someone implements a command line client for FileTea, I’ll happily dump share-file for it.

Sunday, December 1. 2013

Eine Geschichte über Heizungen in Großbritannien

Am Mittwoch nach der Arbeit kam ich nach hause und hörte so ein nerviges Piepen. Meine erste Vermutung war, dass einer der vielen Rauchmelder sich beschwert, dass seine Batterie leer geht. Das Piepen kam aus dem kleinen Zimmer, in dem ich die ersten zwei Nächte wohnte, und es war dann auch tatsächlich ein Melder, aber kein Rauchmelder, sondern ein der Kohlenmonoxidmelder, der unter dem Heizungs-Boiler liegt. Allerdings beschwerte der sich nicht über Kohlenmonoxid, sondern über das Wasser, das kräftig auf ihn drauf tropfte.

Ich hab ihn erstmal abgetrocknet und dann die Batterien rausgenommen, um meinen Ohren eine kleine Pause gönnen zu können. Kurz drauf stellte ich fest dass alle Steckdosen im Haus keinen Strom hatten (die Lichte allerdings gingen). Leider wusste ich nicht wo die Sicherungen sind, ging also erstmal einkaufen und wartete auf meinen Mitbewohner.

Der stellte dann fest, dass wenn man die Sicherung reinmachte, sie gleich wieder raussprang. Das ging so lange so bis wir den Boiler komplett vom Strom trennten – der hat sich wohl selbst einen Kurzschluss verpasst.

Mein Mitbewohner telefonierte dann mit dem Vermieter, der telefonierte dann mit British Gas und brachte die dazu, am gleichen Abend noch einen Techniker zu schicken (wozu er wohl etwas dick auftragen musste und behauptete, der Strom würde gar nicht mehr tun). Und entgegen allen Unkenrufen meiner Mitbewohner und der mittwöchlichen Brettspielrunde, dass man sich bei British Gas keine große Hoffnungen machen muss, kam dann auch ein Techniker. Der stellte dann größere Schäden am Boiler fest, für die erstmal Ersatzteile besorgt werden müssen – bis Freitag bleibt die Heizung kalt.

Ich hab mir zwar inzwischen die dickste Decke gekauft gehabt, die es im Sainsbury gab, aber die Nächte waren doch recht frostelig.

Am Freitag war ich dann von uns vier Mitbewohnern (der fünfte ist ja praktisch nicht existent) wohl der mit den flexibelsten Arbeitszeiten und dem gutmütigsten Chef, so dass ich vormittags zu hause blieb und um 10 Uhr einen freundlichen Menschen von Britisch Gas empfing und mit Tee versorgte, während der – laut über das alte Gerät schimpfend, das wohl schon längst ausgetauscht gehörte – den Boiler wieder instand setzte.

Passend dazu übrigens ein Artikel in der neusten Zeit (leider noch nicht online) über das Verhältnis der Briten zum Heizen, den ich nun voll bestätigen kann – dass ich hier doppelt verglaste Fenster hab muss man schon als Glück bezeichnen.

An der Stelle interessant: Trotz der unglaublich schlechten Isolation der britischen Häuser und deren Einstellung zur Heizeffizienz produzieren wir in Deutschland mehr CO₂ pro Nase. Was vermutlich daran liegt dass die Briten vor einer Weile weitgehend auf ihren industriellen Sektor verzichtet haben.

(Page 1 of 31, totaling 462 entries) » next page
Nach oben