Am Rande notiert ...

GNAT GPL for LEGO MINDSTORMS NXT – Ravenscar Edition. Und für Freunde von Robotern aus Lego und bondage-and-discipline-Programmiersprachen gibts jetzt Ada für Lego Mindstorms NXT. Schließlich gibt es nicht so oft Ada-Links zu vermelden.

Cross-domain communications with JSONP, Part 1: Combine JSONP and jQuery to quickly build powerful mashups. Weil ich es gerade für einen Kollegen brauchte und daher danach gesucht hab, dann gleich mal blogmarken. jsonp ist im Prinzp einfach eine Konvention für JSON-Dienste die auf einen Parameter callback= damit reagieren, dass sie das generierte JSON einfach als Parameter an einen Funktionsaufruf geben und als Funktionsnamen den Inhalt des callback-Parameters einsetzen. Dadurch sind die Daten auch aus anderen Domains abrufbar als der, aus der das eigentliche Script kommt – normales AJAX verbietet das ja.

ipdb macht den Python Debugger etwas hübscher und bedienbarer indem es die Hilfsmittel von ipython integriert. Wenn man sowieso mit ipython arbeitet ist es vielleicht eine gute Idee auch ipdb zu installieren. Oder man nimmt pdbpp, welches ähnliche Features ohne ipython zur Verfügung stellt (z.B. könnte man das mit bpython kombiniert einsetzen).

rad2py – Rapid Aplication Development platform for python. Huch, wieso kenne ich das noch nicht? Sieht interessant aus, wenn auch in der Beschreibung etwas Kopflastig. Und es ist noch in einem sehr frühen Stadium (erster voller Prototyp für November 2011 geplant).

RMoD: Fuel. Und noch ein Smalltalk-Link – hier eine Persistenz-Library komplett in Smalltalk ohne spezielle Unterstützung der VM, aber trotzdem guter Performance und guter Abbildungsmöglichkeit für alle möglichen Arten von Objekten.

SandstoneDb, Simple ActiveRecord Style Persistence in Squeak. Eine sehr simple Ein-Platz-Datenbank für Pharo, die zum Beispiel interessant ist, wenn man kleine Desktop-Anwendungen in  Pharo bauen will. Also so die klassischen GUI-Tools, die man so für den Eigengebrauch zum Beispiel macht. Und ja, heute ist Smalltalk Tag bei rfc1437.

Coral — Pharo Smalltalk for scripting. Oh, das ist nett, das ist eines der Probleme die ich immer mit Smalltalk habe: ich kann zwar in der IDE und im Image arbeiten und dann eine headless-Anwendung exportieren für den Server, aber sobald ich ausserhalb des Images mal schnell ein Script brauche, muss ich die Sprache wechseln. Coral liefert für dieses Problem die Antwort: ein kleiner Wrapper, eine minimale Syntaxerweiterung und ein minimales Image um mit Pharo Smalltalk normale Scripte schreiben zu können.

tode – tODE – the Object centric Development Environment. Ein bischen stagnant in der Entwicklung, aber trotzdem interessant: eine IDE, die auf Pharo Smalltalk aufbaut. Das Besondere: sie läuft im Browser, bietet aber dort die ganzen Smalltalk-üblichen Entwicklungswerkzeuge an. Im Prinzip könnte man damit also sich ein gehostetes Smalltalk-Image als Entwicklungsumgebung für das iPad installieren und von unterwegs damit spielen (Pharo und Squeak passen gut in die Browseroberfläche, weil sie ja auch sonst in der Regel nicht als native Windows daher kommen, sondern als Windows-in-Windows – und hier halt einfach Windows-im-Browser).

CouchDB: Die Definitive Referenz. Oh, das CouchDB Buch von O’Reilly gibt es auch als Online-Buch und dann auch noch in Deutsch. Sicherlich für den einen oder anderen interessant, der keine Lust hat sich durch englische Bücher zu wühlen. Die Übersetzung ist allerdings (noch?) nicht komplett, man stößt also immer wieder auf englische Kapitel. Aber es ist ein Anfang.

Installable Web Apps – Google Code. Da gibts etwas Hintergrund dazu wie man Webanwendungen zu installierbaren Webanwendungen oder hosted Apps umbauen kann. Damit kann man dann den Chrome als Runtime für Anwendungen benutzen, die vom Verhalten schon verdammt nah an normale Anwendunge sind – Amazons Online Kindle zeigt das sehr gut. Programmiert wird halt in JavaScript, aber das hat ja auch wesentlich weniger Schrecken als noch vor ein paar Jahren. Als Packaged Apps kann man dann auch all das machen, was Chrome Extensions können (und kann damit auch nochmal über den Umfang von normalen Webanwendungen hinaus).

Update on UIKit lighthouse platform. Hmm, hab ich gar nicht mitbekommen – QT hat auch in 4.8 Unterstützung für UIKit, das Framework von iOS, drin. Damit kann man sich also iOS Apps bauen, aber auf QT aufbauend. Da stellt sich mir doch die Frage, wie das dann mit PyQt oder PySide aussieht – Apple mag Interpretercode ja nur dann nicht, wenn er nachgeladen wird. Die App selber darf aber ruhig damit geschrieben sein.

Modula-3 Resource Page. Weiter bei den Nischensprachen – Modula-3 hat mich ja immer fasziniert, weil es eine pragmatische und praktikable Erweiterung der Wirthschen Sprachenwelt war und dabei eine Menge interessanter Sprachkonstrukte in ein bekanntes imperatives Sprachsystem integrierte. Und da geht die Entwicklung bis heute weiter, der Download hat sogar Binärpakete für Darwin (den Unix-Unterbau von OSX), allerdings derzeit nur 32bit (und ich denke mal keine Bridge zu Objective-C und damit zu den Cocoa APIs).

Magpie Guide: Welcome. Wo wir doch gerade bei Nischensprachen sind: Magpie ist mal wieder eine Sprache für die JVM. Diese hier sieht so ein bischen ähnlich aus wie eine Mischung aus Scala und Ruby, aber die Konzepte sind schon deutlich anders. Besonders nett ist Multidispatch – generische Funktionen, die abhängig von all ihren Parametern und deren Typen die passende Version wählen. Erinnert so ein bischen an CLOS in dem Aspekt. Ausserdem gibt es volle Closures und Funktionen und Blöcke sind first-class Objekte im System. Ausserdem gibt es mit Quotations einen Ansatz für Metaprogramming, wobei ich da allerdings immer noch den Lisp-Weg für ungeschlagen halte (einfach weil bei Lisp die Strukturen des Parsetrees 1:1 auf die eigentliche Syntax und die Listen als interne Repräsentation passt, während bei Sprachen mit Algol-ähnlicher Syntax das ganze wesentlich indirekter ist). Was ich persönlich auch angenehm finde: Magpie ist sehr textuell orientiert, nicht so stark Sonderzeichenlastig. Liest sich für mich einfach angenehmer.

Home Page for ATS. Nischensprachentag bei RFC1437. Interessant ist die Sprache, weil sie den Anspruch erhebt die Performance von C erreichen zu können, da die internen Typen auf Maschinentypen und maschinennahe Formen reduziert werden können – wie z.B. Pointerarithmetik – ohne die Typsicherheit und Runtime-Sicherheit von gemanagten Systemen zu verlieren. Also so ein bischen den Kuchen essen und behalten. Dazu kommen einige interessante Inspirationen (zum Beispiel Modula-3 für das Modulsystem). Kombiniert mit einer nicht zu wilden Syntax, die angenehm kompakt wirkt. Ebenfalls interessant: die Sprache hat unter anderem den interaktiven Beweis der Korrektheit von Programmen zum Ziel, und bietet dafür einige sehr spannende Tools an – was gerade bei Low-Level-Programmen interessant ist, wie z.B. Kernelfunktionen oder Steuerungssysteme.

the „useless“ language. Ziemlich verrückte Sprache – sowas die Forth, aber alle Befehle und Syntax besteht aus einzelnen Zeichen. Dazu kommen noch ziemlich seltsame Beschränkungen für Funktionsdefinitionen (maximal 64 Zeichen auf einer Zeile und nur ein if oder while oder vergleichbares in einer Funktion). Besonders faszinierend ist der in U geschriebene U->C Compiler. Der Entwickler der Sprache hat ein ganzes Buch über Programmierung in U geschrieben. Aber Vorsicht: die Farbwahl des Autors ist gewöhnungsbedürftig …

Xcode4 / Objective Pascal – Available Files. Wenn man mal mit Pascal in der Xcode4 Umgebung spielen will, ist das sicherlich ganz gut als Start. Dort wird beschrieben wie man FPC in die Umgebung einhängt, es gibt fertige Templates für Projekte und noch lustiger: es wird beschrieben wie man iOS Geräte in Pascal programmiert. Back to the Future! Oder Back from the Future?

extpascal – Ext JS wrapper for Object Pascal. Weil, ich wollte doch schon immer mal meine Webanwendungen mit Pascal programmieren und ihnen ein Ajax-GUI verpassen. Weil es geht. Und jeder RIA-Hipster einen Herzinfarkt bekommt, wenn er die Sourcen ansieht.

sausage.js – examples – The Core API. Interessante kleine JavaScript Lib, die die Navigation in großen Dokumenten deutlich erleichtert, dabei aber nicht mit Navigationsbuttons erschlägt – einfach rechts mit der Maus hovern, da gibt es visuelle Markierungen für die Größe der Sektionen des Dokumentes und da wo man hovert, kommt ein Button den man zum Direktsprung benutzen kann. Meiner Meinung nach deutlich weniger aggressiv in der Darstellung als Flexible Nav. Allerdings hat Flexible Nav natürlich den Vorteil, dass man nicht erst hovern muss, um die Navigation zu sehen.

Okito.net — On SproutCore 2.0. Über die aktuelle Version des Frameworks, das hinter icloud.com werkelt (da haben wohl ein paar Developer ihre NDA verletzt, als sie sich icloud.com genauer angeguckt haben). SproutCore gibt es schon länger, aber die Version 2.0 hat einiges an Veränderungen gebracht und ist ein Rewrite in wesentlichen Teilen. Das Ziel ist immer noch nativ aussehende Anwendungen nur mit JavaScript und Browser zu bauen.

Pascal Script | RemObjects Software. Wohl eher aus der Reihe „Kuriositäten die man im Netz so findet“ – eine Scripting-Engine, die eine weitestgehende ObjectPascal-ähnliche Syntax hat und in Delphi und Lazarus (FreePascal RAD IDE) integriert werden kann.

Get Started Guide « PhoneGap. Nur mal geblogmarkt, weil ich das garantiert später nochmal brauche, wenn ich mit Phonegap und Android rumspiele. Ziemlich  holperig, wäre doch schon nett, wenn Phonegap einfach ein fertiges Projekttemplate mitliefern würde. Aber nunja, es geht jedenfalls – mein Hello World taucht auf. Auf dem Simulator. Und ich muss kein fieses Java dafür anpacken, sondern nur fieses JavaScript.

Python, SymPy and Quantum Physics. Bisher waren NumPy/Matplotlib sowie SymPy für mich mehr oder weniger zwei Welten – in diesem Blogpost wird gezeigt, wie man diese beiden verbinden kann, also seine Funktionsdefinitionen über SymPy symbolisch erarbeiten und dann nach NumPy überführen um dort numerische Untersuchungen zu machen. Was gerade im Zusammenhang mit der qtconsole von ipython interessant ist, weil die nur matplotlib Plots inline anzeigt, SymPy Plots aber in einem eigenen Fenster (da diese über pyglet laufen), was zur Speicherung eines Arbeitsergebnisses eher blöd ist.

wsgi_lite. Da ich ab und zu mal „roh“ gegen WSGI programmiere nicht ganz uninteressant für mich – ein verschlanktes WSGI, welches simplere Aufrufkonventionen für Middleware und Applikationen definiert und damit einfach den Code noch etwas weiter reduziert. Für ganze Apps bringt es in der Regel nicht so viel wie für Middleware, da man Apps üblicherweise ja mit einem Webframework schreibt und das einem schon diesen ganzen Teil erleichtert.

Issue 438 – pyglet – pyglet 1.1.3 fails on Snow Leopard. Ach menno, das ist jetzt echt ärgerlich. Pyglet wird von Sympy benutzt um mathematische Ausdrücke auszugeben. Dummerweise benutzt Pyglet auf OSX aber Carbon – und das ist nur 32bittig. Und alle Versuche von mir da irgendwas auf 32bit zu zwingen waren vergebens – eigentlich geht das per Environment Variable oder alternativ mit dem arch Tool, aber aus irgendeinem Grund (wahrscheinlich wegen interner indirekten Aufrufe von Programmen) wird das bei Python ausgerechnet nicht so gemacht wie dokumentiert. Ärgerlich, weil Sympy schon länger (nicht erst seit der QT Konsole) auf der Liste der auszuprobierenden Sachen steht.

Innovations in iPython. Sehr interessante Sachen, die bei ipython passieren – damit wird das schon sehr ähnlich zu typischen Mathe-Umgebungen ala Maxima oder Mathematica. Jedenfalls wenn man Sympy und solche Sachen installiert. Die QT Konsole hat bei mir jedenfalls nach etwas rumprobieren und nachinstallieren von Paketen mit Homebrew funktioniert. matplotlib kriege ich aber generell nicht auf Lion installiert, da hakt noch irgendwas, schade – das wäre auch interessant mit dem pylab Modus. Hier gibt es noch mehr zur QT Konsole.

WSGI and the Pluggable Pipe Dream | Armin Ronachers Thoughts and Writings. Einfach mal lesen, damit man einen guten Überblick bekommt, was WSGI eigentlich so alles ist und was damit machbar ist und wo es vielleicht auch mal klemmt.

Gambas – Gambas Almost Means Basic. Ok, und jetzt wirds richtig wild, aber ich dachte mir nach RealBasic kann ich nicht umhin auch noch auf Gambas zu linken, einer Art VisualBasic Clone für verschiedene Systeme. Kann  mit unterschiedlichen Datenbanken und unterschiedlichen GUI Libraries. Und eine Portierung nach OSX ist mitlerweile (Juni 2011, also noch recht frisch) auch da, klingt also auch für die Zukunft spannend, denn Linux und Windows werden schon unterstützt. Und ja, ich weiss, „richtige“ Programmierer rümpfen über sowas wie VisualBasic die Nase, aber um mal eben grafische Tools zusammenzudengeln ist es sehr brauchbar und gerade für Gelegenheitsprogrammierer interessant.

TL Omnis. Und noch so ein RAD Oldtimer – Omnis war eine der ersten RAD Umgebungen mit der ich gespielt habe und sie war recht ungewöhnlich für die damalige Zeit. Keine „richtige“ Programmierung damals, nur GUI Tools zur Verdrahtung und Verbindung in Kombination mit berechneten Feldern, aber diese sehr leistungsfähig. Sehr starker Fokus auf grafische Werkzeuge für verschiedenste Zwecke (DB Design, Relationsmanagement, Reports, Formulare etc.). Schon erstaunlich was man alles findet, wenn man etwas nachbuddelt. Gibt übrigens eine freie Standardversion der Umgebung, man kann also einfach mal reingucken was es heute so alles kann.

Lazarus. Ich mein, wie kann ich denn sowas wie einen freien Delphi-Clone auslassen, wenn ich über IDEs und RAD Tools schreibe? Also hier der Link, gibt auch OSX Versionen davon. Und ist definitiv ein aktives Entwicklungsprojekt. Und hey, Pascal war meine erste Hochsprache nach Basic, als ich damals mit der Programmierung angefangen bin. Oh, und es gibt mit Objective Pascal eine ziemlich runde Bridge zu den Cocoa Frameworks. Update: boah, da kommt Nostalgie auf! Kommandozeilentools in Pascal bauen! Und die IDE ist gar nicht mal so übel, die kann was!

HyperNext Studio kannte ich überhaupt noch nicht. Ein HyperCard Clone für Mac, mit dem man auch Windows-Anwendungen erzeugen kann. Allerdings ist die letzte Version etwas älter, keine Ahnung ob die mit Lion noch läuft. Mittlerweile ist das Freeware (allerdings closed Source, ich vermute mal weil deren letzte Version halt schon älter ist). Und auch interessant: es bietet zwei Sprachen an, eine die HyperTalk nachempfunden ist und RBScript, ein objektorientiertes Basic aus Realbasic (einer anderen IDE für OSX und Windows). Ich vermute mal, HyperNext selber ist vielleicht mit Realbasic programmiert. Oh, und mit dem HyperNext Android Creator kann man auch Android Anwendungen mit HyperNext bauen. Der Android Creator ist allerdings kostenpflichtig (aber mit 60 Dollar nicht wirklich teuer). Und leider ist der nur für Windows verfügbar, nicht für den Mac. Update: wer Lion hat, kann es vergessen mit HyperNext Studio zu spielen, denn das ist PowerPC Code, und unter Lion gibt’s kein Rosetta mehr. Also Maximum an OSX Version ist Snow Leopard.