Kategorie-Archiv: Computers, Phones and stuff

Everything about computers, software, mobile phones, electronics and media will go here – unless it is more related to cubenet, which has its own category

#aufschreistat – Statistische Analyse des Aufschreis

Wichtig: Projektkoordination

Trotz der frühen Phase gab es jetzt schon mehr Hilfsangebote, als ich im Kopf behalten kann, und die Kommunikation über Twitter ist, nunja, schwierig. Hier ein paar Links:

Ich selbst komme vor 20 Uhr (Dienstag) nicht dazu, weiter zu koordinieren, etc. – habt bitte etwas Geduld, oder – noch besser – organisiert euch ein wenig untereinander. Danke!

Warum überhaupt auswerten?

Zur Hashtag-Aktion #aufschrei ist viel wahres, kluges und vor allem emotionales geschrieben worden – siehe dazu z.B. die Blogposts, deren Verlinkungen ich in den letzten Tagen retweetet habe (für eine ordentliche Linksammlung hier fehlt mir gerade Zeit und Kraft). Ich stimme all dem nicht nur sachlich zu, sondern kann auch die darin beschriebenen Gefühle nachvollzielen, habe vieles davon in den letzten Tagen selbst so gespürt. Emotion gehört dazu und ist wichtig. Auch Emotionen stoßen Debatten an.

Aber diese Debatten kommen dadurch nicht unbedingt weiter. Dies ist keine Kritik an Emotionen, es ist der Versuch, diese durch sachliche Fakten und Analysen zu ergänzen, zu stützen und rational begreifbar zu machen.

Ich habe in den ersten 70 Stunden seit dem Beginn von #aufschrei mehr als die Hälfte jener Zeit mit dem Lesen der #aufschrei-Tweets verbracht und nur sehr viel weniger mit Schlafen. Soweit ich das abschätzen kann, habe ich fast alle #aufschrei-Tweets, die seit dem direkt in meiner TL landeten, gelesen. Das dürften etwa 1000 solcher Tweets gewesen sein, somit aber deutlich weniger als 2% aller #aufschrei-Tweets überhaupt. Damit habe ich keinen repräsentativen Überblick über alles, was aufgeschie(b)en wurde. Vermutlich hat kein Mensch auf der Welt das in diesem Moment.

Diverse klassische Medien haben #aufschrei-Tweets zitiert, und die jeweilige Auswahl schien zufällig (was ja immerhin repräsentativ ist) oder aus einem sehr kleinen Sample bewusst ausgewählt. Die Medien haben es damit nicht geschafft, die Menge, Vielfalt und Intensität des #aufschrei zu vermitteln.

Neben der Ursprungs-Aussageform – des Kurzberichtes über ein konkretes sexistisches Erlebnis – entstanden schon bald Meta-Aussagen, die versuchten, Verallgemeinerungen zu treffen. Auch ich habe mich darin versucht, erhielt Zustimmung durch Retweets und Kritik in Form von Antworten durch Menschen, die meine Aussage (wohl meist absichtlich) missverstanden. Aber letztlich waren das sowieso immer Aussagen über Momentaufnahmen meiner Filterbubble und somit ohne globale Bedeutung.

Nun möchte ich dazu beitragen, die Debatte auf das nächste Level zu erheben: den Blick auf die Gesamtproblematik, das Abwägen verschiedener Teildimensionen des Problems oder auch der Teilprobleme, und auf die neuartigen Erkenntnisse die nur durch eine solche Gesamtbetrachtung gewonnen werden können.

Ich denke nicht, dass der Erfolg der Aktion nach der folgenden Formel funktioniert: Tweeten -> sammeln -> statistisch anlysieren -> Erkenntnisse -> bessere Welt. Aber ich bin überzeugt, statistisch fundierte Erkenntnisse helfen dazu, dass die Aktion insgesamt erster genommen wird, dass die Debatte intensiver geführt wird, und letztlich, dass sie konstruktiver abläuft und konkretere Ergebnisse hat.

Technisches

Eine bedeutungsvolle Analyse geht nur mit technischen Hilfsmitteln, aber die allein reichen nicht. Vorausgesetzt, die mehr als 60.000 #aufschrei-Tweets lägen mir gebündelt vor – und das wird vermutlich bald der Fall sein – wären vollautomatische Auswertungen nur auf Wortebene praktikabel, z.B.: Wie oft kommt das Wort „Sportlehrer“ vor? (Vermutung auf Basis des bisher manuell gelesenen: extrem oft.) Allein die Einteilung in zustimmende Tweets vs. Versuche, die Aktion zu kritisieren, relativieren, ins Lächerliche zu ziehen oder einfach nur zu trollen, halte ich für so gut wie gar nicht automatisierbar. Und selbst damit würden wir nur an der Oberfläche der darin verborgenen Erkenntnisse kratzen.

Ich halte es für nötig, die Informationen aus den Tweets in eine „maschinenlesbare“ Form zu bringen. Das kann prinzipbedingt nicht von Maschinen erledigt werden. Mir schwebt dabei vor, den Tweets per Hand Tags zuzuordnen, welche sich danach auswerten lassen. Tags sind dabei semi-strukturierte Informationen, die einem losen Schema folgen. Dieses legt nahe, dass bereits vorhanden Tags identisch weiter benutzt werden, aber erzwingt dies nicht. Das ist wichtig, damit einerseits ähnliche Tweets mit gleichem Tag versehen werden, aber andererseits neu- bzw. andersartige Tweets, die neue Aspekte betreffen, nicht in ein starres, vorgefertigtes Raster gepresst werden.

Dazu braucht es Menschen, die das tun. Menschen, die all diese (teils schmerzvollen) Tweets nochmal aufmerksam lesen und kategorisieren. Das klappt nur, wenn viele Mitmachen. Und es brauch die Software, um diesen verteilten Aufwand zu koordinieren. Ich werde diese Software schreiben.

Ich möchte hier nicht zu technisch werden. Dies geschieht stattdessen auf der Projekthomepage „aufschreistat“ bei GitHub. Viel gibt es dort noch nicht zu sehen, die aktuelle Version kann nichts, außer Tweets in die Datenbank schreiben. Updates zur Aktuellen Entwicklung twittere ich außerdem unter dem Hashtag #aufschreistat.

Die eigentliche Auswertung gilt es dann noch zu klären. Vieles lässt sich direlt als SQL-Abfrage schreiben, vorallem da in der Datenbank fast alle Spalten indiziert sind, incl. Volltext-Index auf den Tweet-Inhalten. Für manche Auswertungen wird spezieller Java-Code nötig sein. Und dann könnte es auch noch Exporte der angereicherten Daten geben, die dann in professionelle Statistik-Software einfließen könnte.

Datenquellen

Die Daten direkt von Twitter zu erhalten ist nicht einfach. Derzeit sieht der Datenbestand wie folgt aus:

  • Freitag 00:00 bis Freitag 11:00 – fehlt
  • Freitag 11:00 bis Montag 11:00 – vollständig durch den Datensatz von Soviet.tv
  • Montag 11:00 bis Dienstag 01:26 – fehlt
  • Dienstag 01:26 bis Dienstag 03:27 – teilweise vorhanden
  • Dienstag 3:27 und danach – vollständig dank eigener Sammlung

Es gibt technisch die Möglichkeit, von Twitter bis zu 150.000 vergangene Tweets zu einem Suchkriterium zu erhalten, was allerdings eine spezielle Genehmigung durch einen hochrangigen Twitter-Mitarbeiter erfordert. Diese habe ich bereits per Mail angefordert, wobei ich versucht habe, die gesellschaftliche Bedeutung von #aufschrei zu erläutern. Hoffen wir mal, dass ein positiver Bescheid kommt, noch bevor die Anzahl der #aufschrei-Tweets 150.000 überschreitet.

Mitmachen

Im Moment ist mir bei der Software-Entwicklung kaum zu helfen – die Software ist noch in einem so embryonalen Zustand, dass eine kooperative Arbeit am Code praktisch nicht möglich ist. Aber das wird sich hoffentlich in 1 bis 2 Tagen ändern. Wie das dann genau aufläuft, wird sich zeigen – dies ist zugegebenermaßen das erste Mal, dass ich ein Open-Source-Projekt auf github leite.

Nachtrag 6:41: Wozu aber jetzt schon jede_r herzlich eingeladen ist: Vorschläge machen, welche Fragestellungen wichtig und interessant sind, die sich evtl. aus den Daten herausziehen lassen. Konkrete Vorschläge, welche Arten von Inhalten getaggt werden könnten. Weitere Wünsche, welche Funktionen die Software erfüllen sollte oder könnte. Alles, was dabei hilft, das grobe Konzept was mir derzeit vorschwebt so zu erweitern, dass nicht nur mein Wissensdurst durch die Ergebnisse befriedigt wird, sondern alle den Erkenntnisgewinn bekommen, den sie sich davon erhoffen.

Sobald die Software Form angenommen hat und nutzbar ist, braucht es viele viele fleißige, mutige Helferlein, die sich durch die Tweets durcharbeiten, sie lesen und mit Tags versehen. Um alle Tweets zu zu verarbeiten, bräuchten wir etwa 1000 Stunden an gespendeter Zeit, des entspricht 125 vollen Arbeitstagen. Ich weiß, so viel werden wir nicht bekommen. Aber damit die Ergebnisse repräsentativ werden, reicht es, wenn wir einen signifikanten Anteil davon verarbeiten – das Programm wird die Tweets in zufälliger Reihenfolge anzeigen, um einen repräsentativen Querschnitt abzubilden. Und das können wir schaffen.

Damit das möglich wird, muss das Projekt bekannt werden. Jetzt wäre es zu früh dafür, noch ist es ein Luftschloss. Aber in 1 bis 2 Tagen hoffe ich auch eine Menge Retweets und ähnliches.

Abschließendes

Mich hat die ganze Sache in den letzten Tagen sehr mitgenommen. Ich musste mich zwar nicht erbrechen und habe auch nicht im nennenswerten Maß geweint, aber das war’s auch schon, was ich positives über meinen Zustand sagen kann. Prinzipiell könnte ich viel anderes, nicht-technisches zu diesem Thema schreiben. Aber momentan versuche ich, meine Energie dahin zu kanalisieren, wo es nützlich ist und wo der Aktivismus derzeit unterrepräsentiert ist. Und das ist nun mal gerade #aufschreistat.

Ich hoffe, dass diese Aktion, zusammen mit all dem was andere im Rahmen von #aufschrei leisten, dazu beiträgt, dass die Debatte nicht vorschnell wieder abebbt. Ich wünsche mir einen Protest, der um ein vielfaches größer ist als das, was wir jetzt haben. Das mediale Echo der letzten Tage hat gezeigt, wer die Massengesellschaft repräsentiert und was diese angeblich denkt. Für mich war das schockierender als die durch #aufschrei aufgedeckten Übergriffe selbst, denn bis dahin konnte ich noch glauben, dass nur ein Bruchteil der Menschen in Deutschland offen sexistisch ist. Nun scheint es mir, als ob entweder eine absolute Mehrheit sexistisch motiviert ist – das schließt ausdrücklich auch Frauen mit ein – oder als wenn eine sexistische Minderheit es erfolgreich schafft, sich als Mehrheit zu präsentieren. So oder so ist das ein Zustand, den ich nicht kampflos hinnehmen werde.

Kämpfen, hieß in den letzten Tagen: lesen, hören und fernsehen schauen. Gelegentlich twittern. Kämpfen, das heißt jetzt gerade, Code schreiben und technische Blogposts verfassen. Kämpfen, das wird in den nächsten Tagen heißen, statistische Analysen durchzuführen und Aussagen abzuleiten, um damit viele zu überzeugen, die den #aufschrei noch für einen unnötigen und nervigen Kurzzeittrend halten.

Und dann wird Kämpfen hoffentlich für mich und tausende andere heißen: raus auf die Straßen, einen lauten und sichtbaren Protest veranstalten, der sich mit den monatelangen Studierendenprotesten von 2009 messen kann.

Jetzt neu und nur hier: Online-Geschlechtsumwandlung mit nur einem Mausklick

Der folgende Kommentar in einem feministischen Blog hat mich dazu inspiriert, etwas zu programmieren:

(…) wenn man in Ihrem Artikel mal die worte Mann und Frau vertauscht, liest sich das etwas mittelalterlich (…)

Auf dem männlichen Auge blind?

Dabei geht es wohl um diese Thesen, die ich mal etwas überzogen darstelle:

Feminist_innen sind sehr geübt darin, Frauenfeindlichkeit aufzuspüren aber blind für Männerfeindlichkeit. Wenn man in feministischen Texten alle Geschlechter tauscht, wird Männerfeindlichkeit im Ausgangstext zu Frauenfeindlichkeit und dadurch auch für Feminist_innen sichtbar.

Ich könnte mich nun darüber ergießen ob diese Thesen zutreffen, oder ob unsere patriarchale Gesellschaft die Geschlechter zu unsymmetrisch behandelt um basierend auf solchen Symmetrien zu argumentieren…

Probieren geht über Studieren. Und Programmieren geht sowieso über alles.

Aber das lasse ich und erprobe es dafür im Experiment, indem ich demnächst alle feministischen Texte mit getauschten Geschlechtern lese. Das spontan im Kopf zu tun ist mir zu anstrengend, und eine einfache Suchen-und-Ersetzen-Funktion hilft auch nicht, abgesehen davon dass Browser so was auch gar nicht haben da sie nicht zur Bearbeitung gedacht sind.

Ich habe mir daher ein Bookmarklet gebastelt, das in der aktuellen Webseite (fast) alle Geschlechterzuschreibungen ändert. Das Bookmarklet stelle ich hier bereit, damit jeder es nutzen kann. Dazu einfach diesen Link bookmarken bzw. per Drag & Drop in die Lesezeichenleiste ziehen. Dann auf eine andere (z.B. feministischte) Webseite surfen und den Button/Link in der Lesezeichenleiste ankliken. Tadaa! (Wer noch nie ein Bookmarklet gesehen hat hält das jetzt vermutlich für Hexerei…)

Online-Geschlechtsumwandlung

Oder für einen schnellen Test einfach mal direkt hier anklicken, um es auf dieser Seite auszuprobieren.

Known issues

Das ganze ist natürlich nicht allumfassend. Zum einen wäre es extrem anspruchsvoll, die Ersetzungen grammatisch korrekt durchzuführen. Das versuche ich erst gar nicht. Aber wenn man schnell über die Texte drüber liest, fallen die sprachlichen Fehler kaum noch auf.

Zum anderen basiert das ganze auf einer Wortliste, die natürlich nie vollständig sein kann, und in manchen Fällen Begriffe als Gegensatzpaar verwendet, die nicht wirklich zusammen passen. Das ganze ist also nur eine kleine Spielerei oder ein Proof of Concept und nicht zu ernst zu nehmen.

Im Übrigen erlaube ich mir ganz bewusst, hier mal das böse Wort „Geschlechtsumwandlung“ zu benutzen. Denn was bei Menschen nicht geht bzw. keine adäquate Beschreibung des tatsächlichen Vorgangs ist, ist in diesem Fall genau das, was mit den Wörtern einer Webseite gemacht wird: ihr Geschlecht wird umgewandelt. Und es erlaubt einen extrem reißerischen Titel für diesen Blogpost, das war es mir heute einfach mal wert.

Was ist unter der Haube?

Der darin enthaltene Code ist folgender (kann man sicher noch schöner machen, aber Perfektion war hier kein Maßstab):

function symmetrize(dict)
{
    var dictSym = {};
    for(key in dict)
    {
        dictSym[dict[key]] = key;
        dictSym[key] = dict[key];
        var keyLc = key.toLowerCase();
        if(keyLc != key)
        {
            var valLc = dict[key].toLowerCase();
            dictSym[valLc] = keyLc;
            dictSym[keyLc] = valLc;
        }
    }
    return dictSym;
}

// Hier Wörter eintragen, die nur im ganzen ersetzt werden
// sollen und nicht als Wortbestandteil.
var dictWhole = symmetrize({
"Er" : "Sie",
"Ihm" : "Ihr",
"Ihn" : "Sie",
"Sein" : "Ihr",
"Seine" : "Ihre",

// Diese Regeln stehen hier und in den Wortteilen, um darum herum
// zu arbeiten, dass "Frau" ein Teil von "Frauen" ist und somit
// sonst "Frauen" zu "Mannen" ersetzt wird.

"Frauen" : "Männern",
"Frauen" : "Männer"
});

// alle wörter / Wortteile groß schreiben, daraus wird
//automatisch auch die kleine variante erzeugt, umgekehrt nicht

var dictPart = symmetrize({
"Männer" : "Frauen",
"Mann" : "Frau",
"Männlich" : "Weiblich",
"Kerl" : "Weib",
"Kerle" : "Weiber",
"Macho" : "Emanze",
"Machos" : "Emanzen",
"Maskulin" : "Feminin",
"Maskulinis" : "Feminis",
"Jungs" : "Mädchen",
"Jungen" : "Mädchen",
"Junge" : "Mädchen",
"Damen" : "Herren",
"Dame" : "Herr",
"Vater" : "Mutter",
"Väter" : "Mütter",
"Sohn" : "Tocher",
"Söhne" : "Töchter",
"Schwuler" : "Lesbe",
"Schwul" : "Lesbisch"
});

function ersetzung(matchedSubstring, Index, OriginalString)
{
   if(dictWhole[matchedSubstring])
        return dictWhole[matchedSubstring];
   for(key in dictPart)
       if(matchedSubstring.indexOf(key) != -1)
           return matchedSubstring.replace(key, dictPart[key]);
   return matchedSubstring;
}

// Erkennt einzelne Worte
var word = new RegExp("\b\S+\b","gi");

function htmlreplace(element) {    
    if (!element) element = document.body;    
    var nodes = element.childNodes;
    for (var n=0; n<nodes.length; n++) {
        if (nodes[n].nodeType == Node.TEXT_NODE) {
            var oldText = nodes[n].textContent;
            // komplizierte, aber nachweislich effizienteste
            // Weise, um Strings zu erkennen, die nur aus
            // Whitespace bestehen (was ca. 50% aller Strings
            // einer Website ausmacht)
            if(oldText.replace(/^ss*/, '')
                           .replace(/ss*$/, '').length > 0)
                nodes[n].textContent =
                             oldText.replace(word,ersetzung);
        } else {
            htmlreplace(nodes[n]);
        }
    }
}

htmlreplace();

Email-Funktionen funtionieren jetzt (wahrscheinlich)

Wer kein RSS mag, kann meinen Blog ja eigentlich schon immer auch per Mail abonnieren –  nur dass der Mailversand seit einigen Monaten kaputt war.

Zudem hatte ich mich eigentlich dran gewöhnt, bei neuen Kommentaren zu meinen Posts per Mail benachrichtigt zu werden. Auch das klappte offenbar nicht mehr.

Beide Probleme sollten jetzt gelöst sein. Indem ich dies schreibe, teste ich zugleich auch, ob es wirklich geht. Falls nicht, wird es ja eh keiner merken, dass es hier steht…

PS: Das Problem war, dass mein neuer Server nicht als eigenständiger Mailversender konfiguriert ist, und die Standard-mail-Funtion von PHP nur mit SMTP ohne Authentifizierung funktioniert. Einen derart unsicheren Service nutze ich natürlich nicht. Es war gar nicht so einfach, eine Lösung dafür zu finden, aber hier gibt es eine, die innerhalb von WordPress funktionieren sollte.

Doppelt so schnell booten durch 93 mal schnelleren Festplattenzugriff?

Da ich mein Linux daheim ja nur alle paar Tage/Wochen neu boote, und der Rechner sonst rund um die Uhr läuft (ich darf das, ich hab 100% Ökostrom!), könnte mit die Zeit zum Booten ja eigentlich egal sein. Aber ich bin nun mal optimierungswütig, vor allem, wenn zwischen dem Ist-Zustand und dem, was ich für möglich halte, ein sehr hoher Faktor liegt. In diesem Fall denke ich, ich könnte die Geschwindigkeit der Festplattenzugriffe um einen zweistelligen Faktor erhöhen und damit den Gesamtbootvorang immerhin um 77% beschleunigen. Das motiviert, also habe ich gestern und heute ein paar Nachforschungen und Versuche angestellt. Ich möchte hier schonmal von den Ergebnissen berichten, aber auch von dem Weg dorthin, denn die offensichtlichsten Verfahren zur Messung stellten sich oft als falsch heraus.

Ausgangszustand: Normaler Bootvorgang mit ureadahead in 114 Sekunden

Mein Ubuntu bootet in 114 Sekunden. Gemessen habe ich von der Auswahl im GRUB Menü bis sich auf dem Desktop das Fenster zur Schlüsselbundentsperrung öffnet. Dies ist das letzte sichtbare Ereignis nach beim Hochfahren, so dass es sich zur Zeitnahme eignet.

Beim gesamten Bootvorgang höre ich permanent die Festplatte „knattern“, es finden scheinbar viele Lesezugriffe an verschiedenen Stellen statt. Das wollte ich genauer wissen. Mittels ureadahead konnte ich das genauer untersuchen. Dieses Programm nutzt eine Kernelerweiterung, um beim Booten alle Lesezugriffe zu protokollieren. Ich vertraue darauf, dass dies prinzipiell korrekt abläuft und habe als Ergebnis erhalten: Ubuntu liest beim Starten 226MB aus 3140 Dateien. Angeblich liegen diese an nur 3113 verschiedenen Stellen der HDD. Komisch, aber eine Abweichung, die ich akzeptieren kann.

Wie viel dieser Zeit wird zum Lesen benötigt?

Meine Platte braucht im Schnitt 20ms für eine Neupositionierung des Kopfes, für 3113 davon also rechnerisch etwa 65 Sekunden. Die Zeit, die das eigentliche Lesen braucht, ist im Vergleich dazu zu vernachlässigen: rechnerisch 2,8 Sekunden auf dieser Partition, oder sogar nur 1,4 Sekunden wenn ich die erste Partition verwenden würde, da diese doppelt so schnell liest. (Liegt daran, dass sich die Platte am äußeren Rand schneller unter dem Lesekopf bewegt als innen.)

Aber wie viel ist dran an dieser Rechnung? Kann ich die Lesezeiten nicht auch direkt messen? Ja, ich kann. Mittels „ureadahead –dump“ kann ich mir eine Liste der Dateien ausgeben. Zugegebermaßen, diese Dateien sind in der Summe 300 MB groß, beim booten werden aber nur 226 MB gelesen, da nicht alle Dateien komplett gebraucht werden. Bei den weiteren Messungen verwende ich stets diese 300MB Dateien komplett.

Mit ein bisschen Textersetzung erhalte ich aus der Dateiliste ein Skript, das nacheinander jede dieser Dateien nach /dev/null kopiert. Ich messe also mittels „time“ die Ausführungszeit. 13,5 Sekunden? Da stimmt was nicht, das geht zu schnell. Ich messe nochmal: Diesmal nur noch 4,5 Sekunden!

Aber klar doch, die Dateien sind noch im Lesecache. Also diesen mal schnell mit

sync && echo 3 > /proc/sys/vm/drop_caches

leeren und nochmal messen. Ergebnis: 63,44 Sekunden. Das stimmt doch erstaunlich gut mit den berechneten 65 Sekunden überein.

Kann ich das auf 2,6 Sekunden reduzieren?

Die Frage ist jetzt: Wie kann ich das Lesen dieser Dateien auf die 2,6 Sekunden beschleunigen, die es dauern würde, wenn diese am Stück hintereinander stehen würden? Die Lösung: ich schreibe sie am Stück hintereinander 🙂 Also kopiere ich all diese Dateien in ein neu angelegtes Verzeichnis. Anschließend leere ich wieder den Cache und lese all diese Dateien nacheinander ein. Statt 63,44 Sekunden braucht dies nur noch 31,49 Sekunden. Aber immer noch deutlich länger als erwartet. Dummerweise habe ich die Dateien in einer anderen Reihenfolge geschrieben, als ich sie nun gelesen habe. Also ein neuer Versuch, diesmal in gleicher Reihung geschrieben und dann gelesen, dazwischen natürlich wieder den Cache geleert. Und siehe da: 16,8 Sekunden. Eine Beschleunigung von 74% allein dadurch, dass die Dateien in der richtigen Reihenfolge hintereinander auf der Platte stehen.

Was aber, wenn ich sie mittels tar komplett zu einer Datei vereinige? Dann kann ich sie in 7,69 Sekunden einlesen. Und gepackt als .tar.gz dauert es sogar nur noch 1,8 Sekunden. Aber auch diese Datei liegt nun am langsamen Ende meiner Festplatte, am schnellen Ende wäre ich somit bei 0,9 Sekunden.Mir ist dabei übrigens total unklar, warum die .tar.gz 4,2 mal so schnell gelesen wird obwohl sie nur um den Faktor 2,7 kleiner ist. Wiederholte Messungen haben das aber bestätigt.

Was nützt schnelles Lesen, wenn die Daten dann gepackt sind?

Aber die Daten müssen ja nach bzw. während des Lesens noch entpackt werden, und zwar in den Arbeitsspeicher. Das dauert auf die naive Art und Weise 3,1 Sekunden, also deutlich länger, als die Daten ungezippt zu lesen. Dabei wird aber nur ein Kern benutzt. Es wäre aber einfach möglich, alle Kerne damit auszulasten. In meinem Fall mit zwei Kernen würde der Lesevorgang auf 1,55 Sekunden verkürzt, mit vier Kernen wäre das Entpacken schneller als das Lesen, so dass das theoretische Optimum von 0,9 Sekunden erreicht wird. Bekanntlich lese ich dabei ja komprimierte Dateien ein, die entpackt 300 MB ergeben, von denen ich aber nur 226 MB wirklich verwende. Ich war zu faul, für die Messung die richtigen 226MB zu extrahieren, aber wenn man hochrechnet, kommt man auf 0,678 Sekunden für das Lesen der benötigten Daten, immerhin ein Faktor von 93.

Fazit

Ich weiß, wie ich das Lesen der zum Booten benötigten Dateien von 63,44 Sekunden auf 0,678 Sekunden beschleunigen könnte, was den Bootvorgang vermutlich von auf die Hälfte verkürzen würde. Die nötigen Operationen habe ich im laufenden System getestet. Jetzt müsste ich „nur noch“ herausfinden, wie ich das praktisch in den Bootvorgang einbinden kann… Das wird sehr wahrscheinlich meine Fähigkeiten und Kenntnisse übersteigen – aber vielleicht können meine Messungen ja jemand schlaueres dazu motivieren, sich des Themas anzunehmen. Offenbar ist ja noch einiges herauszuholen.

Die Öffentlichkeit des Privaten: Mein Projekt „Cubenet“ in der gesellschaftlichen Perspektive

Wer online sein will, muss sich gut überlegen, wie er online sein will. Denn offline ist er nie wieder.

Zu diesem Thema könnte ich nun technisches, politisches oder persönliches Schreiben. Dies ist der erste von zwei Beiträgen dazu, und er erfasst eher den gesellschaftspolitischen und den gesellschaftlichen und technischen Aspekt. Und irgendwie kommt auch ein lange vergessenes Projekt wieder zum Vorschein…

Neue Ausmaße von Offenheit und Verschlossenheit im Netz

Die einen posten bei Facebook und anderen social networks quasi sekundenaktuell jede private Befindlichkeit, egal ob banal oder weltbewegend, und schaffen damit ein detailliertes digitales Abbild ihres Lebens, das für jeden Abrufbar ist und bleibt. Die anderen haben so viel Angst vor den Datenkraken, dass sie entweder gar nicht erst beitreten (obwohl sie ja teilweise irgendwie gerne würden…) oder aber beitreten und dann mit völlig sinnbefreiten Pseudonymen, ohne Profilfoto und ohne Inhalte einen unpersönlichen, leeren Datensatz schaffen. Natürlich gibt es löbliche Zwischenabstufungen, aber die Extreme überwiegen. Und das Thema der digitalen Privatsphäre wird thematisiert wie nie zuvor.

Ein scheinbares Paradoxon am Beispiel der Piratenpartei

Dieses digitale Dilemma hat in den letzten Jahren der Piratenpartei viel Beachtung eingebracht. Dass sich die Partei und ihre Mitglieder einerseits für politische Transparenz aber andererseits für privaten Datenschutz einsetzen, erscheint der breiten Masse nach wie vor unverständlich oder gar widersprüchlich. Wenn sich dann dennoch einzelne Mitglieder freiwillig dazu entscheiden, große Teile ihres Privatlebens im Netz zu dokumentieren, ist die Verwirrung komplett. Die politische Geschäftsführerin Marina Weisband ist ein gutes Beispiel dafür: sie bloggt, sie twittert, sie postet bei Facebook auf zwei Accounts und lässt auch in gedruckten Berichten und Fernsehtalkshows viel privates durchblicken. Dennoch traue ich ihr voll und ganz zu, Privatsphäre anderer zu verstehen und zu respektieren und sich in der Politik für eben deren Aufrechterhaltung einzusetzen. Dabei sind die letzten beiden Links jeweils sehr gute Beispiele dafür, dass die klassischen Medien genau diesen Unterschied nicht verstehen.

Ich benutze Google Mail – na und?

Ich selbst werde ja schon öfters komisch dafür angeguckt, dass ich Google Mail verwende und somit einem großen US-Konzern zugriff auf alle meine Emails gebe. Eine Form der Auswertung ist dabei allen bekannt, für die Nutzer wie mich klar sichtbar und nachweislich dazu geeignet, das Google damit seine kostenlosen Dienstleistungen monetarisiert: Passend zu Wörtern, die in der Mail vorkommen, wird mir neben der Mail textuelle Werbung angezeigt. Natürlich könnten sie in der Theorie mehr mit diesen Daten machen. Ob bzw. was genau noch damit geschieht, ist aber bloße Spekulation. Dennoch gibt es Menschen, die es nicht mit sich vereinbaren könnten, ihre Privatsphäre soweit aus der Hand zu geben. Das ist völlig o.k. und verständlich, nur eben nicht das, was ich für mich persönlich entschieden habe. Man muss stets technische Vorteile und praktischem Komfort abwägen gegen die Einbußen die man im Datenschutz macht, und ich habe in dem Fall so entschieden und kann zu einem anderen Zeitpunkt anders entscheiden.

Aber Daten, auf die Google eventuell Zugreift, vielleicht sogar an irgendwelche Firmen verkauft, sind damit ja immer noch nicht für viele oder gar jeden direkt öffentlich. Sich also über soziale Netzwerke, eigene Blogs und Webseiten oder über klassische Medien zu öffnen, geht noch einen ganzen Schritt weiter als nur einen Google-Dienst zu nutzen. Darüber schreibe ich aber ein andern mal und möchte mich jetzt eher auf etwas technisches konzentieren…

Ist Cubenet der Anfang oder das Ende des Datenschutzes…?

Ich habe mich in den letzten 7 Jahren mit nichts so intensiv befasst wie mit meiner Netzwerktechnologie „Cubenet“. Zur Erinnerung: das ist (bzw. wird vielleicht einmal) eine Programmkomponente, auf deren Basis sich vernetzte Software entwickeln lässt, vom Musikplayer über soziale Netze bis hin zu Warenwirtschaftssystemen.

(Cubenet wäre eigentlich unter http://cubenet.lenaschimmel.de ausführlich dokumentiert, diese Subdomain ist aber aus [mir bekannten] technischen Gründen zum Zeitpunkt der Veröffentlichung dieses Beitrags gerade offline.)

Je nach dem, wie man diese Technologie einsetzen würde, wäre sie geeignet um die digitale Privatsphäre in nie dagewesenem Ausmaß zu zerstören, oder um sie wieder komplett herzustellen. Ich habe lange Zeit nicht verstanden, was dieser (scheinbare) Widerspruch bedeutet. Zeitweise hat mich die Aussicht auf eine Technologie, die endlich jedem die Herrschaft über seine Daten zurück gibt, massiv angespornt. Dann gab es Phasen in denen der Gedanke, dass ich damit das Gegenteil bewirken könnte, so sehr bedrängt dass ich mich nicht traute, weiter zu machen. Zu groß waren meine ethischen Bedenken. Und selbst wenn ich es mit mir selbst verantworten könnte, so liegt doch darin das Potential zu einem der meistgehassten Menschen der Welt zu avancieren.

Es sind nicht nur diese Unstimmigkeiten, die dazu geführt haben, dass mein Projekt Cubenet seit längerem wieder mal pausiert ist. Es sind auch private Umstände (z.B. meine Transsexualität) und wirtschaftliche (ich stecke derzeit viel Zeit in unser Unternehmen „Greenmobile Innovations UG„), die mich derzeit davon ablenken. Aber Cubenet lebt in meinem Kopf weiter und profitiert von dem, was ich im Alltag dazu lerne.

…oder ist es beides?

Denn inzwischen fügt sich in meinem Kopf ein stimmiges Gesamtbild des Widerspruchs zusammen: Jeder Mensch wählt frei, welche Technologien er nutzt und wie er das tut. So bietet jeder noch so datenhungrige Dienst jedem Menschen die Möglichkeit, ihn nicht oder nur sehr eingeschränkt zu nutzen und so eine Daten zu schützen, bzw. sich selbst vor seinen Daten zu schützen. Wer das tut, kommt natürlich auch nicht in den Genuss aller Vorzüge dieser Dienste. Somit ermöglicht jede Technologie maximalen Datenschutz durch Nichtnutzung. Egal wie gut oder schlecht nun der Datenschutz innerhalb von Cubenet wäre: Solange dessen Ausmaß für die (potentiellen) Nutzer realistisch abschätzbar ist, hat er die zuvor genannte Wahlfreiheit.

Nur ist es immer eine unschöne Wahl, ein Kompromiss, entweder auf Komfort und Leistung oder auf Datenhoheit zu verzichten. Wie man es macht, man macht es auch immer ein bisschen falsch. Und das wäre es, was Cubenet anders machen würde, wenn ich es denn so verwirklichen kann wie ich es plane. Cubenet ließe sich theoretisch so einsetzen, dass man die volle Funktionalität genießen könnte, und gleichzeitig die Herrschaft über die eigenen Daten behielte. Das wäre ein absolutes Novum. Aber diese Möglichkeit löst nicht die derzeit vorhanden Kompromisse zwischen Funktion und Datenschutz ab. Sie wäre nur eine Ergänzung, eine zusätzliche Option. Nutzer könnten sich bei der Nutzung immer noch so zurückhalten, dass ihnen die Vorteile nicht zu gute kämen. Oder sie könnten es so unkritisch und ungeschickt nutzen, dass sie all ihre Daten unwiderruflich an alle preisgeben und eventuell nicht mal einen Vorteil davon haben.

Medienkompetenz wird zum Pflichtprogramm

Die Medienkompetenz, die man heutzutage im Internet braucht, man wird sie vermutlich immer brauchen, in jedem Fall auch für die Nutzung von Software, welche auf Cubenet basiert. Aber es kommt quasi von selbst, dass die Menschen diese Kompetenz aufbauen. Niemand kann dazu gezwungen werden, sich damit zu befassen. Aber inzwischen dürfte wohl jeder von der Problematik gehört haben. In ein paar Jahren werde ich guten Gewissens sagen können: „Wer sich nicht anstrengt, einen Dienst verantwortungsvoll zu nutzen, darf sich hinterher nicht beschweren wenn seine Daten sonst wo landen.“ Vorausgesetzt natürlich, ich habe alles in meiner Macht stehende getan, um diese verantwortungsvolle Nutzung möglich zu machen.

Und unter diesen Voraussetzungen habe ich keinerlei Zweifel mehr daran, dass ich Cubenet weiter entwickeln und Veröffentlichen sollte.

(Ich entschuldige mich schonmal, falls dieser Beitrag – insbesondere der Teil zu Cubenet – für viele Leser zu abstrakt war. Das wird später hoffentlich alles mal klar, was ich meine…)

Higher display resolution – free and in less than 1 minute

Are you using Linux and would like some more screen resolution than your current display offers?

The short version

On a terminal, type

xrandr

In the output look for the first word in the second line (just under „Screen 0“). In my case, that’s „VGA1“. Other common values to look for are „lvds“ and „default“. Then type something like

xrandr --output VGA1 --scale 1.5x1.5

Voila, that’s it!

Some technical details

This is a feature of X.org and is performed on your graphics board. It will create a larger desktop frame buffer, scale that down, and send the scaled output to your monitor. No matter what desktop resolution you were using before, your display will get the same type signal afterwards and won’t even notice that there is something special going on. So there’s practically no risk of damaging your display.

Most graphics boards will get pretty slow when your horizontal resolution is above 2048 pixels. Just calculate 2048 / (current horizontal resolution) to see what’s the maximum factor you should use instead of „1.5×1.5“. Also note that any scaling beyond 1.5 will likely result in unreadable small text.

In case you didn’t already figure it out, I should tell you how to get back to your original settings:

xrandr --output VGA1 --scale 1x1

Pictures

To show you what to expect from this little hack, I made some photos (screen shots wouldn’t give the same impression). What you see is a TFT display from 2005 featuring a physical resolution of 1280×1024.

Factor 1
Factor 1
Factor 1.333
Factor 1.333
Factor 2
Factor 2

[clear]

Right now I’m working with the configuration shown on the second picture: a scaling factor of 1.333 and a desktop resolution of 1707 x 1365. Thats 77% more pixels for 0% more money!

Personal Background

I always wished for that feature, even more so since I had an OQO 1+ ultra portable PC with a tiny 800×480 screen. Most applications just don’t fit. The successor model OQO 2 had the same physical resolution but a built-in scaling mode to use a virtual resolution up to 1200×720 – as well as hardware keys to zoom in and out and resistive touch scroll bars along the display edges -wow.

Now I have a Dell Precision M70 with a physical resolution of 1920×1200. You wouldn’t believe it, but sometimes I’d wish for even more. Did you ever sit in front of an 30″ Apple Cinema Display? You’ll miss the 2560×1600 pixels once you get back. Sadly,  xrandr –scale does not work on my Dell system, neither with the default VESA driver nor with several versions of the Nvidia Quadro driver.

Surprisingly, it works well on one of the cheapest of possible graphics chips: The Intel GMA 950, and for the last 6 months I just did not try it.

Comments working again

Sorry dear readers and commenters, the comment feature on this site was broken for an unknown time, so any comments you tried to write in the recent past may be forever lost. If your comment already appeared online, it’s probably still there (unless you are an evil spam bot).

The feature has now been repaired so you can start commenting again.

Thanks to Dominik for reporting!

Just in case you are interested in the cause: The plugin WP-reCAPTCHA has stopped showing a Captcha input field and prevented anyone from commenting. If you are using it on your site, you should check if it’s still working.

Project portfolio now ready to use, and Email notification

Project Portfolio

After more than a month of testing and optimizing, my project portfolio is now fully available. This means, you can now get an overview of what I’ve done (mostly while studying „Medieninformatik“) and what I’m currently doing, as well as read all the details about each of those projects.

In addition to what was online before, the usability and performance is now optimized, and the undocumented projects were removed from the filtered view, so you don’t end up in pages telling you „No content yet“. They will be re-added when I’ve had time to document them. And then there are even more projects to add, so it won’t get boring in the foreseable future.

Email notification

This site features an RSS feed, but since not everybody likes RSS, you can now also subscribe to this blog by Email. Rest assured that I’m not going to sell your addresses to spammers or anyone else. (I’m expecting no more than 1 new subscriber per month, so there’d be no big deal for me anyway).

After entering you email, you will get a confirmation mail, and after visiting the link, you’ll have the chance to adjust your notification settings, e.g. to be notified about some categories only.