Am Rande notiert ...

PyPy Status Blog: PyPy Winter Sprint Report. Wichtigster Punkt: fast-forward ist in Trunk, womit die nächste Version von PyPy also definitiv 2.7er Kompatibilität bekommt.

scgi-wsgi 1.1 released – Allan Saddi’s projects blog – bisher benutzen wir seinen FLUP basierten Server, der in Django mitkommt, aber die Möglichkeit auf mod_prox_scgi zu gehen wäre schon interessant, weil wir effektiv einen Server dazwischen einsparen könnten und nicht mehr mit ajp arbeiten müssen. Wobei allerdings ajp auch nicht so schrecklich ist – also vielleicht einfach mal ein paar Tests machen. Für einfache Webservices benutze ich aber weiterhin den auf gevent aufbauenden wsgi Server den ich deezeit im Einsatz habe, denn der ist einfach nur genial schnell und benutzt fast keine Resourcen.

RUR-PLE ist sowas wie Logo, nur eben mit Python anstelle von Logo als Sprache. Also eigentlich nur die grafische Umgebung von typischen Logo-Implementierungen. Auf jeden Fall ein nettes Spielzeug.

How to write vim plugins with python. Weil ich Python mag, weil ich Vim mag und weil man immer mal wieder kleinere Sachen bauen will die einem das Leben erleichtern. Und weil die Script-Sprache von Vim selber doch eher grausig ist.

pyglet könnte ich mir mal angucken, schaut nach einer netten kleinen Library für simple Oberfläche aus. Ok, wird als Game-Library bezeichnet, für mich ist es aber eher als simple GUI-Bibliothek für kleine Python-Tools interessant. Auf der Schockwelle gefunden.

cfbolz / Pyrolog. Interessantes Projekt, weil das Prolog in Python geschrieben ist, aber die PyPy Toolchain für den JIT benutzt – das gibt einen schönen Einblick was mit PyPy neben Python alles möglich ist.

Sho – Microsoft Research. So ein bischen wie SciPy und Sage (dem Teil von Sage, der sich mit Datenanalyse und -visualisierung beschäftigt), nur auf IronPython und .NET aufbauend.

PyPy Status Blog: PyPy wants you! – yay! Fast-forward in PyPy gemerged! Das bedeutet bald ein 2.7 kompatibles PyPy – das Projekt sucht jetzt Contributoren, die 2.7 Features implementieren, die noch fehlen. Die nächste PyPy Version wird sehr interessant!.

Tail Call Optimization Decorator – jemand hat Python Tailrecursion beigebracht, als Dekorator. Sehr cool. Jemand anderes hat das aufgegriffen und zwei schnellere Versionen gebaut, die allerdings kleine Einschränkungen in der Nutzung haben. Und bei LTU hat auch jemand eine Version gemacht – besonders cool an der ist eigentlich nur, dass er mein lazypy Modul benutzt. Und dann hab ich noch eine super-kurze und schnelle Version gefunden, die dann allerdings falsche Ergebnisse liefert, wenn eine Funktion nicht in tailposition aufgerufen wird. Aber da man Tailcalls eh in der Regel in kompakten rekursiven Funktionen benutzt (oder zwei oder wenigen, die mutual recursion machen), sollte man das im Griff haben können.

appscript liefert eine recht interessante Bridge zwischen verschiedenen Sprache (Python, Ruby und Objective-C) und Apple Events (der Basis von AplleScript). Wer wie ich die etwas byzantinische Form von AppleScript nicht so mag, kann also auvh auf andere Sprachen ausweichen..

Pyrates are cool — A wiki about python game development. Drin was drauf steht. Sicherlich nicht alle Sachen verlinkt, aber ist ja ein Wiki, und als Startpunkt für jemanden der gucken will was so alles rund um Spiele mit Python passiert vielleicht ganz interessant.

CLPython – an implementation of Python in Common Lisp. Einfach weil es zwei meiner Lieblingssprachen verheiratet und pure-Python-Libraries für Common Lisp verfügbar macht. Viellericht sieht jetzt der eine oder andere wohin meine Suche geht – den Kuchen essen und ihn behalten. CLPython ist übrigens zu Python 2.5 kompatibel, also sogar ein recht aktueller Sprachlevel (auch wenn mir sicherlich einige Sachen aus 2.6 fehlen werden, aber das ist bei PyPy nicht anders).

About Dirigible – für all die, die ein Spreadsheet in der Wolke wollen, aber nicht wie bei Google Docs mit JavaScript programmieren wollen, sondern mit Python. Als selbstgehostete Lösung fänd ich es ja richtig klasse, speziell wegen der dort beschriebenen einfachen Verknüpfung von Spreadsheets über Servergrenzen.

Emscripten: Python. Ziemlich cool, eine Crosscompilation des Standard-Python nach JavaScript mit Hilfe von Emscripten. Und damit ein volles Python 2.7  (minus vieler Libraries natürlich) im Browserfenster.

pyfilesystem – Project Hosting on Google Code. Könnte mal nützlich sein, wenn man von Python über einheitlichen Code auf verschiedene Filesystemtypen zugreifen will.

IPython as a system shell erklärt die Funktion des sh Profils für iPython. Muss ich mal mit rumspielen, denn Python als Systemshell kann schon sehr hilfreich sein.

Python Package Index : futures 2.0. Gerade drüber gestolpert, ist eines der Features neu in Python 3.2, die Referenzimplementation läuft aber auch mit Python 2.6. Macht im Prinzip sowas wie mein lazypy und lindypy (also löst die gleichen Probleme, aber auf leicht andere Art).

Alex Gaynor — Getting the most out of tox. Müsste ich mir mal angucken – derzeit bin ich ja noch recht faul beim Erstellen von unittests für meine Projekte, in der Regel teste ich nur gegen die eine Python-Version mit der ich primär arbeite und auch bei den Abhängigkeiten nehm ich nur die, die gerade auf meiner Kiste (bzw. im virtualenv) installiert sind. Wäre mal sinnig da ein etwas umfangreicheres System für aufzubauen, einfach um etwas aussagekräftigere Testergebnisse zu haben.

coleifer/peewee at master – GitHub. Hatte ich bestimmt schon, kleiner ORM für Python der an Django angelehnt ist und mit sqlite tut. Gerade für kleine Webservices interessant, wenn man eben nicht ein großes Framework reinziehen will, sondern einfach nur den Code etwas lesbarer gestalten will. Vorsicht: unterstützt direkt keine vom Programmierer gesteuerten Transaktionen, sondern ist im Prinzip immer im Autocommit Modus. Kann man aber mit relativ wenig Handgriffen anders machen, wenn man will – einfach UpdateQuery, InsertQuery und DeleteQuery ableiten und requires_commit an den Klassen auf False setzen, und eine erweiterte execute Methode definieren, welche einen expliziten commit-Parameter nimmt.

Middleware_and_Utilities – WSGI Wiki. Wenn man mit wsgi als Basis arbeitet, ist es eine gute Idee hier zu gucken was es an WSGI Applikationen und Middleware schon so alles gibt.

Python Package Index : urlrelay 0.7.1. Webservices mit gevent als Basis brauchen URL dispatching, urlrelay scheint da eine interessante kleine WSGI-Library zu sein, die im Gegensatz zu anderen Systemen nur genau das macht und nichts anderes.

Bottle: Python Web Framework sollte ich mir auch mal als Alternative angucken zu web.py – denn in Bottle ist die App einfach eine Sammlung von Funktionen mit Routen und Mappings und nicht immer gleich eine Klasse. Ausserdem können die Funktionen für unterschiedliche Verben verschiedene Parameter haben und JSON wird direkt als Outputformat unterstützt. Für Webservices klingt das noch eine Runde schlanker als web.py – und Sieht für mich auch sauberer in der Struktur aus.

Nicholas Piël » Benchmark of Python Web Servers. Sehr interessantes Benchmarking, ich muss mir definitiv gevent angucken, die Leistung in den Tests ist schon beeindruckend. Update: nachdem ich mir gevent angeguckt habe – ich bin beeindruckt. Für Webservices muss man aufpassen: gevent.wsgi unterstützt nur GET und POST, nur gevent.pywsgi unterstützt auch PUT und DELETE.

pyquery: a jquery-like library for python — pyquery v0.6.1 documentation. Drin was drauf steht. Im Prinzip ein subset von dem was jQuery kann, da jQuery eigene Selektorerweiterungen hat und das hier einfach auf lxml aufsetzt (aber dafür dann vollständige css3 Selektorenunterstützung hat).

stream – Lazily-evaluated, parallelizable pipeline — stream v0.8 documentation. Interessantes kleines Modul zur einfacheren Programmierung von Berechnungsketten mit Iteratoren. Macht Sourcecode deutlich kompakter für passende Anwendungsfälle (z.B. Transformationen und Selektionen von Massendaten). Geblogmarkt, da ich sowas diverse male selber adhoc innerhalb Projekten implementiert habe.

About – pyconditions – About the module – Project Hosting on Google Code. Noch eine andere Implementierung von Common Lisp Conditions in Python.

Python Package Index : withrestart 0.2.6. Klingt ganz interessant – die interaktiven Restarts von Common Lisp sind oft sehr praktisch, gerade bei interaktivem Arbeiten.

pyclewn. Weiss noch nicht ob ich da mich reinwühlen will – ich benutze Debugger eigentlich nicht. Aber der hier ist in Vim integriert und damit direkt aus dem Editor nutzbar. Genutzt werden kann gdb und pdb (für Python).

Vim Taglist plugin manual. Ein weiterer wichtiger Baustein um mit dem MacVim richtig arbeiten zu können. Empfehlenswert sich auch mit brew install ctags das exuberant-ctags zu installieren, wenn man richtige Sprachen benutzen will (wie z.B. Python).

Vim autocomplete, Django and virtualenv | rosemanblog. Besonders die Integration von VirtualEnv und MacVim ist hilfreich, weil sonst Omnicomplete nicht sauber mit VirtualEnv zusammenarbeitet, da es nix von den dort liegenden Modulen weiss. Übrigens ist das Installieren von MacVim mit Homebrew trivial …