Am Rande notiert ...

iphone – What happens to JavaScript code after app is compiled using Titanium Mobile – Stack Overflow. Interessierte mich auch, die Frage, daher mal hier geblogmarked. Ganz interessant, was da passiert, geht deutlich weiter als z.B. was PhoneGap macht.

Titanium Desktop – Node.js Prototype « Appcelerator Developer Center. Titanium steht ja sowieso auf der Liste zu testender Sachen drauf, weil es neben PhoneGap ja einer der Wege ist, wie man JS+HTML Code zu Apps und Desktop-Anwendungen machen kann. Und hier zeigt einer der Developer, wie man einen node-Server in den Desktop integrieren kann. Wäre auch noch mal recht interessant, wobei das wohl nicht unbedingt dann auch mit iOS und Android läuft (denn dort ist man ja zwingend auf die vom System zur Verfügung gestellte JS Engine im Browser-Widget eingeschränkt, wenn man dynamischen Code von außen laden will).

Embedding and running Node.js within a Firefox XUL extension. Schon beeindruckend, was man mit Firefox und dessen Infrastruktur so alles machen kann. Theoretisch müsste man das auch so umbauen können, dass diese Erweiterung nur in einem single-site-browser läuft, der dann direkt die Homepage des eingebetteten Servers öffnet und so sich Desktop-Anwendungen in JavaScript bauen können, die komplett autonom sind (und wer sich drüber wundert, warum ich diese ganzen JS-auf-Desktop Sachen sammel: damit könnte man mit Hilfe von Phonegap und etwas Glue dann nicht nur Apps für iOS und Android bauen, sondern mit gleichem Code auch Desktop-Anwendungen).

NodObjC. Keine Ahnung ob ich das wirklich will, aber mit dieser Library kann man ObjC Frameworks mit JavaScript bridgen. Interessant könnte das zum Beispiel im Context von PhoneGap werden, wenn man Zugriffe auf iOS native APIs machen muss, die noch nicht von PhoneGap zur Verfügung gestellt werden (allerdings braucht es Node.js als Basis, keine Ahnung ob das auch schon unter iOS läuft).

topcube. Sollte ich mir auch mal genauer angucken – eine Desktop-App, welche einen eingebetteten Webserver (node.js) und Browser (GTKWebKit) beinhaltet. Damit kann man dann Desktop-Anwendungen auf Basis von JavaScript und Node.js bauen – z.B. auch Amber Smalltalk in eine kompakte Desktopanwendung umbauen. Leider ist die OSX Unterstützung noch etwas mager.

HyperCard, Visual Basic and the Importance of the Novice Developer. Interessanter Artikel, der HyperCard in Relation zu Handheld Developer stellt. Und nachdem ich mit Handheld Developer rumgespielt habe, würde ich sagen die liegen garnicht mal so völlig falsch – es ist eine nette visuelle Umgebung zur Erstellung von iOS Webanwendungen mit integriertem Hosting mit dem man recht fix einen  Prototypen zusammenbaut und sogar Serverside-Scripting in JavaScript bekommt. Ok, es ist nicht ganz billig, aber es gibt ja eine Testversion um zu schauen ob man daran Spaß haben könnte. Die Anwendungen sind tatsächlich auch garnicht so auf iOS fixiert, denn im Prinzip ist es einfach HTML5 und JavaScript – und sollte also auch mit Androiden funktionieren (probiert habe ich das noch nicht).

ResponsiveSlides.js · Responsive jQuery slideshow. Bin ja Lightbox-Fan, aber diese kleine Library gefällt mir so auf den ersten Blick auch gut – sie ist simpel und einfach einzusetzen und macht nicht tausend Sachen auf einmal, sondern zeigt einfach nur Bilder in einer Slideshow. Speziell zur Animation von Headergrafiken zum Beispiel könnte das ganz interessant sein.

Learn Smalltalk with ProfStef. Amber hatte ich ja schon mal, das Smalltalk 80 auf JavaScript-Basis. Kommt jetzt mit einem node.js basierten Webserver der minimales WebDAV implementiert und ist von der Sprache zumindestens soweit kompatibel, dass der Autor das ProfStef Tutorial portieren konnte – und das hab ich hier verlinkt. Einfach mal 5 Minuten mit einem Smalltalk in der Webseite spielen.

Technical Overview : Dart : Structured web programming. Von den ganzen derzeitigen „wir erfinden JavaScript neu“ Ansätzen ist der hier fast schon am interessantesten – im Prinzip ist es eine klassische OO Sprache mit einem C#-ähnlichen Featureset und Abbildung auf JavaScript. Aber was bei diesem System interessant ist: es ist von vornherein darauf ausgelegt die Entwicklung auch gleich in einer Browserumgebung zu machen. Aber eben nicht stumpf innerhalb eines Browsers, sondern als eigene IDE, die einen Runtime-Browser integriert. Und der Entwickler des Projektes ist der Newspeak (voriger Post) Entwickler, der hat da schon sehr interessante Ideen für eine IDE gezeigt. Derzeit ist der Dart-Editor allerdings weitaus stärker an typischen IDEs orientiert als an den meiner Meinung nach innovativeren Ideen der Datenbank-basierten IDE.

dust ist eine Template-Library für JavaScript, die in Kanso benutzt wird. Von der Funktionalität her sehr ähnlich zu Django Templates, allerdings mit leicht abgewandelter Syntax.

Kanso Framework. Das klingt sehr interessant – ein Framework für die Programmierung von JavaScript CouchApps. Also Anwendungen, die in JavaScript geschrieben sind, und komplett aus einer CouchDB-Installation laufen. Der Server muss einfach nur eine CouchDB Instanz bieten und das wars schon an Voraussetzungen – und da CouchDB von Hause aus Replikation mitbringt, kann man problemlos hochskalieren oder Fehlertoleranz realisieren – einfach einen Cluster aus mehreren CouchDB Instanzen bilden. Genauso interessant sind Replikationen der Produktionsdatenbank auf einen anderen Topf wie z.B. die private Entwicklermaschine oder diverse andere Szenarien die mit CouchDB so machbar sind. Da das ganze auf CommonJS als Sprachbasis aufbaut ist JavaScript auch nicht ganz so schlimm als wenn es roh verwendet würde.

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.

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).

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.

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.

CodeMirror. Wenn man Editoren in Webseiten haben will, die Syntax von Programmen einfärben. Sieht ganz  nett aus und könnte vielleicht für ein paar Sachen interessant sein, z.B. da wo ich restructured Text eingeben lasse, oder wo Python-Code in der Datenbank gespeichert wird. Ist eine JavaScript Library die im Browser einfach eingehängt wird in die Textareas.

flot – Attractive Javascript plotting for jQuery. Mal wieder was für die Zahlenfresser, bzw. deren visualisierenden Kollegen – Zahlenwüsten in gut aussehenden Graphen darstellen, und das ganze als jQuery Plugin. Muss ich mir definitiv mal näher angucken, könnte bei speziell einem Projekt interessant werden.

Jtalk Smalltalk. Keine Ahnung wieso das bisher an mir vorbeigeschlichen ist – aber eine recht vollständig wirkende Smalltalk-Implementation in JavaScript inklusive IDE mit Class-Hierarchy-Browser ist schon durchaus bemerkenswert, auch wenn es nicht das erste Projekt dieser Art ist (Clamato wäre ein anderes, aber das scheint größtenteils tot zu sein).

jQuery vs MooTools: Choosing Between Two Great JavaScript Frameworks. MooTools hab ich ein bischen aus den Augen verloren, früher (bevor ich mit jQuery und dessen vielen Plugins Bekanntschaft gemacht habe), war es meine bevorzugte Library für JavaScript. Von daher mal interessant zu lesen, wie es sich mit jQuery vergleicht (aus der Sicht eines MooToolers geschrieben).

The Node Beginner Book » A comprehensive Node.js tutorial. Falls ich mir wirklich Node.js nochmal näher angucken will, könnte das (freie!) Buch hier hilfreich sein. Oder auch für andere, die das gleiche vor haben.

JQuery-Wysiwym – PushingKarma. Noch was das für mich interessant werden könnte: ein Markdown (unter anderem) Konverter in JavaScript. Kann benutzt werden um einen Life-Editor für Markdown-Code zu bauen. Ob man das für Restructured Text erweitern könnte? Denn das ist eines der Probleme mit denen ich mich öfter mal rumschlage, das ich für Docbook/XML Output eben ReST als Input habe, aber dann keinen geeigneten grafischen Editor.

pdf.js reached its first milestone. Und weil wir gerade bei JavaScript und PDF sind: mit dem Projekt hier kann man PDF Dateien ohne PDF Reader anzeigen – nur mit HTML5 und JavaScript. Sehr interessant, wenn das weiter ausgebaut wird, könnte das an vielen Stellen den PDF Reader völlig überflüssig machen.

PDFKit — A PDF Generation Library for Node. Ich glaub ich muss mir doch nochmal wieder Node.js angucken. Und CoffeeScript. Diese PDF Generierung sieht sehr interessant aus und könnte bei einigen Projekten ganz praktisch sein. Wobei mir bei solchen Libraries immer der Highlevel-Teil fehlt – das eigentliche Layouten. Wann baut jemand eine TeX Engine in JavaScript? Hyphenator liefert ja schon eine sehr gute Silbentrennung, aber was einfach fehlt ist eine gute Layoutengine zur Verteilung von Texten auf definierten Seiten. Und bitte auch mit guter Unterstützung für Tabellensatz.

Parenscript. Darf man nicht vergessen, wenn man von Lisp-in-JavaScript redet, denn das ist wohl der Urvater und am weitesten ausgebaute Dialekt. Besonderheit ist auch noch: keine Runtime, es wird wirklich nur JavaScript direkt erzeugt ohne Abhängigkeiten (ausser natürlich den Abhängigkeiten die man selber in den Code reingebracht hat). Hatte ich wohl im alten Blog schon mal, aber egal.

manuel/edgelisp. Weil ich nie die Finger von Klammern lassen kann – ein Common Lisp Dialekt und dessen Implementation, die nach JavaScript compiliert un den Lisp-Code im Browser ausführbar macht. Macht einen recht vollständigen Eindruck – viele andere Projekte zeigen nur die rudimentären Elemente, aber hier gibts auch schon generische Funktionen und Makros.

danlucraft/git.js. Wow, beeindruckend. Und potentiell sehr interessant – git als genereller Synchronisationsmechanismus ist ausgesprochen praktisch und Integration von Git-Funktionalität in Webanwendungen könnte einige Probleme gut lösen (z.B. wenn es um Synchronisation mit anderen Stellen geht, oder natürlich für Dokumenteninterne Versionierung). Muss ich mir mal genauer angucken bei Gelegenheit, ich hätte da schon die eine oder andere Idee wie ich das einsetzen könnte. Ist im Moment noch recht rudimentär, aber beobachten lohnt sich sicherlich.

DropKick – a jQuery plugin for beautiful dropdowns. Sieht nett aus, auch wenn es natürlich hauptsächlich optisches Gimmick ist. Aber manchmal sind optische Gimmicks auch notwendig.