Pharo Open Source Smalltalk. Sollte ich mir mal wieder angucken, denn es sieht mitlerweile sehr schick aus und die Installation ist wirklich trivial geworden. Pfiffig wie da ein Pharo.App Verzeichnis geladen wird, welches für OSX gleich die App ist und für Linux und Windows einfache Startwerkzeuge (LNK für Windows und .sh für Linux) mit enthalten sind. Ausserdem gibt es eine neue VM und das ganze ist schon richtig fix geworden. Und sieht auch nicht mehr so altbacken aus (leider immer noch GUI-im-Fenster und keine nativen Fenster).
programmierung - 14.11.2010 - 22.12.2010
pure klingt sehr interessant, auch wenn es natürlich mal wieder eine Nischensprache ist. Aber wenigstens mal wieder ein selten begangener (nicht unbedingt neu, aber nicht so oft in Compilern verwendet) Weg. Was besonders interessant ist: der Interpreter setzt voll auf die LLVM Infrastruktur und seit 0.45 kann Pure verschiedene Sprachen für die LLVM Backends existieren direkt integrieren (z.B. C/C++ und mit Faust eine Spezialsprache für Audioverarbeitung). Pure geht damit deutlich über einfache Scriptsprachen hinaus und bietet damit eine sehr interessante Alternative zu klassischen FFIs.
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.
rhodecode ist sowas wie bitbucket oder github. Benutzt wie bitbucket mercurial und bietet diverse Werkzeuge in der Oberfläche. Das besondere? Der Code ist frei und damit sowas wie Bitbucket zum selber hosten. Vielleicht eine Alternative zu Trac.
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.
RecordExtension - Mercurial. Genial, war mir bisher nicht aufgefallen. Damit kann man einzelne Patches zum Commit auswählen, wenn man mal mehrere Sachen in einem Rutsch gemacht hat, aber nicht zusammen committen will.
mrdoob/three.js - GitHub. 3D Engine in JavaScript. Eigentlich hab ich keine echte Anwendung derzeit für sowas, aber für Visualisierungen könnte das mal ganz praktisch sein. Und nunja, es ist einfach cool, allein das rechtfertigt ja schon ein Blogmark.
Namespacing in JavaScript. Alles was man dazu immer schon wissen wollte, aber nicht zu fragen gewagt hat. Oder auch: warum syntaktischer Support für Namespaces überbewertet ist und plain old objects reichen.
Wer mit Bytes in Clojure rumfummeln muss: gloss. Im Moment hab ich keine Anwendung dafür, aber mal geblogmarkt für später, wenn ich mal wieder mit Binärdaten zu tun habe.
Clojure Libs and Namespaces: require, use, import, and ns - 8th Light Blog. Einfach nur ein kurzer Abriss über die verschiedenen Namespace-Funktionen in Clojure.
slimv.vim - SLIME-like Lisp and Clojure REPL inside Vim with Profiling, Hyperspec, Paredit. Ganz interessant, da deutlich leichtgewichtiger und simpler zu installieren als Slime oder VimClojure oder eine der anderen dicken Lösungen. Und man kann einfach aus Vim heraus Common Lisp oder Clojure programmieren. Ist zwar derzeit nur im "rumspielen und gucken" Modus, aber klingt durchaus interessant.
Chromium Blog: A New Crankshaft for V8. Und damit wird JavaScript noch ne Runde schneller. V8 ist auch die Basis für Node.Js, womit es diese Performanceverbesserung in Bälde wohl auch für den Server gibt.
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 ...
chrisdickinson's wilson. Einen noch vor dem Mittagessen, denn das Framework orientiert sich stark an Django, und da ich ja Django-Fan bin, ist das sicherlich einen eigenen Link wert.
Modules - node. Viele Module für Node.js, mehr als ich auf die Schnelle durchgucken kann (oder will), also erstmal nur als for-future-perusal weggeblogmarkt.
persistence.js: An Asynchronous Javascript ORM for HTML5/Gears. Weil man ja dann doch immer mal Daten speichern will, hier ein Link auf eine Client-Side ORM Lib für JavaScript. Schaut ganz ok aus und könnte vielleicht auch für die Serverseite benutzt werden. (hab noch einen anderen Link dafür gefunden, der explizit Node.js mit MySQL unterstützt).
Express - node web framework. Gut, wenn man mit Node.js einfach mal schnell kleine Webservices bauen will. Ich finde das passt gerade gut zu Node.js Installationen und jQuery auf der Client-Seite. Im Moment drängelt sich JavaScript bei mir in viele Nischen, in denen vorher Python beheimatet war. Nicht zuletzt weil JavaScript tatsächlich eine gar nicht mal so üble Sprache ist.
Socket.IO ist eine kleine JavaScript Library, die Socket-Kommunikation vom Browser unterstützt und dabei verschiedenste Techniken anwenden kann und die beste verfügbare automatisch auswählt. Dadurch also auch über verschiedene Browser und Browsergenerationen funktioniert.
agr / ropevim / source – Bitbucket. Auch für das andere Tool, das mich an Spyder interessiert hat, gibt es eine Vim-Integration: Rope. Ein Refactoring Tool für Python Code. Bei einer genügend großen Codebasis nicht ganz uninteressant.
spyderlib - Project Hosting on Google Code. Guck ich mir gerade an, ist ein ziemlich interessantes Python Editor Teil mit vielen IDE Funktionen. Da es selber in Python geschrieben ist, integrieren sich diverse Python Tools sehr gut (Rope, Flake, PyLint).
Komodo Edit is a Free Open Source Editor for Perl, Python, Tcl, PHP, Ruby & Javascript. Sollte ich mir mal angucken, da TextWrangler kein Folding hat, BBEdit meiner Meinung nach einfach zu teuer ist und TextMate eine zu bescheidene Python-Folding-Unterstützung hat. Und wenn das Teil brauchbar unter den verschiedenen Systemen läuft, hätte ich endlich wieder einen einheitlichen GUI Editor (ja, ich weiß, vim ist auch überall verfügbar, aber die GUI Version macht mir einfach keinen Spaß).
Update: äh, hallo, ActiveState? Ich verstehe ja, dass ihr eure "günstige" IDE (Sonderangebot! Nur 330 $) an den Mann bringen wollt, aber wenigstens den Source-Outline hätte Komodo Edit doch wohl verdient gehabt, oder?
Python Package Index : lupa 0.18. Bringt LuaJIT2 und Python zusammen, so dass man von Python auf Lua-Scripte zugreifen kann, die dann von LuaJIT kompiliert werden.
Weil ich gerade von Lua geschrieben habe: probablycorey's wax liefert eine Objective-C Bridget zu Lua, speziell für iOS Geräte. Also iPhone oder iPad Apps mit Lua schreiben.
Have tracing JIT compilers won? | Lambda the Ultimate. Spannende Diskussion in der auch Mike Pall (LUAJit), Brendan Eich (Mozilla JägerMonkey) mitdiskutieren (und speziell LUAJit ist derzeit ja King of the Mountains was Performance angeht). PyPy wird auch zwischendurch erwähnt, allerdings noch auf einem deutlich älteren Stand - die neue 1.4 zeigt schon deutlich besser was mit PyPy machbar ist.
PyPy Status Blog: PyPy 1.4: Ouroboros in practice. Und damit ist PyPy jetzt auch bei der JIT in 64bit angekommen. Ausserdem funktioniert VirtualEnv jetzt problemlos, wenn man eine aktuelle Version installiert. Und schnell ist es auch immer noch.
IKVM.NET Home Page liefert eine Java VM in .NET - man soll damit sogar so verrückte Sachen machen können, wie z.B. Scala 2.8 auf .NET laufen zu lassen.
MacRuby » An Introduction to GCD with MacRuby. Grand Central Dispatch ist einer der cooleren Techniken die von Apple in der letzten Zeit auf OS Ebene gekommen sind. Und MacRuby hat da direkte Unterstützung für. Sehr interessant (auch wenns natürlich dann nur in der OSX Welt funktioniert).
Als Gedankenstütze geblogmarkt: Zach's Journal - Making a small Lisp project with quickproject and Quicklisp. Einfach weil ich sonst quickproject und ähnliches eh wieder vergesse. Mit Clozure CL 1.6 tuts auch Quicklisp recht vollständig (speziell ist cl-fad funktionsfähig und daher kann man einen grösseren Stapel von Paketen endlich zum Fliegen kriegen). So langsam kriegt Zach einen Stapel von Tools zusammen für Common Lisp, mit dem es dann doch wieder Spaß macht damit rumzuspielen. Auch wenn ich warscheinlich nie der große Emacs-Fan werde, egal wie sehr andere auf das Teil für Lisp schwören.
Higher Order Javascript liefert viele Denkansätze über JavaScript Programmierung (und CoffeeScript) und wie man funktionale Programmierung sinnvoll in JavaScript nutzen kann. Schließlich ist JavaScript eine durchaus mächtige Sprache mit interessanten Abstraktionen, die man ruhig mal nutzen kann.
Backbone.js ist ein interessantes Projekt, welches eine echte Backbone-Struktur für komplexere JavaScript Projekte liefert. Es implementiert Model/View/Controller Struktur für JavaScript und liefert eine Reihe von Collection-Klassen mit entsprechenden APIs mit. Was es nicht liefert, ist ein dicker Stapel UI-Kram oder die 1001ste Implementierung von DOM Navigation oder ähnliches - es sollte also gut zusammen mit Sachen wie jQuery harmonieren, denn es liefert eigentlich nur die Grundstruktur auf der man aufbauen kann, wenn man nicht mehr alles im DOM speichern will. Es gibt allerdings schon ein paar Überlappungen, zum Beispiel bei Events - die werden ja auch von jQuery zur Verfügung gestellt, allerdings sind sie hier nicht an DOM-Knoten gebunden, sondern an beliebige Objekte.
Datejs - An open-source JavaScript Date Library - macht einen guten Eindruck, so für die diversen Formatparsereien und Kalenderbezogenen Geschichten.
Pixie Scheme III. Für das iPad. Zum Rumdoodlen vielleicht nicht ganz uninteressant (sofern es auch brauchbare Integration in das iOS API hat).
How I build-in Tumblr in my Drupal install ist schon sehr nah an dem dran was ich mit Tumblr auf meiner Homepage machen will. Jetzt muss ich nur noch ein minimales Widget schreiben und den Code da reinfummeln und statt auf die regulären Postings nur auf die Fotos gehen. und ich hab wieder Tumblr-Fotos auf der Homepage.
Update: wer rechts guckt kann die Tumblr Fotos wieder sehen. Also auf der Homepage. Klappt ganz gut und frisst keine Zeit mehr. Irgendwann pack ich das Plugin das ich da gebaut habe mal zusammen, im Moment ist es noch etwas roh.
API | Tumblr - weil ich vielleicht ja doch noch etwas mehr damit machen will als im vorigen PHP Beispiel benutzt wurde.
Display photos from Tumblr (using JSON method) ist PHP, aber das sollte ich eigentlich leicht auf JavaScript umbauen können und dann nur client-seitig laufen lassen.
hyphenator könnte ich mir mal angucken, denn dann läuft die Silbentrennung einfach mit JavaScript auf dem Browser. Ist ja sowieso nur interessant für die Webseiten selber, Feed-Reader müssen eh selber rendern.
Update: jau, sieht gut aus. Jetzt kann ich mir meine Homepage wieder angucken, ohne Pickel zu bekommen, und die Integration war mit dem custom package builder von denen sehr simpel - ein paar Checkboxen durchgehen, eine optimierte Download-Version der Library bauen und diese im Head des Blogs einbinden. Als Klasse hab ich einfach entry-content genommen, dadurch werden alle Beiträge (und nur die) mit Silbentrennung versorgt. Und da Client-seitig, betrifft es weder den Feed noch irgendwelche anderen internen Wege.
pyfpdf liefert PDF Generierung ohne Abhängigkeiten von anderen Paketen. Allerdings steht da vorne ein "ported from PHP" dran. Aber wen das nicht abschreckt und wer einfache Ausgaben in PDF produzieren will, ist damit vielleicht garnicht so schlecht bedient.
Processing.js v1.0 Released und es ist immer noch ein echt nettes Spielzeug. Jetzt ist es von den Features auch fast gleichauf mit dem großen Processing.
F# in MonoDevelop and cross-platform web sites & screencasts | Blog | TomasP.Net hat eine Menge Informationen über F# unter Mono auf Linux und OSX.
JQTreeTable benutzt zwar nicht DataTables, aber ist trotzdem ganz interessant, denn es liefert eine Finder-ähnlichen Tabellendarstellung für hierarchische Daten.
JLOUIS Ramblings: On Erlang, State and Crashes erklärt gut was es mit dem "in case of error, crash" Mantra von Erlang so wirklich auf sich hat - nämlich den Aufbau einer Anwendung als Schichten von Supervisor Prozessen und Error Handlern. Wesentlich daran ist eben die Struktur der Anwendung - einfach nur crashen reicht nicht, die Architektur muss auch darauf vorbereitet sein.