Am Rande notiert ...

tuupola/jquery_lazyload. Für die Anzeige großer Mengen von Bildern eventuell interessant, weil man damit das Laden der Bilder so lange verzögern kann, bis der Benutzer tatsächlich auch zu den Bildern hinscrolled. Die Seite wird mit Platzhalterbildern schon vorgebaut und nur die Bilder wandern später über die Leitung. Ich glaube aber Infinite Scroll ist doch die bessere Lösung, da damit nicht nur Bilder, sondern generell Inhalte nachgeschoben werden können – und das arbeitet dann auch problemlos mit Masonry zusammen, so dass diese Inhaltsblöcke dann auch optisch gut verteilt werden können.

dirq 1.1.2 documentation. Hey, sowas hab ich vor kurzem gesucht – eine Queue, die auf dem Dateisystem aufbaut. Der Vorteil: einfachste Persistenz und gutes „Debugging“ in dem man einfach im Dateisystem rumprokelt. Der Nachteil ist dann aber oft, dass Queues einige Operationen atomar ausführen müssen – und das kann dann schon etwas hakeliger werden, wenn man es richtig hinbekommen will. Dieses hier ist die Portierung eines schon länger existierenden Perl-Moduls, die Chancen, dass die meisten Kinderkrankheiten raus sind, sind also recht hoch. Das API jedenfalls sieht nett simpel aus. Definitiv mal genauer angucken.

Hotcanvas: Realtime coding. Bin ja ein fan von Processingähnlichen Umgebungen, dies hier kommt dem recht nahe, läuft aber als interaktive Umgebung und sieht ganz nett aus. Ok, gibt sicherlich mitlerweile eine ganze Reihe von diesen Dingern, aber trotzdem, ich mag sowas.

Bilderarchiv | rfc1437. Mein Bilderarchiv wurde übrigens am Wochenende überarbeitet und kommt jetzt mit lustigem Javascript-Schnickschnack zum automatischen Kacheln daher. Nicht wirklich weltbewegend, aber interessanter als das vorherige, eher langweilige Format. jQuery Masonry ist der Hauptanteil der Arbeit. Nette kleine Javascript Library. Das interessanteste daran ist warscheinlich die Heuristik in meinem kleinen Plugin, mit dem ich die Bilder in Hoch/Quer/Quadratformate bringe, damit das ganze nicht durch eine Übermacht an Querformaten allzu langweilig wird. Leider bleiben noch immer Lücken im Bilderstrom, da könnte Masonry eigentlich noch gerne etwas intelligenter werden (und z.B. kleine Quadrate hochziehen). Oder ich muss mich nochmal an die Heuristik setzen und dafür sorgen, dass die Chancen für Lücken verringert werden.

RubyMotion – Ruby for iOS. Da mich  MacRuby schon interessiert, klingt das hier auch gut – direkt für iOS programmieren in Ruby. Allerdings gibt es keine freie Version, das schränkt das Ausprobieren dann doch ein bischen ein. Ausserdem ist da nix in einer IDE, das ist Kommandozeile pur. Was zwar ein Vorteil sein kann, aber z.B. für Debugging auch ein echter Nachteil.

Mojolicious – Perl real-time web framework. Du hattest ein Problem, du hast Perl genommen. Jetzt hast du zwei Probleme und einen Haufen scharfkantige Klammern, an denen du dich verletzen kannst. Spaß beiseite: nett zu sehen, dass Perl immer noch nicht nur aktiv, sondern auch modern aktiv ist im Web-Umfeld. Immerhin hat Perl ja mal den Standard in dem Bereich gesetzt.

RavenDB – 2nd generation document database. Geblogmarkt weil ich mir das mal in der nicht zu fernen Zukunft angucken will. Klingt von den Features her recht interessant und ist vielleicht für das eine oder andere Projekt, über das ich zur Zeit nachdenke, brauchbar.

JSIL – .NET to JavaScript compiler. Keine Ahnung, ob ich das schon hatte, aber es ist eines dieser verrückten Projekte die man ruhig zweimal linken kann. Da wird wirklich der .NET IL Code übersetzt – man kann also Programme im Browser laufen lassen, die eigentlich nicht wirklich dafür gedacht waren. Zum Beispiel soll ein Teil von XNA laufen, so dass man Spiele im Browser laufen lassen kann, die eigentlich für die XBox sind.

the { buckblogs :here }: Maze Generation: Ellers Algorithm. Labyrinthalgorithmen faszinieren mich schon seit meiner Jugend, aber der hier war mir neu. Er generiert perfekte Labyrinthe Zeilenweise, ohne Trackback oder Rekursionen, mit einer Laufzeit linear abhängig von der Größe des Labyrinthes. Ziemlich genial das ganze.

jQuery Masonry. Alternative zu BlocksIt. Auch mal angucken. Schiebt Blöcke sogar etwas aggressiver, ordnet auch die Reihenfolge notfalls um.

BlocksIt.js – Dynamic Grid Layout jQuery Plugin. Drin was dran steht. Klingt ganz interessant, muss ich mir mal angucken.

Kronuz/SublimeCodeIntel. CodeIndel ist eine Portierung der Komodo-Code-Intelligence nach SublimeText2. Damit kann man dann ST2 schon fast als IDE bezeichnen.

Cubism.js. So viele Projekte, so wenig Zeit. Aber mal geblogmarkt, wenn ich mal in der nächsten Zukunft mit Zeitreihenvisualisierung zu tun habe, denn dafür sieht das richtig gut aus.

jlongster/dcpu-lisp. Warum das cool ist? Nun ja, Notch hat ein neues Spiel in der Mache – sowas wie Elite mit integriertem Hacken. Und das Hacken passiert auf einer 16bit CPU die an einen 6502 angelehnt ist. Und jetzt bauen alle möglichen Leute Code für diese CPU. Unter anderem eben hier einen Lisp-Compiler.

Subrepository – Mercurial. Schon peinlich, was man so immer mal wieder entdeckt und feststellt, dass man es eigentlich schon lange nutzen sollte, aber nicht macht. Besonders der Tipp mit dem „shallow main repository“ klingt gut, das könnte einige der Organisationen meiner Projekte vereinfachen. Bisher habe ich Subrepositories eben genau wegen der festen Verbindung des großen Hauptprojektes mit den Library-Projekten verworfen, da ich für verschiedene Umgebungen komplett verschiedene external Branches (sprich: Repositories) benutze und ich z.B. eben nicht meine Abhängigkeiten auf die Wartungsumgebung in die Produktion pushen möchte. Mit einem shallow Main Repository pro Umgebung hingegen könnte ich sauber trennen zwischen den Beziehungen und trotzdem an zentraler Stelle dokumentieren, wie sich die Abhängigkeiten der verschiedenen Repositories darstellen. Und ja, das ganze hier ist jetzt nur eine Notiz für mich selber, wer es nicht versteht, einfach ignorieren, kommen bestimmt bald wieder bunte Bilder.

pycounters. Muss ich mir mal angucken, damit kann man recht einfach Counter in ein Projekt integrieren, die Daten über z.B. Funktionsaufrufe oder ähnliches liefern – im Prinzip sowas wie die Windows Performancecounter, nur eben für Python-Projekte.

virtualenv-clone 0.2.2 : Python Package Index. Noch nicht ausprobiert, aber nach Beschreibung kopiert es virtualenv Environments und repariert Import-Pfade, Egg-Files und .pth Inhalte sowie Scripte. Und soll vollständiger arbeiten als die relocatable virtualenvs.

Introducing Pivot.js. Hmm, definitiv mal angucken, Pivot sieht ganz nett aus, simples API und interessante Möglichkeiten. Ich hab da so ein Projekt auf der Arbeit, das könnte einige Reporting-Features gut gebrauchen. Und Offloading auf den Client ist manchmal eine durchaus gute Idee.

uWSGI. Hatte ich scheinbar noch nicht – ein Kollege hat mich gerade darauf hingewiesen. Könnte besonders für Django-Projekte interessant sein, weil es wesentlich flexiblere Prozesssteuerung und Monitoring bietet als der flup-basierte runfcgi in Django.

the unbearable finality of pixel space. Das dort verlinkte Archivierungstool für Flickr hab ich mal ausprobiert und es läuft richtig gut. Da verzeihe ich auch mal das PHP. Ich hab zwar die Flickr-Bilder auch immer mal wieder hier ins Blog geschoben (die „Neulich auf Flickr“ Posts), aber der Vorteil dieses Backup-Scriptes ist, dass die Struktur und sogar die Flickr Zugriffsrechte erhalten bleiben. Leider werden derzeit Alben und Sets noch nicht mit gesichert, sondern nur der Photostream. Und das Layout ist sehr spartanisch. Aber vielleicht wäre das ein Kandidat um mal mit Bootstrap 2.0 zu spielen und das ganze mal etwas aufzupeppen.

flatiron/plates. Eine interessante JavaScript Templating Engine, die einen etwas anderen Ansatz wählt als viele andere – es gibt keine eigene Template-Sprache, sondern nur HTML und JavaScript. Jegliche Logik ist im JavaScript und jegliche Struktur in HTML und beide sind recht stark getrennt. Anstelle einer Template-Sprache gibt es Funktionen zur genauen Spezifikation welche Elemente im HTML wie verändert werden sollen.

RQ: Documentation. Hmm, python-job-queue auf Redis-Basis mit einem recht simplen Interface. Könnte eine interessante Alternative zu Celery sein.

iphone – What happens to JavaScript code after app is compiled using Titanium Mobile – Stack Overflow. Interessierte mich auch, die Frage, daher mal hier geblogmarked. Ganz interessant, was da passiert, geht deutlich weiter als z.B. was PhoneGap macht.

Titanium Desktop – Node.js Prototype « Appcelerator Developer Center. Titanium steht ja sowieso auf der Liste zu testender Sachen drauf, weil es neben PhoneGap ja einer der Wege ist, wie man JS+HTML Code zu Apps und Desktop-Anwendungen machen kann. Und hier zeigt einer der Developer, wie man einen node-Server in den Desktop integrieren kann. Wäre auch noch mal recht interessant, wobei das wohl nicht unbedingt dann auch mit iOS und Android läuft (denn dort ist man ja zwingend auf die vom System zur Verfügung gestellte JS Engine im Browser-Widget eingeschränkt, wenn man dynamischen Code von außen laden will).

Embedding and running Node.js within a Firefox XUL extension. Schon beeindruckend, was man mit Firefox und dessen Infrastruktur so alles machen kann. Theoretisch müsste man das auch so umbauen können, dass diese Erweiterung nur in einem single-site-browser läuft, der dann direkt die Homepage des eingebetteten Servers öffnet und so sich Desktop-Anwendungen in JavaScript bauen können, die komplett autonom sind (und wer sich drüber wundert, warum ich diese ganzen JS-auf-Desktop Sachen sammel: damit könnte man mit Hilfe von Phonegap und etwas Glue dann nicht nur Apps für iOS und Android bauen, sondern mit gleichem Code auch Desktop-Anwendungen).

NodObjC. Keine Ahnung ob ich das wirklich will, aber mit dieser Library kann man ObjC Frameworks mit JavaScript bridgen. Interessant könnte das zum Beispiel im Context von PhoneGap werden, wenn man Zugriffe auf iOS native APIs machen muss, die noch nicht von PhoneGap zur Verfügung gestellt werden (allerdings braucht es Node.js als Basis, keine Ahnung ob das auch schon unter iOS läuft).

topcube. Sollte ich mir auch mal genauer angucken – eine Desktop-App, welche einen eingebetteten Webserver (node.js) und Browser (GTKWebKit) beinhaltet. Damit kann man dann Desktop-Anwendungen auf Basis von JavaScript und Node.js bauen – z.B. auch Amber Smalltalk in eine kompakte Desktopanwendung umbauen. Leider ist die OSX Unterstützung noch etwas mager.

haypo/pysandbox. Mal wieder was zum Angucken: eine Sandkiste für Pythonscripte. Laut Projektbeschreibung nicht unbedingt eine Sicherheitslösung sondern eher nur ein einfacher Schutz für den Python Prozess. Somit wäre es zumindestens als einfache Absicherung eines Hauptprozesses gegen Fehler in Erweiterungsscripten nutzbar.

BOO – Getting Started. Nach langer Zeit mal wieder Boo angeguckt und mir gefällt was dort passiert. Immer noch sehr stark an Python angelehnt was die Syntax angeht, bei der Semantik aber deutlich davon abweichend – zum Beispiel echte Makros in verschiedenen Variationen, so dass es wirklich eine erweiterte Syntax gibt. Oder auch das nur optional verfügbare Ducktyping – eine Variante, die mir besonders gut gefällt, denn Boo kombiniert statisches Typing, Type-Inference und Duck Typing in einer Weise, die wirklich für den Programmierer alle Optionen offen hält. Dazu dann die gute Integration mit .Net und C# Assemblies. Ich glaube, ich muss da mal etwas mehr mit herumspielen, denn gerade als Prototyping Sprache könnte das recht praktisch sein – und im Moment tendiere ich für ein paar Sachen eh mehr zu Mono als Runtime, primär wegen der dort verfügbaren JIT Implementationen (und mit Mono ja auch AOT Compilation, wo es benötigt wird).

Clojure-Py. Noch kann ich nicht so genau sagen was ich davon halte, aber jemand baut Clojure (die Sprache) mit Python und PyPy als Zielplattform. Grundsätzlich sicherlich eine interessante Idee, denn die LLVM-basierte JIT Implementierung von PyPy kann ja auch durchaus andere Sachen kompilieren. Und da ich sowohl ein Python als auch ein Lisa Fan bin, muss sowas ja meine Neugierde wecken. Der Sprachumfang von Clojure ist noch nicht komplett abgebildet, aber das kann ja noch kommen.