Am Rande notiert ...

JQuery-Wysiwym – PushingKarma. Noch was das für mich interessant werden könnte: ein Markdown (unter anderem) Konverter in JavaScript. Kann benutzt werden um einen Life-Editor für Markdown-Code zu bauen. Ob man das für Restructured Text erweitern könnte? Denn das ist eines der Probleme mit denen ich mich öfter mal rumschlage, das ich für Docbook/XML Output eben ReST als Input habe, aber dann keinen geeigneten grafischen Editor.

pdf.js reached its first milestone. Und weil wir gerade bei JavaScript und PDF sind: mit dem Projekt hier kann man PDF Dateien ohne PDF Reader anzeigen – nur mit HTML5 und JavaScript. Sehr interessant, wenn das weiter ausgebaut wird, könnte das an vielen Stellen den PDF Reader völlig überflüssig machen.

PDFKit — A PDF Generation Library for Node. Ich glaub ich muss mir doch nochmal wieder Node.js angucken. Und CoffeeScript. Diese PDF Generierung sieht sehr interessant aus und könnte bei einigen Projekten ganz praktisch sein. Wobei mir bei solchen Libraries immer der Highlevel-Teil fehlt – das eigentliche Layouten. Wann baut jemand eine TeX Engine in JavaScript? Hyphenator liefert ja schon eine sehr gute Silbentrennung, aber was einfach fehlt ist eine gute Layoutengine zur Verteilung von Texten auf definierten Seiten. Und bitte auch mit guter Unterstützung für Tabellensatz.

Parenscript. Darf man nicht vergessen, wenn man von Lisp-in-JavaScript redet, denn das ist wohl der Urvater und am weitesten ausgebaute Dialekt. Besonderheit ist auch noch: keine Runtime, es wird wirklich nur JavaScript direkt erzeugt ohne Abhängigkeiten (ausser natürlich den Abhängigkeiten die man selber in den Code reingebracht hat). Hatte ich wohl im alten Blog schon mal, aber egal.

manuel/edgelisp. Weil ich nie die Finger von Klammern lassen kann – ein Common Lisp Dialekt und dessen Implementation, die nach JavaScript compiliert un den Lisp-Code im Browser ausführbar macht. Macht einen recht vollständigen Eindruck – viele andere Projekte zeigen nur die rudimentären Elemente, aber hier gibts auch schon generische Funktionen und Makros.

paver/paver. Klingt interessant, wie eine Mischung aus SetupTools/DistUtils und Make (bzw. deren high-level Kumpel Rake/Cake). Könnte ich mir mal angucken, denn für Python-Projekte wäre das vielleicht doch recht praktisch – allerdings sind die Standardtools von Python auch schon ganz brauchbar.

PerlDancer – The easiest way to write web applications with Perl. Zur Ergänzung meiner Sammlung von Sinatra-angelehnten Microframeworks für Webanwendungen hier noch eines in Perl. Nicht das ich jetzt unbedingt Perl wieder einsetzen wollen würde – ist eher wegen der Vollständigkeit hier aufgeführt.

danlucraft/git.js. Wow, beeindruckend. Und potentiell sehr interessant – git als genereller Synchronisationsmechanismus ist ausgesprochen praktisch und Integration von Git-Funktionalität in Webanwendungen könnte einige Probleme gut lösen (z.B. wenn es um Synchronisation mit anderen Stellen geht, oder natürlich für Dokumenteninterne Versionierung). Muss ich mir mal genauer angucken bei Gelegenheit, ich hätte da schon die eine oder andere Idee wie ich das einsetzen könnte. Ist im Moment noch recht rudimentär, aber beobachten lohnt sich sicherlich.

Stiivi / cubes. Mal für später geblogmarkt: eine OLAP Library in Python die auf SQL Datenbanken oder MongoDB aufbauen kann. Für so einige Sachen auf der Arbeit könnte das mal interessant werden.

Tree for policy-settings-basic in MeeGo Multimedia – MeeGo. Da immer mal wieder behauptet wird, Prolog sei so eine völlig esoterische Sprache die niemand im normalen Leben benutzen würde: der Teil von MeeGo (wir erinnern uns, das ist dieses Handset-Betriebssystem vom Nokia N900/N950/N9), der abhängig von Umgebungsbedingungen verschiedene Einstellungen triggert, ist in Prolog geschrieben. Und läuft so produktiv auf den Handsets.

DropKick – a jQuery plugin for beautiful dropdowns. Sieht nett aus, auch wenn es natürlich hauptsächlich optisches Gimmick ist. Aber manchmal sind optische Gimmicks auch notwendig.

Prowl – iOS Push Notifications. Ist ein ausgesprochen praktisches Teil für das iPhone oder iPad als Ergänzung, weil man nette APIs bekommt, mit denen man z.B. von Servern aus Nachrichten an das iPhone schicken kann. Oder man benutzt Send2Prowl vom Firefox oder Prowl von Chrome um sich einen Link direkt ans iPhone zu schicken.

Opa: Advancing web development to the next generation. Hatte ich glaube ich im alten Blog schon mal, aber was solls – jetzt ist der Code auf github und unter Open Source Lizenz. Und das ganze Projekt ist nicht irgendwas grade frisch rausgekommen – das hat 10 Jahre Forschungseinsatz hinter sich, die Leute wissen wirklich was sie da treiben. Die Idee ist cool (und auch schon von anderen aufgegriffen): eine Sprache, aus der in Webanwendungen alle Schichten erzeugt werden, also auch JavaScript, HTML, CSS und das Backend. Das ganze mit typsicherung und entsprechenden Prüfungen und einer sich zum Beispiel daraus ableitenden Sicherheit vor Injections und XSS Angriffen. Und als Sprache drunter läuft OCaml, was ja auch nicht die schlechteste Sprache ist. Sollte ich mich wirklich mal ernsthaft mit auseinandersetzen, besonders weil verteilte Installation auch gleich mit kommt – und damit eine weitaus einfacherer Scalability gegeben ist als bei vielen anderen Ansätzen (der von OPA erinnert in gewisser Weise an den von Erlang-basierten Systemen). Oh, und Webanwendungen sind dann einfach nur ein einzelnes Executable – und nicht gigantische Verzeichnisstrukturen mit drölfundneunzig XML-Files (oder YAML-Files) zum Anpassen.

SymPy. Symbolische Mathematik mit Python direkt in der Python Shell. Zusammen mit NumPy für Matrizenoperationen und SciPy für diverse weitere wissenschaftliche Funktionen wird aus Python damit ganz fix ein schon recht veritables Mathematiksystem. Nichts wirklich groß neues außer vielleicht SymPy selber.

PyPy Status Blog: Global Interpreter Lock, or how to kill it. Wow, das klingt gut – das PyPy Projekt will das GIL durch STM (Software Transactional Memory) entschärfen – und hat dafür durchaus einen interessanten Ansatz. Manche Sachen sind auch erst durch PyPy möglich, weil dort entsprechende Infrastruktur für Codetransformationen vorhanden ist, die in CPython fehlen.

jsPlumb für alle, die Diagramme darstellen wollen (also vernetzte Graphen von Objekten) und an denen rumzuppeln müssen, um sie besser zu sehen oder zu strukturieren. Oder einfach nur weils witzig ist und cool.

Paper.js ist eine Grafikengine für das Canvas Element. Sieht alles sehr nett aus und hat eine Menge Features. Schon beeindruckend was man alles mit JavaScript im Browser anstellen kann – und das hier könnte im Gegensatz zum bootenden Linux sogar recht interessant für Projekte sein. Das ganze kommt aus dem Illustrator Umfeld und orientiert sich an Scriptographer, einem Plugin für Illustrator mit dem man dort Grafikelemente in JavaScript programmieren kann.

Sync BitBucket and GitHub – Ramanas Blog. Falls ich mal wechseln will, oder einfach nur Repositories sowohl für git als auch bitbucket zur Verfügung stellen will, dann könnte das hilfreich sein. Ausserdem auch einfach nur um mal Repositories zu konvertieren.

Issue Bucket. Gibt auch einen Client für BitBucket auf iOS, allerdings ist der iAd-Verseucht und leider sehr eingeschränkt in den Features. Und sieht eher wie eine Fingerübung in Oberflächengestaltung aus – sehr schlicht, man könnte fast „lieblos“ sagen. Aber man kommt wenigstens an die wichtigsten Sachen zum Angucken ran und es kostet ja nichts.

iOctocat is your GitHub companion for the iPhone and iPod Touch. So langsam wird GitHub immer interessanter – auch für iOS gibt es einen interessanten github Client. Und der ist Open Source.

NancyFx/Nancy. Nancy ist dann schon deutlich näher an Sinatra oder Scalatra dran, geht aber eigentlich von C# aus – aber vielleicht kann man da ja auch einfach Module in F# schreiben, die Interoperabilität der beiden Sprachen ist ja sehr hoch (vergleichbar zu Scala und Java).

Bistro. Das ist jetzt ein Web Framework für F#, inspiriert von Django (unter anderem). Leider nicht so schlank wie Scalatra oder andere Mikro-Frameworks, aber vielleicht trotzdem mal einen Blick wert.

scalatra/scalatra. Das ist sowas wie Sinatra, nur eben nicht für Ruby sondern für Scala. Es hat direkte Unterstützung für Scalatest und bietet auch sonst einige nette Features und DSLs um schnell und simpel zum Ergebnis zu kommen – könnte gerade für die Erstellung von Webservices in Scala interessant sein.

The Larch Environment. Mal angucken – eine visuelle Programmierumgebung für Python. Interessantes Detail: Objekte werden nicht einfach nur textuell dargestellt, sondern über einen eigenen Mechanismus auch grafisch dargestellt – klingt ein bischen wie Output-Recording von CLIM. Zusätzlich ist das ganze eher als interaktives Dokument aufgebaut – also vergleichbar zu diversen Mathematik-Systemen (z.B. Mathematica oder Maxima). Leider nicht auf der normalen Python-Umgebung aufbauend, sondern auf Jython – also JVM als Runtime drunter.

django-gae2django – Django-based implementation of App Engine APIs – Google Project Hosting.  Müsste ich mir mal angucken – damit kann man AppEngine Programme auf eigenen Servern laufen lassen, die dann auf Django basieren (die AppEngine-APIs werden also über Django-Mittel nachgebildet). Sicherlich besser als direkt den AppEngine Dev-Server zu benutzen.

DocumentClouds VisualSearch.js. Interessante JavaScript Library die ein recht mächtiges Suchfeld realisiert – man kann nach normalen Texten suchen oder nach Facetten der Daten (also spezifische Felder wie Titel oder Autor) mit automatischer Vervollständigung bei diesen Feldern. Das ist gerade für Dokumentensuche in teilstrukturierten Datenmengen interessant und die Darstellung im Browser ist nett gemacht. Guter Kompromiss für Suchfelder in die man eben nicht nur einfache Textsuchen ala Google reinhauen will, sondern unter Umständen eben auch Eingrenzungen auf Metadaten, ohne dass der Benutzer alle Optionen für Metadaten auswendig wissen muss in ihrer exakten Syntax.

SourceTree | Mercurial and Git GUI for Mac OS X. Das sieht auch sehr gut aus – allerdings sind 45 Euro nicht gerade wenig. Dafür kann es aber Git, Mercurial und Subversion, vielleicht sollte ich es mir also doch mal angucken (gibt ja eine freie Testversion). Update: Kurztest von mir und das Teil gefällt mir wirklich sehr gut – man kann externe Diff Tools einbinden (Changes wird leider nur als Diff, nicht auch direkt als Merge unterstützt) und hat immer die gleiche Oberfläche, egal welcher Server dahinter hängt. Das nimmt Git einiges der Schmerzen. Versionstools werden intern mitgeliefert, man muss also nichtmal die Kommandozeilenversionen installiert haben. Sieht wirklich interessant aus.

GitHub for Mac. Bin ja überzeugter Bitbucket-User wegen Mercurial, aber das Teil hier sieht echt gut aus, da könnte man glatt nur wegen der Oberfläche auf git wechseln. Bin halt unten drunter doch oft Mäuseschubser und Optikklicker.

traits.js – Traits for Javascript. Interessantes Experiment für JavaScript – Traits bieten bessere Komposition als klassische Klassen und mehr Struktur als JavaScripts Prototype-OO – und hier werden die Features von Traits gut auf die vorhandenen JavaScript Features abgebildet (z.B. werden Objekte über Closures abgebildet). Nachteil wie bei allen solchen Spracherweiterungen ist natürlich, dass man in der Regel zwar selber damit arbeiten kann, aber eben andere Bibliotheken sie nicht nutzen und damit der Vorteil bei stark auf Fremdbibliotheken aufbauenden Projekten eher minimal ist.

Technical Discovery: Speeding up Python NumPy, Cython, and Weave. Interessant für Zahlenfresser die nicht unbedingt auf PyPy wechseln wollen, sondern in der normalen CPython Welt bleiben wollen. Gibt einen schnellen Vergleich von NumPy, Weave und Cython.