About Blog Cloud | Projects

yet another wtf admin story

what can be the reason when a new kernel does not boot ?
As a paranoid admin I use crypted swap partitions, so my crypttab contains something like that:

swap /dev/sda2 /dev/random swap

Thats all right, nothing wrong with that. But why did the server not boot on recent kernels ?

It seems that in recent kernel versions there is not enough entropy available when crypttab early disks are run and as it is a server, no keyboard/mouse etc creates one. So, what happens: nothing. The server waits until enough entropy is available, which seems like forever…

Changing to /dev/urandom btw works, but is of course lesser save.

building a uber alarm clock

I started a new project some days ago. Some years ago i read about a sleep phase alarm clocks and thought: very nice idea. I wanted to have one but the price is way to high and also the software is closed source. I surely don’t buy a peace of hardware I can’t use the way I want to :-).
The only problem i had was detecting the sleep phase with some not bothering accelerometer…

Some weeks ago C’t reviewed the very nice EZ430-Chronos and i fall in love with this very neat watch clock. One of the nice features are accelerometer and a low power wireless chip. And the best thing, the firmware is open source and they ship with debugging hardware :-)

So, the first step was to write a firmware for clock. As they use a closed source compiler, some work had to be done for porting the firmware to msp430-gcc. Thank to Paul F Sehorne for the initial pieces. I forked the firmware and began cleaning up the code and modularizing it, so people can have a config file with the features they want. It is “only” 32 kb flash — 8kb for the boot loader (which contains the wifi flasher). As msp433-gcc does not optimize as good as IAR or CCS, useless code needs to be optional (like the 24/12 am and Fahrenheit code ;-)). I call the project OpenChronos.

The next step was to write some daemon that uses the clock and controls the alarm clock, has http xmlrpc/json apis, logs the measured data, etc. 32kb is way to less for storing them, and i really don’t want to loose functionality there.

I choose to use django with some apps like piston for writing the daemon. This has automatically the feature of having a featured website into the daemon. As i plan to use a Chumby as the alarm clock later on, having a full web-framework/server is ++. UberClock was born :-)

Logging for 2 days now, data is quite interesting:

chart with sleep messured

The clock calculates a movement index and transmits to the clock. Low values mean low movement (maybe i will increase the high pass filter a little bit so it will be more like 0 on no movement). Higher values mean more movement. As you can see, there are typical spikes and longer phases of no movement.

I was already up at 11:06, thats the reason for the high values there.

Now i need to write some algorithms to find good spots when waking up would be best. I plan to have different sleep plans like:

  • I have to stand up at n o’clock latest and he sets itself a window in which he would wake you up.
  • N deep sleep phases, and start waking you up.
  • powernap phases

And I there is also a third project. I started to design a 12 V pwm dimmer which the daemon will control. There are full spectrum halogen bulbs available. I want to mount some of them above my bed and the clock should start dimming them slowly brighter and brighter before starting the alarm, so my body can adjust even better…

apt caches on notebooks

Using a apt caching daemon on a notebook is usually pain. Most require to alter the /etc/apt/sources.list which is quite annoying as you have to maintain the different lists for different locations. If the daemon requires you to add repositories, third party repositories are usually not added anyways.

But there is a good solution which works great here, thanks to apt-cacher-ng. Apt-cacher-ng does not require you to alter the sources.list as it can work as a http proxy. It also does not require any configuration for repositories.

On your server simply do sudo aptitude install apt-cacher-ng

On a permanent client add a file /etc/apt/apt.conf.d/02proxy with:

Acquire::http { Proxy "http://SERVERIP:3142"; Timeout "10"; };
Acquire::HTTP::Proxy::bugs.debian.org "DIRECT";

Now to laptops. switchconf is a useful tool for this, as it can change config files depending on locations.

sudo aptitude install switchconf
sudo mkdir -p /etc/switchconf/other/etc/apt/apt.conf.d
sudo touch /etc/switchconf/other/etc/apt/apt.conf.d/02proxy
sudo mkdir -p /etc/switchconf/home/etc/apt/apt.conf.d
sudo vi /etc/switchconf/home/etc/apt/apt.conf.d/02proxy

And paste the client config there.

This adds two locations, home and other. other will not use any proxy and should therefor work everywhere and home will use your home proxy. You can of course add more locations as you have more places with proxies found.

But as you don’t want to type “sudo switchconf LOCATION” whenever you change places, some auto-detection is required. I use Network-Manager and use the dispatcher for this.

sudo vi /etc/NetworkManager/dispatcher.d/99switchconf

And this is my detection script. I use arp to test if a certain IP has a specific MAC address which is a very precise test. arp -a SERVERIP will show you the MAC address of your server.

#!/bin/bash

if [[ `arp -a 192.168.22.1` =~ 54:52:00:31:fe:a9 ]]; then
  switchconf home;
else
  switchconf other;
fi

Don’t forget to make it executeable

sudo chmod +x /etc/NetworkManager/dispatcher.d/99switchconf

Now i got cache at home and no cache on the road.

Entschuldigung daß sie eingeladen wurden ?!?

Eigendlich geziemt es sich ja nicht, Email Verkehr zu veröffentlichen, aber im Anbetracht der aktuellen Entwicklung notwendig.

Ich hatte aufgrund des Aufrufs meine schon über längeren Zeitraum entwickelten Gedanken einmal niedergeschrieben und diese auch mitgeteilt. In dieser Email wurde ich zur Diskussion eingeladen, doch vermutlich durch die große Resonanz scheint die neue Eintrittsblockwarte diese Einladung nun plötzlich zu ignorieren. Auf 2 Emails kam keine Antwort, obwohl ich um zeitige Antwort gebeten habe, da ich von auswärts anreisen muß. Hat jemand schon eine Bestätigung bekommen, oder werden diese so weit aufgeschoben, daß eine Anreise unmöglich wird ?

Hallo Poelzi,

23.10.2009 22:16 — poelzi schrieb:

ich habe mir schon länger Gedanken gemacht wie das Problem für beide Seiten zufriedenstellend gelöst werden kann. Einheitliche Kompromisse mit denen die meisten Leben können sind besser als Klassenkriege ;-)

Das auf jeden Fall.

Ich habe mein Lösungsvorschlag hier dokumentiert: http://poelzi.org/blog/2009/10/23/gedanken-zu-einer-basisdemokratischen-wikipedia/

Oh, das kannte ich noch gar nicht, danke für den Hinweis. Und ja: Es ist sehr gut, wenn sich jemand hinsetzt und Gedanken macht und diese dokumentiert. Definitiv besser, als wenn sich zwei Seiten gegenseitig “beharken”, ohne dass etwas positives dabei rauskommt.

Währe schön wenn wir ins Gespräch kommen würden.

Bleibt das Problem, wen du mit ‘wir’ meinst. Du hast an den Wikimedia Deutschland e.V. geschrieben — der ist allerdings nicht der richtige Diskussionspartner (wie ich gleich per Kommentar auch auf deiner Seite schreiben werde), da er keinen Einfluss auf die Inhalte und Struktur der Wikipedia hat.

Die Diskussion musst du mit der Community führen und das kann vermutlich nur innerhalb der Wikipedia (der momentan vielleicht am geeignetste Platz sollte die Diskussionsseite der Relevanzkriterien sein?) machen oder indem du sonst irgendwie an die Wikipedianer herankommst. Möglicherweise auch die Mailingliste der deutschsprachigen Wikipedia (https://lists.wikimedia.org/mailman/listinfo/wikide-l).

Und hier die Einladung:

Ansonsten würde es mich natürlich sehr freuen, wenn du die Möglichkeit hättest zur Diskussionsveranstaltung zu kommen (ich selbst werde das leider nicht können).

Viele Grüße Tim […] Wikimedia Deutschland

Stellen Sie sich eine Welt vor, in der jeder Mensch an der Menge allen Wissens frei teilhaben kann. Helfen Sie uns dabei! http://spenden.wikimedia.de/ […]

Genau, allen Wissenslol

Inzwischen ist es mir egal, denn es gibt eine Veranstaltung für dessen Anreise es sich lohnt. Egal was dabei herauskommt…

wikipedia.fork()

Ich habe heute ein Projekt zum forken der Wikipedia aufgesetzt. Ich denke nicht, daß in die eingefahrenen Strukturen der Wikipedia Änderungen möglich sind. Da wird auch die Podiumsdebatte keine Besserungen bringen. Daher nutze ich lieber die Gelegenheit, Menschen die sich doch schlechter Aussichten, die Mühe machen nach Berlin zu reisen, am darauf folgenden Tag sich produktiv einzubringen.

Gedanken zu einer basisdemokratischen Wikipedia

Wir alle haben den zunehmend eskalierenden Zustand in der deutschen und ebenso in der englischen Wikipedia verfolgt. Zum Glück ist die Wikipedia Deutschland inzwischen zu Diskussionen bereit.

Ich selbst bin Freund einer umfassenden Wissensvermittlung, aber ebenso Freund einer guten Qualität — und kann daher beide Lager verstehen. Es stellen sich nun die grundsätzliche Frage, wie beide Lager zufrieden gestellt werden können. Ich hoffe mit diesem Vorschlag eine mögliche Lösung oder zumindest eine Diskussionsgrundlage dafür zu schaffen:

Vorüberlegungen

Generell kann eine Enzyklopädie die von sich in Anspruch nimmt, von den Menschen für den Menschen zu sein, nur auf einem basisdemokratischen Prinzip funktionieren. Nur weil eine Gruppe von Menschen sagt es sei kein wichtiges Thema, kann davon nicht auf die Allgemeinheit geschlossen werden.

Generell gilt: Wir brauchen uns um Speicherplatz nicht wirklich sorgen zu machen, viel wichtiger ist es, dass die Daten so zu markieren sind, dass sie gut nutzbar bleiben und auch z.B. auf Geräten mit einem begrenzten Speicherplatz genutzt werden zu können. Aber wir haben ein begrenzte Ressource, und das ist der Namensraum.

Bei einer Lösung müssen beide Punkte mit in Betracht gezogen werden.

Einführung von echten Meta-Informationen

Jede Seite führt eine Liste von Flags mit sich, die verschiedenen Typus sind, z.B. int, bool, listen…

Das ändern von manchen Meta Daten eröffnet einen Abstimmungsprozess für die Änderungen. Diese wird mit einer Diskussion verknüpft. Aber, die eigentliche Stimme kann jeder angemeldete Benutzer durch einfaches klicken auf dafür/dagegen Knöpfe abgeben. Manche Entscheidungen brauchen eine Mindestanzahl an abgegeben Stimmen, ansonsten bleibt die alte Entscheidung bei. Ich halte lange Abstimmungsprozesse für wichtig, denn wirklich abstimmen sollte, wer diese Information auch wirklich nutzt. Daher sollten die Menschen abstimmen die sich mit dem Thema beschäftigen und desswegen auf die Seite gelangt sind.

Wichtige neue Metadaten:

  • Hypothese: Eine Seite ist solange eine Hypothese bis Quellenangaben gemacht sind. Die Abstimmung sollte etwa 4 Wochen betragen. Min. 10 Stimmen.

  • Qualität: Die Qualität ist das wichtigste Flag einer Seite. Sie bestimmt wie weit ein Artikel in seinem Anspruch auf die Qualität nach einem
    enzyklopädischen Eintrag gerecht wird. Ein Änderungswunsch kann
    von jedem abgesetzt werden und führt zu einem 6 sechsmonatigen Abstimmung. Ich würde die untere Grenze vielleicht bei 200 ansetzten, aber das müsste man ausdiskutieren.

    Mögliche Werte:

    • Müll:
    • Löschantrag: Eine Seite wird vom System in einen gelöschten Namensraum verschoben beim Eintritt des Status. Diese Seite ist öffentlich einsehbar und editierbar. Ist der Status auf Müll gesetzt, wird er wirklich gelöscht. Seiten des gelöscht Namensraums können durch Abstimmung wieder in den normalen Namensraum zurück gehievt werden.
    • In Entwicklung: Das ist der Startwert für jede neue Seite. Eine Abstimmung nach oben in der Skala ist nur möglich, wenn die Hypothese aus ist.
    • Unwichtiger Artikel: Artikel der zwar belegbares Wissen enthält, aber im strengen Sinne der Enzyklopädie keinen Eintrag wert ist.
    • Einfacher Artikel: Ab hier beginnen die offiziellen Artikel der Wikipedia.
    • Gewöhnlicher Artikel
    • Guter Artikel
    • Exzellenter Artikel
  • Expertenwissen: Flag das angibt dass die Informationen einer Seite nur für Menschen vom Fach verständlich ist. Sinnvoll für Suchanfragen z.B. aber nicht von tiefer Relevanz.

Zum Müll:

Um etwas als Müll zu degradieren sind strenge Richtlinien notwendig, ähnlich den jetzigen Spam Richtlinien.

Die Admin Rechte und Pflichten:

Dem Admin wird ein erweitertes Recht eingeräumt, er kann eine “schnell löschungs Abstimmung” erzeugen, der die Seite als Müll markiert. Wenn 10 User dem zustimmen ist er angenommen. Admin stimmen zählen hier 2,5 fach. Damit wird verhindert dass ein Admin Kahlschlag betreibt und alles über ein paar Augen abgesichert ist. Diese Maßnahme ist nur bei Spam oder Copyright Verletzungen zulässig.

Diese schnell Löschungen werden öffentlich dokumentiert und sind anfechtbar. Über einen Abstimmungsprozess kann dieser Rückgängig gemacht werden. Wird der Prozess revidiert, bekommen alle die für die schnell Löschung gestimmt haben einen Malus Punkt auf ihr Konto. Diese Punkte bauen sich automatisch wieder ab, z.B. 1-2 Punkte pro Monat. Ist ein Admin über einen längeren Zeitraum, z.B. 6 Monate über -10 Punkte, werden Konsequenzen gezogen. z.B. das Recht entzogen an schnell Löschungen teilzunehmen, da er dieses Recht missbraucht am normalen Löschprozess vorbei, seine Agenda zu vertreten.

Zugriffe auf den Namensraum

Wird eine Seite angefragt die nicht vorhanden ist, wird anschließend der Gelöschte Namensraum angefragt. Es ist auch nicht möglich einen neuen gleich lautenden Artikel anzulegen, sondern editiert den Artikel im gelöschten Namensraum. Dieser kann über den Voting Prozess wieder in den Normalen Namensraum gehievt werden.

Vorteile dieses Systems sind, daß z.B. für offline Versionen der Gelöschte Namensraum, und z.B. nur Artikel ab “Einfacher Artikel” exportiert werden können.

Auch ist es sehr schön möglich die Suche z.B. auf Qualitätsstufen zu beschränken. Die Standard Sucheinstellungen könnte z.B. nur Artikel ab “Einfacher Artikel” durchsuchen.

Links zu Seiten, auch wenn sie sich im gelöschten Namensraum befinden, sind ausdrücklich erwünscht, weil sie als Indikator für die Wichtigkeit eines Artikels dient. Und beim Abstimmungsprozess als Entscheidungskriterium herangezogen werden sollte.

Mechanismen zur Reinhaltung des Namensraums

Da der Namensraum die einzige wirklich knappe Ressource ist, müssen Maßnahmen getroffen werden, diesen nicht zu überfluten. Oft ist wissen durchaus für eine weit gefasste Enzyklopädie aufnahmewürdig, aber doch recht speziell, bzw. nicht wirklich wichtig. Für diese Fälle wird ein wirklicher Unterseiten Mechanismus eingeführt. Jede Seite kann beliebig viele Unterseiten und Listen besitzen, wovon jede Seite alle Eigenschaften einer normalen Seite besitzt, also auch Qualität.

An einem einfachen Beispiel. Es gab in der Wikipedia einmal eine Seite mit allen Tafelsprüchen von Bart Simpson. Diese mag faktisch Richtig sein und somit spricht nichts gegen eine Aufnahme, aber ist sie wichtig — für eine Enzyklopädie ? Nein. Aber es ist wissen, und darum: vielleicht. Aber für andere mag sie sein: ja. Natürlich habe ich mich gefreut als ich sie entdeckt habe und lass. Ich maße mir nicht an zu sagen, daß ich für Alle spreche kann. Vielleicht ist es für manche einen Eintrag wert, aber ich glaube dass ziemlich alle damit einverstanden sein werden, daß es ein unwichtiger Artikel ist. Die Spruchliste kann ruhig irgendwo im Unternamensraum des Simpsons Artikel sein Leben als “Unwichtiger Artikel” seiner Existenz frönen — stören tut dies niemanden. In Suchen kommt er nur vor wenn man unwichtige Artikel auch durchsuchen lässt. Und zu Gesicht bekommt man ihn in der Regel auch nur wenn man sowieso auf dem Simpsons Artikel ist. Ich bin mir sicher dass, er dort auch nützlich sein wird.

Aber auch Informationen wie Experten-Wissen, wie z.B. Zusammenfassungen von Theorien die nur für Fachleute verständliche sind, haben im Unternamensraum von Artikeln einen guten Platz.

Es erlaubt auch, dass Hauptartikel nicht zu groß werden und interessante Teilaspekte einfach in Unterseite ausgelagert werden können ohne dass ihr Wissen verloren gehen würde.

Der Namensraum würde dadurch nicht so aufgebläht und ermöglicht eine automatische Kategorisierung im Bezug zur Elternseite. Auch der Export wäre schön gelöst wie z.B.:

Alle Hauptartikel mit mindestens “Unwichtiger Artikel”, aber nur die Unterseiten mit “einfacher Artikel” aber keine Experten Seiten. Dies könnte z.B. eine gut handhabbare Sammlung für ein mobiles Gerät ergeben.

Wenn Seiten die z.B. ein Hypothese Flag besitzen, durch ihre Erscheinung deutlich gekennzeichnet sind, ist die Gefahr dass Nutzer unverifizierte Seiten für wahren Inhalt halten ebenfalls gering. Die Qualität sollte ebenso gut sichtbar sein.

Fazit

Ich denke, daß mit so einem Mechanismus beide Lager zufrieden gestellt werden können. Einerseits gibt es einfach die Möglichkeit, über einen längeren Zeitraum, einen Artikel zu einem guten Reifegrad auszubauen, andererseits können diese einfach ausgeblendet werden und belasten Niemanden der mit solchen Artikeln, nichts zu tun haben möchte. Wichtige Entscheidungen werden von den Nutzern in einem basisdemokratischen Prozess bestimmt. Das entlastet auch die Admins indem ihnen nur noch die Aufgabe obliegt, Vandalismus zu bekämpfen.

Verbesserungsvorschläge sind gerne willkommen.

sugar: the bitter truth

Wow. This video is really mindblowing and makes a lot clearer why people start to grow in width over the last decades. Take the hour time and watch it, it is really good explanation whats going on, not that easy to understand sometimes but he tries his best :-)

be aware of the kpartx

kpartx is a very usefull tool if you work with raw images on virtual machines. Sometimes, when the machine does not boot anymore due bootloader problems, you want to just mount the root partition on your host machine. kpartx is what you want.

just use:

kpartx -a /dev/mapper/someimage

and you get blockdevices to mount.

!!! DANGER !!!

After unmounting you must use

kpartx -d /dev/mapper/someimage

or you will likely get corruption on your filesystem. I didn’t know that and I just thought that it would do some offset mappings and thats it, no need to unset them as it shouldn’t be buffered anyway. Wrong I was and caused luckily only a mild corruption that ext3 was able to fix without dataloss.

querty must die

Last year I learned the famous Neo layout, but due redesign of my home network and often missing /home directory, i had to use quertz most of the time — And just forgot to switch back to Neo then.

While the last Wireless Community Weekend I just tried to switch to Neo again, and, I never thougt that would happen, but I was actually able to type more or less. Compared with Dvorak I tried to learn for 3 weeks or so, I did not forget Neo after 5 month. I used english dvorak but got really bothered by the position of some keys that did just not feel right — at least for german. The german dvorak layout is not better for programming then quertz is…

These days I have a pretty strong opinion about the Neo layout:
It is in my opinion the first keyboard layout that is actually designed for a computer and not a typewriter. Also, Neo seems to be the only layout that is actually actively developed by a group and new ideas and new knowlege about optimizations are put into new revisions of the layout. Despite the concerns of some people about changes in the layout, it is actually easy to learn new layouts if the new layout is more logical, feels better, then the old one.
In conclusion I can say that I really can’t understand how I beared the quertz layout for so long, and I definitivly will never switch back to that; But surly will switch to Neo 3 if it will give an improvement.

Despite the fact Neo is designed for german language, it is very useable for english and other european languages as well, but not optimzed that much. I actually pity native english typer not to have such a great layout, as there seems to be no project in similar fashion for other languages.

Why I Hate IDEs and Love Pida

I didn’t write much in the last time, but i hope this changes one day. The good thing is: i was very busy improving Pida.

If you would have asked my half a year ago which IDE i would use, i would have smiled and said: None, I just need a Text Editor. And this is still true somehow. For me a IDE should be: A very good Text editor + Tools to make your work easier.

The Editors

And there the problem starts: Some IDE’s have good ideas, most of them a bloated but most doesn’t have a Editor component I like. Most of them use a scintilla based one. I don’t wanna sound rude and Text editors are a matter of taste, i hate it. It feels slow when using Page Up/Down keys, Syntax files are a hell of it’s own, gtk python bindings are unstable. It has good features, code folding is very nice. But in general, it doesn’t fit my taste.

Another popular engine is GtkSourceView. I like this engine, from a programmic point of view and as a user, but it misses features like infrastucture for code folding, line markers. It’s relative fast for non fixed lineheight engine.

Vim is very popular, but just doesn’t feel right for me. I tried it, at least 3 times but never got warm with it as my editor for programming. Writing shell scripts on a remote machine, sure. But not to develop real code. And with Emacs i never got warm eigher.

I used Kate for some month. I like the editor component a lot, it’s fast (except when scroll with folded text). But Kate is not a IDE, it’s more like a programmers editor.

And then there is medit and its infrastructure. It’s GtkSourceView based but adds the features required for beeing a really good text edit component. ( I just use it so much, often I don’t really know that GtkSourceView is missing such important stuff ;) ). The Python bindings are good and mostly complete. The developer is very active, helpful and in fact, one of the best hackers i have ever seen. Just great work.

Ohh, and another thing: I will not look at a white screen all day long. I want a dark scheme and if I have to change 30 syntax files just to get a dark scheme the syntax system is broken. Eclipse is a good example for this. Changing colors must be a fast thing, selecting another scheme and everything should be fine. Nobody cares to be able to change for every language the color definition of every possible token. This is just annoying. If i really want that control, i just copy the language file and change it by hand. One theme should work for all language files. A keyword is a keyword whatevery language it is used in.

I want it slick

For me a IDE must be fast and small and extendable.

This causes some problems. Eclipse for example is just to fat for me. Taking ages to load, needs tons of RAM, feels slow all the time.

A C/C++ based IDE is not extendable enough. I don’t wanna spend month developing a small plugin (don’t get me wrong, i love C but for me lowlevel languages should be used for doing bottleneck jobs). IDE’s are mostly high level logic so a high level language should be used.

I tried Eric, and most other Python IDEs i could find, mostly regular and was disappointed all the time. But some month ago i found Pida and got just blown away. It’s slick, it’s fast, it’s extendable, it’s written in Python and the best thing: It’s not married to an editor.

Maybe i saw Pida some years befor, but as I’m not a Vim user, I ignored it. But Pida currently has support for Vim, medit and emacs as an editor component and more can be added “easily” (Having an editor not bound to the IDE is more work of course, and makes things usually more complicated. But the gain is much more then the cost :))

I liked it at the beginning even many features where not implemented yet. Hacking on Pida is lot of fun and the great architecture makes it easy.

BTW, Pida development is very active, the repository just changed (will be mirrored soon). My main repository is here.