summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blog/2015/einreicher-hilfreicher.en.rst88
-rw-r--r--blog/2016/besucher-teilnehmer.rst14
-rw-r--r--blog/2016/fleischroboter.rst23
-rw-r--r--blog/2017/dont-piss-in-my-beer.rst59
-rw-r--r--blog/2017/emobil.rst112
-rw-r--r--blog/2017/just-add-water.rst100
-rw-r--r--blog/2017/poudriere-in-ezjail.rst34
-rw-r--r--blog/2018/kinderkrankheiten.rst34
-rw-r--r--conf.py6
-rw-r--r--files/arts/software/jaildaemon/jaildaemon-0.3.tar.bz2bin0 -> 9519 bytes
-rw-r--r--files/arts/software/jaildaemon/jaildaemon-0.4.tar.bz2bin0 -> 10226 bytes
-rw-r--r--files/key.asc167
-rw-r--r--files/lectures/Laserharfe.pdfbin0 -> 505925 bytes
-rw-r--r--stories/index.rst2
-rw-r--r--stories/projects/Telefonbuch.rst8
-rw-r--r--stories/projects/elektropost.rst5
-rw-r--r--themes/erdgeist/assets/css/erdgeist.css14
17 files changed, 622 insertions, 44 deletions
diff --git a/blog/2015/einreicher-hilfreicher.en.rst b/blog/2015/einreicher-hilfreicher.en.rst
new file mode 100644
index 0000000..49219c6
--- /dev/null
+++ b/blog/2015/einreicher-hilfreicher.en.rst
@@ -0,0 +1,88 @@
1.. title: Hilfreicher Einreicher
2.. date: Sat, 19 Dec 2015 09:12:41 +0100
3
4In recent years I have participated in the organisation of the congresses held by CCC and have seen many recurring problems with talk submissions. Here are some hints how to reduce future frustration when great talks are rejected due to bad abstracts.
5
6Always assume nobody knows you.
7===============================
8
9Each one of the *many* submissions is reviewed by one of many volunteers, who sometimes were small children twenty years ago and just don't know who you are.
10
11If your CV does not explain why YOU should be the one to hold this talk, they will have to google for recordings of your presentations, some of which may not represent your best work.
12
13The same applies to the abstract. Assume that the reviewer has about the same level of intimacy with the topic as potential congress participants. If title and abstract don't feel inviting, nobody is going to attend. Why then should you be part of the program?
14
15Choose the track carefully.
16===========================
17
18Sometimes we correct the choice of track if a mismatch is apparent, but very likely this will take some time and the wrong review team will analyse the submission and won't know what to do about it.
19
20Competition is fierce *within* a track. Time slots are scarce and maybe your talk will have better chances in a different track.
21
22Finally, keep in mind that the audience also chooses its talks according to tracks.
23
24What kind of reaction time can I expect?
25========================================
26
27Submissions are reviewed from the very beginning of the CfP period, and sometimes there is immediate feedback.
28
29Some teams work continuously, others in bursts. The communicated deadlines are there to help you. Try to be reachable at the acceptance deadline, because we need your confirmation to accept you into the Fahrplan (schedule).
30
31The later you confirm, the later you will be visible in halfnarp – that's our tool to reduce conflict in people's talk choices.
32
33If you want to present something confidential, contact the leader of a track team or presse@ccc.de via PGP. Submission in the conference system can be seen by many reviewers.
34
35ALWAYS communicate your availability early on.
36==============================================
37
38Writing the Fahrplan (schedule) is incredibly complex. We have software to help us, but in the end many constraints need to be considered. If you won't say when you can be there, your talk simply won't happen.
39
40Somebody who is only available during the prime slots, or just on one day or even just a few hours will have to accept that we may not be able to choose their presentation or will have to give it a lower priority.
41
42Be prepared to shorten your presentation.
43=========================================
44
45Half-hour presentations are not second class presentations. You should see the offer of an half-hour slot as a rescue from rejection due to time constraints. Quite often a talk will also benefit from being made more concise.
46
47It is totally fine to answer "no, it won't work". We will not be angry about that, but we will have to see what we can do to best accomodate everybody. It might turn out that unfortunately things won't work between us and your submission.
48
49Explain the prerequisites for the audience.
50===========================================
51
52Submissions with a focus "For absolute beginners" are not necessarily non-starters, however we do try to strike a balance between demanding and entry level talks.
53
54"Already presented" also is no deal breaker. Not every audience member participates in all security and socio-economic conferences – nevertheless, please don't just present your one canned standard talk.
55
56
57Present in a language in which you feel comfortable with
58========================================================
59
60The best presentation is wasted if the way of presenting it makes it impossible to follow. If we see a submission with terrible English grammar or one that just smells like Google Translate, we will have to assume that the presentation is going to be similar.
61
62We know that you might still be well prepared, even in a foreign language. You can demonstrate this by having a well translated submission or links to recordings of other talks you have given in English.
63
64No need to get angry – the average nerd is very proud of their English and we have received a lot of cold reactions upon inquiring about language changes. However, struggling for words in front of a crowd of 3000 is different from watching Star Trek in the original English. Believe me – been there, done that. For native German speakers: if in doubt, present in German – we have good live translations for every German talk.
65
66For those not sure about their English (and no German knowledge): get a co-presenter to help you. I did the same for the opening ceremony last year, in order to accurately communicate all of the points important to me to the audience.
67
68Have a basic understanding of what the congress is about.
69=========================================================
70
71Boasting that you have a history in in the secret service or in the military will not be well received by either your reviewers or the audience.
72
73The high number of attendees may suggest that we make a lot of money, but the truth is that we always try to run the event with no profit. Every Euro you don't need in travel advances can be used for decoration or cheaper entrance fees. Please be considerate.
74
75Congress is a giant advertisement-free zone. This is our goal, at least. If your company logo is too large on your T-shirt or presentation sildes, expect to be booed by the audience. Please be considerate about this, too.
76
77None of the coordinators or content organisation team are paid. Many have day jobs, noisy children and a whole bunch of other stuff to do for the congress. Please be polite, especially to the volunteers at the venue.
78
79Handling rejection.
80===================
81
82If you receive a "sorry, conference schedule full", this is not an excuse: in some tracks, only one out of five entries are accepted. Before you reply "but that other boring talk was accepted and mine wasn't", consider: different participants = different interests, which is why there are different tracks with independent curators, who may thus accept entries that are of no interest to you.
83
84We really have to reject a *lot* of good submissions. Before you get angry, think hard about your submission and whether or not there may just be a valid reason for the rejection.
85
86If you *really* think your submission has been misunderstood and believe it may have just been a problem with the abstract, you may be able to fix the abstract and reply to the rejection email. However, in most cases, the content teams know what they are doing.
87
88Despite rumours to the contrary, the content teams do not make decisions arbitrarily, but primarily decide based on the quality of the entry, and to a lesser extent on whether it fits the program and a balanced Fahrplan. Nevertheless, we are only human, so publishing a harsh reaction to your rejection – especially if done on social media – may lead to an encounter with an offended reviewer in the next year.
diff --git a/blog/2016/besucher-teilnehmer.rst b/blog/2016/besucher-teilnehmer.rst
new file mode 100644
index 0000000..50112e0
--- /dev/null
+++ b/blog/2016/besucher-teilnehmer.rst
@@ -0,0 +1,14 @@
1.. date: 2016/11/21 19:50
2.. title: Von Besuchern und Teilnehmern
3
4Das Boot ist voll! Die Hackerszene wird überlaufen von lauter „Möchtegernhackern“. Im Hackcenter leuchten angebissene Äpfel statt Pinguinen. Und jetzt nehmen uns diese ganzen Hipster noch die Arbeits^WKonferenzplätze weg – und die können noch nicht mal Assembler! Wer nicht mal unsere Sprache lernen will und sich selber einen Vorverkaufs-Bot hacken kann, was will der überhaupt auf dem 33C3!??! Wo sind die goldenen Zeiten geblieben, als man noch wer war, noch unter sich? Und im Hackcenter gab's Pornos zum Tauschen! Und dann hält eine Frau die Keynote?! Und noch eine aus Afrika? Und programmieren kann die auch nicht! Der CCC war mal Club und Veranstaltung, da ging es um Computer!
5
6Oder?
7
8Ich kann das Gemaule abgehängter und abgehalfterter Möchtegern-„Hacker“, die in ihrem Leben außer dem regelmäßigen Installieren ihrer Lieblings-Linux-Distribution wenig Nerdiges hinbekommen haben, nicht mehr hören. Wer meint, der CCC definiere sich hauptsächlich über Computer, Hard- und Software, hat die Historie des Vereins nicht verfolgt. Beim ersten öffentlichen Hack, dem HaSpa-Hack, ging es nicht primär darum, dass die Nerds super programmieren konnten. Es ging immer darum, über den Tellerrand hinauszublicken, Wissen in Erfahrung umzusetzen und Transferleistungen aus anderen und in andere Wissensgebiete zu erbringen. Nicht umsonst heißen die CCC-Dezentralen „Erfahrungsaustauschkreise“. Die Arroganz, Nerds gäbe es quasi nur durch und mit Keyboard, die sich da durch Twitter und Heise-Foren wabert, ist erschütternd. Ich glaube ja, erst der Zuzug von und die Öffnung hin zu den wahrhaft Begabten aus anderen Disziplinen hat den Computer-Hackern die gesellschaftliche Relevanz eingebracht, derer wir uns jetzt rühmen. Und der Austausch ist auch für uns Keyboard-Nerds fruchtbar: Gestalter machen unsere Software nutzbar und ansehnlich. Das Wissen von Generationen von Projektplanern macht unsere Software überhaupt erst fertig. Und erst der Bedarf der Welt an diverser Software FÜR alle Fachbereiche ermöglicht es uns, aus unserem Hobby ein Auskommen nach Hause zu tragen.
9
10Historisch betrachtet hat sich das Internet zum mächtigsten Werkzeug der Nerds aller Wissensgebiete gemausert: Denn um vor zwanzig Jahren Gleichgesinnte in seinem Orchideenfach zu finden, musste man entweder zu teuren jährlichen Fachkonferenzen fahren oder sich mit den vom Munde abgesparten Fitzelchen an Fachliteratur Zugang mühsam selber erschließen. Und ja, anfangs war dabei schlicht das Medium die Nachricht. Damals war man eben was Besonderes, wenn man „was mit Computern macht“. Heutzutage ist man eben was Besonderes, wenn man nix mit Computern macht. Deal with it. (Und wenn wir ehrlich sind, drehte sich auch damals die Hälfte dieses Internets um die Soap-Operas mit James T. und Jean-Luc.)
11
12Wer wirklich Hardcore-Security-Nerds beim Blackhatten begaffen will, für den sind da draußen dutzende Kommerzkonferenzen gewachsen. Das ist aber nicht der Grund für das Wachstum des Congress. Wir haben – ganz im Gegenteil und als Realwelt-Spiegel des Internets – eine nichtkommerzielle Vision unserer Zukunft aufgebaut, in der man auch und gerade als Orchidee willkommen ist, solange man teilnehmen und nicht nur besuchen will. Wir finden uns als Teilnehmer mit einem Hacker-Mindset zusammen, die sich in allen Fachgebieten wiedererkennen. Man sehe nur in den Track „Science“: Sogar aus der drittmittelverseuchten und publikationsnormierten Academia können wir freudig Agrar-Nerds gewinnen, die sich ihre Meriten buchstäblich durch Arbeit verdient haben und diese auf dem Congress mit anderen teilen wollen.
13
14Statt laut pöbelnd einen Altnerd-Brexit zu fordern, müssen wir die Arme weiter aufhalten und unseren Hacker-Kultur-Raum arroganzfrei allen anderen Nerds zum Kopieren vorleben.
diff --git a/blog/2016/fleischroboter.rst b/blog/2016/fleischroboter.rst
new file mode 100644
index 0000000..540cc40
--- /dev/null
+++ b/blog/2016/fleischroboter.rst
@@ -0,0 +1,23 @@
1.. date: 2016/07/17 00:30
2.. title: Fleischroboter
3
4Ab wann wird aus einer Masse von selbstbestimmten Menschen, die sich durch das Verteilen ihrer Sensorik ins Netz und dem Optimieren ihrer Routen und Handlungen mit Hilfe eines Algorithmus Reibungsverluste im täglichen Leben ersparen wollen, eine Masse von fremdbestimmten Menschen?
5
6Momentan fluten Hunderttausende die Straßen auf der Suche nach Poke-Stops, die teilweise von Betreibern nahe liegender Shops gefüttert werden und teilweise findige Bauchladenverkäufer anlocken. Doch zuweilen führen Fehler in der Datenbasis dazu, dass nachts Gestalten vor ehemaligen Kirchen rumlungern und die Cops den neuen Besitzer des `Hauses für einen Dealer halten. <http://wgntv.com/2016/07/11/mans-home-mistakenly-set-as-pokemon-go-gym/>`_
7
8Dieses Problem des unfreiwilligen Fleshmobs ist nicht unbedingt neu: Begabte Trolls haben schon `verabredungswillige Männer auf einen Haufen zusammengelockt <http://jezebel.com/5801888/lonely-single-men-become-part-of-an-involuntary-flash-mob>`_ und andere wiederum folgen freiwillig Weganweisungen, deren Ziel sie nicht kennen, aber `deren Ziele sie unterstützen. <https://www.youtube.com/watch?v=wAw7hV7jeZY>`_ Daniel Suarez hat in `“Daemon” <http://thedaemon.com>`_ eindrucksvoll beschrieben, wie sich weiterhin selbstbestimmt fühlende Menschen zu den fleischgewordenen Ausführenden eines Algorithmus werden können, wenn man ihre Anreize mit den ürsprünglichen Zielen des System-Betreibers in Übereinklang bringt.
9
10Längst lassen wir uns in weiten Teilen unsere Lebens trotz besseren Bauchgefühls von Navigationsalgorithmen entlang für uns maßgeschneiderter Routen führen. Der Algorithmus wird sich schon etwas dabei gedacht haben: Eine eventuell längere Strecke kann überhaupt erst dazu führen, `dass die kürzere nicht verstopft ist <https://en.wikipedia.org/wiki/Braess%27_paradox>`_. Warum man ihm trotzdem folgen sollte? Aus dem selben Grund, warum man nachts an der roten Ampel stehen bleibt: Das Vertrauen darauf, dass alle anderen den Anweisungen genauso folgen und man nicht extra an jeder Kreuzung mühsam gucken muss.
11
12Wenn man gleich dabei ist, könnte man doch die Route für alle anderen dynamisch neu gewichten, wenn ein Krankenwagen ansagt, wo er entlangfahren muss. Und wenn die Protokollstrecke für Staatsbesuche schon im Vorfeld aus dem Routing fällt, müssten Motorradpolizisten viel weniger Fahrzeuge anhalten? Und wieso nur staatliche Stellen? Können nicht Fremdenverkehrsvereine verschiedener Kurorte Navi-Herstellern in einer Auktion Anreize geben, alle Fahrten (außer den Patienten natürlich) um den eigenen Ort herumzuleiten? Andere Orte freuen sich eventuell über zahlende Durchgangsreisende.
13
14In der Realität folgen schon heute viele Menschen in ihrem Beruf den Anweisungen der zentralen IT. Für die Befüllungskräfte in Amazon-Warenhäusern entscheidet der Algorithmus die kompletten Arbeitsabfolgen während der Schicht. In Banken sind Kundenbetreuer längst zu Computer-Vorlese-Mannequins verkommen, die Ergebnisse des Kreditbewertungsalgorithmus vortragen. Und selbst, wenn wir in unserem Berufsleben nicht direkt von Entscheidungen eines Computers abhängig sind, so begegnen uns die Auswirkungen in der Behördeninteraktion.
15
16Prinzipiell ist die Idee des Vorschußvertrauens Staat => Bürger mit einer randomisierten oder gesteuerten Nachprüfung mit hohen Strafandrohungen keine schlechte. Aber wer z. B. eine Steuer-Tiefenprüfung zu erdulden hat, wird anhand einiger, für die in Bewegung gesetzten Steuerprüfer nicht direkt ersichtlicher Parameter bestimmt. Die holländische Polizei `rühmt sich dabei gar <http://www.fr-online.de/politik/niederlande-polizei-schikaniert-systematisch-verdaechtige,1472596,3302362.html>`_, bei Verdächtigen, denen sie nicht direkt etwas nachweisen kann, durch diese “Systemlotterie“ Reibungsverluste zu erzeugen, um sie auf Spur zu halten. Die dabei dann aus allen möglichen Institutionen einreitenden Bediensteten wissen dabei nicht zwangsläufig, dass sie ein kleines Rädchen in einer `zielgerichteten Kampagne sind. <https://en.wikipedia.org/wiki/List_of_allegations_of_misuse_of_the_Internal_Revenue_Service>`_
17
18Doch während hier noch ein Mensch die Entscheidung trifft, gibt die automatisierte Auswahl “interessanter” Ziele für eine tiefere Untersuchung mehr Anlass zur Sorge. Wenn man das soziale Wirken von Personen in der Gesellschaft statistisch betrachtet, ergibt sich in den meisten Modellen eine Gaußverteilung. Und an den Rändern der Glockenkurven wird es für den Algorithmus interessant: Wer von der Norm abweicht, gibt mehr Anlass zur genaueren Überprüfung. Wenn alle Behörden die selben Kriterien zur Zielpersonenfindung ansetzen, sieht sich der Betroffene auf der Empfängerseite einer Flut eigentlich komplett unabhängiger Entscheidungen unterschiedlichster Institutionen. Wie sich das anfühlt, können Opfer von "racial profiling" eindrucksvoll berichten.
19
20Nun, was für den Einen Hort von Kriminalität und Niedertracht, ist historisch gesehen Keimzelle gesellschaftlichen Fortschritts, Widerstand gegen ungerechte staatliche Repression, Quelle von Kunst, Kultur und neuer politischer Ideen. Gewiss gibt es Teile der Bevölkerung, die so ein automatisiertes Rundlutschen des Verhaltensspektrums im Rest der Gesellschaft guthieße. Doch wenn uns an einer selbstbestimmten kulturellen Entwicklung etwas liegt, sollten wir der Dienstanweisungen aus dem Algorithmus mit gesundem Menschenverstand und einer gehörigen Portion Skepsis begegnen.
21
22Und bis dahin sollte man weiter die Frischluft-Dusche beim Pokémon-Go-Spielen mitnehmen.
23
diff --git a/blog/2017/dont-piss-in-my-beer.rst b/blog/2017/dont-piss-in-my-beer.rst
new file mode 100644
index 0000000..c98a541
--- /dev/null
+++ b/blog/2017/dont-piss-in-my-beer.rst
@@ -0,0 +1,59 @@
1.. date: 2017/04/27 22:12
2.. title: Don't piss in my beer
3
4`Twelve years ago <https://erdgeist.org/gitweb/ezjail/commit/?id=bb046d1a21058af9e2077d6b4f0418667862d46e>`_ I started a little project called `ezjail </arts/software/ezjail/>`_, an opinionated tool that helps `FreeBSD <https://www.freebsd.org>`_ admins to make compartmentalization a lot easier. Long before real virtualisation was a real thing for the rest of us, it helped me scratch my itches maintaining virtual servers I could give out to my more or less technically savvy friends without too much headaches regarding the safety of my files. Of course, this project has been released under `my favorite licence <https://erdgeist.org/posts/2011/die_beerware-lizenz.html>`_.
5
6Keep in mind, that this licence actually doesn't ask for much. Basically it only says not to steal it and run around claiming it's yours. Now, you'll *never* guess, `what happened <https://lists.freebsd.org/pipermail/freebsd-jail/2013-March/002118.html>`_ in 2013. ;)
7
8That's right: After apparently not reacting quickly enough to some man page rewrites submitted to me by an author from the philippines, I seem to have made an enemy for life! I've encountered an interesting version of a hostile fork named qjail: my project was copied, the fork renamed and most (`but not all <https://sourceforge.net/projects/qjail/files/qjail-1.0.tar.bz2/download>`_) of the references to the ezjail project name replaced by the fork's name.
9
10When I reported my astonishment to the adults running the FreeBSD project, they quickly `took action <https://svnweb.freebsd.org/ports?view=revision&revision=314731>`_ and blocked the port until qjail acknowledged me being the author. `Others noticed as well <http://stafwag.github.io/blog/blog/2013/04/10/migrating-from-qjail-to-ezjail/>`_ and decided to move away from the copy cat.
11
12The open source philosophy and some licence law details must have been lost on the guy, as becomes obvious by some later quite funny follow-ups. To quote from `emails later in that thread <https://lists.freebsd.org/pipermail/freebsd-jail/2013-March/002149.html>`_ (you have to start reading from the bottom).
13
14 One does not have to be a lawyer to know the lack of any license
15 verbiage embedded in computer programs released to the public becomes
16 property of public domain forever. Putting license verbiage on your next
17 port version is unenforceable because it's already property of public
18 domain.
19
20And even more hilarious
21
22 This outburst only confirms my suspicion that your suffering from dementia
23 caused by advancing age. I tried to give you a way to save face as I purposed
24 in my private email to you.
25
26 I understand what you are going through and forgive you for your actions. I
27 pray you are under medical care for this condition. There are drugs which reduce
28 these effects and prolong the periods of normalness.
29
30While I usually try not to stand in the way of others doing stuff, I found the process annoying enough to act. In turn, ezjail became a constant `target of FUD and suggestions to switch <http://daemonforums.org/showthread.php?t=5977>`_ in all `kinds of forums <https://lists.freebsd.org/pipermail/freebsd-jail/2015-January/002742.html>`_ I never had the time to check and correct.
31
32What made things worse is that the guy `just started <http://lists.freebsd.org/pipermail/freebsd-questions/2013-January/248558.html>`_ learning `the very language <http://lists.freebsd.org/pipermail/freebsd-questions/2013-January/247723.html>`_ ezjail was written in. Considering jails being a security mechanism, that's a very bold move.
33
34In the end, the differences in qjail became so distinct that he could not rip off later developments like the whole zfs sub system, `contributed by a friend of mine <https://erdgeist.org/gitweb/ezjail/commit/?id=095380a8d03be3a0454626e8b150712f125d814d>`_.
35
36Time went by and `things changed in the FreeBSD world <https://lists.freebsd.org/pipermail/freebsd-jail/2013-March/002160.html>`_ that were a little unfortunate to my project: FreeBSD jails were reorganized and the official jail management tool moved from reading a simple config language to a structured one (making it impossible to edit and parse in the rather simple scripting language sh). A legacy wrapper was added which showed a depreciation message every time ezjail would start a virtual system:
37
38 WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider to migrate to /etc/jail.conf
39
40Of course, this only was grist to the FUD mill, claiming ezjail was outdated. For technical reasons, while it is easy to get rid of this warning (qjail did), but unfortunately not `when doing it properly <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=218849#c13>`_. (Tl;dr: you can reproduce the original functionality of the wrapper, but you're doomed to chase changes in the system's implementation forever. Also you keep several, possibly diverging states of your config files without a way to parse the ones that the OS considers official.)
41
42If you zoom out `on the thread I just linked to <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=218849>`_, you'll notice that the very guy who stole my code now lobbies to have the wrapper code removed, which would essentially break ezjail.
43
44And to make things even more absurd: when called out on his proposal, he `approached me <https://bugs.freebsd.org/bugzilla/attachment.cgi?id=182130>`_ with a "fix" to the carnage he tries to bring upon me. You'll *never* guess if he wrote the code he asks me to copy into my project himself. ;)
45
46In summary: I can't really lurk around in all the forums and honestly I don't have the time for fighting an unsuspected arch enemy. But if you want to understand how frustrating open source development can become, once you're up against someone with more time than ability, feel free to join me over a beer!
47
48Update
49======
50
51As an impressive turd seasoning, I just found that qjail's current licence header reads:
52
53 As per the international "Berne Convention" this work is
54 protected and all rights reserved.
55
56 Before qjail may be forked, written permission must be
57 obtained from the author.
58
59No worries mate. Not gonna fork it. Promise!
diff --git a/blog/2017/emobil.rst b/blog/2017/emobil.rst
new file mode 100644
index 0000000..c9f9b8d
--- /dev/null
+++ b/blog/2017/emobil.rst
@@ -0,0 +1,112 @@
1.. date: 2017/05/25 13:06
2.. title: Sonne im Tank
3
4
5Seit September bin ich e-mobil. Ich bin mein ganzes Führerschein tragendes Leben lang auf Mopeds durch Berlin geheizt, beginnend bei einer `Schwalbe <https://de.wikipedia.org/wiki/Simson_Schwalbe>`_, seitdem immer mit lauten und müffelnden Zweitaktern – bei entsprechendem Verschleiß. Ich wollte vermeiden, mehrere Tonnen Stahl durch die Gegend zu hieven, wenn ich doch nur meinen Hintern von A nach B bewegen wollte, und habe daher trotz mehrerer Autos auch immer noch als primäres Fortbewegungsmittel ein Moped beibehalten. [1]_ Trotzdem ist der wohlige Geruch von Zweitaktabgasen, der harmonische und weit wahrnehmbare Klang nicht unbedingt das Omen, das man seiner Ankunft voraussenden möchte – und die Wartungsanfälligkeit dieses fragilen Haufens beweglicher Teile ließ mich schon vor einer Weile die Fühler in Richtung Elektroroller ausstrecken.
6
7Zwar gab der Markt seit sechs, sieben Jahren auch welche her – allerdings schreckten die Preise im Bereich einer Kleinwagenneuanschaffung ab und meine guten Vorsätze verschwanden schnell wieder in der Schublade. Und die frühen Reichweiten-Angebote von so 25 bis 30 Kilometern haben nichts mit den Strecken zu tun, die ich an einem terminlich gut befüllten Tag in Berlin so in die Reifen schrubbe. Mein Reichweiten-Maßstab ist die Sommerresidenz von Freunden nahe Berlin, für die ich rund 80 Kilometer runterreißen muss – jaja, kein Spaß auf einem geschwindigkeitsbegrenzten Kraftfahrzeug, und auch auf meinen Verbrennern hatte ich unterwegs schon eine Stammtankstelle auserkoren. [2]_ Aber zumindest kann ich mal eben ranfahren, "Kaffee" kaufen und weiterfahren. "Mal eben" Akkus aufladen kannste hingegen knicken.
8
9Schon vor ein paar Jahren [3]_ startete die Firma Gogoro in Taipei einen Dienst, bei dem man sich um das Laden nicht mehr kümmern muss, sondern die Akkus an Straßenecken im Späti leer gegen voll tauschen kann. Die sind nun als Mietmobile nach Berlin expandiert [4]_, jedoch finde ich die weder gutaussehend noch gutklingend. Aber hohe Absatzzahlen ziehen ja auch immer sinkende Preise nach sich und richtig:
10
11In den letzten Jahren hat sich da so richtig was getan: Die Preise für Elektromotoren und Batterien sind gepurzelt – nicht zuletzt durch die krassen E-Mobilisierungsprogramme in China und Indien [5]_, Ladezeiten und Energiedichten kommen in erträgliche Größenordnungen und ein Berliner Unternehmen bietet Hipster-geeignete Scooter zum Kampfpreis an. [6]_ In der Rechts-Unten-Vollausstattung mit zwei Akkus ist man schon mit 3,5 k€ [7]_ dabei – das ist nur marginal mehr, als ich in meine alten Benziner investiert habe. Und das liegt vor allem daran, dass an so einem E-Roller nix mehr dran ist:
12
13Nabenmotor im Hinterrad nebst Motorsteuerung, einigermaßen stabiler leichtgewichtiger Rahmen, quasi ein besseres Fahrrad, Akkufach und Sattel. Also habe ich zugeschlagen und fahre seit September quasi durchgängig E-Roller im Berufsverkehr. Und ja, es rockt: Kaum bewegliche Teile, so ein Elektromotor ist im Vergleich zu einem Verbrenner trivial und hält gern mal zig Jahre. Gut, bisschen Bremskram, Tacho und Verkleidung, aber im Prinzip war's das. Und als mir das Akkufach wegen eines unglücklichen Steinschlags an einer Ecke rausgebrochen ist, gab's vom Hersteller ein Paket mit einem tiefgezogenen Plasteteil, das ich mit einem Schraubendreher in 10 Minuten selber tauschen konnte. Ich kann im Prinzip für die nächsten zwanzig Jahre mit dem Gerät fahren, ohne nennenswerte Wartungskosten zu haben.
14
15Und dann der Verbrauch: Aufladen geht mit 220 V, Netzteil ist bei und lädt in rund vier Stunden voll. Die Hersteller-Angaben von "70 % aufgeladen in einer Stunde" sind doch ein bisschen optimistisch, aber eine komplette Ladung bekomme ich zuhause für rund 30 Cent. Da ich nicht erst tanke, wenn die Akkus leer sind, ist der genaue Preis schwer zu schätzen, aber meine monatlichen Ausgaben für's Tanken sind von 60 Euro auf 6 Euro gesunken. Und das noch in den ersten Monaten, wo mich der Fahrspaß das Moped noch deutlich häufiger benutzen lässt. Und Fahrspaß it is!
16
17Das Moped, was ich mir ausgesucht habe, ist im Vergleich zu den Leihrollern von eMio und Coup rund 20 % kleiner und deutlich leichter – und jedes am Roller gesparte Kilo muss ich nicht abnehmen, um an der Ampel schneller wegzukommen. Entsprechend saust es sich an der Kreuzung auch los. Danach gleitet man quasi durch den Straßenverkehr und viel toller: durch Parks und über Fahrradwege und Bürgersteige, ohne negativ aufzufallen. Um das Moped am Café abzustellen, bin ich auch schon durch die Stuhlreihen auf dem Gehweh gerollt und niemand hat auch nur geguckt – mit dem 2-Takter undenkbar. Und wenn man einen Sozius an Board hat [8]_, ist sogar ein entspanntes Gespräch möglich.
18
19Tzschja, und der Pferdefuß? Die Reichweiten-Experimente sind nicht vollständig geglückt: Vollständig leer kann (und sollte man) das Akku nicht realistisch fahren, da auf den letzten 15 % Ladestand ein bequemes Fußgängertempo rauskommt [9]_. Und auch dann landet man nicht bei den 50 Kilometern Distanz, sondern eher so bei 45, von denen man nur die ersten 40 vorankommt. Selbst mit den beiden Akkus sind die 80 Kilometer zur Datsche [10]_ des Kumpels also nicht (oder nur ohne Bremsen und mit viel Bangen) ohne Zwischenstopp zu erreichen. [11]_ Das heißt, dass ich mir jetzt ein Restaurant suchen muss, wo ich auf dem Weg kurz zum Schnitzel Essen anhalten und währenddessen zwei Akkus kurz-betanken muss. Hmm.
20
21Auch ansonsten ist die Kapazität noch nicht da, wo man überhaupt nicht mehr drüber nachdenken muss: Die Akkus selber wiegen so acht Kilogramm und kommen mit Henkel: Mit Erdgeschoss-Büro ist das Tauschen schon in die tägliche Routine übergegangen, weil der Motorcontroller auf den ersten 25 % Akku noch einmal spürbar schneller anzieht und daher ein volles Akku spaßsteigernd ist. [12]_ Allerdings ist es nicht so, dass ich ernstlich leide, wenn ich mal zwei Tage das Tauschen vergessen habe, also kein nervöses Hetzen wie beim Smartphone. Was die Kapazität angeht, bin ich verdammt nah am Wohlfühlbereich dran, und wenn von den wöchentlichen Presseberichten über eine Verdopplung und Verdreifachung der Energiedichte in Akkus im Labor [13]_ auch nur eins die Serienreife erreicht, erreiche ich die Auftank-Frequenz des Benziners.
22
23Da ich auch stolzer Winterfahrer bin, habe ich ein paar Erfahrungen mit den Akkus in der Kälte gemacht. Grundsätzlich gilt: Akkus nicht nachts draußen parken. Und wenn man sie tagsüber ein paar Stunden in der Kälte lässt, zieht das Moped nochmal deutlich schlechter an und man verliert bei Frost rund 10 % Reichweite. Kein Showstopper, aber sollte man beachten.
24
25Das einzige, was mich beim Unu ein bisschen ankekst, ist die Helmsituation. Das Akkufach ist riesig, und wenn man nur einen Akku mitnimmt, hat man echt viel Stauraum für einen mittleren Einkauf. [14]_ Jedoch ist das Akku quaderförmig hoch (es passen also zwei nebeneinander), was keinen Platz mehr für einen normalen Helm lässt. Sinnigerweise passt der Helm prima rein, wenn kein Akku drin ist: Aber ganz ehrlich schleppe ich lieber Helm statt Akku mit. [15]_
26
27Nun kann ich also mit gutem Beispiel voran Energie sparend durch die Stadt heizen und meine Gesamtökobilanz wieder massieren. Beim Recherchieren bin ich noch auf das offensichtlich weit verbreitete Vorurteil gestoßen, Elektro-Mobile würden ja viel dreckiger betrieben werden, als Benziner, da der Strom aus Kohlekraftwerken käme. Gilt für mich zwar nicht, aber noch krasser ist, dass die meisten Raffinerien Benzin mittels Kohlestrom herstellen [16]_, der die Bilanz pro Kilometer sofort wieder Richtung Elektro-Mobil korrigiert. Und Meldungen wie die hier [17]_ machen mir Mut, wirklich Sonnenkraft unterm Hintern zu spüren – Proctoheliose FTW!
28
29Fußnoten:
30
31.. [1] Als ich mal den Verbrauch meines letzten Mopeds auf 100 km hochgerechnet habe, schlackerten mir aber auch die Ohren. Zweitakter sind wirklich ineffizient.
32.. [2] Präteritum und Perfektform von erkiesen. https://de.wiktionary.org/wiki/erkiesen
33.. [3] http://www.intaiwan.de/2016/08/08/gogoro-berlin-e-scooter-elektro-roller/
34.. [4] https://www.electrive.net/2016/08/02/bosch-startet-elektro-scooter-sharing-namens-coup-in-berlin/
35.. [5] http://business.financialpost.com/news/transportation/fossil-fuel-vehicles-will-vanish-in-8-years-in-twin-death-spiral-for-big-oil-and-big-autos-says-study-that-shocking-the-industry
36.. [6] https://unumotors.com/
37.. [7] Dabei kostet der zweite Akku 700 Euro und das Upgrade von der noch erträglichen 2kW-Motor-Version auf die 3kW-Vollausstattung 500 Euro. Den 1-kW-Motor zum Starterpreis von 1600 Euro will man sich nicht wirklich antun.
38.. [8] Für einen Beifahrer muss man sich ob des geringeren Platzangebots sehr lieb haben oder zwei schmale Personen anordnen, sonst heißt es Gepäckträgerberührung.
39.. [9] Jaja, ich weiß das daher, dass ich das Akku auch tatsächlich leergefahren habe.
40.. [10] Für Wessis: Ferienlaube.
41.. [11] Ob das mit einem der beiden Motoren geringerer Leistung möglich gewesen wäre, weiß ich dabei aber nicht.
42.. [12] Es kann daher sein, dass die Anzugsfreudigkeit auf den ersten Kilometern in die Reichweite frisst.
43.. [13] Citation needed.
44.. [14] Der Rest vom Großeinkauf passt bequem zwischen die Füße und in den Rucksack.
45.. [15] Obwohl das im Winter vielleicht doch die bessere Wahl wäre.
46.. [16] https://www.youtube.com/watch?v=BQpX-9OyEr4
47.. [17] https://www.indy100.com/article/two-thirds-germany-powered-renewable-energy-easter-day-green-7737221
48
49.. raw:: html
50
51 <script>
52 (function () {
53 var FOOTNOTE_REGEX = /^\[[0-9]+\]$/;
54
55 var oldOnLoad = window.onload;
56 window.onload = function (event) {
57 var elems = document.getElementsByClassName("footnote-reference");
58 for (var i = 0; i<elems.length; i++) {
59 var elem = elems[i];
60 var ptrText = elem.innerHTML;
61 if (FOOTNOTE_REGEX.test(ptrText)) {
62 elem.className = "footnote-reference footptr";
63 elem.onclick = toggle;
64 }
65 elem.setAttribute("href", "#"+ptrText);
66 }
67 addListItemIds("footnotes", "[", "]");
68
69 if (typeof oldOnLoad === "function") {
70 oldOnLoad(event);
71 }
72 };
73
74 function addListItemIds(parentId, before, after) {
75 var refs = document.getElementById(parentId);
76 if (refs && refs.getElementsByTagName) {
77 var elems = refs.getElementsByTagName("li");
78 for (var i = 0; i<elems.length; i++) {
79 var elem = elems[i];
80 elem.setAttribute("id", before+(i+1)+after);
81 }
82 }
83 }
84
85 var currentDiv = null;
86 var currentId = null;
87 function toggle(event) {
88 var parent = this.parentNode;
89 if (currentDiv) {
90 currentDiv.parentNode.removeChild(currentDiv);
91 currentDiv = null;
92 }
93 var footnoteId = this.innerHTML.match(/[0-9]+/)[0];
94 if (currentId === footnoteId) {
95 currentId = null;
96 } else {
97 currentId = footnoteId;
98 currentDiv = document.createElement("div");
99 var footElem = document.querySelector('[href$="#id'+currentId+'"]').parentNode.parentNode;
100 var footHtml = footElem.childNodes[3].innerHTML;
101 currentDiv.innerHTML = footHtml;
102 currentDiv.className = "foot-tooltip";
103 parent.insertBefore(currentDiv, this.nextSibling);
104 setTimeout(function () {
105 currentDiv.style.opacity = "1";
106 }, 0);
107 }
108 event.preventDefault();
109 }
110 }());
111 </script>
112
diff --git a/blog/2017/just-add-water.rst b/blog/2017/just-add-water.rst
new file mode 100644
index 0000000..719dc6b
--- /dev/null
+++ b/blog/2017/just-add-water.rst
@@ -0,0 +1,100 @@
1.. date: 2017/08/24 19:07
2.. title: Just add water
3
4Since `letsencrypt <https://letsencrypt.org/>`_ has made it easy to actually get the little green lock icon in all the browser, I've deployed it nearly everwhere, where reloading keys every three months is not an issue (looking at you, dovecot and ejabberd). When using FreeBSD, the `security/dehydrated <http://www.freshports.org/security/dehydrated>`_ port has made things smooth enough for me not to be to afraid to execute it from a periodic script: It only requires bash and curl and can be executed as non-privileged user.
5
6So here's a step by step instruction how to properly set it up:
7
8#. Install the port/package::
9
10 pkg install dehydrated
11
12#. Create the letsencrypt user, for example::
13
14 echo letsencrypt::::::::/bin/sh: | adduser -w random -f -
15
16#. Create your config copy ``/usr/local/etc/dehydrated/config`` by duplicating the example::
17
18 cp /usr/local/etc/dehydrated/config.example /usr/local/etc/dehydrated/config
19
20#. Edit ``/usr/local/etc/dehydrated/config`` so it reads ``CONTACT_EMAIL=me@foo.com``. (Don't forget to remove the # at the line's start.)
21
22#. By default, dehydrated's work dir is ``/usr/local/etc/dehydrated``. I do not like that, because the letsencrypt user needs write access to that directory for its housekeeping files and could modify things like the config and – worse – the ``deploy.sh`` script. So I create a different work dir::
23
24 mkdir /var/dehydrated
25 chown -R letsencrypt /var/dehydrated
26
27#. And then I change ``/usr/local/etc/dehydrated/config`` to read ``BASEDIR=/var/dehydrated``. (Again, don't forget to un-comment the line.)
28
29#. The web directory for challenge replies defaults to ``/usr/local/www/dehydrated``. It needs to be writable by letsencrypt user::
30
31 chown -R letsencrypt /usr/local/www/dehydrated
32
33#. Configure domains.txt::
34
35 echo 'foo.com www.foo.com' > /var/dehydrated/domains.txt
36
37#. I want dehydrated to be run weekly by periodic, I also setup the deploy script (see below). I put those lines in ``/etc/periodic.conf``::
38
39 weekly_dehydrated_enable="YES"
40 weekly_dehydrated_user="letsencrypt"
41 weekly_dehydrated_deployscript="/usr/local/etc/dehydrated/deploy.sh"
42
43#. The deploy.sh script needs to be setup, it will tell all frontends to reload certs. For my nginx installations, it is enough to put this into ``/usr/local/etc/dehydrated/deploy.sh``::
44
45 #!/bin/sh
46
47 /usr/sbin/service nginx reload
48
49#. Don't forget execute permissions::
50
51 chmod +x /usr/local/etc/dehydrated/deploy.sh
52
53#. Finally, for nginx to correctly route requests to the web dir, add this to your server block. Don't forget to enable ``listen 80``::
54
55 location /.well-known/acme-challenge/ {
56 alias /usr/local/www/dehydrated/;
57 }
58
59#. Before running dehydrated for the first time, you should reload your nginx config. This also is an implicit check for correct permissions on ``deploy.sh`` ;)::
60
61 /usr/local/etc/dehydrated/deploy.sh
62
63#. Run dehydrated to set up and agree to terms and conditions::
64
65 su letsencrypt -c 'dehydrated --register --accept-terms'
66
67#. Then run it again to actually do a challenge/response and generate certs::
68
69 su letsencrypt -c 'dehydrated -c'
70
71#. If everything went fine, tell nginx to use the new certs in your server block. Don't forget to enable ``listen 443 ssl``::
72
73 ssl_certificate /var/dehydrated/certs/www.foo.com/fullchain.pem;
74 ssl_certificate_key /var/dehydrated/certs/www.foo.com/privkey.pem;
75
76#. Make nginx use your new certs::
77
78 /usr/local/etc/dehydrated/deploy.sh
79
80You should be able to see your web site with a little green lock icon now, carrying a letsencrypt cert.
81
82In order to verify that all your setups have been setup correctly, I wrote a script that checks them all::
83
84 HOSTS="mail.foo.com:25:smtp mail.foo.com:imaps www.foo.com jabber.foo.com:5232"
85 unset LANG LC_CTYPE LC_MESSAGES LC_TIME
86
87 for host in $HOSTS; do
88 unset starttls
89 [ ${host%:*} = ${host} ] && host=${host}.:443
90 if [ ${host%*:*:*} != ${host} ]; then
91 starttls="-starttls ${host#*:*:} "
92 host=${host%:*}
93 fi
94 echo $host ${starttls}
95 notafter=$( yes q | openssl s_client -servername ${host} -connect ${host} ${starttls} 2>/dev/null | openssl x509 -noout -enddate | grep ^notAfter= | cut -d = -f 2- )
96 secs=$( date -j -f "%b %d %T %Y %Z" "${notafter}" +%s )
97 now=$( date +%s )
98 printf "% 4d days .. until %s\n" $(( (secs - now) / 86400 )) "${notafter}"
99 done
100
diff --git a/blog/2017/poudriere-in-ezjail.rst b/blog/2017/poudriere-in-ezjail.rst
new file mode 100644
index 0000000..706260b
--- /dev/null
+++ b/blog/2017/poudriere-in-ezjail.rst
@@ -0,0 +1,34 @@
1.. title: Running poudriere in ezjail
2.. date: 2017/08/06 21:42
3
4Ever since `poudriere <https://github.com/freebsd/poudriere>`_ was published, I felt the obligation to run a public repository with packages tuned to my needs (i.e. without X11, without Java, with a certain TLS library as default, etc). But considering this tool's complexity, I never felt comfortable running it on a production system's host. So naturally I've been looking for a way to jail it away and only 2 years after `this tutorial <https://github.com/freebsd/poudriere/wiki/poudriere_in_jail>`_ outlined how that works, I managed to acutally try it out. Long story short: This guide kinda works and I got poudriere running in a jail. But I want the jail to automatically start up, get the correct dataset attached and receive all permissions needed to do zfs stuff and creating its own builder jails, in other words: I wanted to embed it as an ezjail.
5
6Now, turns out, that's actually not so hard: If you're running ezjail with zfs enabled, you first create the dataset for poudriere to work on::
7
8 zfs create -o jailed=on tank/poudriere
9
10then you just create your poudriere jail, making sure to pass it an ::1 IP address::
11
12 ezjail-admin create -c zfs poudriere 127.0.0.1,lo0|::1
13
14and then manually edit the two config lines in ``/usr/local/etc/ezjail/poudriere`` to read::
15
16 export jail_poudriere_parameters="children.max=10 allow.mount=1 allow.mount.devfs=1 allow.mount.procfs=1 allow.mount.zfs=1 allow.mount.nullfs=1 allow.raw_sockets=1 allow.socket_af=1 allow.sysvipc=1 allow.chflags=1 enforce_statfs=1"
17 export jail_poudriere_zfs_datasets="tank/poudriere"
18
19dont forget that this jail needs a resolv.conf, too and now you can just::
20
21 ezjail-admin console -f poudriere
22
23and follow `the FreeBSD handbook section on poudriere <https://www.freebsd.org/doc/handbook/ports-poudriere.html>`_ to get your poudriere jobs running. Since I wanted the web server jail to serve the packages, I exposed them in ``/etc/fstab.www_domain.com`` by adding a line::
24
25 /usr/jails/poudriere/tank/poudriere/data/packages /usr/jails/www.domain.com/packages nullfs ro 0 0
26
27and after an ``ezjail-admin restart www.domain.com``, you should be able to use the packages built by adding a ``/usr/local/etc/pkg/repos/www.conf`` of::
28
29 www: {
30 url: "file:///packages/103amd64-local-workstation/",
31 enabled: yes
32 }
33
34*Update:* Should you be missing the file systems inside your poudriere jail, make sure to mount them in your periodic script that runs poudriere (using ``zfs mount -a``, before running poudriere), or take a look at `the thread on the ezjail mailing list <https://elektropost.org/ezjail/msg00902.html>`_ regarding rc.d/zfs not finding the dataset when it's run.
diff --git a/blog/2018/kinderkrankheiten.rst b/blog/2018/kinderkrankheiten.rst
new file mode 100644
index 0000000..9c8afb5
--- /dev/null
+++ b/blog/2018/kinderkrankheiten.rst
@@ -0,0 +1,34 @@
1.. date: 2018/06/14 16:07
2.. title: Kinderkrankheiten
3
4Nachdem ich jetzt zwei Jahre mit meinem Elektroroller [1]_ quasi täglich [2]_ durch die Stadt gleite, ist es Zeit für eine Retrospektive. Ich habe lange überlegt, ob ich meine Erfahrungen mit meinem speziellen Modell so allgemeingültig zusammenfassen kann. Zudem bin ich kein erfahrener Produkttester und würde ungern unnötig Werbung oder Schmäh für einen Anbieter verbreiten. Da ich aber wieder an jeder zweiten Kreuzung von nebenan wartenden Leihroller-Fahrern über mein Moped ausgefragt werde, kann ich auch mal allen eine Zusammenfassung dalassen: Ich habe mir vor zwei Jahren einen Unu-Roller mit einem 3kW-Motor gekauft und einen zweiten Akku dazu.
5
6Die wichtigsten Kenndaten [3]_: Nominelle Reichweite mit beiden Akkus 100 km, realistisch: 80 km. Die letzten fünf Kilometer fährt man nur noch 20 km/h. Ladegeschwindigkeit (pro Akku) sind 10 km/h, zweites Ladegerät zu kaufen lohnt, Y-Kaltgeräte-Adapter für die Reise auch. Akku wiegt so 8-9 kg, kriegt man mit Tragegurt (ist bei) auch mal zwei Treppen hoch. Moped wiegt weniger als ich.
7
8Zuallererst: Im realen Leben ist die Reichweitenangst vollständig unbegründet. In den letzten zwei Jahren Regulärbetrieb bin ich genau einmal liegengeblieben. Hört sich erstmal doof an, heißt aber nur, dass man seinen Akku rausholen per ÖPNV heimbringen, aufladen und zurückbringen muss. Mit meinem Verbrenner bin ich mehrmals im Jahr leergefahren und musste dann tatsächlich schieben oder Kanister organisieren, befüllen und mich mit dem Taxifahrer streiten, die stinkende Plastebox per Kurzstrecke mitnehmen zu dürfen.
9
10Das Aufladen geht durch einen ganz einfachen Effekt in die tägliche Routine über: Zwischen 75 % und 100 % Akkuladung pumpt der Motorkontroller an der Kreuzung nochmal extra Strom in den Motor, darunter verhält er sich konservativer. Soll heißen: Je voller der Akku, desto mehr Fahrvergnügen an der Ampel. Das konditioniert von ganz alleine darauf, den Akku zum Laden mit reinzunehmen. Für längere Strecken innerhalb der Stadt nehme ich daher immer zwei volle Akkus mit, wenn eins dicke reichen würde.
11
12Für einen Trip in die Pampa sollte man sich im Umkreis von 75 km ein Restaurant suchen, in dem man seine Akkus aufladen darf. In zwei Stunden bekommt man in der Summe rund 40 km drauf. Der Rest ist Mathematik. Wenn alles gut geht. Bei meinem ersten Testtrip ging leider nicht alles gut. Das Hinterrad hatte aufgrund einer kleinen Delle in der Felge subtilen Luftverlust. Und platte Reifen sind der natürliche Feind der Reichweite. Das kurz vor Bernau festzustellen, brachte mir die ganze Tourplanung durcheinander [4]_ und machte, dass ich am Ende doch noch mit der U-Bahn den Akku nach hause fahren musste.
13
14Das Problem artete sogar noch aus, und das lag absurderweise daran, dass ich mein Moped ganz leise wollte. Die meisten E-Roller kommen mit einem unangenehmen Plaste-Surren daher. Da ich mich nach zwei Jahrzehnten Rasselmotor Fahren darauf gefreut hatte, majestetisch durch die Nacht zu gleiten, sind diese Roller ein No-go für mich. Das Geräusch stammt (soweit ich das beobachten konnte) vom Riemenantrieb – der Motor ist unter dem Sitz und die Kraft muss auf's Hinterrad. Die Unus haben hingegen einen Nabenmotor direkt im Rad eingebaut und produzieren außer dem Reifen-Fahrbahn-Geräusch [5]_ keinen Ton. Leider hat sich Unu entschieden, die Felge fest auf dem Motor zu verschweißen. In der Werkstatt wollten sie daher für die defekte Felge (eBay-Preis gebraucht 'n Zehner) ungefähr den Neupreis des Motors haben. Nach einigem Grübeln kam dann die Werkstatt darauf, die Felge geradezuhämmern und einen Schlauch einzuziehen. Muss man wissen. Seitdem hatte ich keine überraschenden Reichweitenprobleme mehr.
15
16Unüberraschend kommen die nur im Winter. Kalte Akkus sind zickig – so ab 0 Grad. Nehmt die rein. Eiskalte Akkus machen, dass der Motor kaum noch anzieht und die Reichweite einbricht – wenn man überhaupt noch Lust hat, die auszufahren. Ansonsten ist das Moped auch im Winterbetrieb tauglich. So richtig meterhohen Schnee zum Testen hatten wir leider nicht. Obwohl ich diesen Winter nur schwer testen konnte. Das lag daran, dass man mit dem Unu super einkaufen fahren kann.
17
18Im Fach unter dem Sitz passen zwei Akkus nebeneinander rein. Wenn man eins rausnimmt, passt ein kompletter Rewe-Einkaufskorb [6]_ rein. Und dann ist zwischen den Beinen immer noch Platz. Bei einem späten Einkauf – meine Kaufhalle hat 24/6 auf – habe ich in einer Novembernacht das volle Einkaufsprogramm mitgemacht und mir noch eine TKP [7]_ in der linken Hand balanciert. Wie das dann halt so ist, habe ich elegant mit dem Knie den Pizzakarton unglücklich gegen das Lenkrad geschoben, das mich prompt gegen einen fies platzierten Poller lenkte. [8]_ Die Geschichte des Pärchens, das mir beim Zusammensammeln von Verkleidungsteilen und Einkäufen half, im Tausch gegen die Benutzung meines Mobiltelefons, würde noch einen ganzen Blogpost füllen. Ein paar strukturell wichtige Teile wie Blinker und Fußstellflächen waren ab, daher musste ich zur Werkstatt und wurde dann von den Freuden deutsch-chinesischer Handelsfreundschaft überrascht:
19
20Unu wechselte Mitte 2017 den Zulieferer für die Ersatzteile, der wiederum eine ganz eigene Idee von Vorratshaltung hatte. Als bei dem die Bestellungen für die Karosserieteile eingingen, fingen die erst an, die Produktion dafür binnen Monatsfrist zu planen. Kurzum: nach einem Vierteljahr hatte ich meinen Roller wieder. Zum Glück war ich ein gut Stück dieser Zeit eh nicht im Lande. Bisschen peinlich ist es trotzdem, wenn sie jetzt auch – nach eigenen Beteuerungen – die Lieferkette wieder im Griff haben.
21
22Eins noch: Das erste, zu dem mich die mir zugeteilte Bosch-Vertragswerkstatt zu meinem Roller fragte, war der Zustand der Spiegel. Und tatsächlich, so ziemlich alles an den Spiegeln wirkt wacklig: Allein weil das Moped so leicht ist, zittern die Spiegel schon auf asphaltierten Straßen ganz verwirrend, auf Kopfsteinpflaster braucht man sie gar nicht zu benutzen versuchen. Die Konterschrauben unten an den Spiegel muss man mit echtem Werkzeug nachziehen, sie lösen sich sehr gern von allein. Unu legt aus Verlegenheit schon den passenden 15-er Schlüssel zum Handbuch bei. Die kleinen Blinker/Licht-Konsolen, auf denen sie draufstecken, geben auch irgendwann nach, drehen sich dann so leicht nach vorne und hinten und wurden bei mir schon drei mal gewechselt. Aber dafür sind die Spiegel schick!
23
24Kurzum, wie das so ist als early adopter einer hippen Technologie: Man macht alle Kinderkrankheiten einmal mit. Zwischendurch war die Frustration durchaus da, mich auch nach anderen Anbietern umzuschauen. [9]_ Meine Probleme sind aber fürs erste gelöst, die Lösungen für andere Betroffene runterzuschreiben, war auch Motivation für diesen Text. Ich weiß jetzt nach zwei Jahren ziemlich genau, woran ich bin, meine Akkus tun immer noch und fühlen sich nach zwei weiteren Jahren Stadtbetrieb an. Und auf ein neues Akku- oder Ladesystem umzusteigen, ist mit impliziten Kosten verbunden, zudem würde ich bei anderen Herstellern eben auch nochmal alle Kinderkrankheiten mitnehmen und die wären wiederum neu und überraschend. Daher bleibe ich erstmal bei meinem Model.
25
26.. [1] https://erdgeist.org/posts/2017/emobil.html
27.. [2] Warum ich den letzten Winter nicht täglich fuhr, erfahrt ihr weiter unten!
28.. [3] https://unumotors.com/de/product/specs
29.. [4] https://twitter.com/erdgeist/status/871031823396220929
30.. [5] https://de.wikipedia.org/wiki/Reifen-Fahrbahn-Ger%C3%A4usch
31.. [6] Also dessen Inhalt. Nicht der Korb.
32.. [7] `Tiefkühlpizza. <http://www.sueddeutsche.de/stil/tiefkuehlpizza-im-test-salami-taktik-1.2364180>`_
33.. [8] Zu den Kosten und Effekten der Disziplinierung von Autofahrern `hier entlang <http://itstartedwithafight.de/2017/07/18/was-uns-die-disziplinlosigkeit-von-autofahrern-kostet/>`_.
34.. [9] Unter anderem will `Vespa jetzt mit einem E-Roller rauskommen <https://www.homeandsmart.de/vespa-elettrica-e-roller-piaggio>`_.
diff --git a/conf.py b/conf.py
index e2a080c..2490c16 100644
--- a/conf.py
+++ b/conf.py
@@ -69,7 +69,7 @@ BLOG_DESCRIPTION = "is the personal page of Dirk Engling aka erdgeist" # (trans
69# in the default language will be shown instead. 69# in the default language will be shown instead.
70 70
71# What is the default language? 71# What is the default language?
72DEFAULT_LANG = "en" 72DEFAULT_LANG = "de"
73 73
74# What other languages do you have? 74# What other languages do you have?
75# The format is {"translationcode" : "path/to/translation" } 75# The format is {"translationcode" : "path/to/translation" }
@@ -384,7 +384,9 @@ REDIRECTIONS = []
384# in a `nikola deploy` command as you like. 384# in a `nikola deploy` command as you like.
385DEPLOY_COMMANDS = { 385DEPLOY_COMMANDS = {
386 'default': [ 386 'default': [
387 "rsync -av --delete output/ erdgeist.org:erdgeist.org/new/", 387 # "rsync -av --delete output/ erdgeist.org:erdgeist.org/new/",
388 "rsync -av output/ erdgeist.org:erdgeist.org/",
389 #"rsync -av output/ 84.200.61.9:erdgeist.org/",
388 ] 390 ]
389} 391}
390 392
diff --git a/files/arts/software/jaildaemon/jaildaemon-0.3.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.3.tar.bz2
new file mode 100644
index 0000000..4848d81
--- /dev/null
+++ b/files/arts/software/jaildaemon/jaildaemon-0.3.tar.bz2
Binary files differ
diff --git a/files/arts/software/jaildaemon/jaildaemon-0.4.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.4.tar.bz2
new file mode 100644
index 0000000..9b32fc1
--- /dev/null
+++ b/files/arts/software/jaildaemon/jaildaemon-0.4.tar.bz2
Binary files differ
diff --git a/files/key.asc b/files/key.asc
index d23720e..e7972cd 100644
--- a/files/key.asc
+++ b/files/key.asc
@@ -1,41 +1,132 @@
1-----BEGIN PGP PUBLIC KEY BLOCK----- 1-----BEGIN PGP PUBLIC KEY BLOCK-----
2 2
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
40=II6I 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
130n2Jm8FMc5J7i/hoRA58=
131=x+1e
41-----END PGP PUBLIC KEY BLOCK----- 132-----END PGP PUBLIC KEY BLOCK-----
diff --git a/files/lectures/Laserharfe.pdf b/files/lectures/Laserharfe.pdf
new file mode 100644
index 0000000..b071556
--- /dev/null
+++ b/files/lectures/Laserharfe.pdf
Binary files differ
diff --git a/stories/index.rst b/stories/index.rst
index 315d52a..f0b86a3 100644
--- a/stories/index.rst
+++ b/stories/index.rst
@@ -15,7 +15,7 @@ erdgeist is a Berlin based freelance and open source developer and political act
15Contact 15Contact
16======= 16=======
17 17
18Write an email to erdgeist@erdgeist.org preferredly PGP encrypted, `the key </key.asc>`_, fingerprint: 778A 973A 8922 A756 144C 93EF 93DB 8AA5 *8BAA 2124*. Reach me via Jabber at `<xmpp:erdgeist@erdgeist.org>`_, where my OTR fingerprint is 7A4BC16B 479D4D10 EAC30B3B B52FD269 ADF818E3. 18Write an email to erdgeist@erdgeist.org preferredly PGP encrypted, `the key </key.asc>`_, fingerprint: F7BE F9DA 9349 6A28 6EDB 12FD F2F6 132B *C32F B29F*. Reach me via Jabber at `<xmpp:erdgeist@erdgeist.org>`_, where my OTR fingerprint is 7A4BC16B 479D4D10 EAC30B3B B52FD269 ADF818E3.
19 19
20Follow `@erdgeist <https://twitter.com/erdgeist>`_ on Twitter. Listen to the `OHM podcast <http://monoxyd.de/category/ohm>`_ with monoxyd and CCC's `monthly radio show Chaosradio <http://chaosradio.ccc.de/>`_. Look out for contributions to `Die Datenschleuder <http://ds.ccc.de/>`_ and `www.ccc.de <http://www.ccc.de/>`_, sporadically also on `Frühstücksblog <http://morgen.monoxyd.de>`_. Get `the book 1984.exe <http://www.amazon.de/1984-exe-Gesellschaftliche-politische-juristische-Überwachungstechnologien/dp/3899427661>`_. 20Follow `@erdgeist <https://twitter.com/erdgeist>`_ on Twitter. Listen to the `OHM podcast <http://monoxyd.de/category/ohm>`_ with monoxyd and CCC's `monthly radio show Chaosradio <http://chaosradio.ccc.de/>`_. Look out for contributions to `Die Datenschleuder <http://ds.ccc.de/>`_ and `www.ccc.de <http://www.ccc.de/>`_, sporadically also on `Frühstücksblog <http://morgen.monoxyd.de>`_. Get `the book 1984.exe <http://www.amazon.de/1984-exe-Gesellschaftliche-politische-juristische-Überwachungstechnologien/dp/3899427661>`_.
21 21
diff --git a/stories/projects/Telefonbuch.rst b/stories/projects/Telefonbuch.rst
index 4c4260c..c672da0 100644
--- a/stories/projects/Telefonbuch.rst
+++ b/stories/projects/Telefonbuch.rst
@@ -5,3 +5,11 @@
5.. title: Telefonbuch 5.. title: Telefonbuch
6.. slug: ../arts/software/Telefonbuch/index 6.. slug: ../arts/software/Telefonbuch/index
7.. prio: 98 7.. prio: 98
8
9Die Deutsche Telekom bringt seit 1992 im praktischen CD- und später DVD-Format das Verzeichnis aller Fernsprechteilnehmer heraus. Über die Genese des Projekts, diese Daten zu exportieren, gibt es `einen Blogpost </posts/2008/datenmessie.html>`_ und zu den Innerein der vier verschiedenen Datenformate auf den CDs `ein wenig technische Dokumentation </gitweb/Telefonbuch/tree/README>`_.
10
11Die Software findet sich im git-Repository, kann mit ``git clone git://erdgeist.org/Telefonbuch`` ausgecheckt werden und braucht `mein Tool el </arts/software/el/>`_ in einem Verzeichnis, das im ``PATH`` steht, um effizient in den riesigen Textfiles Zeilen zu extrahieren.
12
13Für alle aktuelleren CDs reicht es, das script ``makecolumns.sh`` auszuführen, das als einzigen Parameter den Pfad auf das ``white/``-Verzeichnis direkt unter dem Mountpoint des Telefonbuchs. Danach sollte unterhalb des neu erzeugten Verzeichnis ``work`` ein Verzeichnis mit dem Dump der aktuellen Ausgabe liegen. Hierbei fallen einige recht selbsterklärend benannte Textfiles raus, deren Zeilen jeweils mit der selben Zeile in allen anderen Dateien korrespondieren. Im Datenformat können mehrere aufeinanderfolgende Zeilen semantisch zusammengehören. Die sind dann im File 01_Flags mit dem lower nibble 1 (Start) oder 2 (dazugehörige Zeile) markiert. Das higher nibble bedeutet 0x80 für gewerbliche Einträge, 0x40 für "hat der Inverssuche widersprochen".
14
15Die Ausgaben mit dem Merkmal "Map&Route" ergeben beim Exportieren hausnummerngenaue Geokoordinaten, die einfachen Ausgaben nur Koordinaten mit Straßenzug-Genauigkeit.
diff --git a/stories/projects/elektropost.rst b/stories/projects/elektropost.rst
index b8ad9d1..1a04345 100644
--- a/stories/projects/elektropost.rst
+++ b/stories/projects/elektropost.rst
@@ -42,9 +42,8 @@ Configure qmail
42 42
43 * for this you will need to ``make install`` in /usr/ports/sysutils/ucspi-tcp 43 * for this you will need to ``make install`` in /usr/ports/sysutils/ucspi-tcp
44 * select SSL, leave MAN checked 44 * select SSL, leave MAN checked
45* ``ln -s /var/qmail/boot/qmail-smtpd.rcNG /usr/local/etc/rc.d/qmail-smtpd`` 45* ``sysrc qmailsmtpd_enable="YES"``
46* ``ln -s /var/qmail/boot/maildir /usr/local/etc/rc.d/qmail`` 46* ``sysrc qmailsend_enable="YES"``
47* ``echo 'qmailsmtpd_enable="YES"' >> /etc/rc.conf``
48* ``echo 'qmailsmtpd_checkpassword="/usr/local/vpopmail/bin/vchkpw"' >> /etc/rc.conf`` 47* ``echo 'qmailsmtpd_checkpassword="/usr/local/vpopmail/bin/vchkpw"' >> /etc/rc.conf``
49 48
50---- 49----
diff --git a/themes/erdgeist/assets/css/erdgeist.css b/themes/erdgeist/assets/css/erdgeist.css
index d521c0d..5c80e38 100644
--- a/themes/erdgeist/assets/css/erdgeist.css
+++ b/themes/erdgeist/assets/css/erdgeist.css
@@ -291,6 +291,20 @@ a:focus {
291 font-weight:bold; 291 font-weight:bold;
292} 292}
293 293
294.foot-tooltip {
295 background-color: #222;
296 color: white;
297 padding-top: 0.5em;
298 padding-bottom: 0.5em;
299 padding-left: 1em;
300 padding-right: 1em;
301 margin-right: 10%;
302 margin-left: 10%;
303 opacity: 0;
304 border-radius: 10px;
305 transition: opacity 0.5s linear;
306}
307
294.image-reference img { 308.image-reference img {
295 max-height: 260px; 309 max-height: 260px;
296 margin: 0 36px 36px 0; 310 margin: 0 36px 36px 0;