programmierung - 7.10.2009 - 18.11.2009

PyGoWave Server - keine Ahnung ob ich das schon hatte, aber gerade aus aktuellem Anlass wieder nach gesucht: eine Implementierung der Google Wave Idee in Python. Und das witzige: die Website darunter ist mit Django gebaut!

Python moratorium and the future of 2.x [LWN.net] - eine gute Zusammenfassung der aktuellen Diskussionen rund um Python Releases, speziell die Diskussion ob 2.6 das letzte 2er Python ist, oder ob das schon existierende 2.7er noch released wird, ob es danach auch noch 2.8 oder mehr geben wird, oder ob der Wechsel zu 3.x forciert werden soll.

in which things are mapped, but also reduced - ein wirklich nettes Beispiel der Agents in Clojure anhand eines Log-Analyzers. Berechnungen werden auf parallele Prozesse verteilt, ein zentraler Prozess liest und verteilt, am Ende wird alles gemerged. Also klassische map/reduce Technik. Schön wäre natürlich noch gewesen wenn das Lesen auch parallelisiert worden wäre, denn auf Plattesystemen mit vielen Spindeln kann paralleles Lesen durchaus schneller sein als sequentielles Lesen (besonders bei gigantischen Filegrößen wie sie von Tim Bray im originalen Problem postuliert wurden). Aber trotzdem nett mal ein kompaktes sinnvolles Beispiel für map/reduce in Clojure zu sehen. Die Sprache gefällt mir immer besser.

More Freedom Necessary as Top Developers Abandon iPhone - wenn Apple das nicht bald mal in den Griff bekommt, kann das eine ziemlich negative Wirkung haben. Denn wenn jetzt schon eingeschworene Apple-Schmieden wie Rogue Amoeba Apple die rote Karte zeigen, dann werden auf Dauer auch andere dort folgen. Und wenn dann im App Store nur noch alberne Taschenlampen brennen, wird Apple vielleicht merken, das ihr Vorgehen selten blöd war. Aber dann wird es zu spät sein ... (man schaue sich nur an, wie Palm den Palm Pre mehr oder weniger als Plattform ad absurdum geführt hat durch all das Heckmeck rund um deren Variante von App Store).

nothing new - da vergleicht jemand Go (Googles neue Systemsprache) mit Algol 68 - und die alte Tante Algol 68 kommt recht gut dabei weg.

warum Common Lisp nie wirklich Mainstream sein wird - der verlinkte Source dient nur dazu, um eine binary-ascii decoding/encoding Bibliothek in verschiedenen Common Lisps über einen automatisch decodierenden und encodierenden Stream zu verwenden. Was steht drin? Berge von #+ Markern mit diversen Common Lisp Implementierungen. Das ist keine Portabilität, das ist schlicht Moppelkotze.

Play framework - ein recht interessantes Framework für Java im Stile von Django oder Rails. In der Dev-Version 1.1 unterstützt es auch Scala für die Viewfunktionen, was dann wieder ganz interessant ist, denn egal wie nett das Framework ist, ich werd mir nicht Java roh antun.

Google Closure: How not to write JavaScript - klingt so, als ob die tolle Library bei Google vom Praktikanten geschrieben wurde ...

NetBeans support for Google App Engine - der Titel sagt schon alles. Netbeans gefällt mir übrigens relativ gut. Sieht zwar absolut arm aus (nicht sonderlich gut in Cocoa eingepasst - Eclipse macht da einen deutlich besseren optischen Eindruck), aber im Gegensatz zu den Alternative scheinen die Plugins recht gut zu funktionieren (Eclipse produziert komische Fehler, IntelliJ muss man erst die richtige Version vom Plugin für die richtige Version der IDE jagen gehen). Und das Clojure-Plugin von Netbeans scheint bis jetzt das netteste zu sein - die REPL ist echt gut.

The Enclojure REPLs (Not just for Netbeans!) - wie man die REPL aus dem Netbeans-Plugin auch standalone benutzen kann. Und das ist eine recht brauchbare REPL, mit netten Features.

The Go Programming Language - interessante Sprache die aus den Google Labs kommt. Viele Ideen drin, die das Programmieren angenehm machen können - und viele pragmatische Ansätze. Für mich liegt es in einer ähnlichen Kategorie wie D - also eine Systemsprache, die als Alternative zu C oder C++ eingesetzt werden kann. Es ist interessant, das dieses eher vernachlässigte Segment von Sprachen in letzter Zeit mal wieder frischen Wind bekommt.

:: Clojure and Markdown (and Javascript and Java and...) - interessanter Post, weil hier der Vorteil der gemischten Sprachen auf der JVM voll ausgespielt wird. Anstelle einen Markdown-Parser für Clojure zu schreiben, wird einfach einer in JavaScript über Rhino (JS in Java) benutzt. Womit dann auch sichergestellt ist, das sowohl Web-Client als auch Blog-Server die gleiche Implementierung von Markdown benutzen können.

for post in leo.blog():: Django-Jython 1.0.0 released! - für ein Projekt auf der Arbeit nicht unwichtig: Django-Jython hat fertig. Und mit dabei der Oracle-Client, den wir in dem Projekt auch dringend brauchen würden. Nett.

Acme::Don't - Perl-Leute sind seltsam!

avodonosov's abcl-idea - da ich gerade mit IntelliJ spiele (und den Plugins für Scala und Clojure dafür), hier gibts auch ein Plugin zur Integration von Common Lisp in Idea. Sogar mit der Möglichkeit Erweiterungen für Idea in Common Lisp zu schreiben (und einer eigenen Repl dafür zu haben). Müsste ich mal ausprobieren.

iWebKit - Make a quality iPhone Website or Webapp - noch so ein iPhone Web Framework.

jQTouch — jQuery plugin for mobile web development - for future use, iUI ist doch ein bischen spröde und native Anwendungen verlangen ja den Strafzoll von jährlich 79 Euro für das Developerprogramm. Für die paar Sachen die ich mache sind Webanwendungen warscheinlich häufig ausreichend.

Lazy Pythonista: Diving into Unladen Swallow's Optimizations - unladen swallow ist die Python-Variante für LLVM. Sieht immer interessanter aus.

Large Problems in Django, Mostly Solved: Search - interessantes Projekt: Haystack. Eine Erweiterung von Django um Volltextsuche mit einem Interface das sehr ähnlich zum normalen Datenbank-Interface von Django ist.

Parsing JSON in Arc - nichts weltbewegend neues, einfach nur Parser-Kombinatoren, aber man sieht ja nicht so sehr oft Code in Arc, dem Lisp-Dialekt von Paul Graham.

alandipert's step - ein Pico-Framework für Websites-Dengeln mit Scala. Sieht ganz witzig aus gerade für einfache REST Webservices in Scala.

hlship's cascade - und ein etwas weiter ausgebautes Framework mit einigen netten Features aber immer noch sehr kompaktem Code.

macourtney's Conjure - achherrjeh, noch ein framework für Clojure. Diesmal eines das ähnlich zu Rails ist. Nettes Detail: kommt mit H2 als Datenbank vorkonfiguriert und enthalten - H2 ist eine Datenbank in Java, ähnlich zu SQLite, klein, schnell, schlank. Kann aber auch andere Datenbanken.

weavejester's compojure - Pico-Webframework für Clojure. Vergleichbar zu Step für Scala oder web.py für Python. Einfach das absolut minimal notwendige um eine kleine Webanwendung zusammenzudengeln.

Bill Clementson's Blog: Clojure could be to Concurrency-Oriented Programming what Java was to OOP - interessanter Vergleich zwischen Erlang und Clojure bezüglich Multithreading.

(Field) - beim Schockwellenreiter gefunden und jau, das Teil sieht sehr interessant aus. Processing auf Steroiden? Jedenfalls deutlich offener was die Programmiersprachen angeht. Muss ich definitiv mal genauer angucken, denn einfache grafische Oberflächen ala Processing sind das was mir z.B. für Processing oder Abcl noch fehlen.

Underscore.js - funktionale Hilfsmittel für JavaScript.

UNITY: Game Development Tool - ist jetzt frei wie Freibier.

[Python-Dev] Reworking the GIL - klingt gut! Nein, das GIL wird nicht entfernt - aber das Scheduling wird überarbeitet und damit könnten einige der Probleme des Threading unter Python behoben werden.

exploring the mandelbrot set with your gpu - ziemlich coole Clojure Library die GPU-Nutzung mit Clojure ermöglicht.

The Self Handbook - da Self ja mitlerweile wiedererwacht ist, sicherlich ganz interessant. Ausserdem natürlich auch historisch interessant, denn Self hat prototyp-basierte OO-Systeme mehr oder weniger erfunden und ist in vielen Punkten immer noch hoch modern.

bamboo-language - "Bamboo is intended to provide an implementation of Smalltalk and Strongtalk for both the iPhone and Mac OS X, leveraging Apple's Objective-C runtime, LLVM, and Clang.". Gibt noch nicht viel Inhalt dort, also wohl eher als Absichtserklärung zu betrachten.

Enterprise scala actors: introducing the Akka framework - klingt ein bischen wie OTP (die Serverplatform für Erlang) für Scala. Könnte sehr interessant werden, mal beobachten.

pier - wer auf dem Mac mal mit Seaside und Anwendungen dafür rumspielen will, hier ist ein Projekt das eine Mac-Anwendung rund um ein Squeak mit Seaside und einem CMS gebaut hat. Macht einen ganz interessanten Eindruck (und ja, heute ist mal wieder wühlen-in-google-code-projekten Tag ...)

Snow project - eine GUI-Bibliothek für abcl (armed bear common lisp) auf Swing aufbauend.

xmlisp - und noch ein MCL Abkömmling (oder evtl. eher ein CCL Abkömmling). Also ein Common Lisp auf Mac, dieses hier mit spezifischen Erweiterungen für 2D und 3D Grafik und Game-Programmierung. Erinnert so ein bischen an Processing auf den ersten Blick.

MCL - das alte Digitool MCL (original Macintosh Common Lisp von Apple ursprünglich und davor Coral Common Lisp glaub ich) lebt nicht nur in Clozure Common Lisp weiter, sondern auch als direkter Abkömmling des ehemals kommerziellen Paketes. Mindestens für Lisp-Nostalgiker interessant. Leider nur mit Rosetta lauffähig, nicht direkter Intel-Code. Aber vielleicht kommt der ja noch?

rosado's clj-processing - wie man Processing und Clojure verheiraten kann. Damit müsste man eigentlich auch die GUI von Processing auf dem Mac so umbauen können, das Clojure anstelle Java benutzt wird. Zum Rumspielen vielleicht nicht ganz uninteressant.

ScalaCL: Reap OpenCL’s benefits without learning its syntax (Scala DSL for transparently parallel computations) - und wer mal mit OpenCL spielen will, der wird hier fündig, ganz ohne sich in die Hardware-Tiefen hinabbegeben zu müssen.

Spde - und dann gibts auch noch eine Verquickung von Scala und Processing. Ebenfalls recht interessant zum Rumspielen.

macwidgets - da ich ja mit Scala, Clojure, Jython und anderen JVM-basierten Sprachen spiele derzeit, sind diese Java-Widgets ganz interessant, da sie dem doch recht optisch mageren Swing ein bischen Mac-Look (leider nicht unbedingt feel) einbringen.

toolmantim's bananajour - witzige Idee, einfacher Weg um git Repositories in lokalen Netzen per Bonjour bekanntzugeben. Für Netze in denen mehrere Programmierer sitzen eine feine Sache, da man schnell rausfindet wer gerade an was hackt und welchen Stand die Repositories haben.

Let it crash (the right way…) - über "happy case programming" und warum es oft Blödsinn ist, jeden Fehler im Code abfangen zu wollen (weil der Programmierer oft garnicht wissen kann, wie der Fehler zu behandeln wäre).

Using Erlang to Build Reliable, Fault Tolerant, Scalable Systems | Oktober 12, 2009 - interessantes Fallbeispiel für den Einsatz von Erlang für fehlertolerante Systeme.

JAD Java Decompiler Download Mirror - weil ich da letztens nach suchte.

Useless Factor: Bitfields in Factor structs and the special style - und wieder mal ein Factor Link. Ich bin immer wieder begeistert. In diesem Fall eine Implementierung effizienter Bit-Strukturen. Ja, Speicher ist billig, aber es gibt genügend Situationen, bei denen man sowas auch heute noch braucht - und wenn man sowas schon implementiert, warum dann nicht gleich richtig wie hier?

Simpler long polling with Django and gevent - interessanter Einsatz von Greenlets (Python Microthreads).

MacRuby » MacRuby 0.5 beta 1 - das Projekt wird immer interessanter. Die LLVM-basierte VM ist eines der spannendsten Themen in letzter Zeit. Ich wünschte jemand würde ähnliches auch für Python angehen.

Finding Similar Items with Amazon Elastic MapReduce, Python, and Hadoop Streaming - mal angucken, klingt recht interessant.

I like Unicorn because it's Unix - guter Überblick über einen pre-forking Webserver in Ruby. Sowas auf Basis der vorhandenen Tools für Python wäre mal nicht schlecht. Vielleicht sollte ich meinen Toolserver mal wieder anpacken und auf multiprocessing umstellen und den ganzen Kommunikationskram mal auf Prozesse umbauen.