programmierung - 31.5.2010 - 6.9.2010

DOS auf Dope: Das letzte MVC-Web-Framework, das Sie jemals benötigen werden - Ich habe Angst.

Plac - sehr nette Optionsparser für Kommnadozeilentools. Das besondere: die Parameter werden einfach aus den Funktionsdefinitionen ermittelt und das ganze funktioniert von Python 2.3 aufwärts (mit Abstrichen in der Syntax, da es bei Python 2.3 noch keine Dekoratoren gab und erst mit Python 3 Annotationen existieren). Scheint eine gute Möglichkeit zu sein Tools zu bauen die auf mehreren Python-Versionen laufen sollen (denn sonst bleibt nur getopt und das ist wirklich sehr primitiv).

Python Datastructures Backed by Redis @ Irrational Exuberance - Redis selber ist schon sehr interessant, weil es nicht einfach ein simpler Key-Value-Store ist, sondern als Value strukturierte Daten (Listen, Sets) erlaubt sind. Und mit dieser Library werden Redis Strukturen als normale Python-Datentypen erreichbar und damit die Programmierung mit Redis nochmal vereinfacht. Kombiniert mit der Replikation in Redis könnte das sehr interessant in Clusterumgebungen sein.

zeromq - keine Ahnung ob ich den schon mal hatte, aber hey, Wiederholungen gibts auch im Fernsehen. Interessant an ZeroMQ: es hat nahezu keine wirklichen Build-Dependencies und ist daher auf vielen Systemen direkt installierbar. Achso, ist ein Message-Queue-Server mit schlankem Interface und guter Performance.

JazzScheme - huch? Scheint komplett an mir vorbeigegangen zu sein - es gibt eine IDE für Gambit Scheme die auf mehreren Plattformen läuft und Binaries für OS X, Windows und Linux erstellen kann.

Quicklisp - get started with Common Lisp libraries, quickly - Zach Beane will endlich das Problem der recht chaotischen Library-Situation für Common Lisp beheben und baut an einem zentralen Repository für Libraries mit einfacher Installation auf verschiedenen Lispsystemen. Im Prinzip sowas wie PyPi oder CPAN. Was generell sehr interessant ist - nur wäre es noch interessanter, wenn es irgendwo auf der Site oder der Gruppe oder dem GitHub einen Hinweis gäbe, wie man es eigentlich zum Laufen kriegt und mit welchem Common Lisp ... (ok, ist noch sehr früher Entwicklungsstatus, aber trotzdem - einzige Dokumentation ein Screencast? Hallo?)

Paver: Easy Scripting for Software Projects - interessanter kleiner Ersatz für Make. Speziell im Zusammenhang mit Python Projekten klingt es sehr nützlich.

Pysistence - gerade mal geguckt ob es sowas gibt oder ob ich es selber schreiben sollte. Pysistence implementiert funktionale persistente Datenstrukturen für Python. Bedeutet in diesem Fall dass es keine seiteneffekte gibt, sondern dass jede Funktion darauf eine neue Version der Daten liefert, wobei gemeinsame Teilstrukturen in verschiedenen Versionen miteinander geteilt werden (um effizient damit arbeiten zu können sowohl was Laufzeit als auch Platzbedarf angeht). Muss ich mir unbedingt mal angucken, denn in vielen Fällen hat mich das fehlen vernünftiger Implementationen von funktionalen Datenstrukturen in Python gestört.

The Official web2py Book - bin zwar Djangonaut, aber hier gibts ein web2py Buch online. Und schadet ja nicht mal über den Horizont zu gucken.

emscripten - LLVM-Bytecode in JavaScript compilieren, mit Schleifenerkennung etc. Ist sogar schon benutzbar um nicht-trivialen C/C++ Code nach JavaScript zu compilieren. Der Autor sieht z.B. einen Sinn in der Portierung von vorhandenem Code für Spiele in die JavaScript Welt, das ganze ist also durchaus ernst gemeint. Keine Angabe ob man einen Linux-Kernel auf einer Webseite damit booten kann ...

lambdaj - bringt Java anonyme Funktionen und higher-order-Funktionen (naja, zumindestens Annäherungen an diese) bei.

nakkaya's static at master - GitHub - statischer Generator für Websites in Clojure.

Meliae python memory analysis in Launchpad - klingt sehr interessant, mal für spätere Probleme geblogmarkt, könnte bei dem einen oder anderen Problem helfen. Installation übrigens recht einfach über pip install meliae oder easy_install meliae, es ist auch auf pypi gelistet.

[Cython] ANN: Cython 0.13 released! - bei Cython (ehemals PyRex) gibts wieder ein neues Release. Und die Sprache für Python-Erweiterungen wird immer vollständiger. Damit ist die Erstellung von performance-kritischen Teilen des Codes deutlich einfacher, weil man in einer sehr Python-ähnlichen Sprache arbeiten kann.

JEmacs - the Java/Scheme-based Emacs - nur so for future curiosity geblogmarkt.

Scribes - Simple And Powerful Text Editor for GNOME - interessantes Projekt, ein Editor der in Python erweiterbar ist. Da ich auffe Arbeit in Linux schaffe, könte ich mir das nach dem Urlaub mal angucken.

PEP 380 -- Syntax for Delegating to a Subgenerator - ein sehr interessanter Punkt zur Erweiterung von Python. So interessant, dass Guido sich vorstellen könnte diesen PEP am Moratorium vorbei schon jetzt zu implementieren. Generatoren in Python entwickeln sich für mich zu einem sehr angenehmen Sprachfeature - Code wird sehr oft deutlich kompakter und lesbarer für mich. Wenn nur endlich Django auch auf Python 3 verfügbar wäre könnte ich auch einige der dort vorhandenen Neuerungen benutzen. Python 2.7 lindert allerdings den Schmerz etwas.

saucelabs's monocle at master - GitHub - interessantes Paket zur einfacheren Programmierung von asynchronen Routinen in Python. Besonders interessant: es unterstützt neben Twisted auch Tornado.

Hg-Git Mercurial Plugin - hatte ich das schon? Keine Ahnung, egal, ist gut, kann man ruhig wiederholen.

Valued Lessons: Monads in Python (with nice syntax!) - sehr interessanter Hack, der durchaus auch praktischen Nutzen haben kann. Gefunden beim Schockwellenreiter.

pjs4ipad - Project Hosting on Google Code - das ist ein wirklich cooles Projekt: processing.js in einer Variante für das iPad, bei der HTML5 local storage benutzt wird um Programme lokal zu speichern, so dass man mit einem eigenen Programm auch offline arbeiten kann. Interessant zum Beispiel um unterwegs mal ein bischen zu doodeln (kleine Programme schreiben, die interessante optische Effekte haben). Und weil es alles WebApp ist, trifft die AppStore-Restriktion auch nicht.

TIDE 2.0 beta - mal angucken, eine JavaScript IDE die komplett im Browser läuft.

Python IDE with Django support : JetBrains PyCharm - die JetBrains Leute (von denen IntelliJ ist) haben jetzt eine reine Python IDE auf der Basis von IntelliJ gebaut und die hat eine Menge interessanter Features. Müsste ich mir mal angucken, zumal die auch Unterstützung für Django und Google App Engine drin hat.

itod's fluidium at master - GitHub - der Unterbau von Cruz (social browser), Fluid (site specific browser) und Fake (browser automation ala Automator). Eignet sich als Basis für RIA genauso wie als Basis für spezifische Browser für Websites oder Mashups oder whatever. Ist allerdings Mac only.

Lightweight Approach to AOP in Python - und da wir gerade bei AOP sind: gibts auch als library für Python.

Building iPhone Apps with HTML, CSS, and JavaScript - wer keinen Bock auf AppStore hat und wem eine WebApp reicht, hier gibts ein Buch darüber. Unter CC Lizenz.

jquery-aop - Project Hosting on Google Code - AOP bietet (unter anderem) einfacheres programmiertes Debugging und ist sehr praktisch wenn man Frameworks nachträglich modifizieren will, aber nicht wildes Monkey-Patching will. Da jQuery mein bevorzugtes JavaScript Werkzeug ist, sollte ich mir das mal genauer angucken.

jessenoller.com - PEP 3148 Accepted: “futures – execute computations asynchronously” - der PEP ist mir ein bischen zu sehr an der Java Welt orientiert, eine schlankere und mehr Python-spezifische Implementierung wäre mir lieber gewesen, aber immerhin. Besonders interessant die Überlegungen die Concurrency Sachen mal durchzugucken und neu zu sortieren.

Chickenfoot - das ist was unter CoScripter läuft. ChickenFoot ist allerdings nicht irgendeine adhoc-Scriptsprache wie bei CoScripter, sondern einfach nur JavaScript mit einer recht interessanten Automationslibrary integriert. Also als Baustein meiner Meinung nach besser geeignet, zumal die Scripte auf dem lokalen Rechner bleiben.

CoScripter - gucke ich mir gerade an, ist eine Erweiterung zur Automation von Webzugriffen (ähnlich wie FakeApp, aber weniger grafisch) und könnte mir helfen meine SL Transaktionen wieder automatisiert runterzuladen. Denn die sind - wie bei vielen "social networks" - hinter bescheuert komplexen Login-Szenarien versteckt, die eben nicht trivial mit z.B. Python zu automatisieren sind. Allerdings speichert das die Scripte auf einem öffentlichen Server, selbst private Scripte sind dort abgelegt, nur nicht für jeden Erreichbar. Irgendwie also auch nicht so das wahre.

Dropbox API - und das könnte für die nächste Zeit ein recht wichtiges Spielzeug für mich werden - eine API für Dropbox. Klar, meistens muss ich nur Files hin- und herschicken, da reicht es einfach Dropbox zu benutzen. Aber für manche Sachen wäre eine API zum Zugriff auf die Metadaten auf Dropbox durchaus interessant (eines meiner schon länger auf Halde liegenden Projekte wäre eine Umsetzung des Simpletext.ws Dienstes von Google App Engine auf einen normalen Python-Dienst mit Dropbox als Backend zum Beispiel).

Python 2.7 Release - einige gute Sachen drin, speziell die set und dictionary comprehensions mag ich - bisher habe ich mir mit Generator-comprehensions beholfen, aber gerade die dict-comprehensions sehen einfach besser und lesbarer aus. Aufgrund diverser Abhängigkeiten bin ich auf der Arbeit wohl noch auf längere Zeit an Python2 gebunden, da ist es schön, dass einige der Python3 Features auch in Python2 verfügbar werden. Allerdings bin ich einer derjenigen, die wirklich Python3 wollen - allein schon das deutlich aufgeräumtere Stringhandling mit Unicode als Default. Aber solange Django nicht auf Python3 läuft, bleib ich notgedrungen auf Python2.

liebke's clj - ah, jemand hat Paketinstallation und eine anständige REPL für Clojure zusammengeworfen, so dass man auch mal eben schnell interaktiv mit Clojure rumspielen kann, ohne jedesmal ein Projekt anlegen zu müssen. Ganz praktisch um mal fix mit irgendwelchen Java-Libs rumzuprobieren. Macht intern nix anderes als ein verstecktes Leiningen-Projekt anzulegen und zu verwalten, ist also eher Kosmetik, aber die richtige Art von Kosmetik

jessemiller's HamlPy - muss ich mir mal angucken, eine Implementation von HAML (im Prinzip eine Kurznotation für HTML) mit Integration für Django. Gerade für die vielen kleinen internen Templates könnte das interessant sein, denn die werden von Programmierern und nicht Designern gemacht. Allerdings müsste ich mir dann erstmal angucken wie gut (oder wie schlecht) ich damit JavaScript integriert bekomme. Aber sicherlich interessant - HTML ist nicht wirklich Diff/Merge-freundlich und schlichtweg nervig zu schreiben und zu lesen.

Write-Ahead Logging - in SQLite! Ab Version 3.7. Das ist sehr interessant, weil damit ein Anwendungsfall einfacher wird - multicore-nutzende Applikationen, die mit einer embedded Datenbank arbeiten wollen. SQLite wird damit noch mehr zum Schweizer Messer der Datenspeicherung (und wenn man beim Programmieren darauf Rücksicht nimmt, ist der Wechsel zu PostgreSQL für größere Installationen wo die embedded Datenbank keinen Sinn mehr macht einfach lösbar).

Inconsolata - bin über mein iPad (in iSSH) über diesen Font gestolpert und empfinde ihn als sehr angenehm. Gerade mit heutigen höheren Bildschirmauflösungen kann auch ein Monospace Font gerne etwas Wert auf Details legen - und der hier macht das gut.

Nicholas Piël » ZeroMQ an introduction - kurzer Überblick wie asynchrones Messaging mit ZeroMQ und Python aussieht und wie die verschiedenen Messaging-Szenarien abgebildete werden können. Sollte ich mir mal genauer angucken, denn es ist sowas wie ein deconstructed Framework für Messaging - also nur die Bausteine um ein eigenes, optimal auf das Problem zugeschnittenes, Messaginng System bauen zu können.

PyFilesystem 0.3 released - schaut interessant aus, Dateisysteme in und mit Python. Man kann FUSE Dateisysteme in Python schreiben oder einfach auch nur auf Amazon S3 oder FTP mit dem gleichen Code zugreifen.

About Greenfoot - eine grafische Programmierumgebung für Spiele und anderes interaktives in Java. Von den BlueJ Machern.

PyPy Status Blog: A JIT for Regular Expression Matching - sowas ist der Grund, warum ich durchaus glaube, dass die Zukunft von Python PyPy heisst (oder etwas vergleichbares) und warum ich sowas wie PyPy haben will. Eine Umgebung, in der alle Sprachelemente auf eine gemeinsame Basis zurückgeführt werden, in der ich auf allen Abstraktionsebenen arbeiten kann - notfalls auch auf der Ebene der Codegenerierung. Das bietet wesentlich angenehmere Optimierungsmöglichkeiten als das Modell von CPython, wo höhere Performance ab einem Punkt nur durch C-Erweiterungen machbar ist. Allerdings komme ich auch von Lisp, wo es völlig üblich ist, von High-Level-Sprachelementen bis runter auf die Codegenerierung mit einer Sprachfamilie zu arbeiten. Meine Xerox Lisp Maschine hatte einen TCP/IP Stack in einem Subset von Interlisp geschrieben - das ist durchaus mit der Situation von PyPy und RPython vergleichbar.

nutshell — Lettuce v0.1.2 (barium release) documentation - lettuce ist cucumber für Python. cucumber ist BDD für Ruby. BDD ist behaviour driven development - zuerst schreibt man BDD stories, dann schreibt man dazu den Code und ein kleines Python-Modul, welches die Story mit dem Code verbindet. Daraus ergibt sich dann automatisch der Testcode. Sieht auf den ersten Blick etwas albern aus, aber hat einfach den Vorteil, dass sich Testfälle tatsächlich an spezifiziertem Verhalten orientieren und nicht einfach abstrakt in den Wald programmiert werden. In Kombination mit testcase-pro-bugreport liefert das eine recht brauchbare Testumgebung.

iFolder - bin ich erst jetzt drauf gestoßen. Open Source von Novell die eine Funktionalität analog zu Dropbox aufbaut. Nur dass man seinen Server selber betreibt (eine Linux-Kiste, fertige Pakete für Open Suse). Das ganze mit Mono gebaut, Clients für Linux, Windows und Mac. Ich habs noch nicht ausprobiert (Dropbox funktioniert einfach zu gut als dass ich da großen Drang für Änderungen verspühre), aber ich glaub vor der nächsten Verlängerung bei Dropbox könnte ich mir das mal angucken. Eine Suse-Kiste irgendwo hosten (oder den Server auf Ubuntu oder Debian zum Laufen bekommen) sollte nicht das grösste Problem sein und ich stoße schon an die Grenzen der 50G Option von Dropbox. Was ich nicht gefunden habe ist der Zugriff auf ältere Versionen von Dateien - hab aber auch noch nicht die recht umfangreichen Handbücher durchgeguckt.

AdBlock for Safari - mit Safari 5 kann man jetzt Ads blocken. In diesem Fall ist eine Chrome Extension nach Safari portiert - scheintbar sind die recht ähnlich (beide basieren ja auf JS + HTML5 als Technik).

Racket Released - PLT Scheme hat einen neuen Namen und ein neues Release. Und ist immer noch die coolste Scheme Umgebung.

kenkeiter's ryfi - geblogmarkt für später. Ein Server in Ruby, der mit EyeFi Karten zusammenarbeiten kann und es so ermöglicht mehr mit Fotos zu tun als sie nur zu speichern. Damit könnte man dann automatische Syncs to der eigenen Cloud bauen oder andere Spielereien.

Plac: Parsing the Command Line the Easy Way - interessante Bibliothek zum Parsen von Parametern für Python-Tools. Deutlich kompakter als andere Bibliotheken. Parameter werden per inspect automagisch aus definierten Funktionen abgeleitet.

Python Package Index : Baker 1.1 - und noch eine weitere Alternative eines mehr deklarativen Kommandozeilenparsers.

Aeracode :: On Django And Migrations - South core libraries wandern in der nächsten Zeit möglicherweise in den Django core (vielleicht mit Target Django 1.4). I approve. Die Basis für Migrationen schon im Django core zu haben wäre nicht nur für Migrationen hilfreich, sondern auch für Projekten in denen höhere Dynamik in den Datenmodellen gefordert ist - mein derzeitiger Hack mit sqldiff und einigem selbstgestrickten ist eben nur genau das: ein Hack. Wird wohl Zeit mir South mal genauer anzugucken (bisher nur grob reingeschaut, aber was ich gesehen habe gefiel mir) und zu überlegen, ob ich nicht schon jetzt meinen Hack auf eine etwas leistungsfähigere Basis stelle.

Oppugn.us: Where The Rants Go - Zed Shaw über Flash. Fuck, yeah.

HackageDB: berp-0.0.1 - jemand programmiert einen Python 3 Compiler und Interpreter in Haskell. Zumindestens rein intellektuell ganz interessant.