Am Rande notiert ...

click – Gerade drüber gestolpert, das sieht endlich mal wirklich wie eine Arbeitserleichterung aus – viele andere Libraries für Kommandozeilenintegration waren so sperrig, dass ich nicht viele Vorteile über den von der Standardlib gelieferten Sachen sehen konnte. Aber das hier wirkt doch schon recht kompakt.

2.0 Series — IPython 2.0.0 documentation. Sehr cool. So langsam kommt das immer näher an die Oberfläche von Mathematica heran. Leider der starke Fokus auf Browser – ich kann verstehen warum, aber so richtig begeistert bin ich davon nicht, mir wäre es lieber, das wäre eine mehr integrierte Lösung in der normalen GUI. HTML als Rendering-Engine ist ja in Ordnung, aber Browser als Benutzeroberfläche leider doch immer noch sehr hakelig im Vergleich zu einer optimierten nativen Umgebung. Aber trotzdem, wirklich cool was da passiert.

kachayev/fn.py · GitHub. Diverse kleine Tools um in Python mehr funktional zu programmieren. Interessant für mich hauptsächlich die persistenten Datenstrukturen, ich hab diese mit Clojure sehr schätzen gelernt.

lihaoyi/macropy. Aus alten Lisp-Zeiten bin ich immer noch ein Fan von Macros – einfach weil konfigurierbare Programmiersprachen einen deutlich höheren Beschreibungslevel erlauben. Ok, das ganze geht dann oft auf Kosten der Verständlichkeit, weil ein Leser nicht nur die Sprache und die Bibliotheken, sondern jetzt auch noch die Macros kennen muss. Trotzdem, für manche zwecke finde ich Macros immer noch sehr praktisch. Ob ich sie allerdings in Python einbinden wollen würde, wie dieses Projekt es macht, weiss ich noch nicht so genau – der Ansatz über den AST ist aber mindestens interessant.

Python Data Analysis Library — pandas: Python Data Analysis Library. Hmm, hatte ich bestimmt schon mal, aber mir ist gerade aufgefallen, dass es in Anaconda drin ist. Und daher sollte ich mich mal ganz dringend damit beschäftigen, da sind so ein paar Datenwüsten die ich mir damit mal zu Gemüte führen könnte.

Quepy: A Python framework to transform natural language questions to queries.. Cool – man kann englische Fragen reinstecken und das System bildet daraus eine strukturierte Abfrage und liefert dann Antworten aus Freebase oder DBPedia. Quepy ist dabei das Teil, welches aus der natürlichen Sprache die Abfrage formuliert. Sozusagen sowas wie Wolfram Alpha wenn man dabei nur auf die Wissensabfragen guckt.

Anaconda. Hmm, hatte ich das schon? Keine Ahnung. Es ist eine Python Installation, die gleich mit einem Stapel an wissenschaftlichen Modulen kommt (NumPy, Matplotlib, PyLab und sowas) und auch sonst eine Reihe brauchbarer Module mitliefert. Dazu IPython mit den üblichen Tools – also Notebooks und QTConsole – und noch ein Kommandozeilentool zur Paketverwaltung. Das nette: die Installation geht in einen eigenen Pfad, es wird also nicht unbedingt eine andere Python-Installation tangiert.

Meet RegExpBuilder: Verbal Expressions rich, older cousin – The Changelog. Ich bin ein alter Snobol und Icon Fan – und eine der Eigenschaft beider Sprachen war die ziemlich gut lesbare Subsprache für Textmuster. Das was heute üblicherweise mit dann doch eher kompakt bis kryptischen regulären Ausdrücken gemacht wird. Von daher freut es mich, hier auf ein Projekt zu stoßen, welches die deutlich lesbareren Ausdrucksformen wie sie in Icon üblich waren auf reguläre Ausdrücke kompiliert. Ok, die zielorientierte Ausführung in Snobol und Icon und das darin inherente backtracking fehlt natürlich, von daher ist es nur syntaktisch. Trotzdem nett.

PyPy.js Update: A Proof-of-Concept JIT. Braintwister. Python mittels PyPy auf Javascript über asm.js. Mit aktivem JIT.

washort/parsley. Hatte ich das schon mal? Egal. Eine PEG Implementierung in Python. Baut Parser für Sprachen auf Basis von recht gut lesbaren Sprachbeschreibungen (ähnlich der guten alten BNF).

lihaoyi/macropy · GitHub. Bin ja aus meinen Lisp-Zeiten ein Fan von syntaktischen Makros. Klar, Metaprogrammierung in Python bringt einen schon einen Schritt weiter, aber richtige Makros sind halt doch was feines. Daher sollte ich mir das hier mal angucken.

pudb 2012.3 : CUI Debugger for Python. Auf Servern hat man nicht immer die Möglichkeit dicke IDEs zu starten oder überhaupt grafische Anzeigen zu haben. Die Alternative – mit pdb in der Konsole – ist aber auch nicht immer so der Bringer. Und remote Debugging klappt abhängig von Firewalls und Gateway-Rechnern auch nicht immer so wie man es sich wünscht. Da freut es doch, wenn jemand sich noch die Mühe macht und CUIs für Debugger baut.

The Larch Environment. Mal wieder ein Ansatz zu visueller Programmierung, aber anders als viele andere Ansätze ist es hier ein Mix aus textuellem Python und visueller Darstellung von Code und Datenstrukturen. Schaut ganz interessant aus als Umgebung in der man mit Elementen der Sprache experimentiert.

Blaze — Blaze 0.1-dev documentation. Hmm, hätte schwören können ich hätte das schon gehabt, aber egal. Blaze ist im Prinzip ein Compiler, der numpy ähnlichen Code umwandelt und an Runtimes zur evaluierung übergibt. Speziell unterstützt es dabei auch viele parallel arbeitende Runtimes und parallelisierung von Evaluierungen. Auch sind die Datentypen deutlich weiter ausgebaut als bei numpy – die Autoren selber betrachten Blaze als die natürliche Weiterentwicklung von numpy. Was mich daran fasziniert ist die Integration von einer recht weit ausgebauten Array-Programming-Library in Python – seit ich mit J rumspiele finde ich Array-Languages faszinierend.

imwilsonxu/fbone · GitHub. Gar nicht so uncool. Bin zwar eigentlich Djangonaut, aber Flask hat mich schon immer ein bischen interessiert, weils halt gerade für kompaktere Projekte durchaus eine gute Basis ist. Durch die Integration von HTML5 Boilerplate und CSS Bootstrap könnte das hier auch für kleine Webprojekte mit Frontend interessant sein. Wobei Flask bietet durchaus genug Luft nach oben um auch größere Sachen damit zu realisieren – ist halt nur so, dass ich bei größeren Sachen oft doch eher zu Django greife. Aber gerade für den typischen Webservice mit zusätzlicher HTML Präsentation der Daten kann das hier wirklich praktisch sein.

Cubes 0.10.1 Released – Multiple Hierarchies Data Brewery. Hatte ich glaube ich schon mal, aber hey, das Fernsehen wiederholt ja auch dauernd. Und es sieht immer besser aus, was man damit machen kann. Muss ich mir wirklich mal näher angucken, da gibts so ein Projekt in dem ich glaube ich was damit anfangen könnte. Muss allerdings mal gucken wie ich das integriert bekomme, denn mein Projekt benutzt Django und dessen ORM und Cubes benutzt SQLAlchemy. Könnte interessant werden, das zu vermischen.

Comtypes: How Dropbox learned to stop worrying and love the COM. Filed for future use. Zugriff auf COM APIs in Windows aus Python mit recht schlanken Mitteln. Könnte für das eine oder andere Admintool in der Firma interessant sein.

DataNitro. Wer gerne sein Excel-Spreadsheet in Python programmieren will, dem wird da geholfen. Ist vielleicht für den einen oder anderen Zahlenfresser der Excel als Frontend benutzt interessant.

Pyjnius: Accessing Java classes from Python | Txzone. Sehr interessantes Seitenprojekt von Kivy – damit kann man recht einfach Java-Klassen in Python integrieren und benutzen, ohne auf Jython wechseln zu müssen. Es basiert auf Cython und JNI und integriert sich so direkt in das native Python. So langsam wird Kivy wirklich zu einer Alternative für die Android Entwicklung die ich mir mal genauer angucken sollte.

toastdriven/django-tastypie. Hatte ich glaube ich schon mal, macht aber nix, sieht immer noch interessant aus – eine Alternative zu django-piston mit einer deutlich weitergehenden Funktionalität (zum Beispiel recht ausführliche Optionen für Authentifizierung und Authorisierung). Was es macht? REST Interfaces für Django Modelle inklusive deren Relationen. In den verschiedensten Formaten (XML, JSON, YAML).

Online Python Tutor – Learn programming by visualizing code execution. Nett wenn man  Python als Programmieranfänger lernt und eine visuelle Unterstützung will, um zu verstehen was der Code da eigentlich veranstaltet.

pyMCU – The Python Controlled Microcontroller. Alternative für diejenigen, die statt Arduino und seine Processing-basierte Entwicklungsumgebung lieber Python benutzen würden. Seid ich mit Android rumspiele hat Java für mich ja deutlich an Schrecken verloren, man gewöhnt sich halt an alles. Vermutlich hilft mir da meine Cobol-Erfahrung aus den ersten 10 Berufsjahren, wenn man da durch ist, ist fast alles akzeptabel.

amoffat/sh. Cooles kleines Modul mit dem man externe Kommandos so integriert als seien sie Funktionen. Man ruft dann einfach eine Funktion git auf mit ein paar named Parametern und bekommt den git Output als String geliefert. Macht gerade Shell-Scripe in Python deutlich kompakter und lesbarer. Also genau das richtige für Sysadmins.

David Waring – Remember the Milk CLI. Bin ja von OmniFocus auf RTM umgestiegen, weil OmniFocus ein Datensilo auf Apple-Systemen ist – und gerade bei Tasks will ich nicht an eine Plattform gebunden sein, sondern mich auf jede beliebige bewegen können. Und RTM ist der einzige Dienst den ich bisher gefunden habe, bei dem man wiederkehrende Events mit passender Mächtigkeit definieren kann (speziell das „wiederholen nach X Einheiten nach Abhaken“ ist da wichtig). Nunja, hier gibts eine Python CLI Lösung, mit der man sogar die Linux Kommandozeile mit nutzen kann für seine Tasks. Und damit hat es wahrscheinlich todo.sh für mich erledigt, denn so landet alles in einer Datenbank.

Cameron Lairds personal notes on varieties of Python implementation. Und wem das mitlerweile zu viele Python Varianten sind um Überblick zu behalten: das hat einer schon gemacht, den Überblick. Und ja, es gibt einen ganzen Haufen verschiedener Distributionen und Implementationen.

Numba vs Cython – Pythonic Perambulations. Noch eine Alternative zu Cython und PyPy, mit der man LLVM und Python für Performancegewinne verheiraten kann. Hier wird über Dekoratoren echter Python Code ohne Änderung beschleunigt, wobei es eine Erweiterung für das normale Python ist, also alle Libraries verfügbar bleiben und nur die für die Performance kritischen Routinen mit LLVM nachbehandelt werden.

LuminosoInsight/python-ftfy. Praktisches kleines Tool, das diverse Ungereimtheiten in Textencodings bereinigt nachdem es schief gegangen ist. Das ist natürlich kein Ersatz für korrekte Nutzung der Encodings in Python, aber manchmal bekommt man seinen Input ja aus fremden Quellen (oder hat Bestandsdaten aus alten Programmen aus Zeiten in denen das ganze Unicode-Zeugs noch nicht so weit ausgebaut war) und hat keinen Einfluss darauf, wie die Daten aussehen – in dem Fall ist das ein sehr praktisches kleines Tool.

kmike/marisa-trie. Sehr praktisch – es gibt so einiges was in Python mit Dicts gemacht wird, das eigentlich in andere Strukturen gehört. Besonders die Präfix-Suche und die Suche nach vorhandenen Präfixes ist praktisch. Und das ganze mit einer C-Erweiterung auch ordentlich fix.

mitotic/otrace. Interessanter alternativer Python Debugger der auf das Debugging und Tracing von multithreading Anwendungen ausgelegt ist. Dabei geht es also weniger um das sequentielle steppen durch den Python Code sondern mehr darum, eine sich dynamisch durch Threads verändernde Umgebung zu analysieren (da ist der normale Python Debugger ja doch etwas sperrig).

Create a package for Android for Kivy. Ich glaub ich muss mir Kivy nochmal genauer angucken. Sie arbeiten jetzt mit Python for Android, einer eigenen Python-Distribution die einen angepassten Interpreter für Android mitbringt und eine Koppelung über Cython, NDK und JNI an die Android-SDK. Damit kann man also richtige APKs produzieren, die ganz normal auf den Devices installiert werden können – aber alles was die Anwendung selber ausmacht in Python schreiben. Bleibt natürlich die Frage wie schnell das dann läuft – Python wird ja nunmal interpretiert. Aber interessant für Tools wäre es allemal, zumal man Kivy Anwendungen auch mehr oder weniger direkt unter Desktopsystemen laufen lassen kann.