Dienstag, 5. November 2013

Bad Religion "Christmas Songs"

Vor ein paar Tagen ist das neue Bad Religion Album "Christmas Songs" erschienen, dass 17. Studioalbum der Band.

Wer der Name schon stark vermuten lässt handelt es sich dabei um Weihnachtslieder, welche Bad Relgion covert. Insgesamt umfasst das Album neuen Tracks mit einer Spielzeit von ca. 20 min. Der 9. Track ist allerdings kein Weihnachtslied, sondern ein Mix des Songs "American Jesus", welches im Original auf "Recipe for hate" enthalten war.

Zu den Weihnachtsliedern: Dies sind naheliegender Weise alles amerikanische Songs, welche ich zumindest nur in Teilen kenne. Das bekannteste Lied ist wohl "White Christmas", gefolgt von "Little Drummer Boy". Auch wird die Englisch Version von "Hört der Engel helle Lieder" zum besten gegeben.
 Musikalisch ist es halt... ja, Punkrock a la Bad Religion mit Weihnachtlieder Texten.

insgesamt recht gefällig, aber kein echter Knaller. Covern ist vielleicht doch nicht stärke von Bad Religion. Das können Me First and the Gimme Gimmes deutlich besser. Die haben allerdings noch keine Platte mit Weihnachtsliedern gemacht...

Dienstag, 29. Oktober 2013

10 Tage Ubuntu Saucy Salamander - das 1. Fazit

Vor 10 Tagen, am 19.10.2013, habe ich meinem privaten Laptop (Lenovo R61) per Upgrade von Ubuntu 13.04 auf den aktuellen Release 13.10 "Saucy Salamander" aktualisiert.

Das Upgrade hatte ich via Aktualisierungsverwaltung angestoßen, durchgelaufen ist es ohne Probleme. Der ersten Bootvorgang lief auch reibungslos durch, genauso wie der Login.

Optisch sind die Änderung ja reichlich unspektakulär, sprich Saucy sieht Raring ziemlich ähnlich. In Sachen Nutzung ist auch erst Mal alles beim alten geblieben, jedenfalls ist mir nichts aufgefallen bei meiner "täglichen" Arbeit.

Gut, ganz problemlos war das Upgrade aber dann doch nicht. Über das Problem der nicht-automatischen Datenbankmigration von CouchDB hatte ich bereits geschrieben. Dies betrifft aber unter Strich nur die "Randgruppe" der CouchDB Nutzer.

Das größere Problem war, dass Unity anscheinend dachte, mein Laptop hätte ein amerikanisches Tastaturlayout, jedenfalls erschienen bei der Suche via Dash etc. die Zeichen nach dieser Tastaturbelegung. Eingestellt ist aber Deutsch und dieses wurde in der Systemsteuerung auch so angezeigt. Beim Login via Terminal 1 bis 6, also ohne GUI, stimmt das Tastaturlayout übrigens interessanter Weise. Abhilfe bracht, unter "Systemeinstellungen -> Sprache" den Punkt "System der Tastatureingabemethode" von "Standard" auf "Keine" umzustellen. Seitdem ist alles so, wie es sein soll.

Das zweite Problem verflüchtigte sich auch schnell: Der Laptop spielte Musik ganz normal ab, aber beim Einstöpseln von Kopfhörern blieben diese stumm, obwohl das Einstöpseln korrekt erkannt wurde. Nachdem ich eine Supportanfrage im Forum von ubuntuusers.de gestartet hatte, hatte sich das Problem aber dann erledigt. Wobei ich nichts gemacht hatte, außer einmal auf der Konsole den ALSA-Mixer zu starten. Ob das jetzt wirklich die Lösung war oder ob das System nur eine Hardware-Schluckauf hatte - keine Ahnung. Na ja, Hauptsache läuft.

Tja, und der Rest... der läuft halt so, wie es sein soll. Keinerlei Probleme mit Empathy, Shotwell oder Rhythmbox. Wobei ich das Beladen eines iPod Mini 3rd Generation mit MP3s via Rhythmbox noch nicht getestet habe. Unter Raring stürzte das Programm dabei nämlich reproduzierbar ab.

Erstes Fazit zum Upgrade auf Saucy: läuft problemlos, die kleineren Wehwehchen waren schnell behoben. Großer Änderungen gab's keine, jedenfalls keine auf dem Desktopsystem erkennbaren. Die Stabilität ist bei mir so, wie sie sein soll: stabil, keinerlei Abstürze, Crashs etc. Apport hat sich jedenfalls noch nicht gemeldet.

Saucy werde ich jetzt bis zum kommenden Release von 14.04 LTS "Trusty Tar" nutzen. Mal sehen, was das so bringt.

Motörhead "Aftershock" - das neue Album

Am 21.10.2013 war es mal wieder so weit: "Aftershock", das neue Album von Motörhead ist erschienen. Dies ist das 21. Album in der jetzt 38-jährigen Bandgeschichte.

Dafür muss man schon sagen - egal, wie man zu Motörhead steht - Respekt. Das schaffen nur wenige Bands. Bedenkt man noch, dass Lemmy dieses Jahr an Heilig Abend 68 Jahre alt wird und auch die anderen beiden Bandmitglieder über 50 Jahre alt sind muss man wohl nochmals sagen: Respekt. In diesem Alter schleppen sich andere mit Mühe und Not noch in den Musikantenstadl während die drei Motörheads noch agil vor sich hin rocken.

Motörhead erfreuen sich ja in mehreren "Musikkreisen" einer gewissen Popularität. Die Gruppe wird oft dem Heavy Metal zugerechnet, obwohl sie musikalisch damit nach meinem Empfinden am wenigsten zu tun haben. Motörhead ist erst Mal Rock'n'Roll der härteren Gangart, ein bisschen Hardrock, ein bisschen Punkrock und - na gut - ganz wenig Heavy Metal.

Zum Album: Das Album Aftershock ist eigentlich so, wie man es erwartet - und das ist gut so. Wo Motörhead drauf steht ist halt auch Motörhead drin, so muss das sein. Insgesamt 14 Tracks, zwei davon etwas langsamer und ruhiger, der Rest rockt. Mein persönlicher Favorit ist dabei der vierte Track "End of Time ", wo sich die Band besonders spielfreudig zeigt. Insgesamt gehört das Album nach meinem Geschmack zum oberen Drittel der Motörhead-Platten, jedenfalls der mir bekannten.

Also wer Motörhead mag, der kann hier auf jeden Fall bedenkenlos zugreifen. Und wer noch kein Album der Band hat aber doch mal eins kaufen möchte, dem kann Aftershock auch nahe gelegt werden.

Samstag, 19. Oktober 2013

Probleme mit CouchDB nach Upgrade auf Ubuntu 13.10

Gestern habe ich meinen Rechner von Ubuntu 13.04 auf 13.10 aktualisiert. Das hat auch soweit ohne Probleme geklappt (und dazu gibt's noch einen separaten Blogeintrag).

Auf dem Rechner ist auch CouchDB installiert, welches ich für die Speicherung von eine paar Daten einsetzen. Im Zuge des Upgrades wurde dann auch CouchDB von Version 1.2 auf 1.4 aktualisiert.

Erste Auffälligkeit nach dem 1. Booten von Ubuntu 13.10: Im Anmeldebildschirm erscheint ein Nutzer namens "CouchDB Administrator". Einloggen kann ich mich da aber nicht (was vielleicht daran liegt, dass ich CouchDB im "Admin-Party" Modus betreibe?).

Normal eingeloggt wurden dann Futon, die HTML-basierte GUI von CouchDB aufgerufen. Nächste Auffälligkeit: Die Datenbank wurde offensichtlich nicht auf automatisch auf die Version 1.4. migriert. Dafür gibt es einen Eintrag in der DB-Liste "1.2.0/name_der_db". Kurioser Weise kann man diese DB dann aber nicht öffnen! Den Versuch quittiert CouchDB mit der Fehlermeldung:

"Error: illegal_database_name
Name: '101/eigene_caches'. Only lowercase characters (a-z), digits (0-9), and any of the characters _, $, (, ), +, -, and / are allowed. Must begin with a letter."


Aha -  da stellt sich doch die Frage, warum die DB dann so umbenannt wurde...

Also, wie an die Daten kommen? Gut, ich habe diverse Kopien der DB auf einem anderen Laptop und meinen beiden Android-Geräten, von daher kann ich ein wenig entspannt experimentieren. Ein simples Kopieren der Datenbank-Datei und zugehörigen Views in Datenverzeichnis funktioniert nicht, CouchDB erkennt die Daten nicht als DB-Dateien.

Die Replikation von MobileFuton 1.2 (=CouchDB für Android) funktioniert ohne Problem. Die Daten sind jetzt wieder da.

Fazit: wer auch CouchDB unter Ubuntu nutzt und das Upgrade von 13.04 auf 13.10 macht - stellt vorher sicher, dass ihr eine aktuelle Sicherung der Datenbank habt bzw. repliziert das Datenbank(en) vorher auf ein anderes Gerät.

In der Doku von CouchDB habe ich keine Hinweise zu diesem Verhalten gefunden. Lediglich im Bugtracker von Debian gibt es einen Bugreport, dass die "database migration should be automatic" sein sollte (Link zum Bugreport).

Wer ähnliche Probleme hatte oder eine andere Lösung hat kann dies gerne in den Kommentaren zu diesem Blogeintrag posten.

Dienstag, 17. September 2013

sostore Version 0.4 erschienen

Am 25.8. hatte ich einen Blogpost zu sostore geschrieben. sos ist ein simple Objekt-Datenbank für Python, Details werden im verlinkten Artikel erklärt.

Anfang September ist eine neue Version 0.4. erschienen, welche eine von mir gemachten Verbesserungsvorschlag enthält: randomized ist jetzt ein Klassenattribute und wurde im Gegenzug aus der insert-Funktion entfernt.

Das macht in so fern Sinn, als dass man mit randomize im Rahmen der insert-Funktion nur genau für diesen einen, neuen Datensatz eine zufällige ID generiert hat, bei folgenden Aufrufen von insert ohne randomize die IDs aber sequentiell weiter hochgezählt wurden. In so fern hat man so eher einen Offset bei der ID erzeugt als eine echte zufällige Nummerierung.

In der Default-Einstellung steht das Attribute für randomized in der Klasse auf False. Wer also durchgehend zufällige IDs für seine Instanz der Collection-Klasse von sostore benötigt, der instanziert dies so:

>>> c = sostore.Collection('people', randomized=True)


Das ist auch die einzige grundlegenden Änderung der Version 0.4 von sostore. Ansonsten funktioniert das Modul noch so, wie im oben verlinkten Blogpost beschrieben.

Donnerstag, 12. September 2013

11 Tage China = 11 Tage ohne soziale Netzwerke

Neulich war ich mal wieder in beruflich in China. Das muss so das ca. 18-20 Mal gewesen sein. Was diesmal aber „auffällig“ war: es ist schon, sagen wir mal, ungewohnt, wenn man 11 Tage ohne soziale Netzwerke wie Google+, Facebook und Twitter auskommt (auskommen muss). Diese Seiten sind nämlich innerhalb Chinas nicht aufrufbar, jedenfalls aus keinem der Hotels, wo ich war.

Das Facebook & Co. in China geblockt werden mag ja schon länger so sein, diesmal ist es mir aber das erste Mal richtig aufgefallen. Was wohl eher daran liegt, dass ich bei der letzten Reise (Mitte 2012) besonders Google+ (und besonders die diversen Google+ Communities) noch wenig bis gar nicht genutzt habe.

Letztendlich ist es natürlich (für mich) nicht schlimm, dass die genannten sozialen Netzwerke nicht funktionieren - ich bin ja nicht drauf angewiesen. Aber ungewohnt ist es trotzdem, da es sonst halt „normal“ ist, dass ich ein- bis zweimal am Tag Google+ und Twitter abfrage.

Störend war dann schon eher, dass blogspot.com (die von Google betriebene Blogplattform) auch komplett geblockt ist - ich hätte schon gerne zwischendurch was gebloggt...

Interessant ist übrigens, dass Twitter via Andriod App und Datenroaming funktioniert, und zwar uneingeschränkt. Da Datenroaming im Ausland (und besonders in der Ländergruppe 3, zu der China gehört) bei T-Mobile mit 0,69 €/50 kB + 0,49 € Tag aber nur teuer ist, ist das sicherlich auch keine Option, um regelmäßig zu tweeten.

Na ja, was aber angenehm war, ist, dass 5-Sterne Hotels in China echt preiswert sind, zumindest außerhalb der ganz großen Städte wie Shanghai, Beijing, Guangzhou etc. („kleine” Städte haben in China übrigens immer noch ein paar Millionen Einwohner...). Im Schnitt haben wir für ein 5-Sterne Hotel so rund 70,- €/Nacht inkl. Frühstück bezahlt. Und 5-Sterne heißt hier nicht irgendwelche Fake-Sterne. Die Hotels sind alle auf internationalem Niveau. Gut, wenn man schon keine sozialen Netzwerke nutzen kann braucht man halt andere Annehmlichkeiten ;-)

Sonntag, 25. August 2013

sostore - eine simple Objekt-Datenbank für Python

Der Python Cheeseshop ist schon ein echte Fundgrube - zumindest mir geht es so, dass man da was sucht und dann zufällig auf was ganz anderes stößt, was man zwar eigentlich nicht braucht, aber trotzdem interessant ist.

Neulich bin ich so auf sostore gestoßen. Der Name steht für "SQLite Object Store" und das Projekt beschreibt sich als "An absurdly simple object "database" for Python".

Der Name ist vielleicht etwas irreführend weil: sostore speichert nicht wirklich Objekte (im Sinne von Python-Objekten), sondern "nur" Python Dictionaries.  Gespeichert wird dabei in eine SQLite Datenbank. Das Modul besteht nur aus zwei Dateien und hat keine Abhängigkeiten außer Python selber.

Dieser Blogeintrag beschreibt die Nutzung der zur Zeit aktuellste, stabilen Version 0.3.
(Nachtrag 17.9.2013: es gibt inzwischen die Version 0.4. Ein Update zu diesem Blogpost gibt es hier: Link)

Wie andere Python-Module auch lässt sich sostore via pip installieren:

$ pip install sostore

Danach steht das Modul unter dem Namen sostore zur Verfügung:

>>> import sostore

Die einzige Klasse, mit der man als Nutzer interagiert, heißt Collection. Diese enthält alle Daten und stellt alle Funktionen bereit.

Als erstes wird eine neue Collection angelegt:

>>> c = sostore.Collection('people')

Per Voreinstellung wird die im Hintergrund laufende SQLite-Datenbank als "in-memory" angelegt. Wer Daten persistent speichern möchte, der muss explizit das db-Argument angeben:

>>> c2 = sostore.Collection('people2', db='people.db')

Eine dritte Möglichkeit ist, beim Anlegen einer Instanz einer Collection als Argument eine bestehende DB-Connection anzugeben. Details hierzu sind in den Docstrings von sostore zu finden.

Als erstes werden der Collection ein paar Datensätze hinzugefügt:

>>> d = {'name':'Peter', 'surname':'Punk', 'job':'musician'}
>>> c.insert(d)
{'job': 'musician', '_id': 1, 'surname': 'Punk', 'name': 'Peter'}
>>> c.insert({'name':'Peter', 'surname': 'Pan', 'job': 'fairyhero'})
{'job': 'fairyhero', '_id': 2, 'surname': 'Pan', 'name': 'Peter'}
>>> c.insert({'name':'Otto', 'surname': 'Normal', 'job': 'lawyer'})
{'job': 'lawyer', '_id': 3, 'surname': 'Normal', 'name': 'Otto'}
>>> c.insert({'name':'Volker', 'surname': 'Racho', 'job': 'musicien'})
{'job': 'musicien', '_id': 4, 'surname': 'Racho', 'name': 'Volker'}


Wie zu sehen ist, wird für jedes hinzugefügt Objekt das Objekt sowie die automatisch angelegt ID (welches das Objekt in der SQLite-Datenbank als Primärschlüssel hat) zurück gegeben. Wer möchte, kann auch eine zufällige ID erzeugen, indem bei insert zusätzlich das Argument randomize=True angibt.

Das 'Aktualisieren eines Objekts innerhalb der Collection ist natürlich auch möglich. Im folgenden wird der Rechtschreibfehler beim Job des 4. Datensatzes korrigiert:

>>> d = c.get(4)
>>> d['job'] = 'musician'
>>> c.update(d)
{u'job': 'musician', '_id': 4, u'surname': u'Racho', u'name': u'Volker'}


Das Löschen eines Datensatzes erfolgt wie folgt:

>>> c.remove(3)

Die Anzahl der Datensätze in der Collection liefert count

>>> c.count
3


sostore bietet verschiedene Möglichkeiten, die Daten auszulesen. Um alle Datensätze zu sehen, genügt der Befehl:

>>> c.all()
[{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}, {u'job': u'fairyhero', '_id': 2, u'surname': u'Pan', u'name': u'Peter'}, {u'job': u'musician', '_id': 4, u'surname': u'Racho', u'name': u'Volker'}]


Aber natürlich sind die Datensätze auch einzeln selektierbar. Wer die ID kennt, kann sich diese Daten wie folgt anzeigen lassen:

>>> c.get(1)
{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}


Es ist auch möglich, mehr als eine ID anzugeben:

>>> c.get_many([1, 2])
[{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}, {u'job': u'fairyhero', '_id': 2, u'surname': u'Pan', u'name': u'Peter'}]


Optional kann man auch zusätzlich die Felder angeben, die zurück geliefert werden sollen:

>>> c.get_many([1, 2], fields='surname')
[{u'surname': u'Punk', u'name': u'Peter'}, {u'surname': u'Pan', u'name': u'Peter'}]


Das Argument field=... funktioniert übrigens auch beim weiter oben gezeigten Befehl all().

Nun besteht bei "real-life" Applikation natürlich auch öfters die Notwendigkeit, Daten anhand von Werten in den Datensätzen zu finden. Dies funktioniert so:

>>> c.find_one('surname', 'Punk')
{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}


Diese Funktion liefert immer nur den ersten Treffer zurück, wie der folgenden Befehl zeigt:

>>> c.find_one('name', 'Peter')
{u'job': u'musician', '_id': 1, u'surname': u'Punk', u'name': u'Peter'}


Jetzt gibt es aber zwei Datensätze mit dem Feld "name=Peter" in unserer Collection. Um alle Datensätze, die einem Suchkriterium entsprechen, zu finden, dient der Befehl:

>>> c.find_field('name', 'Peter')
[1, 2]


Das Ergebnis ist eine Liste von IDs. find_field kennt als optionales Argument noch compare_function, welches als Wert eine Vergleichsfunktion enthalten kann. Details findet man in den Docstrings.

Zwei weitere Funktionen von Collection sind random_entry() und random_entries(count=X), welche einen bzw. X zufällige gewählte Datensätze zurück liefern.

Das SQLite Object Store ist mit Sicherheit kein komplexes Modul. Aber es kann doch recht praktisch sein, wenn man Python-Dicts bzw. JSON-Objekt Speichern und Durchsuchen möchte. Außerdem bietet sostore die Möglichkeit die Daten persistent zu sichern.

Montag, 12. August 2013

Die erste Jump-Ramp seit 20 Jahren

Früher, als ich noch viel Skateboard gefahren bin, habe ich mit meinen Mit-Skatern die ein oder andere Jumpramp und Quarterpipe selber gebaut. Der letzte Eigenbau ist aber jetzt auch schon ca. 20 Jahre her.

Aber wenn man Kinder hat, dann holt einen die Vergangenheit halt schon mal ein: Aufgrund des dringenden Wunsches meines größeren Sohnes haben wir eine kleine Jumpramp gebaut. Nichts kompliziertes, einfach nur gerade hoch, ohne Transition, ca. 23 cm hoch und 1 m lang.

Das Wissen, wie man so was baut, ist noch vorhanden, also los geht's. Die 16 mm Spanplatte für die Seitenteile hatten wir noch, drei Dachlatten und die 4 mm Buchensperrholzplatte für das Deckbrett haben wir gekauft. Unter Einsatz von Stichsäge, Akkuschrauber und einem Schwung Spax-Schrauben war die Rampe dann nach ca. 30 min fertig gebaut und in den Einsatz gebracht.

In Action sieht das dann so aus:

Stuntroller in Action

Skateboard in Action

Jetzt muss ich nur noch ein wenig üben, um auf mein Skateboard-Niveau von früher zu kommen... das könnte hart werden ;-)

Samstag, 29. Juni 2013

Mair 1 Festival - 28.6.2013

Wie jedes Jahr findet im Sommer auf dem Flugplatz in Montabaur das Mair 1 Festival (früher hieß es Mach 1) statt.

Das Lineup ist normalerweise eine Mischung aus Punkrock, Hardcore und Metalcore inkl. diverser Unterspielarten. Dieses Jahr war der Zeitplan so, dass freitags, 28.6.2013, alle Bands spielten, die ich gerne sehen wollte. Sehr praktisch, also wurde der Festivalbesuch für diesen Tag fest in den Kalender eingetragen.

Wie immer war das Parken gut organisiert. Danach noch eine Karte an der Tageskasse gekauft und ab Richtung Eingang.

Nach der obligatorischen Personenkontrolle spielten noch Deez Nuts für ca 15 min. Gefälliger Hardcore, für mich aber ohne Highlights oder besonderen Erinnerungswert.

Dann ging's nach links auf die kleiner Bühne, wo eigentlich H2O spielen sollte. Die kamen aber nicht, stattdessen spielten die mir bis dato unbekannten Bury Your Dead. Schleppender Hardcore mit schweren Stakkato-Riffs. Aber: extrem energiegeladen und mit Überzeugung vorgetragen. Eigentlich ziemlich gut, nur leider sprang der Funke nicht so richtig auf's Publikum über.

Danach kamen Boysetsfire auf der Hauptbühne. Von denen habe ich nur die allererste CD, alles spätere kenne ich nicht. Erster Eindruck: oh, der Sänger hat einen grauen Bart - hier sind also noch mehr "alte" Leute :-) . Die Show war dann wie erwartet Emo-Core, mal mehr mal weniger poppig. Auf jeden Fall gut anzuschauen, anzuhören und unterhaltsam. Leider war nur der Sound zwischendurch ein bisschen dünn und leise.
Boysetsfire
Weiter ging es dann mit der Band, wegen der das Mair1 dieses Jahr in erster Linie besucht wurde: H2O, einer meiner am meisten favorisierten Hardcore-Bands überhaupt. Dies war übrigens das erste Konzert auf der aktuellen Europa-Tour. Und was soll man sagen: Vollgas von der ersten bis zur letzten Sekunde und auch das Publikum war von Anfang bis Ende voll dabei. So geht eine gute Hardcore Show!
H2O
Darauf ging's gleich weiter mit NYHC: die legendären Sick of it All standen auf dem Plan. Gut, die habe ich schon zwei Mal hier auf dem Festival gesehen und auch sonst (früher) schon drei oder vier Mal. Aber: live wirklich immer wieder gut. Nun hat SOIA natürlich auch genug Hits, Routine und Bühnenpower im Gepäck, um eine komplette Show zu rocken. Und so ging es dann auch hier wieder gut zur Sache und das Publikum zog direkt mit. Zwar gab's heuer keinen Circlepit um den Mischerturm, aber beim vorletzten Lied "Scratch the surface" eine Wall of Death. Und beim letzten Lied "Step down" wurde von allen nochmal alles gegeben. Fazit zu SOIA: gut und unterhaltsam wie immer.

Sick of it All
Nach SOIA kam dann eine Pause, weil die "Zwischenband" wohl nicht da war - Stau auf der Autobahn... Irgendwann ging es dann doch los. Wie die Band hieß habe auch leider nicht mit bekommen. Macht nix, weil es überhaupt nicht mein Fall war. Irgendeine Mischung aus Deathmetal, Prog-Metal und Emocore. Und der Sänger hat zwischendurch ganz schlimm gegrunzt... Also lieber auf die letzte Band warten.

Den Abschluss machten NoFX. Die erste Platte von NoFX habe ich sicherlich vor über 20 Jahren gekauft - live gesehen habe ich diese kalifornische Punkrock Legende aber noch nie. Spannend also, was jetzt wohl kommt...
Und es war: lustig und unterhaltsam. Als erstes kam Fat Mike (Sänger & Bassist) auf die Bühne, schaute sich um und frage, wo denn der Rest seiner Band sei. Na ja, wenn diese nicht kämen würde er halt eine Stunden lang reden. Als dann alle da waren ging's los. Songs hat NoFX ja genug im Gepäck und es wurde eine gelungene Mischung aus alten, neuen, langsamen und schnellen Liedern gespielt. Zwischendurch immer wieder ein bisschen lustiges Erzählen und Interaktion mit dem Publikum. Und durchweg hervorragend gemacht. Und außerdem hatte NoFX den besten Sound von allen Auftritten.

Gegen Mitternacht war dann Schluss - ein sehr gelungener Festvialabend.

Noch ein Wort zum Festival an sich: wie die Jahre zuvor auch war alles top organisiert.  Zügige Personenkontrolle am Einlass, viel Platz innen, ordentliche sanitäre Anlagen, genug Verpflegungsstände ohne lange Schlangen. So macht das ganze auch außerhalb der Musik Spaß.


Freitag, 26. April 2013

Raring Ringtail - der erste Kontakt

Gestern, am 25.4.2013, ist wie geplant die neue Ubuntu Version 13.04 mit dem Namen "Raring Ringtail" erschienen.

Heute habe ich dann meinen privaten Laptop upgegraded (der Laptop, den ich auch beruflich nutzte, läuft immer "nur" auf LTS-Versionen). Das Upgrade über die graphische Paketverwaltung lief völlig problemlos durch, keine Probleme hier.

Nach dem ersten Start präsentiert sich Raring Ringtail erst Mal unspektakulär, keine großen optischen Änderungen - aber eine Reihe von kleinen. Nautilus heißt jetzt "Dateien" und hat ein neues Icon im Starter. Ubuntu One hat ein eigenes Icon (natürlich eine Wolke) in der Indicator-Liste. Aus Rhythmbox, dem Standardaudioplayer von Ubuntu, wurde jetzt nach Amazon auch der Ubuntu One Shop entfernt. Dieser ist via Ubuntu One aber natürlich noch verfügbar.

Diverse Programme wurden aktualisiert, aber - ebenso wie die Optik - alles unspektakulär. Jedenfalls das, was ich bis jetzt gesehen habe.

Mit einer Ausnahme: Nautilus. Hier gab es im Vorfeld wohl diverse Diskussionen bei Canonical, ob man in Ubuntu 13.04 die aktuelle Version von Nautilus 3.6.x einbauen soll, oder bei 3.4.x, welche in Ubuntu 12.10 enthalten ist, bleiben soll. Grund: Die Entwickler von Nautilus haben mit der Version 3.6 den Funktionsumfang deutlich reduziert.

Erster Eindruck, nach 10 min probieren und geklicke in "Dateien": ganz übel, im Sinne von übler Rückschritt! Jetzt habe ich Nautilus mit Sicherheit nicht bis in letzte ausgenutzt, aber es selbst für mich auffällig, dass hier an einigen Stellen stark gekürzt wurde.
Am "schlimmsten" finde ich, dass die Zwei-Spalten Ansicht komplett entfallen ist. Das macht das Hin- und Her-Kopieren von Dateien zwischen zwei Verzeichnissen oder Laufwerken unnötig aufwendig. Entweder muss man wieder mit Copy&Paste arbeiten oder mit zwei Fenstern von Nautilus.
Weiterhin wurden die Menüs ziemlich drastisch reduziert. Es gibt nur noch ein Menü mit den wichtigsten Punkten ("mit Server verbinden", "Orte eingeben", "Lesezeichen" und "Einstellungen"), alles andere ist nur noch via Rechtsklick aufrufbar.
Auch wenn ich bisher Ubuntu quasi nur in der out-of-the-box Installation genutzt habe muss ich mal schauen, ob mittelfristig bei mir nicht doch ein anderer Dateimanager Einzug halten wird...

"Lohnt" sich jetzt das Update auf Raring? Sagen wir so: Es gibt zwar keinen entscheidenden Grund, von Quantal auf Raring upzugraden - aber auch sicherlich keinen, es nicht zu tun. Zumal Ubuntu ja auch immer nur das Upgrade auf die unmittelbar folgende Version zulässt (und von LTS auf LTS),  so dass man für ein späteres Upgrade auf Saucy so wie so Raring installiert haben muss.

Ach ja: Der Support für Raring endet nach nur noch 9 Monaten, also Ende Januar 2014 - vor dem nächsten LTS-Release. Wer also auf Raring aktualisiert wird um ein späteres Upgrade auf Saucy nicht umhinkommen, sofern er nicht drei Monate ohne Support auskommen will.




Samstag, 16. Februar 2013

Ubuntu bootet nicht mehr nach Einsatz von Knoppix vom USB-Stick?!?

Eine Geschichte aus dem wahren Leben, soeben erlebt: Ich habe die Knoppix-Version auf meinem Live USB-Stick aktualisiert. Den brauche ich zwar quasi nie, aber besser einen bereit haben. Also Knoppix 7.0.5 als ISO-Image heruntergeladen, Unetbootin aus den Quellen installiert und damit auf den Stick gespielt.

Der 1. Test: Knoppix bleibt ziemlich zu Beginn hängen ("unpacking kernel" oder so). Gut, nicht schlimm, Fehlersuche kann ich die Tage machen. Beim Reboot von Ubuntu startet GRUB2 normal - nur bliebt Ubuntu (12.10) auch direkt zu Beginn des Bootens hängen. Die letzte Bootmeldung war was mit "ACPI" nach ca. 0,2 s Bootzeit. Hm... Bis dahin sind alle *buntus auf dem Rechner immer sauber gestartet. Beim Booten von Ubuntu mit dem Bootparameter acpi=off startet und läuft das System dann ohne Probleme. Auch wenn ich keinen direkten Zusammenhang gesehen habe, hatte ich Unetbootin und die installierten Abhängigkeiten im Verdacht. Also alles via apt-get purge ... von der Platte gebannt und neu gestartet. Funktioniert, auch ohne Boot-Parameter. So weit, so gut.

Dann noch Mal rein Interesse halber Knoppix vom Stick gestartet. Bleibt immer noch hängen. Egal, Ubuntu wieder gestartet und: GRUB-Menü kommt, aber Ubuntu startet nicht. Gleiches Fehlerbild wie beschrieben. Und mit acpi=off funktioniert es (wieder).

Und um das ganze noch seltsamer zu machen: Beim nächsten Reboot (also nach einem mit dem acpi Bootparameter) startet Ubuntu auch wieder normal.

Wie gesagt: ich habe keine Ahnung, was da passiert und wo die Zusammenhänge sind. An Knoppix an sich kann es eigentlich nicht liegen, weil außer, dass das Bootmenü vom Stick geladen wird, macht Knoppix eigentlich nichts. Und an Ubuntu an sich habe ich auch nichts gemacht, außer gebootet, eingeloggt und dann wieder gebootet.

Wer also eine Idee oder Erklärung dafür hat darf diese gerne in den Kommentaren Kund tun :-)

Update 16.2.: Ubuntu bootet doch nicht ohne Probleme. Mal funktioniert es ohne Bootparameter, mal nicht. Habe jetzt acpi=off fest hinterlegt. Dafür fährt das System jetzt zwar sauber runter, aber der Rechner schaltet sich nicht ab..

Update 24.2.: Geht wieder... Nachdem ich das Bios auf die Default-Werte zurück gesetzt habe funktioniert wieder alles. Wobei ich vorher jahrelang nichts im Bios umgestellt habe... Was mich jetzt noch interessieren würde: Woran lag's? Werde ich wahrscheinlich nie herausfinden...
 

Samstag, 26. Januar 2013

Hatebreed "The Divinity of Purpose" - Rezension

Am 25.1.2013 ist das neue Album von Hatebreed erschienen. Dieses trägt den Titel "The Divinity of Purpose". Hatebreed gehört ja bekanntlich zu den bekannteren (und erfolgreicheren) Metalcore / metalllastigen Hardcore Bands.

Nachdem der letzte Release schon knapp vier Jahre her ist, wurde es auch Zeit für ein neues Album. Im Vorfeld wurde das Album schon ziemlich gelobt, so war es z.B. im Metal Hammer das "Album der Woche". Entsprechend gibt es da zum Release eine gewisse Erwartungserhaltung...

Nach ein paar Mal hören muss ich sagen: Nicht schlecht bzw. ganz gut, aber nicht der Oberhammer. Oder anders gesagt: Nach meiner Meinung und meinem Geschmack gibt es bessere Alben von Hatebreed (wie z.B. das 2009 erschienenen "Hatebreed" und das 2006 veröffentlichte "Supremacy").

Die beiden letztgenannten Alben (und auch die davor) überzeugen durch präzise Stakko-Riffs und einem sehr tightem Zusammenspiel von Drums, Bass und Gitarre. "The Divinity of Purpose" hat diese Elemente zwar auch noch, geht aber viel mehr richtigen (klassischem) Hardcore mit Hatebreed Sound. Also etwas weniger Metal als bisher. Was ja eigentlich nichts schlechtes ist bzw. durchaus gut sein könnte. Aber irgendwie fehlt Hatebreed auf der Platte der Druck und die "Durchschlagskraft" der Vorgängeralben. Sowohl, was die Musik angeht, also auch beim Gesang.

Fazit: "The Divinity of Purpose" ist ein gutes Album, was sich über die Spieldauer von 34 Minuten ganz gut hören lässt. Aber: es ist nach meinem Geschmack nicht das Highlight der Diskographie von Hatebreed - da gab es schon bessere Alben.

Montag, 21. Januar 2013

Das 1. Softwareprojekt: ein paar Erfahrungen

Anfang Dezember 2012 habe ich mich dazu entschieden, mein erstes Softwareprojekt zu starten, welches ich der Öffentlichkeit zugänglich mache. Zwar habe ich vorher schon ein paar "mittelgroße" Sachen programmiert, das sind aber alles Webapplikation, welche im Intranet der Firma laufen und das Arbeitsleben für meine Kollegen und mich vereinfachen.

Das neue Projekt Namens "pygcstats" ist zwar öffentlich, ist aber nur nützlich für Leute, welche Geocaching betreiben, bei geocaching.com registriert sind und dort einen Premium-Account haben (sonst kommt man nicht an die Daten, die pygcstats auswertet). Gut, das sind weltweit geschätzt ca. immer noch 3 - 3,5 Millionen potentielle Nutzer... Programmiersprache der Wahl ist wie immer bei mir Python.

Aber um das Programm an sich geht es gar nicht, sondern eher, was ich bis jetzt bei dem Projekt generell gelernt habe:
  • Nutze ein Versionskontrollsystem: Zu Beginn habe ich noch ohne programmiert, aber spätestens dann, wenn man veröffentlichen will und ggf. zusätzlich zum Release einen Entwicklungszweig hat, kommt man nicht ohne aus. Und auch wenn moderne VCS nicht wirklich schwer zu verstehen braucht es ein bisschen Einarbeitungszeit. Besonders dann, wenn man zum ersten Mal einen Branch erstellen, nutzen und veröffentlichen will. In meinem Fall bestand das "learning by doing" zum Glück "nur" aus einem falsch ausgeführten Push ins Repositry auf Launchpad. Der ließ sich aber problemlos rückgängig machen.
  • Beschäftige dich mit der Plattform, die den Code hostet: Wie weiter oben bereits erwähnt nutze ich Launchpad als Plattform und Bazaar als VCS. Aus zwei ziemlich platten Gründen: Zum einem, weil ich eh' einen Account bei launchpad.net habe, zum anderen, weil ich die Doku im Wiki bei ubuntuusers.de zu Bazaar ziemlich kompakt und gut verständlich finde. Was auch schön ist: bei Launchpad kann man ziemlich viel über die Weboberfläche konfigurieren. Aber: auch das kostet Zeit, besonders am Anfang, wenn man noch nicht weiß, wo was ist. Inzwischen geht alles ganz flüssig.
  • Doku schreiben kostet Zeit: gute Software mit schlechter Doku (oder keiner Doku) ist keine gute Software. Von daher habe ich von Anfang an Wert auf Doku gelegt. Sowohl in Form von Anleitungen für die Nutzer als auch in Form von Docstrings im Quelltext. Einen großen Teil der Nutzerdoku habe ich erst in Englisch und dann noch in Deutsch geschrieben. Ich habe zwar nicht die Zeit genau gemessen, aber ich würde schätzen, dass mindestens 1/3 der Gesamtarbeitszeit des Projekts bis jetzt für Dokumentation aufgewendet wurde.
  • Halte dich von Anfang an an die PEP8: Die PEP8 ist der allgemein akzeptierte Code Style Guide für Python. Dieser war mir zwar geläufig, aber nicht in allen Details. Na ja, jedenfalls waren die ersten Ausgaben des PEP8 Checkers für meinen Code ziemlich lang, was die Fehler anging. Der größte Teil waren Leerzeichen in Leerzeilen oder am Zeilenende. Nicht tragisch, aber trotzdem kostet es Zeit, diese alle zu eliminieren. Also lieber direkt beim coden darauf achten direkt löschen bzw. erst gar keine "entstehen" lassen.
Rückblickend würde ich zwar nicht sagen, dass ich etwas wirklich falsch gemacht habe, aber man hätte Sachen besser machen können. In erster Linie wäre das, sich vorab mit der Plattform und dem VCS seiner Wahl zu beschäftigen. Dann hat man im laufenden Projekt mehr Zeit, auf die Programmierung und das Testen zu fokusieren.
Und, der Tipp / Hinweis an alle: unterschätzt nicht den Zeitaufwand, den eine gute / ausführliche Doku braucht.

Ach ja: den ersten "öffentlichen" Release der Software gab's übrigens vor ein paar Tagen.

Bad Religion "True North" - Rezension

Am 18.1.2013 ist das neue Album von Bad Religion Namens "True  North" erscheinen. Das 16. Studioalbum seit der Gründung im Jahre 1980.

Gut, bei so vielen Alben nach so vielen Jahren und nach wie vor dem Punkrock treu muss Bad Religion sich und anderen sicherlich nichts mehr beweisen. Zumal die Band  auch trotz kommerziellem Erfolg nach wie vor von der "Szene" akzeptiert wird.

Das neue Album ist sehr gut - keine Frage. Nach ein paar Sekunden hören ist klar: das ist Bad Religion. Stilistisch wie eh' und je, aber an keiner Stelle langweilig oder altbacken. Alle Songs klingen frisch und neu, ohne auch nur eine Sekunden von der bewährten Bad Religion Route abzuweichen oder gar in irgendeiner Form experimentell zu werden.

Musikalisch liegt True North auf einer Linie mit dem letzten Release "The Dissent of Men" und ist auch näher an den Platten von 1988 - 1990 als an den der "Brett Gurewitz freien Zeit". Wie gesagt: alles gut, keine Ausfälle. So muss das sein.

Textlich ist die Platte natürlich auch auf dem gewohnten (und erwarteten Niveau): Bad Religion hat etwas zu sagen, Plattitüden oder Klischees gibt's hier nicht.

Das Fazit ist hier einfach: Wer gerne Punkrock hört, der braucht auch "True North" von Bad Religion.