mmcgrana's ring at master - GitHub - nette kleine Lib auf dem Level von Python WSGI. Also absolut minimale HTTP-Bindings für Clojure mit der Möglichkeit das ganze über eine ganze Reihe von verschiedenen Techniken dann zu betreiben. Besonders interessant für die Fälle, wo man eben nicht in das Korsett eines fertigen Frameworks wie Compojure gesteckt werden möchte.
programmierung - 20.1.2010 - 28.2.2010
PiCloud | Cloud Computing. Simplified. - sehr interessanter Dienst: triviales verteilen von Python-Code (mit Zugriff auf C/C++ Bibliotheken für Numbercrunching und anderes, z.B. auch Bildbearbeitung, sogar eigene C/C++ Bibliotheken sind möglich) auf ein vom Anbieter gemanagetes EC2-Grid. Der Programmierer schreibt nur noch seinen Python-Code, testet lokal, wenn alles mit kleinen Sets gut läuft, Basisdaten hochladen, import, Funktionsaufruf und warten bis die Ergebnisse da sind - bezahlt wird nach Benutzungszeit. Durchaus mal im Auge behalten, falls mal größere Datenmengen durchzuwühlen sind - sowas kann durchaus günstiger sein als sich die nötigen Ressourcen selber bereitzuhalten.
rfc1437 / django-standalone / overview — bitbucket.org - da ich immer mal wieder auf bitbucket, github oder google code verweise, hier mal der Verweis auf ein eigenes kleines Paket das ich selber auf bitbucket jetzt habe: django-standalone. Entstanden weil ich für kleine Scripte und Tools immer mal wieder einen ORM brauchen könnte, aber ich dafür möglichst wenig Umstand haben will - nicht ein ganzes Django-Projekt aufsetzen, sondern einfach ein paar Modelle in meinem Script definieren und per Parameter die DB initialisieren und danach benutzen. Möglichst auch mit sqlite3. Mit der Lib hier geht das ganz wunderbar und ich kann mal wieder eines meiner Dauerprojekte - "schreibe einen simplen ORM für simple Scripte selber" - von der ToDo-Liste streichen.
dajaxproject.com - easy to use ajax library for django - sollte ich mir vielleicht mal angucken, das aktuelle Projekt wird unter Umständen recht viel Ajax benutzen und wenn man den Anteil JavaScript reduzieren kann wär das ja durchaus erstrebenswert.
Squeryl — Introduction - das müsste ich auch mal angucken, denn von den bisherigen Persistenz-Layern für Scala war ich nicht so begeistert. Und gerade für erste Experimente will ich eigentlich nicht gleich eine Webanwendung mit Lift bauen, sondern vielleicht einfach nur mal ein paar Tools die ich bisher anders gelöst habe mit Scala neu schreiben.
IronPython 2.0 and Jython 2.5 performance compared to Python 2.5 - word of warning: sowohl Jython als auch IronPython sind in vielen Situationen deutlich (und ich mein deutlich deutlich) langsamer als CPython. Der Overhead wird bei Jython bei sehr großen Datenstrukturen irgendwann besser als bei CPython, aber für normalen Einsatz siehts nicht so richtig toll aus.
IronPython hammers CPython when not mutating class attributes - weitere Informationen zu dem Performanceproblem. Hier bezogen auf IronPython - scheinbar sind Klassenvariablen unter Umständen problematisch, da darüber sich die Klassen selber ändern und dadurch Just-in-Time-Compiler Informationen verworfen werden müssen (wegen der recht statischen Struktur der VM sowohl bei der JVM als auch bei der CLI warscheinlich sehr ähnliches Problem), wodurch der JIT-Compiler dann alles neu durchnudeln muss und damit nicht nur Performance-Vorteile verloren gehen, sondern potentiell sogar kontraproduktiv sein können.
bpython interpreter - unbedingt mal in der Firma mit spielen, zu Hause machte diese alternative Python-Shell einen echt guten Eindruck. In einigen Punkten besser als ipython und das ist schon sehr gut (aber meiner Meinung nach zu sehr auf eigene Features ausgerichtet und weg von der Python-Philosophie, wärend bpython mehr pythonisch wirkt)
DreamPie: The Python shell you've always dreamed about! - eine weitere interessante alternative Python-Shell, diese hier als GTK Fenster. Das öffnet ganz neue Möglichkeiten, wie z.B. echte Popups als kleine grafische Fenster und direkter grafischer Output. Allerdings ist py-gtk für OS X noch eher wackelig (wie alles GTK-Zeugs derzeit, ist halt noch Alpha) und eigentlich habe ich lieber ähnliche Umgebungen unter OS X und Linux.
ZODB - a native object database for Python — ZODB v3.9.0 documentation - weil ichs immer wieder vergesse: die ZODB gibts auch standalone, ohne das Monster Zope oben drüber. Und bei direktem Zugriff von Python bietet ZODB einige sehr interessante Features. Immer noch eine der am weitesten ausgebauten echten Objekt-Datenbanken für Python (aber leider immer noch keine allgemeine Query-Language auf die Datenbank zur effizienteren Behandlung von Objektmengen).
django-piston - muss ich mir auch mal näher angucken, es soll gerade den Bau von Web-APIs mit Django erleichtern. Und einige meiner Firmenprojekte könnten davon profitieren.
Murky - netter kleiner GUI-Client für Mercurial für OS X. Sieht schon ganz brauchbar aus, man kann recht leicht sich durch die Historie eines Projektes navigieren, sich Differenzen anzeigen lassen etc. - geht natürlich auch alles mit der Shell, aber manchmal ist es schlicht simpler mit einerm GUI zu arbeiten.
Front Range Pythoneering: Realizing Jython 2.5 - da stehts weiter unten drin. Jython hat ein GIL als witziges Easteregg im future Modul (das mit dem zukünftige Sprachfeatures als "Beta" verfügbar gemacht werden). Also kein GIL, sondern nur ein Joke. Hätte mich auch anders stark verdutzt.
Interactive Python GIL Visualization [dabeaz] - sehr interessante Auswertung der Auswirkungen des GIL in multithreaded Python Projekten. Ob Jython (kein GIL, threading auf Basis der Java-Standards) da eine Aushilfe ist?
maven-jython-plugin - Maven Jython Plugin - hmm, der Jython-Support für Maven ist ziemlich veraltet - das Artifact geht nur gegen 2.2.1 und auch das Plugin geht nur auf 2.2.1. Da fehlt dringend wohl ein bischen Updaten.
Bill Clementson's Blog: Elephant and Rucksack - Comparison of two CL Open Source Prevalence packages - weil es mich auch im Moment mal wieder interessiert, etwas Common Lisp. Elephant und Rucksack sind wohl die interessanteren Persistenz-Lösungen für Common Lisp im Moment. Rucksack ist leider nicht asdf-install-tauglich, da ist viel Handarbeit nötig.
Presenting django-devserver, a better runserver. - interessante Idee, eine Erweiterung des runserver die SQL Statements logged und Cache-Informationen liefert. Das könnte für mein derzeitiges Django-Projekt recht interessant sein, da ich dort zeitweilig etwas komplexeres SQL produziere. (und ja, ich hacke wieder mit Django herum, eventuell kommt ja sogar was veröffentlichbares dabei raus - ist aber primär ein Arbeitsprojekt).
persistence.js: An Asynchronous Javascript ORM for HTML5/Gears « I am Zef - sehr interessant, ein Object-Relational-Mapper in JavaScript, der Objekte auf HTML5 Datenbanken abbildet. Sowas könnte sehr interessant für Offline-iPhone-Webanwendungen sein, denn nackte Datenbankprogrammierung (nackte Datenbank, nicht nackter Programmierer) macht nicht wirklich immer Spaß.
Faster or Lazier Pagination - interessanter Ansatz, einfach nicht die Menge der Sätze ermitteln, sondern stattdessen eine Anzahl Seiten annehmen und diese aktualisieren wenn man auf spätere Seiten zugreift. Ein bischen ähnlich zu manchen Websites die nur einen Ausschnitt der Seitenliste als Navigation anbieten - dafür braucht man dann nicht wissen wie viele Seiten es wirklich sind. Google mogelt ja auch, in dem die Seitenanzahl maximal beschränkt wird. Für große Datenmengen mit langsamem count(*) sicherlich sehr sinnvoll und evtl. könnte man das auch kombinieren mit gecachten maximalen Seitenzahlen für verschiedene Queries, so das beim nächsten Mal die Vermutung über die Menge schon präziser ist.
Using ctags in Vim - amix.dk - ctags ermöglicht die Navigation in größeren Sourcen und ganzen Projekten anhand von Definitionsstruktur. Unter Ubuntu kann man einfach mit vim-addons install taglist dieses Plugin installieren und dann fleißig benutzen. Ziemlich genial.
Vim 7: Turning completion on - amix.dk - nachdem ich mich eine Weile mit IDEs beschäftigt hab, aber irgendwie feststellen muss ich bin nicht wirklich IDE-kompatibel, VIM kann auch Symbolvervollständigung - und auch für Python. Recht einfach einzurichten und recht praktisch für den Zugriff auf Systemfunktionen.
mongoengine - Python-API für Zugriff auf MongoDB mit einer an den Django-ORM angelehnten Struktur.
InfiniDB 1.0.2: Analytische Datenbank Engine für Datamining - Golem.de - hmm, auf MySQL aufbauend - keine Ahnung ob ich das als Empfehlung oder Abschreckung betrachten soll. Andererseits wäre eine DB speziell für Datamining-ähnliche Anfrageprofile durchaus manchmal sinnvoll - müsste ich also mal ausprobieren.
The Definitive Guide to Jython — Jython Book v0.91 documentation - ist drin was drauf steht. Bezieht sich auf Jython 2.5.1 und gibts auch als (aktualisiertes mit zusätzlichen Inhalten, die Open Source Version des Buches ist noch nicht voll aktualisiert) totes Holz von APress.
CLiki : FirstStepsWithAsdfAndAsdfInstall - weil asdf und asdf-install alles andere als intuitiv sind, hier ein Link auf ein Tutorial
HintsForAsdfAndOpenmcl – Clozure CL - und das ist wie man generell das asdf-install auf Clozure CL zum Laufen kriegt.
AppScale, an OpenSource GAE implementation - interessantes Projekt das die Google App Engine API nachbildet als Open Source Lösung für Selberhosting.
Clozure CL - nicht zum ersten Mal gelinkt, aber die derzeitige 1.4 Distribution ist mitlerweile richtig nett geworden, es gibt die ersten IDE Tools (Apropos, Listener, Inspektor, Editor) in einer benutzbaren Form und das Cocoa-Framework und die ObjC Bridge sind auch schon recht ausgereift. Außerdem ist es eines der am schnellsten startenden Lisps für den Mac. Bietet nette Möglichkeiten mal mit OS X APIs rumzuspielen.
Eucalyptus Community - und hier ein Projekt welches die AWS APIs (EC2, S3 und EBS) nachbildet. Interessant wenn man AWS-gehostete Systeme baut und später auf eigene Systeme wechseln will. Cloud ist ja ganz nett, aber man sollte eine Exit-Strategie haben für den Fall, dass der Anbieter die Grätsche macht. Passiert nicht? Erzählt das den potentiellen Kunden der SUN Cloud Lösung, die gerade von Oracle geschreddert wurde ...
denkspuren: Factor @ Heilbronn University - da hat jemand Factor als Programmiersprache in Kursen an der Uni benutzt und scheint recht angetan. Ich selbst mag Factor ja auch - so ein bischen kommt bei der Factor-IDE das alte Lispmaschinen-Feeling rüber und die Sprache ist einfach nett kompakt. Allerdings merke ich oft, wenn ich damit herumspiele, dass ich dann doch sehr viel Zeit darauf verwende die passenden Abstraktionen zu finden - es gibt einfach Berge von mitgeliefertem Code und die Dokumentation ist zwar gut, aber es fehlt einfach ein bischen an Tutorials zur Nutzung des Codes. Best Practices und Cookbooks wären gefragt. Spaß macht Factor aber trotzdem.
django-extensions - sehr nützliche Tools für Django die sich in den Manage mit einhängen. Zum Beispiel ein Diff für SQL.
Scala 2.8.0 Beta 1 | The Scala Programming Language - Scala macht sich auch fertig für die nächste Release. Die Erweiterungen und Änderungen klingen recht gut - und der Impact auf bestehende Sourcen scheint gering zu sein.
fastutil - manchmal sicherlich ganz praktisch, Collections für Java die auf primitiven Typen aufsetzen und diese Collections dann platz- und performance-effizient implementieren. Also z.B. sowas wie ein Array von Bytes. Oder ein Map von Strings auf Booleans. Die Library hat so etwas über 1000 Kombinationen parat ...
IronPython in Action: Front Page - garnicht mitbekommen, es gibt mitlerweile ein Buch über IronPython, die Version von Python die in Microsofts .NET Umgebung läuft. Könnte für einige Firmenprojekte interessant werden, vor allem da es die ersten Erfolge von Django auf IronPython ja schon 2008 gab ...
High-Level Virtual Machine (HLVM) - interessantes Projekt für eine virtuelle Maschine. In OCaml geschrieben.
Trellis - Library zur eventgesteuerten Programmierung in Python. Die Idee ist, statt handgedengelter Callbacks einfach Regeln zu formulieren, die auf Objekte angewendet werden und bei entsprechenden Änderungen werden automatisch diese Regeln ausgeführt. Dabei sorgt das System für saubere Trennung dieser Events, so das keine Deadlocks auftreten.
Closure Compiler - eigentlich eher ein JavaScript-Optimizer denn Compiler - es entfernt überflüssiges, kompaktiert den Code, bereinigt einige langsame Dinge und ersetzt sie durch effizientere Varianten und liefert auch noch einige statische Tests auf dem JavaScript Code. Mal für Firmenprojekte geblogmarkt.
django-history-tables - könnte für ein Projekt in der Firma interessant werden, dort gibt es auch die Anforderung einer Historie von Datenänderungen.
EZ430-Chronos - Texas Instruments Embedded Processors Wiki - technische Details zu dem tragbaren Embedded System von TI.
How to create offline webapps on the iPhone - grauenhaftes Seitenlayout, aber interessante Doku wie man für das iPhone Web-Anwendungen baut, die dank HTML5 Application Cache auch dann funktionieren wenn das iPhone offline ist. Nachdem ich einen Moment überlegt hab, ob ich mir so eine TI Uhr kaufen will, und mich drüber ärgerte das die nicht als Taschenuhrversion existiert, hab ich dann wieder klar denken können und mich an mein iPhone erinnert ... (manchmal ist das naheliegende zu naheliegend)
Inheritance Patterns in JavaScript - interessanter Artikel darüber, welcher Klassen- und Vererbungsstrategie in JavaScript der Vorzug zu geben ist. Hauptsächlich für JavaScript-Framework-Hacker interessant, denn bei den anderen wird in der Regel eine Technik schon von den Frameworks gewählt worden sein.
Syntensity - sieht interessant aus, sowas wie ein Open-Source-Gegenpol zu Unity 3D. Derzeit noch kein Mac Client, aber bei Open Source sind die Chancen recht hoch das was kommt.
TI hits home run with Chronos sportswatch wireless dev kit - das ist interessant. Eine Armbanduhr zum Hacken - Wireless, Accelerometer, Druck und Höhensensoren, LCD Anzeige, Temperatursensor, und ein Developer-Kit und Tools (Hardware-Tools in diesem Fall). Und auch noch bezahlbar (50 Dollar für die Uhr!). Wer also mit einem kleinen Embedded System rumhacken will, und das dann immer dabei haben will, warum nicht eine Armbanduhr nehmen?
A Postfunctional Language - in letzter Zeit gibts häufiger mal Diskussionen, ob Scala wirklich eine funktionale Sprache ist. Hier die Aussagen dazu vom Erfinder von Scala selber, Martin Odersky.
Kindle Development Kit - sowas könnte fast den Kindle (der DX ist ja schon recht ordentlich groß im Display) wieder interessant werden lassen. Allerdings kann Amazon immer noch Content remote löschen beim Kindle.
ABCL-web - ein Framework um Java-Servlets mit Common Lisp zu programmieren, kann auch direkt .war Files erzeugen. Ich werd zwar warscheinlich nie jemanden in der Firma davon überzeugen können Common Lisp für Webentwicklung einzusetzen (da sind Chancen für Scala zumindestens in Teilbereichen schon deutlich höher), aber vielleicht kann man es ja mal für irgendwelche Hacks benutzen.
Armed Bear - nur damit ich es nicht wieder verliere, abcl ist ja das Java-Common-Lisp, aber unter dem Namen Armed Bear gibt es auch ein Lisp names XCL, einer neuen Native-Code-Compiler-Implementierung für X86 und X86-64 Systeme. Könnte ich mir mal irgendwann angucken (wobei es da ja schon viele nicht ganz kompatible Lisps gibt und mit CCL und sbcl zwei ziemlich gute Implementierungen da sind).
Clojure 1.1 and Beyond - wohin sich Clojure in der nahen und mittleren Zukunft entwickeln wird. Wobei einiges darin darauf hin deutet, das Clojure auf längere Zeit eher experimentellen Charakter haben wird - was beim produktiven Einsatz zu berücksichtigen ist, neue Versionen können durchaus größere Änderungen sowohl in der Sprache, der Basisbibliothek und vor allem dem Laufzeitverhalten haben.
pylint (analyzes Python source code looking for bugs and signs of poor quality.) (Logilab.org) - für die Kollegen geblogmarkt, denn wenn Code-Standards entworfen werden, ist es ja auch nett wenn man wenigstens einen Teil davon automatisch prüfen kann. Ausserdem kann pylint (eingeschränkte) statische Analyse von Python code machen und komisch aussehende Teile als Warnungen auswerfen.