aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--articles/2011-06-14_darstellen_von_gps_daten_mit_gnuplot.md89
-rw-r--r--articles/2011-12-28_gedanken_zu_de_zentralen_netzen.md36
-rw-r--r--articles/2012-04-07_mobile_endgeraete_und_freie_software.md58
-rw-r--r--articles/2012-08-29_erfahrungen_mit_einer_ssd_unter_linux.md45
-rw-r--r--articles/2012-11-20_virtualisierung_mit_kvm_und_virtuelle_netzwerke_mit_vde.md123
-rw-r--r--articles/2013-12-21_musikalischer_jahresruekblick_2013.md49
l---------tags/development/2011-06-14_darstellen_von_gps_daten_mit_gnuplot.md1
l---------tags/development/2013-03-01_introduction_to_expressing_and_controlling_object_ownership_in_cpp11.md1
l---------tags/development/2013-04-27_declaring_functions_local_to_a_translation_unit_in_cpp.md1
l---------tags/development/2013-10-06_notizen_zu_cpp_und_unicode.md1
l---------tags/development/2013-11-03_mapping_binary_structures_as_tuples_using_template_metaprogramming.md1
l---------tags/development/2014-01-05_disabling_methods_in_implicitly_instantiated_class_template_specializations_in_cpp.md1
l---------tags/german/2011-06-14_darstellen_von_gps_daten_mit_gnuplot.md1
l---------tags/german/2011-12-28_gedanken_zu_de_zentralen_netzen.md1
l---------tags/german/2012-04-07_mobile_endgeraete_und_freie_software.md1
l---------tags/german/2012-08-29_erfahrungen_mit_einer_ssd_unter_linux.md1
l---------tags/german/2012-11-20_virtualisierung_mit_kvm_und_virtuelle_netzwerke_mit_vde.md1
l---------tags/german/2013-12-21_musikalischer_jahresruekblick_2013.md1
l---------tags/linux/2012-04-07_mobile_endgeraete_und_freie_software.md1
l---------tags/linux/2012-08-29_erfahrungen_mit_einer_ssd_unter_linux.md1
l---------tags/linux/2012-11-20_virtualisierung_mit_kvm_und_virtuelle_netzwerke_mit_vde.md1
l---------tags/opinion/2011-12-28_gedanken_zu_de_zentralen_netzen.md1
l---------tags/opinion/2012-04-07_mobile_endgeraete_und_freie_software.md1
l---------tags/opinion/2013-12-21_musikalischer_jahresruekblick_2013.md1
24 files changed, 418 insertions, 0 deletions
diff --git a/articles/2011-06-14_darstellen_von_gps_daten_mit_gnuplot.md b/articles/2011-06-14_darstellen_von_gps_daten_mit_gnuplot.md
new file mode 100644
index 0000000..8687ba1
--- /dev/null
+++ b/articles/2011-06-14_darstellen_von_gps_daten_mit_gnuplot.md
@@ -0,0 +1,89 @@
+# Darstellen von GPS Daten mit gnuplot
+
+Bei meiner letzten Wanderung in den Schweizer Alpen habe ich spaßeshalber das N900 alle 10 Sekunden meine Position loggen lassen. Als Ergebnis erhielt ich dann ein aus 1991 Messpunkten bestehendes XML entsprechend der GPX Spezifikation.
+
+Die Daten der Messpunkte sind im XML als `trkpt`-Tags gespeichert. Enthalten sind jeweils der Längen- und Breitengrad, die Uhrzeit, der Modus (3d / 2d), die Höhe über Null und die Anzahl der zur Positionsbestimmung genutzten Satelliten. Aussehen tut das ganze dann z.B. so:
+
+ <trkpt lat="47.320591" lon="9.329439">
+ <time>2011-06-12T07:57:39Z</time>
+ <fix>3d</fix>
+ <ele>870</ele>
+ <sat>6</sat>
+ </trkpt>
+
+Diese Daten lassen sich nun sehr einfach Verarbeiten – ich habe das Python `xml.dom.minidom` Modul verwendet. Um die Positionen einfacher verwenden zu können, werden sie mit dieser Funktion in Listenform gebracht:
+
+ def getPositions(xml):
+ doc = minidom.parse(xml)
+ node = doc.documentElement
+ rawTrkPt = doc.getElementsByTagName("trkpt")
+ positions = []
+ for TrkPt in rawTrkPt:
+ pos = {}
+ pos["lat"] = TrkPt.getAttribute("lat")
+ pos["lon"] = TrkPt.getAttribute("lon")
+ pos["ele"] = int(TrkPt.getElementsByTagName("ele")[0].childNodes[0].nodeValue)
+ positions.append(pos)
+ return positions
+
+Aus dieser Liste kann ich jetzt schon einige Kennzahlen ziehen:
+
+ def printStats(gpxPositions):
+ highEle = gpxPositions[0]["ele"]
+ lowEle = gpxPositions[0]["ele"]
+ for pos in gpxPositions:
+ if pos["ele"] > highEle:
+ highEle = pos["ele"]
+ if pos["ele"] < lowEle:
+ lowEle = pos["ele"]
+ eleDiv = highEle - lowEle
+ print "Measure points: " + str(len(gpxPositions))
+ print "Lowest elevation: " + str(lowEle)
+ print "Highest elevation: " + str(highEle)
+ print "Height difference: " + str(eleDiv)
+
+Die Kennzahlen für meine Testdaten wären:
+
+ Measure points: 1991
+ Lowest elevation: 863
+ Highest elevation: 1665
+ Height difference: 802
+
+Da die Daten ja, wie schon im Titel angekündigt, mit gnuplot dargestellt werden sollen werden sie mit dieser Funktion in für gnuplot lesbares CSV gebracht:
+
+ def printCsv(gpxPositions):
+ separator = ';'
+ for pos in gpxPositions:
+ print pos["lat"] + separator + pos["lon"] + separator + str(pos["ele"])
+
+### Plotten mit gnuplot
+
+<a href="http://imgur.com/RHlNp"><img src="http://i.imgur.com/RHlNpl.jpg" alt="Gnuplot output" class="clear full"/></a>
+
+Eine solche, dreidimensionale Ausgabe der GPS Daten zu erzeugen ist mit der `splot`-Funktion sehr einfach.
+
+ #!/usr/bin/gnuplot
+ set terminal png size 1280,1024
+ set output "output.png"
+ set multiplot
+ set yrange [9.365:9.31]
+ set xrange [47.325:47.28]
+ set zrange [800:1700]
+ set view 28,272,1,1
+ set ticslevel 0
+ set grid
+ set datafile separator ';'
+ splot "/home/adrian/projects/gpxplot/wanderung_120611.csv" with impulses lt 3 lw 1
+ splot "/home/adrian/projects/gpxplot/wanderung_120611.csv" with lines lw 2
+ unset multiplot
+
+Mit `set terminal png size 1280,1024` und `set output "output.png"` werden zuerst das Ausgabemedium, die Größe und der Dateiname der Ausgabe definiert. Dannach aktiviert `set multiplot` den gnuplot-Modus, bei dem mehrere Plots in einer Ausgabe angezeigt werden können. Dieses Verhalten brauchen wir hier, um sowohl die Strecke selbst als rote Line, als auch die zur Verdeutlichung verwendeten blauen Linien gleichzeitig anzuzeigen.
+Mit `set [y,x,z]range` werden die Außengrenzen des zu plottenden Bereichs gesetzt. Dies ließe sich natürlich auch über ein Script automatisch erledigen. Als Nächstes wird mit `set view 28,272,1,1` die Blickrichtung und Skalierung definiert. `set ticslevel 0` sorgt dafür, dass die Z-Achse direkt auf der Grundebene beginnt. Um ein Gitter auf der Grundfläche anzuzeigen, gibt es `set grid`.
+Als letztes werden jetzt die zwei Plots mit `splot` gezeichnet. Die Angaben hinter `with` Steuern hierbei das Aussehen der Linien.
+
+Falls jemand den Artikel mit meinen Daten nachvollziehen möchte - das GPX-File kann hier heruntergeladen werden:
+ [wanderung_120611.gpx](http://blog.kummerlaender.eu/workspace/media/upload/wanderung_120611.gpx)
+
+Zum Schluss hier noch ein Blick vom Weg auf den Kronberg Richtung Jakobsbad im Appenzell:
+
+<a href="http://imgur.com/SLnY0"><img src="http://i.imgur.com/SLnY0l.jpg" alt="" title="Aussicht" class="full"/></a>
diff --git a/articles/2011-12-28_gedanken_zu_de_zentralen_netzen.md b/articles/2011-12-28_gedanken_zu_de_zentralen_netzen.md
new file mode 100644
index 0000000..5f48ee8
--- /dev/null
+++ b/articles/2011-12-28_gedanken_zu_de_zentralen_netzen.md
@@ -0,0 +1,36 @@
+# Gedanken zu (de)-zentralen Netzen
+
+Das Internet war von Anfang an als dezentrales Netzwerk gedacht und ist es auch - bis zu einem bestimmten Grad. Hardwareseitig.
+
+Auf der Seite der Dienste und Anwendungen wird es jedoch zunehmend zentralisierter. Nachrichten werden nicht mehr per Mail sondern über zentrale Plattformen wie Facebook, Google+ etc. ausgetauscht. Kommunikation mit Freunden läuft nicht mehr direkt sondern über zentrale Knotenpunkte und unsere Daten liegen immer mehr nicht lokal auf eigenen Medien verteilt sondern zentralisiert in der Cloud. Rechenleistung wird weniger von eigenen Servern sondern viel mehr von großen Rechnerverbünden on Demand bereitgestellt.
+
+Das alles ist auf den ersten Blick schön und macht vieles einfacher, aber natürlich bringt es wie alles auch Probleme mit sich.
+In diesem Fall ist es ein ziemlich großes Problem.
+
+Dadurch das sich immer mehr Kommunikation, ein Teil der Gesellschaft ins Netz verlagert und neue Dinge auf Basis des Internet geschaffen werden wird die Abhängigkeit von diesen zentralen Dienstleistern immer größer. Für Unternehmen, Regierungen und die Verwertungsindustrie eröffnen sich so Ansatzpunkte zur Kontrolle großer Teile der Information und Kommunikation.
+
+Auswirkungen dieser Möglichkeiten schlagen sich beispielsweise regelmäßig in Gesetzesinitiativen wie dem Jugendmedienschutz-Staatsvertrag oder dem Zugangserschwerungsgesetz nieder. Bis jetzt konnten diese Repressionen und Gefahren immer mehr oder weniger abgewendet werden - doch das muss nicht immer so sein.
+
+Auch aus Sicht des Datenschutzes und beim Blick auf die AGBs diverser Plattformen sollte einem die Gefahr, die übermäßiges Verlagern von Daten in fremde Hände birgt, bewusst werden.
+
+### Alternativen
+
+Es gibt Möglichkeiten das Unterdrücken und Kontrollieren von Kommunikation zumindest so lange das Netz selbst noch verfügbar ist zu erschweren. Ein erster Schritt kann das Ersetzen von Plattformen wie Facebook oder Twitter mit Software wie z.B. [Diaspora](https://joindiaspora.com/) oder [StatusNet](http://status.net/) sein. Daten speichern und Tauschen lässt sich - auch auf Hardware die unter eigener Kontrolle steht - realisieren dank Projekten wie [OwnCloud](http://owncloud.org/). Zum Tauschen von Daten gibt es heute schon weit verbreitete dezentrale Protokolle wie BitTorrent. InstantMessaging ist bequem über [Jabber](http://einfachjabber.de/) möglich. Auch anonymes Nutzen des Internet und anonymes Bereitstellen von Anwendungen im Internet ist mit [Tor](https://www.torproject.org/) machbar.
+
+Diese Dienste lassen sich alle über eigene Server verwenden - wer wie ich einen Schritt weiter gehen möchte kann es auch mit einem Rechner bei sich zu Hause, über die eigene Internetanbindung machen. Hier gibt es dank der zunehmenden Beliebtheit von [ARM-Prozessoren](http://de.wikipedia.org/wiki/ARM-Architektur) einen stetigen Nachschub an Hardware. Beispiele hierfür sind die [CuBox](http://www.solid-run.com/) und die Steckdosenrechner von [Marvell](http://www.marvell.com/solutions/plug-computers/) wie der [SheevaPlug](http://de.wikipedia.org/wiki/SheevaPlug) mit dem ich persönlich über die letzten zwei Jahre sehr gute Erfahrungen gemacht habe.
+Diese Computer vereinen für die üblichen Fälle gut ausreichende Rechenleistung mit einem sehr geringen Stromverbrauch (aktuell etwa 5 Watt) was auch bei ganzjährlichem Betrieb kaum Kosten entstehen lässt.
+
+### Ausblick
+
+Man stelle sich vor jeder hätte einen solchen Server bei sich am Laufen. Dieser Server könnte über eine Diaspora Instanz ein Teil eines globalen, dezentralen, sozialen Netzwerks sein, über einen Jabber-Server Echtzeitkommunikation ermöglichen und über OwnCloud Daten freigeben. Jeder könnte jeden Service anbieten und wenn eine Instanz ausfällt betrifft es nur einen: den Ausgefallenen.
+Ein Projekt das versucht diese Idee zu verwirklichen ist die [Freedom](http://wiki.debian.org/FreedomBox)[Box](http://freedomboxfndn.mirocommunity.org/video/9/elevate-2011).
+
+Zentrale Dienste könnten in diesem Modell natürlich immernoch existieren - jedoch bestünde im besten Fall auch die Möglichkeit
+die Daten vom Dienst zu trennen und so Freiheit zu erlangen. Das [Unhosted-Projekt](http://unhosted.org/) ermöglich das schon jetzt durch
+ein JavaScript-Framework welches es erlaubt Anwendungen zu schreiben die auf einem zentralen Server laufen, die Daten jedoch auf den
+Rechnern der Nutzer selbst speichern.
+
+Eine ähnliche Idee verfolgt auch Opera durch die Integration eines Webservers in den Browser mit [Unite](http://unite.opera.com/applications/). Jedoch ist Unite leider kein direktes Peer2Peer Netzwerk da aller Netzverkehr duch Opera-Proxys geroutet wird und sich das Unternehmen in den AGBs das Recht einräumt Inhalte zu löschen und zu blockieren.
+Prinzipiell ist diese Idee für den normalen Nutzer jedoch vermutlich sogar besser als die vieler lokaler Heimserver: "Ich mache das Fenster für das Internet auf und wenn ich es zu mache bin ich nicht mehr im Internet - auch nicht meine Inhalte.".
+
+Dieser Ansatz in einer Software richtig verpackt, so dass für den Nutzer kein sichtbarer Unterschied besteht und er nicht direkt merkt das er sich seine Dienste selbst zu Verfügung stellt, könnte dem Ziel eines auch aus Sicht der Dienste dezentralen Netzes sicher auf die Sprünge helfen.
diff --git a/articles/2012-04-07_mobile_endgeraete_und_freie_software.md b/articles/2012-04-07_mobile_endgeraete_und_freie_software.md
new file mode 100644
index 0000000..178d31c
--- /dev/null
+++ b/articles/2012-04-07_mobile_endgeraete_und_freie_software.md
@@ -0,0 +1,58 @@
+# Mobile Endgeräte und freie Software
+
+Wenn man an Smartphones und mobile Endgeräte im Allgemeinen denkt fallen einem wohl zuerst Begriffe wie iPhone, iPad und Android ein. Mit diesen Geräten lassen sich tolle Sachen anstellen - ich kann "Apps" installieren, dazu beitragen die 200000 Jahre, die die Menschheit mit Angry Birds [verbracht](http://www.rovio.com/en/news/blog/95/angry-birds-smashes-half-a-billion-downloads/) hat, weiter zu erhöhen und mein Adressbuch unverschlüsselt per "WhatsApp" [veräußern](http://blog.posativ.org/2011/wieviel-sind-meine-telefonnummern-wert-9-cent/).
+Doch was ist wenn man mehr oder anderes machen will, wenn man ein Gerät für mehr nutzen will als für das was die Hersteller erlauben? Wenn ich mit der Hardware, für die ich Geld bezahlt habe, die mir gehört, auch machen können kann was ich will?
+
+In diesem Blog-Artikel möchte ich einen Überblick über die verschiedenen Hardware-Plattformen, offene Betriebsysteme und geeignete Nutzeroberflächen bieten.
+Als offen bezeichne ich Geräte die es mir ermöglichen einen eigenen Linux-Kernel auszuführen und deren Hardware entsprechend gut unterstützt wird.
+
+An Hardware gibt es theoretisch eine sehr große Auswahl. Eine große Mehrheit der Smartphones und Tablets setzt auf ARM Prozessoren und auf diesen läuft meist auch ein Linux Kernel. Ausgenommen ist hier üblicherweise Apple, da hier von Apple selbst angepasste ARM Designs verwendet werden, für die eine Linux-Portierung aufgrund von schlichtem Nichtvorhandenseins von Dokumentation oft nicht möglich ist.
+Geräte die auf Android als Betriebssystem setzen bieten natürlich prinzipiell erst einmal alle die Möglichkeit auch ein offenes Linux einzusetzen - Problem ist hier der Hang vieler Hersteller zum Sperren der Bootloader und Blockieren von unsigniertem Code. Ein Smartphone das ich erst "Jail-Breaken" muss um vollen Zugriff zu erlangen ist für mich nicht das Wahre. Hinzu kommt, dass die einzigen sinnvoll einsetzbaren Betriebsystem-Alternativen wieder nur Android-Derivate sind die mich alleinschon durch das fehlen eines X-Servers, der Abstinenz der GNU Core-Tools und einer entsprechenden nativen Konsole zu sehr einschränken. Android läuft zwar auf einem Linux-Kernel, aber das ist auch schon alles - der Rest des Betriebsystems findet in der Dalvik VM hinter zig Abstraktionsschichten statt. Es ist Android/Linux und nicht GNU/Linux. Man stelle sich nur vor was sich mit den mittlerweile in vielen Android-Geräten verbauten Mehrkernprozessoren mit >= 1 Ghz Rechenleistung in einer schlankeren Umgebung machen ließe...
+
+Glücklicherweise sind wir nicht ganz auf Android-ausführende Hardware beschränkt. Das Mobiltelefon meiner Wahl ist seit etwa 2 Jahren beispielsweise das [N900](http://en.wikipedia.org/wiki/Nokia_N900), das aus meiner Sicht wirklich als **das** offene Gerät auf dem Markt angesehen werden kann. Ich könnte hier jetzt seitenweise Punkte aufzählen was alles mit dem N900 möglich ist aber es geht auch kurz:
+
+<a href="http://imgur.com/a/JeEIK"><img src="http://i.imgur.com/7G9g9.png" alt="" title="N900 apt-get" width="600px" class="full"/></a>
+
+Mit dem N900 lässt sich, ohne das man durch herstellerseitige Einschränkungen belästigt wird, alles machen was mit einem normalen Linux-Rechner geht. Die einzige mir bekannte Einschränkung ist: Teile der Hardware wie z.B. die Grafikkarte erfordern (noch) unfreie, geschlossene Treiber.
+
+Ein Punkt den man als Nachteil des N900 betrachtet kann, ist die nicht mehr ganz aktuelle Hardware, so sind beispielsweise nur 256 MB RAM verbaut. Andererseits: Für Geräte in dieser Liga hat sich der Markt seit 2009 nicht wirklich verändert.
+
+Aktuellere Komponenten bietet das Nachfolgemodell N950, dass jedoch leider nie einem größeren Personenkreis außerhalb einiger ausgewählten Entwickler zugänglich wurde. Der aktuelle N900 Nachfolger ist das [N9](http://swipe.nokia.com) welches zwar eine sehr endnutzerfreundliche Oberfläche bietet, jedoch auf eine Hardwaretastatur verzichtet und Softwareseitig zumindest ab Werk nicht mehr ganz so offen ist wie das N900 - dies lässt sich aber mittlerweile sehr bequem [lösen](https://endno.de/~itsnotabigtruck/inception/). Das N9 wird gleichzeitig leider auch das letzte Linux basierte Smartphone aus dem Hause Nokia sein, hatte Nokia doch vergangenes Jahr mit dem neuen CEO Steven Elop alle Pläne für MeeGo (Nachfolge für die in den Nokia Internet-Tablets, dem N900, N950 und N9 eingesetzte Distribution "Maemo") zusammen mit entsprechender Hardware eingestampft und durch Windows Phone ersetzt. Währe das nicht geschehen hätten wir mittlerweile vermutlich mehrere Smartphones in der selben Liga wie das N900 - nicht ohne Grund wird in [einschlägigen Kreisen](http://talk.maemo.org) von der "Elopcalypse" gesprochen.
+Gerüchteweise existiert zwar noch [Meltemi](http://en.wikipedia.org/wiki/Meltemi_(operating_system)), jedoch soll dies nur auf Nokias Low-End Geräten zum Einsatz kommen und das wäre... naja, nicht wirklich toll.
+
+Im Tablet Bereich gibt es seit kurzem das [Vivaldi-Tablet](http://makeplaylive.com/) welches vom KDE-Mitentwickler Aaron Seigo initiert wurde und wohl demnächst ausgeliefert werden kann. Beim Vivaldi handelt es sich um ein 7 Zoll Tablet mit einem ARM Cortex A9 @1GHz, 512 MB RAM und noch [einigem mehr](http://makeplaylive.com/). Es ist jedoch nicht unbedingt die Hardware die für dieses Gerät spricht, sondern die sehr offen gehaltene Software. Als Linux-Distribution wird hier [MER](http://merproject.org/) zusammen mit der mobilen KDE-Oberfläche [Plasma-Active](http://plasma-active.org/) eingesetzt.
+
+Eine weitere [Geräte-Familie](http://en.wikipedia.org/wiki/Palm_Pre) auf die ich vor einigen Monaten beim vorausschauenden Stöbern nach möglichen N900-Nachfolgern stieß sind die Palm / HP WebOS Smartphones und Tablets. Auch wenn [WebOS](https://developer.palm.com/) bezogen auf Offenheit nicht ganz an die Maemo-Plattform heranzureichen schien, so ist es doch immernoch um Welten ansprechender als iOS, Windows Phone und Android Geräte... Tags nach meiner Entdeckung wurde WebOS bzw. die dafür nötige Hardware von HP eingestampft. Geschichte wiederholt sich.
+Mittlerweile hat man dort wenigstens den damaligen Vorsitzenden Léo Apotheker ersetzt und doch nicht als weltgrößter PC-Hersteller beschlossen das PC-Geschäft abzustoßen und voll auf Software zu setzen - aus neuer WebOS-Hardware wird aber wohl trozdem nichts. Immerhin wird WebOS nun Schritt für Schritt in ein [Open-Source-Projekt](https://developer.palm.com/) umgewandelt was ich sehr begrüße, aber so lange es sich nicht auf andere Geräte portieren lässt, bzw. Kandidaten für solche Geräte garnicht vorhanden sind, bringt das leider nur beschränkt etwas.
+
+Für die jenigen die sich ein von der Hardware bis zur kompletten Software freies Mobiltelefon wünschen gibt es den [OpenMoko Freerunner](http://www.openmoko.com/freerunner.html) den ich hier zwar erwähnen will, jedoch mangels Erfahrung nicht näher erläutern kann.
+
+Aber Hardware ist nicht alles - um nun auf Software-Plattformen zu sprechen zu kommen: Gehen wir davon aus wir hätten ein offenes Smartphone oder Tablet für das der Hersteller einen funktionierenden Linux-Kernel zu Verfügung gestellt hat (wie es aufgrund der GPL ja eigentlich alle tun müssten...), welche Möglichkeiten bezogen auf Distributionen und grafische Oberflächen böten sich dann?
+
+Das Hauptproblem für den Einsatz von normalen Linux-Distributionen auf mobilen Endgeräten ist nicht, diese zum Laufen zu bringen - so existieren Portierungen von beispielsweise Debian meinem Eindruck nach für erstaunlich viele Geräte. Das Problem ist die Unterstützung der für ein Smartphone existenziellen Kompontenten wie dem UMTS Modem und den verschiedenen Sensoren. Daneben benötigt man auch eine fingerfreundliche Oberfläche für die alltägliche Verwendung.
+
+Am besten geeignet ist zur Zeit wohl der [MeeGo](https://meego.com/) Ableger [MER](http://merproject.org/) bzw. das wiederum darauf basierende [NEMO](http://wiki.merproject.org/wiki/Nemo). Was aus [Tizen](https://www.tizen.org/), dem Nachfolgeprojekt von MeeGo wird lässt sich noch nicht abschätzen.
+
+Mit Interesse verfolge ich zur Zeit auch die Entwicklungen um Mozillas [Boot to Gecko](http://hacks.mozilla.org/2012/02/mozillas-boot-to-gecko-the-web-is-the-platform/). B2G verspricht es eine offene Plattform auf Basis eines Linux-Kernels zu bieten - die gesamte Oberfläche und alle Applikationen sollen dabei in der Gecko-Engine laufen und somit komplett in Java-Script, CSS und HTML implementiert sein. Inwieweit sich hier jedoch überhaupt noch gewöhnliche Anwendungen ausführen lassen ist fraglich. Zumindest könnten wir mit Boot to Gecko jedoch Geräte mit einem offenen System bekommen auf dessen Basis sich dann andere Dinge implementieren lassen.
+
+Auch Ubuntu bereitet sich gerade für den Einsatz auf Tablets und [Smartphones vor](http://www.ubuntu.com/devices/android). So soll augenscheinlich ein komplettes Ubuntu-System in Android verfügbar gemacht und über Docking-Stationen auf größeren Displays ausgegeben werden - der PC in der Tasche quasi. Wenn sich hier jegliche mit der ARM-Plattform und Ubuntu kompatible Programme nutzen ließen, uns also ein vollwertiges Linux zu Verfügung stünde, wäre das schon ein großer Schritt vorwärts.
+
+Gehen wir nun davon aus wir hätten eine geeignete Plattform für unser Wunsch-Gerät gefunden - welche grafischen Oberflächen sind dann für den mobilen Einsatz geeignet?
+
+Hier fallen mir [Hildon](http://live.gnome.org/Hildon), [Plasma-Active](http://plasma-active.org/), das [MeeGo Handset UX](http://meego.gitorious.org/meego-handset-ux) und unter Umständen auch [Gnome 3](http://www.gnome.org/gnome-3/) ein.
+
+[Hildon](http://live.gnome.org/Hildon) ist die etwas ältere, mobile Variante des Gnome-Desktops und wird beispielsweise in [Maemo](http://maemo.org) und somit auch dem N900 eingesetzt. Sie verwendet, wie es meiner Meinung nach auch wünschenswert ist, einen normalen X-Server und bleibt ziemlich nah an der Umgebung und den Frameworks wie man es vom Desktop gewohnt ist. Multitasking ist aus meiner Sicht bei dieser Oberfläche ein Traum.
+
+Interessant ist auf jeden Fall auch [Plasma-Active](http://plasma-active.org/), die mobile Variante des KDE Plasma-Desktops. Sie wird z.B. im neuen Vivaldi-Tablet verwendet, lässt sich jedoch natürlich auch auf jedem Desktop-Rechner testen.
+
+Weiterhin gibt es das u.a. in [NEMO](http://wiki.merproject.org/wiki/Nemo) verwendete [MeeGo Handset UX](http://meego.gitorious.org/meego-handset-ux) welches eine gute Oberfläche für Smartphones darstellt.
+
+[Gnome 3](http://www.gnome.org/gnome-3/) sieht nach einer für Tablets gut geeigneten Oberfläche aus und fühlt sich nach meinen Tests auch sehr danach an. Für Smartphones ist die aktuelle Gnome Iteration jedoch aus meiner Sicht momentan nicht geeignet da dort schlichtweg zu wenig Bildschirmfläche vorhanden ist.
+
+### Ausblick
+
+Zusammenfassend lässt sich sagen, dass das Hauptproblem momentan nicht fehlende Software sondern fehlende Hardware-Plattformen sind. Es gibt keinen Hersteller der sich zumindest mit einer kleinen Produktreihe voll zu Open Source und Linux bekennt. Die zwei empfehlenswertesten Optionen sind aus meiner Sicht entweder das N900 oder dessen Nachfolger N9 - der Rest des Marktes hat sich weitgehend auf iOS und Android Geräte beschränkt, es fehlt an wirklichen Alternativen zu diesen beiden. Das ein Markt für eine solche Alternative vorhanden ist lässt sich allein schon daran erkennen wie gefragt das Nokia N9 in Ländern ist für die Nokia es garnicht anbieten will - vermutlich um Windows Phone nicht zu gefährden. Es gibt dann schon eine gewisse Genugtung wenn gerüchteweise mehr N9 Exemplare als Lumina's (gleiches Gehäuse, Windows Phone) verkauft werden ;)
+
+In Zukunft wird man wohl darauf hoffen müssen, dass sich Android Geräte zweckentfremden und mit anderer Software ausrüsten lassen. Hoffnung dafür geben Projekte wie Boot To Gecko, dessen aktuelle Testversion auf das Galaxy S2 von Samsung abzielt. Wenn dies auch bei späteren Versionen noch der Fall ist, könnte sich eine Plattform entwickeln die grundlegende Funktionen eines Smartphones abdeckt und gleichzeitig noch offen für Erweiterungen (GNU Toolchain, X11 etc.) ist.
+
+Vielleicht wird es aber auch einfach Zeit für ein in der Gemeinschaft entwickeltes Smartphone mit aktueller Hardware und passender Software - ein Erfolg des [Vivaldi-Tablets](http://makeplaylive.com/) würde dem sicher nicht schaden.
diff --git a/articles/2012-08-29_erfahrungen_mit_einer_ssd_unter_linux.md b/articles/2012-08-29_erfahrungen_mit_einer_ssd_unter_linux.md
new file mode 100644
index 0000000..b714997
--- /dev/null
+++ b/articles/2012-08-29_erfahrungen_mit_einer_ssd_unter_linux.md
@@ -0,0 +1,45 @@
+# Erfahrungen mit einer SSD unter Linux
+
+Seit wenigen Tagen setze ich nun eine SSD ([Intel SSD 330 @ 120GiB](http://ark.intel.com/products/67287/Intel-SSD-330-Series-(120GB-SATA-6Gbs-25nm-MLC))) in meinem t60p ein. Kurz zusammengefasst: Ich bin begeistert.
+Im folgenden möchte ich noch ein wenig auf die von mir an der ArchLinux-Installation vorgenommenen Anpassungen eingehen.
+
+Erstmals habe ich den Datenträger nicht mehr mit der üblichen MBR-Partitionstabelle ausgestattet sondern die modernere ["GUID Partition Table"](https://wiki.archlinux.org/index.php/GPT),
+kurz GPT, verwendet. GPT entstammt der UEFI-Spezifikation und schafft nicht nur eine klarere Kennzeichnung der Partitionen über GUIDs, sondern ermöglicht auch über 128 Partitionen. Nicht,
+dass ich diese bräuchte, aber man erkennt deutlich das eine GPT um einiges mächtiger und zeitgemäßer als eine MBR-Partitionstabelle ist.
+
+Auf der 120 GiB fassenden SSD habe ich eine 4 GiB große Swap-Partition angelegt, die ich ausschließlich für den Hibernate-Modus verwenden möchte. Die mit ext4-formatierte Root-Partition
+ist auf 96 GiB festgesetzt um noch ein wenig zusätzlichen Platz für das Wear-Leveling des SSD-Controllers zu Verfügung zu stellen.
+
+Beim Bootloader setze ich erstmals in meiner Linux-Geschichte auf einem normalen Rechner nicht mehr GRUB, sondern [Syslinux](https://wiki.archlinux.org/index.php/Syslinux) ein, was aber keinen bestimmten Grund außer Neugierde hat.
+
+Die Installation lief ansonsten weitgehend normal ab. Die einzigen SSD spezifischen Anpassungen sind die Aktivierung der [TRIM-Funktion](http://en.wikipedia.org/wiki/TRIM) über das `discard` Mountflag,
+die Reduzierung des ext4-Journaling mittels dem `data=ordered` Mountflag und das Heraufsetzen der Swappiness auf 1 um die Auslagerungspartition ausschließlich in Notfällen und für den Hibernate-Modus
+zu verwenden. An Software setze ich den ["Profile-Sync-Daemon"](https://wiki.archlinux.org/index.php/Profile-sync-daemon) und den ["Anything-Sync-Daemon"](https://wiki.archlinux.org/index.php/Anything-sync-daemon)
+zum Auslagern der Browser-Profile und `/var/log/` in den Arbeitsspeicher ein.
+Dies soll dazu dienen, die Schreibvorgänge auf den Speicherzellen etwas zu reduzieren und damit hoffentlich die Haltbarkeit der SSD etwas zu erhöhen - wenn das bei den heutigen Modellen nicht mehr
+nötig sein sollte ist das umso besser. Die 16 GiB SD-Karte des SheevaPlugs läuft ja nun auch schon zwei Jahre ohne Probleme zu zeigen.
+
+Hier meine derzeitige `/etc/fstab`:
+
+ #
+ # /etc/fstab: static file system information
+ #
+ # <file system> <dir> <type> <options> <dump> <pass>
+ tmpfs /tmp tmpfs nodev,nosuid 0 0
+
+ /dev/sda1 swap swap defaults,noatime,discard 0 0
+ /dev/sda2 / ext4 defaults,noatime,discard,data=ordered 0 0
+
+### Verschlüsselung?
+
+Eigentlich bin ich was Daten angeht sehr paranoid - meine relevanten Speichermedien sind alle vollverschlüsselt, dass gilt auch für die Betriebsystem-Partitionen. Ich achte sehr darauf,
+dass keinerlei eigentlich verschlüsselte Daten in unverschlüsselte Gefilde "ausbrechen"... für die SSD muss ich vorerst auf einen Teil davon verzichten.
+Das liegt daran, dass der im 2007er Thinkpad verbaute Core-Duo nur etwa 30 MiB/s unter LUKS ver- bzw. entschlüsselt. Auf einer herkömmlichen Platte konnte ich das noch verkraften, eine SSD ist mir dafür aber eindeutig zu schade. Um nicht alles entschlüsseln zu müssen und meine schützenswürdigen Daten weiterhin sicher zu lagern, werde ich mir voraussichtlich einen UltraBay-Adapter zulegen und
+das sowieso nur noch selten genutzte DVD-Laufwerk mit einer herkömmlichen Festplatte ersetzen.
+Dank hdparm kann diese ja in einen Ruhemodus versetzt werden und muss so nicht die ganze Zeit laufen. Ein weiterer Vorteil der SSD, namentlich Stille dank der Abstinenz beweglicher Teile, wird also zumindest nicht ganz verloren gehen.
+
+Die komplette Verschlüsselung der SSD wird jedoch erst nach einem deutlich größeren Hardwareupgrade wieder Sinn machen. So schaffen aktuelle Prozessoren dank des [AES-NI](http://en.wikipedia.org/wiki/AES_instruction_set) Befehlssatzes hunderte MB pro Sekunde Durchsatz, dieser ist dann auch für eine SSD wieder groß genug.
+
+### Fazit
+
+Alles in allem bin ich mit meinem Umstieg trotz der nötigen Abstriche sehr zurieden und möchte nicht mehr auf ein System ohne SSD zurück. Denen, die sich näher mit dem Thema auseinandersetzen wollen, empfehle ich die entsprechende Seite im englischen Arch-Wiki: [SSD](https://wiki.archlinux.org/index.php/SSD) und zur Kaufberatung die Tests auf [StorageReview.com](http://www.storagereview.com/).
diff --git a/articles/2012-11-20_virtualisierung_mit_kvm_und_virtuelle_netzwerke_mit_vde.md b/articles/2012-11-20_virtualisierung_mit_kvm_und_virtuelle_netzwerke_mit_vde.md
new file mode 100644
index 0000000..42cc891
--- /dev/null
+++ b/articles/2012-11-20_virtualisierung_mit_kvm_und_virtuelle_netzwerke_mit_vde.md
@@ -0,0 +1,123 @@
+# Virtualisierung mit KVM und virtuelle Netzwerke mit VDE
+
+Ich spiele in meiner Freizeit gerne mit verschiedenen neuen Datenbank-Systemen, Sprachen und Frameworks - passe ich dabei nicht penibel auf, entsteht schnell ein Gewirr aus Konfigurations-Dateien und einmal installierten Paketen, die gar nicht mehr verwendet werden. Das System fühlt sich mit der Zeit also etwas ungut und zugemüllt an.
+
+Bis jetzt versuche ich zumindest größere Entwicklungen in eigenen VMs abzugrenzen, ganz einheitlich bin ich dabei wegen einigen störenden Punkten aber nicht. Zum einen ist die Verwaltung der
+Netzanbindung verschiedener VMs über die im Arch-Wiki [beschriebene Behelfsmethode](https://wiki.archlinux.org/index.php/KVM#Poor_Man.27s_Networking) mit SSH-Tunneln alles andere als schön, zum anderen will ich nicht für jede VM ein eigenes Fenster mit Konsole
+rumfliegen haben. Was ich will, ist also eine "richtige" Netzwerk-Konfiguration über virtuelle Interfaces und einen Betrieb der VMs ohne grafische Oberfläche als Daemon im Hintergrund.
+
+Als Virtualisierungs-System setze ich auf KVM, die Distribution der Wahl ist weiterhin ArchLinux.
+
+### Kernel Based Virtual Machine
+
+[KVM](http://www.linux-kvm.org/page/Main_Page) ist das direkt im Linux-Kernel integrierte Virtualisierung-System. Einzige Voraussetzung dafür ist ein Prozessor mit Virtualisierungs-Funktionen, diese sollten die meisten der in den
+letzten Jahren auf den Markt gekommenen Prozessoren besitzen - selbst mein Core Duo aus 2007 führt KVM einwandfrei aus. Ansonsten verhält sich KVM identisch zu [QEMU](http://wiki.qemu.org/Main_Page), der einzige Unterschied ist,
+dass der Prozessor nicht wie bei QEMU komplett emuliert wird, sondern die Befehle über den Kernel an den physikalischen Prozessor durchgereicht werden. Dies hat den Nachteil, dass KVM z.B.
+keine ARM-Plattformen unter x86 ausführen kann, der große Vorteil ist jedoch die gute Performance. Es übertrifft bei mir - gefühlsmäßig, ich habe keine Benchmarks durchgeführt - ohne Probleme
+sowohl [VirtualBox](https://wiki.archlinux.org/index.php/VirtualBox) als auch [VMware](https://wiki.archlinux.org/index.php/VMware).
+
+Ein Vorteil aus der vollständigen Integration der KVM in den Kernel ist es, dass sich auch ganz normale Block-Geräte wie Festplatten-Partitionen etc. ohne Anpassung verwenden lassen.
+Dadurch kann ich ohne Probleme z.B. ein auf einer zweiten Host-Partition installiertes Betriebssystem im laufenden Linux-Betrieb "dazubooten" und nutzen.
+
+Angesteuert wird die KVM wahlweise über `qemu-kvm` oder `qemu --enable-kvm`. Damit das funktioniert müssen jedoch die Kernel-Module `kvm` und `kvm_intel` bzw. `kvm_amd` geladen werden.
+Die grundlegende Verwendung abseits des anderen Befehls ist gleich wie bei QEMU. So werden Image-Dateien für die Gast-Systeme mit `qemu-img` erstellt und auch Einstellungen zur Hardware
+des Gast-Systems werden auf die gleiche Weise gesetzt. Aus diesem Grund gehe ich hier auch nicht näher auf die grundlegende Verwendung ein, Details lassen sich bei Bedarf im Arch-Wiki [nachlesen](https://wiki.archlinux.org/index.php/QEMU).
+
+Hier als Beispiel mein derzeitiger Standardaufruf von KVM, der für alle VMs gleich ist. Dynamisch ist allein das zu verwendende Speicher-Gerät - in meinem Fall verschiedene Image-Dateien.
+
+ #!/bin/sh
+ qemu-kvm -cpu host -hda $1 -m 1024 -daemonize -vnc none -usb -net nic -net vde
+
+Dieser verwendet das als erster Parameter übergebene Gerät als Festplatte und setzt neben den nötigen Netzwerk-Einstellungen die VM mittels `-daemonize` in den Hintergrund. Falls benötigt, kann
+als Wert des Parameters `-vnc` auch eine von einem Doppelpunkt angeführte Zahl übergeben werden um die Grafik-Ausgabe der VM an einen VNC-Server anzubinden (z.B. `-vnc :1` für `127.0.0.1:1`). Diese
+Funktion verwende ich nicht, da ich ausschließlich über das interne Netzwerk die im Gast installierten Dienste nutze und administrative Tätigkeiten immer über SSH durchführe.
+
+### Netzwerken mit VDE
+
+[VDE](http://wiki.virtualsquare.org/wiki/index.php/VDE_Basic_Networking) steht für Virtual Distributed Ethernet und ermöglicht genau das was der Name erahnen lässt: Virtuelle Switches die beispielsweise VMs in einem Host internen LAN verbinden können.
+
+Meine Konfiguration hält sich dabei im wesentlichen an den [Vorschlag](https://wiki.archlinux.org/index.php/QEMU#Networking_with_VDE2) im englischen Arch-Wiki, welchen ich in ein einfaches Script verpackt habe:
+
+ #!/bin/sh
+ case "$1" in
+ start)
+ tunctl -t tap0
+ vde_switch -tap tap0 -daemon -pidfile .switch.pid -mod 660 -group kvm
+ ifconfig tap0 192.168.100.254 netmask 255.255.255.0
+ ;;
+ stop)
+ kill -9 `cat .switch.pid`
+ rm .switch.pid
+ tunctl -d tap0
+ ;;
+ esac
+
+Dieses Script erzeugt ein virtuelles Interface `tap0` und verbindet ein neues, als Daemon im Hintergrund laufendes, virtuelles Switch mit diesem. Als nächstes wird dann noch eine statische IP
+Konfiguration für das virtuelle Interface definiert. Durch diese können alle mit `-net nic -net vde` Parametern gestarteten KVM Gäste über die IP `192.168.100.254` auf den Host zugreifen.
+
+In den Gast-Systemen selbst muss zusätzlich eine statische IP Konfiguration vorgenommen werden:
+
+ interface=eth0
+ address=192.168.100.1
+ netmask=255.255.255.0
+ broadcast=192.168.100.255
+ gateway=192.168.100.254
+
+Um das interne virtuelle LAN bei Bedarf mit der Außenwelt zu verbinden gibt es ebenfalls ein kleines Script welches die nötige Route erzeugt bzw. löscht:
+
+ #!/bin/sh
+ case "$1" in
+ start)
+ echo "1" > /proc/sys/net/ipv4/ip_forward
+ iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o $2 -j MASQUERADE
+ ;;
+ stop)
+ iptables -t nat -X
+ echo "0" > /proc/sys/net/ipv4/ip_forward
+ ;;
+ esac
+
+Anpassbar ist hierbei das Interface, um z.B. daheim `eth0` und unterwegs wahlweise `wlan0` oder `usb0` verwenden zu können.
+
+### KVM Hardware Error
+
+Nach einer Kernel Aktualisierung im ArchLinux Gast-System, kam es beim Neustart plötzlich zu dieser etwas erschreckenden Meldung:
+
+ KVM: entry failed, hardware error 0x80000021
+
+ If you're running a guest on an Intel machine without unrestricted mode
+ support, the failure can be most likely due to the guest entering an invalid
+ state for Intel VT. For example, the guest maybe running in big real mode
+ which is not supported on less recent Intel processors.
+
+ EAX=00000000 EBX=0020fa5c ECX=00000000 EDX=fffff000
+ ESI=f6d29014 EDI=00000001 EBP=f6461fa0 ESP=f6461f60
+ EIP=c0128443 EFL=00010246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
+ ES =007b 00000000 ffffffff 00c0f300 DPL=3 DS [-WA]
+ CS =0060 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
+ SS =0068 00000000 ffffffff 00c09300 DPL=0 DS [-WA]
+ DS =007b 00000000 ffffffff 00c0f300 DPL=3 DS [-WA]
+ FS =00d8 36648000 ffffffff 00809300 DPL=0 DS16 [-WA]
+ GS =00e0 f6d2f540 00000018 00409100 DPL=0 DS [--A]
+ LDT=0000 ffff0000 f0000fff 00f0ff00 DPL=3 CS64 [CRA]
+ TR =0080 f6d2d3c0 0000206b 00008b00 DPL=0 TSS32-busy
+ GDT= f6d28000 000000ff
+ IDT= c060b000 000007ff
+ CR0=8005003b CR2=ffffffff CR3=006ef000 CR4=000006d0
+ DR0=0000000000000000 DR1=0000000000000000 DR2=0000000700000000 DR3=0000000000000000
+ DR6=00000000ffff0ff0 DR7=0000000000000400
+ EFER=0000000000000000
+ Code=00 8b 15 c4 b5 61 c0 55 89 e5 5d 8d 84 10 00 c0 ff ff 8b 00 <c3> 8d b6 00 00 00 00 8d bf 00 00 00 00 8b 15 a0 ae 61 c0 55 89 e5 53 89 c3 b8 30 00 00 00
+
+Dies sah für mich im ersten Moment wie ein klarer Hardware-Fehler aus, alle Informationen die sich über meine bevorzugte Suchmaschine finden ließen, waren jedoch für andere Situationen und ältere Kernel Versionen als `3.6.6-1`. Nach Tests mit verschiedenen Parametern für die zuständigen Kernel-Module, funktionierte es schließlich nach Laden des Moduls mit folgendem Befehl wieder einwandfrei:
+
+ modprobe kvm_intel emulate_invalid_guest_state=0
+
+Um den `emulate_invalid_guest_state` Parameter dauerhaft zu setzen reicht ein Eintrag in `/etc/modprobe.d`.
+
+### Fazit
+
+Mithilfe der beschriebenen Konfiguration und den Scripts lassen sich KVM VMs unsichtbar im Hintergrund starten und in einem Host-internen virtuellen LAN ansteuern. Bei Bedarf kann dieses virtuelle Netz mithilfe von Routen erweitert werden. Für den Netzzugriff in den Gast-Systemen reicht eine einfache statische Konfiguration.
+Ich werde das Ganze in nächster Zeit vermutlich noch etwas erweitern und verbessern, aber diese Grundlage ist auf jeden Fall besser als die von mir am Anfang genutzten SSH-Tunnel zwischen Gast und Host.
+
+Das Erstellen einer neuen VM benötigt jetzt nicht viel mehr als eine Kopie eines Muster-Images und eine Anpassung der statischen IP Konfiguration - mit zusätzlichen Scripts könnte ich mir auch eine einfache, selbstgebaute Variante von [Vagrant](http://vagrantup.com/) auf KVM Basis vorstellen. Wobei auch dort, durch die [Einführung](https://github.com/mitchellh/vagrant/commit/391dc392675c73518ebf04252d824fe916e8860b) einer neuen Abstraktionsschicht, die Unterstützung von KVM als Alternative zu VirtualBox ein Stück näher gerückt sein dürfte.
diff --git a/articles/2013-12-21_musikalischer_jahresruekblick_2013.md b/articles/2013-12-21_musikalischer_jahresruekblick_2013.md
new file mode 100644
index 0000000..95d7bca
--- /dev/null
+++ b/articles/2013-12-21_musikalischer_jahresruekblick_2013.md
@@ -0,0 +1,49 @@
+# Musikalischer Jahresrückblick 2013
+
+Wer mir auf Twitter folgt hat eventuell am Rande mitbekommen, dass ich dieses Jahr öfter als bisher Konzerte und Festivals besucht habe.
+In diesem Artikel möchte ich nun zum Ende des Jahres hin einige dieser Veranstaltungen Revue passieren lassen und somit auch einmal über ein anderes, nicht IT bezogenes, Thema berichten.
+
+Angefangen hat das Jahr 2013 aus musikalischer Sicht für mich mit _Retrospect_ am 23. März in Eindhoven in den Niederlanden. Dabei handelte es sich um das anlässlich ihres 10-jährigen
+Jubiläums stattfindende Konzert der von mir favorisierten Gruppe _[Epica](http://epica.nl)_. Epica ist im Genr