Jekyll und related posts mit LSI

Ich versuche gerade die related posts verfügbar zu machen. Das ist unter Jekyll anscheinend nicht so einfach, denn eine Generierung der Seite mit der Option –lsi scheint sehr, sehr lange zu dauern, sobald man eine nennenswerte Anzahl an Artikeln hat.

Um diesen Vorgang zu beschleunigen, muss man die GNU Scientific Library installieren und die Bindings für ruby. Das ganze gestaltet sich unter Windows und Cygwin etwas schwierig. Die Installation vonGSL kann zwar mit dem Cygwin-Setup erledigt werden, aber anschliessend muss das Ruby Gem installiert werden:

$ gem install gsl
Building native extensions.  This could take a while...
...
wavelet.o:wavelet.c:(.text+0x6d6): undefined reference to `_cNArray'
wavelet.o:wavelet.c:(.text+0x92a): undefined reference to `_cNArray'
wavelet.o:wavelet.c:(.text+0x9df): undefined reference to `_cNArray'
wavelet.o:wavelet.c:(.text+0xccd): more undefined references to `_cNArray' follow
wavelet.o:wavelet.c:(.text+0xcf0): undefined reference to `_na_make_object'
wavelet.o:wavelet.c:(.text+0xf93): undefined reference to `_cNArray'
wavelet.o:wavelet.c:(.text+0x1220): undefined reference to `_cNArray'
wavelet.o:wavelet.c:(.text+0x12d5): undefined reference to `_cNArray'
collect2: ld gab 1 als Ende-Status zur"uck
make: *** [rb_gsl.so] Fehler 1


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/gsl-1.12.109 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/gsl-1.12.109/ext/gem_make.out

Auch der Versuch, rb-gsl direkt zu installieren, ist mit folgender Meldung gescheitert:

...
wavelet.o:wavelet.c:(.text+0x12d5): undefined reference to `_cNArray'
collect2: ld gab 1 als Ende-Status zur"uck
make: *** [rb_gsl.so] Fehler 1
setup.rb:655:in `command': system("make") failed (RuntimeError)
    from setup.rb:664:in `make'
    from setup.rb:1258:in `setup_dir_ext'
    from setup.rb:1532:in `__send__'
    from setup.rb:1532:in `traverse'
    from setup.rb:1549:in `dive_into'
    from setup.rb:1530:in `traverse'
    from setup.rb:1524:in `exec_task_traverse'
    from setup.rb:1519:in `each'
    from setup.rb:1519:in `exec_task_traverse'
    from setup.rb:1246:in `exec_setup'
    from setup.rb:996:in `exec_setup'
    from setup.rb:826:in `__send__'
    from setup.rb:826:in `invoke'
    from setup.rb:773:in `invoke'
    from setup.rb:1578

Die Fehlermeldungen sind dabei die gleichen wie bei der Installation des Gem. Woran das jetzt liegt weiß ich nicht genau, aber es sind auf jeden Fall hausgemachte Probleme mit Windows. :-/

Stromausfall im ganzen Stadtteil

Heute ist etwas seltsames passiert:

Der ganze Stadteil war ohne Strom. Nicht nur ein paar Häuser oder eine Strasse – der gesamte südliche Teil der Stadt. Und nicht nur für eine Stunde – für gut 8 Stunden.

Ich fand das ja nicht schlecht. Aber ein paar Nachteile hatte das schon:

  • keine Ampelanlagen
  • kein einziges Geschäft war geöffnet (kann niemand mehr ohne Kasse Geld zusammenzählen?)
  • kein Licht (und natürlich nur die eine Kerze im Haus)

Die Feuerwehr und die Notärzte hatten anscheinend alle Hände voll zu tun, im 10-Minuten-Takt waren Sirenen zu hören. Das ganze hat aber deutlich gemacht, wie abhängig man vom Strom ist.

TwitterCleaner РMeine Anwendung, um Tweets zu l̦schen

Ich habe heute mal eine kleine Anwendung für Googles Appengine geschrieben:

TwitterCleaner

Damit kann man (im Moment) seine letzten Tweets löschen. Später soll das ganze noch etwas aufgemotzt werden, damit man alles auf einmal löschen kann – inklusive direct messages und @replies.

Gebühren bei Tauschticket

Nach mehreren Jahren haben sich die Betreiber von tauschticket.de jetzt überlegt, dass eine Gebühr eingeführt werden muss, um die riiiiieeeeesen Nutzermengen zu bewältigen. Ich will an dieser Stelle gleich mal bezweifeln, dass die Nutzerzahlen die Anschaffung von Serverfarmen oder unbezahlbare Traffickosten nach sich ziehen … wie auch immer, ab sofort soll ein Tauschvorgang 49ct kosten.

Das ist ein radikaler Wechsel vom ursprünglichen Community-Gedanken (Wer ein Buch weggibt, bekommt ein Ticket und kann damit ein neues Buch erhalten) und markiert für mich das Ende der social networking-Bestrebungen von tauschticket. Die Kommerzialisierung der Seite wurde schon früher durch die Einführung von Multi-Ticket-Angeboten gestartet, aber jetzt ist der Punkt erreicht, an dem ich aussteige.

Was ist die Alternative?

Es gab und gibt immer noch bookcrossing als echte Community-Seite. Bücher werden freigelassen, d.h. man lässt sie einfach irgendwo liegen und andere finden sie. Oder man registriert sie in seinem virtuellen Bücherregal und andere können sie anfordern – hey, klingt ja fast wie tauschticket. Nein halt, klingt ganz genau wie tauschticket. 🙂

Ich werde jetzt komplett auf bookcrossing umsteigen, nachdem ich ursprüglich von dort zu tauschticket gegangen war. Allerdings war das zu einer Zeit, als tauschticket einfach die schnellere Art zu tauschen anbot und ähnlich wie bookcrossing keine Gebühren verlangte.

Noch ein Wort zur Monetarisierungsstrategie von bookcrossing: Dort gibt es auch ein Bezahlsystem, allerdings wird das nicht auf dem Rücken aller Besucher durchgesetzt, sondern man erkauft sich einePremiummitgliedschaft, mit der man Komfortfunktionen für die Poweruser freischaltet. Also etwas sehr sinnvolles, mit dem auch eine Community leben kann: Wer die Plattform mag und intensiv nutzt, bezahlt dafür und unterstützt damit die Betreiber und sichert das Überleben seiner Plattform.

Tauschticket ist für mich jedenfalls erledigt. Auf zur richtigen Community bei bookcrossing.

Verschwindet die Piratenpartei schon wieder?

Bei torrentfreak.com liest man, dass die schwedische Piratenpartei nicht in das schwedische Parlament einziehen wird:

2009 was a breakthrough year for the Swedish Pirate Party movement. With more than 7 percent of the vote, the Swedish Pirate Party secured two seats in the European Parliament.

Today the Swedes voted for their national Parliament. If the turnout equalled that of last year, the Party would secure more than a dozen seats as the threshold for entering the Parliament in Sweden is 4 percent. However, this was easier said than done.

Steht so eine Wahlschlappe auch den deutschen Piraten bevor? Wird die Partei den Großteil ihrer Wähler wieder verlieren?

Das hiesse, es wären viele Protestwähler und wenig politisch Interessierte. Das kann ich eigentlich nicht glauben. Es geht chaotisch zu, in den Mailinglisten, auf den Bundesparteitagen, bei den Vorstandswahlen und anderen offiziellen Anlässen. Aber es geht so chaotisch zu, weil die Leute sich für die Themen der Piraten interessieren und mitmachen wollen. Und weil in der Piratenpartei gerade nicht die altgedienten Politiker sind, die seit 20 Jahren versuchen, so viel Macht wie möglich anzuhäufen.

Vielleicht bin ich etwas zu naiv, aber ich denke, die Piratenpartei wird auch bei den kommenden Wahlen (Neuwahlen 2011 in SH anyone?) wieder mitmischen und ein annehmbares Ergebnis erzielen. MitLiquid Feedback wird gerade das interessanteste Experiment zu direkter Demokratie durchgeführt, und ich befürchte, die Triebfeder Netzsperren spielt auch bei den kommenden Wahlen eine Rolle… 🙁

Also, Leinen los!

 

 

Installation von NodeJS unter Windows/cygwin

Ich versuche seit gestern abend, NodeJS ungter Windows 7 (64bit) und Cygwin zu installieren. Die notwendigen Pakete von Cygwin sind installiert:

  • python
  • make
  • g++ (mingw)
  • curl
  • git

Anschliessend muss die ash geöffnet werden. Dazu drückt man WINDOWSTASTE+R und gibt C:cygwinbinash.exe ein. Im daraufhin geöffneten Konsolenfenster gibt man folgendes Kommando ein:

./rebaseall -v

Damit werden die Links unter cygwin neu gesetzt. Jetzt sollte alles für die Installation von NodeJS bereit sein. Dazu öffnet man eine cygwin-bash und gibt folgende Kommandos ein:

git clone git://github.com/ry/node.git
cd node
./configure
make
make install

Jetzt sollte NodeJS installiert sein. Sollte. Denn ich bekomme folgenden Fehler:

$ ./configure
/cygdrive/c/Users/Carsten Ringe/Documents/workspace/node/wscript: error: Traceback (most recent call last):
  File "/cygdrive/c/Users/Carsten Ringe/Documents/workspace/node/tools/wafadmin/
Utils.py", line 274, in load_module
    exec(compile(code, file_path, 'exec'), module.__dict__)
  File "/cygdrive/c/Users/Carsten Ringe/Documents/workspace/node/wscript", line 12, in <module>
    import js2c
  File "/cygdrive/c/Users/Carsten Ringe/Documents/workspace/node/tools/js2c.py",
 line 35, in <module>
    import jsmin
  File "/cygdrive/c/Users/Carsten Ringe/Documents/workspace/node/tools/jsmin.py", line 1
    ../deps/v8/tools/jsmin.py
    ^
SyntaxError: invalid syntax

Das deutet anscheinend auf einen Fehler in der Installation von Python hin. Aber auch nach einer Neuinstallation habe ich noch dieses Problem. Auch das rebase von cygwin bringt keine Verbesserung. Ich vermute langsam, dass es an meinem 64bit-System liegt. Naja, oder halt an Windows. Deshalb läuft auch gerade der rsync-Job für das Backup, danach wird doch wieder Ubuntu installiert… gnah.

Schweres Heben

Heute ist meine neue Langhantelstange angekommen, 170cm lang und 3cm dick. Ich hab sie natürlich gleich ausgepackt und eintrainiert. Ab sofort mache ich wieder einen PITT-Grundlagenplan, gesplittet in PULL- und PUSH-Einheit. 🙂

Und eins ist schonmal klar: Schweres Heben macht einfach viel, viel mehr Spass als Rumeiern mit dem eigenen Körpergewicht. Ich glaub, in den letzten Wochen hatte ich einfach nicht so viel Spass am Training, weil es halt doch viel zu einfach war. Wer von Liegestützen wieder auf Bankdrücken mit mind. 1fachem Körpergewicht wechselt, wird das jetzt verstehen. 😉

Amazon EC2 Micro Instances sind der Tod der Virtual Server.

Mit der Ankündigung der Micro Instances in der Cloud von Amazon ist langfristig der Tod von Virtual Servern sichtbar. Was macht es für einen Sinn, einen virtuellen Server mit einem festen Monatsbeitrag für Traffic und Speicher zu bezahlen, wenn man auch dynamisch mit Amazon abrechnen kann und dadurch auch noch günstiger wird? Kurz&uuml;berschlagen kostet eine Micro Instance bei Amazon 19€ pro Monat, Traffic unter 1GB ist kostenlos. Und danach muss man jeden Monat schon *sehr* viel Traffic haben, damit sich ein virtueller Server eines anderen Anbieters wirklich lohnt… Ach so, von diversen ErpresserEinrichtungsgebühren und festen Laufzeiten will ich gar nicht erst anfangen. 😉

Solltet ihr also mehrere Webspace-Pakete haben oder gar einen virtuellen Server mit festem Trafficpaket, dann solltet ihr nochmal scharf nachrechnen und dann eine Micro-Instance in der EC2 Cloud starten. 😉

Was macht Digg?

Seit der Veröffentlichung des neuen Digg v4 gibt es einige Aufregung&uuml;ber die Instabilität und die neuen Funktionen. Außerdem ist anscheinend der VP Engineering gefeuert worden oder gegangen. Ich war nie ein große Digg-Nutzer, aber die aktuelle Diskussion interessiert mich natürlich.

Für mich stellt sich jetzt eine Frage: Wieso geht man mit so einer Seite live, wenn sie anscheinend so kaputt ist, dass der verantwortliche Softwareingenieur gefeuert werden muss? Und wieso hat das vorher niemand gemerkt?

Bei einer Seite der Größenordnung von Digg (oder Reddit, btw) kann es natürlich auf der echten Seite ganz andere Effekte geben wie in Testumgebungen. Millionen von User kann man eben nicht simulieren, man kann nur hochrechnen und schätzen. Die Größenordnungen kann man in einem Blogartikel von reddit nachlesen, ca. 380k pro Stunde an normalen Tagen.

Digg wollte mit der neuen Seite eine bessere Skalierbarkeit erreichen, schafft aber im Moment wohl das Gegenteil. Schuld soll der Umstieg von MySQL auf Cassandra sein. Gut, die Technologie ist vielleicht noch nicht so alt wie MySQL, aber große Firmen wie Twitter nutzen sie durchaus in Produktivsystemen. Und ich glaube, die Aufregung bezieht sich eher um die neuen Funktionen und Fehler in der Anwendung. Die Fehler hätten während des internen Tests, während der Closed- und Open-Beta entdeckt werden müssen. Und das wäre dann auch der einzige Punkt, der für mich eine Entlassung – oder besser: eine Kündigung erklären würde.

Oder ist es mittlerweile so, daß IT-Projekte nicht fehlschlagen dürfen? Das es keine Fehler in Software geben darf? Oder heißt das eher, dass in Zukunft mehr Wert auf geplante (und planbare Testphasen) gelegt werden muss?

Wieviel muss man lesen?

Ralf Westphal hat einen länglichen Artikel&uuml;ber die Pflicht eines Softwareentwicklers zum täglichen Lesen verfasst. Und ich kann nicht an mich halten und muss auch einen Kommentar dazu abgeben.

Ich stehe auch auf dem Standpunkt, dass Lesen von Fachbüchern eigentlich zum Beruf des Softwareentwicklers gehört. Genau wie das Beschäftigen mit neuen Technologien und der eigenen Weiterbildung. Den Hintergrund zu dieser Einstellung fasst Ralf in einem kleinen Absatz in der Mitte gut zusammen:

Erstens sollte es jedem am Herzen liegen, seine Kompetenz hoch zu halten. Denn hohe Kompetenz bedeutet Freiheit. Wer kompetent ist, kann sich im Notfall oder auch ohne Not den Job aussuchen. Wer mit veraltetem Wissen auf seinem Sessel sitzt, der hat diese Freiheit nicht.

Wer sich nicht mit den Neuigkeiten im Bereich der Softwareentwicklung beschäftigt, der kann irgendwann nur noch mit altem Wissen an neue Problemstellungen herangehen. Und das ist weder produktiv, noch besonders spaßig. Und ausserdem: Wer entdeckt denn nicht gern neue Wege zu einem Ziel?

Ich beschäftige mich auch oft und gern mit neuen Dingen, sei es jetzt die Google AppEngine, eine Sprache wie golang oder seit kurzem funktionalen Sprachen wie Clojure. Und nebenbei lese ich auf den Zugfahrten oder abends noch in Büchern wie Continuous Integration (und demnächst dem Nachfolger Continuous Delivery) oder Enterprise Integration Patterns.

Aber kann man daraus den Anspruch ableiten, jeder Entwickler muss jeden Tag mindestens 30min lesen? Ich bin mir nicht sicher. Ich lese diese Bücher, wenn ich Lust dazu habe. Wenn ich etwas neues lernen will. Oder wenn ich mir eine gute Beschreibung zu Patterns anlesen will, die ich schon oft benutzt, aber nie richtig darüber nachgedacht habe. Und ich spiele mit der AppEngine herum, wenn ich Cloud-Architekturen ausprobieren will. Oder weil ich eine Idee zu einer kleinen Anwendung habe, die ich ausprobieren will. Oder einfach, weil ich ein wenig Zeit totschlagen möchte, bevor mir langweilig wird… 😉

Ich sehe das so: Wenn ich lesen will, lese ich. Wenn ich nicht lesen will, lese ich nicht. Aber ich werde mich nicht dazu zwingen, mich auf diese Art weiterzubilden und damit für den Markt wertvoller zu machen. Für mich läuft die Frage „Wieviel muss man lesen?“ letztendlich wieder auf Software craftsmanship hinaus: Wer ein guter Entwickler sein will, der beschäftigt sich automatisch mit seiner Profession. Und wer nur in diesem Beruf arbeitet, weil er irgendwie sein Geld verdienen will, der tut das nicht.

Achso, ein Nachtrag noch: Lest euch Ralfs Artikel ruhig mal durch, die kleine Berechnung am Anfang ist ganz interessant. Und dann&uuml;berlegt euch mal, wie viel Zeit ihr für das Lesen aufbringt. 😉