Google Apps Script — Google Developers. Interessant - JavaScript-Scripting für Google Apps wie GMail oder GDocs und so. Sieht gar nicht mal so uncool aus und hat jetzt auch ein Eclipse Plugin um die Scripts offline editieren zu können.
javascript
You are Missing the Point of Promises. Schon etwas älter, aber eine interessante Aufstellung was Promises sind und sein sollen, wie sie aus der Hölle der Callbacks herausführen und was das eher theoretische Modell dahinter so her gibt. Und wo man es in JavaScript Libraries wiederfindet und in welchen Libraries es eher stiefmütterlich behandelt wird.
PyPy.js Update: A Proof-of-Concept JIT. Braintwister. Python mittels PyPy auf Javascript über asm.js. Mit aktivem JIT.
How To Create Your Own Chrome Extensions. Sollte ich mir mal genauer durchlesen. So das eine oder andere würde ich schon ganz gerne dem Chrome beifrickeln.
php.js - PHP VM with JavaScript. Einfach PHP Ausführung auf den Browser verlagern. Hey, dann haben endlich die Sicherheitslücken in PHP nur noch lokale Auswirkung für den User und nicht mehr für den Server!
Processing on iOS. Gerade drüber gestolpert. Drin was drauf steht - processing.js in einer spartanischen aber nutzbaren Mini-IDE. Nett für zwischendurch. Und passt irgendwie gut zum Tablett. Sketches beenden ist etwas hakelig, man muss oben auf einen Balken tippen oder drücken oder sowas, was einem keiner verrät. Aber sonst eigentlich alles klar. Es gibt noch zwei weitere die ich gefunden habe, eine kostet 89 cent und liefert eine Oberfläche analog PDE und die andere ist pr0c0d1n6 - ist zwar recht teuer mit vierfuffzig, aber hat dafür eine wirklich brauchbare IDE.
NovoCard. Jau, auf sowas hab ich die ganze Zeit gewartet. Leider nicht für Android bisher, sondern fürs iPad, aber das könnte mein altes iPad für eine Weile wiederbeleben - ein Hypercard-Clone für iOS, der mit Scriptsprache kommt die in diesem Fall auf JavaScript aufbaut. Alles onboard auf dem iPad, dadurch ideal für Basteleien unterwegs. Und generell bin ich der Meinung, dass die Hypercard-Struktur ziemlich genial auf Tablett-Rechner passt. Werd ich wohl mal mit rumspielen.
XKCD plots in d3. Und damit in JavaScript und direkt im Browser. Wäre doch mal was für die Mathe-Fans da draussen, die immer meinen Plots posten zu müssen.
LLJS : Low-Level JavaScript. Ich versteh zwar nicht, was es bringt eine Low-Level-Sprache (JavaScript Dialekt mit C-ähnlichen Typdefinitionen und Konstrukten) nach JavaScript zu compilieren, was ja nun nicht gerade low-level im Ausführungsmodell ist, aber im Zweifelsfall gilt das Standardargument: weil es geht! Ist aber wohl eher ein Projekt das ich nur verlinke weil es seltsam ist, aber wohl nicht so schnell selber einsetzen werde.
linq.js - LINQ for JavaScript. Das was dran steht ist auch drin. LINQ für JS Objekte und Arrays. Was gerade bei strukturierten Daten aus Services die erst per JS im Browser gerendert werden durchaus den Code lesbarer machen kann.
rawson.js - a camera raw previewer in javascript. Jupp. Ein RAW-Modul für JavaScript. Schon verrückt, was so alles mit JavaScript gebaut wird. Wobei, nach dem im Browser laufenden PC Emulator, der Linux bootet, sollte mich nichts mehr erstaunen.
Ymacs -- An Emacs-like editor for the Web. Was der Titel sagt. Emacs bootet jetzt auch im Browser. Einen brauchbaren Editor gibts für Emacs aber immer noch nicht.
OscarGodson/EpicEditor. Das klingt interessant - ein Editor fürs Web der nicht einfach HTML produziert, sondern Markdown. Könnte für einige Projekte interessant werden.
Repo.js. Darüber hab ich die Source-Highlighter gefunden - ein kleines jQuery Plugin, welches auf einfache Weise ein github Repository in eine Webseite einbettet. Ganz praktisch, wenn man seine Projekte in eigenen Webseiten einbinden will und nicht die ganze Website an github abtreten will.
isagalaev/highlight.js. Gerade drüber gestolpert, kleiner Source Highlighter in JavaScript der mit einer Sprachheuristik arbeitet und so keine expliziten Angaben der zu färbenden Sprache braucht - er versucht einfach alle Sprachen durch und nimmt die mit den meisten erkannten syntaktischen Elementen. Mit jQuery VanGogh gibt es dafür auch noch ein jQuery Plugin.
LiveScript. Sieht interessant aus, ein Abkömmling von CoffeeScript, aber mit einer Syntax die stark an Haskell angelehnt ist und einem Prelude, der sich ebenfalls an Haskell orientiert. Man kann damit dann statt JavaScript in einer funktionalen Sprache arbeiten, die allerdings weiter versucht eine Balance zwischen funktionalen und imperativen Elementen zu halten - also nicht der pure-Ansatz wie bei Haskell.
PEG.js – Parser Generator for JavaScript. Drüber gestolpert als ich ein paar Parser-Implementierungen gesucht habe, unter anderem eben PEG basierte Parser Generatoren, denn ich habe für Markdown eine PEG Definition. Aber ich muss da wohl noch etwas Theorie studieren bevor ich das sinnvoll einsetzen kann. Oder ich löte mir doch den Parser mit der Hand - so kompliziert ist die Syntax von Markdown ja nicht wirklich. Und ich muss für mein Spielprojekt sowieso den Parser um diverse eigene Sachen erweitern.
Matasano Security - Matasano Web Security Assessments for Enterprises. Analyse von Kryptographie in JavaScript. Kurzfassung: Kryptographie in JavaScript ist in der Regel eine dumme Idee, da man das JavaScript aus einer nicht vertrauenswürdigen Quelle oder einem nicht vertrauenswürdigen Netz bezieht (würde man ihm vertrauen, wäre ja wohl kaum Kryptographie notwendig) und daher ein Henne-Ei-Problem besteht. In bezug auf das vorherige 0bin Projekt: dort ist die Kryptographie nicht eingebaut worden um den Benutzer zu sichern, sondern um den Betreiber des 0bin abzusichern - es ist also relativ egal für den Betreiber, ob die User sicher sind oder nicht, es geht dabei nur um "plausible deniability" für den Betreiber. Anders sieht es aber aus, wenn anstelle SSL einzusetzen eine Verschlüsselung in JavaScript implementiert wird.
sametmax/0bin. Interessanter Ansatz die Probleme des pastebin-hostings zu umgehen. Bei pastebin-ähnlichen Sites ist ja das Problem im Hosting, dass User jeden Kram posten und der Server-Betreiber dann schnell in Regress genommen wird. 0bin versucht das Problem so zu verschieben, dass der Betreiber nicht wissen kann, was in den Pastebins steht, da sie verschlüsselt abgelegt werden und die Verschlüsselung durch den Client per JavaScript passiert. Das klappt natürlich nur, wenn die Richter dann auch akzeptieren, dass der Serverbetreiber nicht wissen kann, was da läuft - und nicht zum Beispiel argumentieren, er solle dann halt eine andere pastebin-Software installieren bei der er es wissen kann und ihn trotzdem verantwortlich machen. Sicherlich aber ein interessanter Ansatz, speziell die Idee, den Key für die Verschlüsselung in den hash der URL (also das nach dem # in der Adresse) zu packen und so eine funktionerende URL zu haben, aber trotzdem dem Server den Key nicht zu liefern (denn der hash einer URL wird nur vom Client verwendet und nicht dem Server mitgeteilt).
sipML5 - The worlds first open source HTML5 client. Äh - jemand hat einen SIP Client in JavaScript geschrieben, der komplett im Browser läuft. Es baut auf WebRTC auf, einem Standard für Realtime-Kommunikation im Web.
backbone-fundamentals/index.md at master · addyosmani/backbone-fundamentals. Ein freies Buch (das es von O'Reilly auch als totes Holz oder elektronisches Holz geben wird) über backbone.js. Backbone.js liefert eine MVC-angelehnte Struktur für JavaScript Programmierung (wobei man sich fleißig streiten kann, was denn da nun genau der View und der Controller ist und ob es "reines" MVC ist - oder man programmiert einfach und ignoriert den theoretischen Ballast).
tuupola/jquery_lazyload. Für die Anzeige großer Mengen von Bildern eventuell interessant, weil man damit das Laden der Bilder so lange verzögern kann, bis der Benutzer tatsächlich auch zu den Bildern hinscrolled. Die Seite wird mit Platzhalterbildern schon vorgebaut und nur die Bilder wandern später über die Leitung. Ich glaube aber Infinite Scroll ist doch die bessere Lösung, da damit nicht nur Bilder, sondern generell Inhalte nachgeschoben werden können - und das arbeitet dann auch problemlos mit Masonry zusammen, so dass diese Inhaltsblöcke dann auch optisch gut verteilt werden können.
Hotcanvas: Realtime coding. Bin ja ein fan von Processing-ähnlichen Umgebungen, dies hier kommt dem recht nahe, läuft aber als interaktive Umgebung und sieht ganz nett aus. Ok, gibt sicherlich mitlerweile eine ganze Reihe von diesen Dingern, aber trotzdem, ich mag sowas.
Bilderarchiv | rfc1437. Mein Bilderarchiv wurde übrigens am Wochenende überarbeitet und kommt jetzt mit lustigem Javascript-Schnickschnack zum automatischen Kacheln daher. Nicht wirklich weltbewegend, aber interessanter als das vorherige, eher langweilige Format. jQuery Masonry ist der Hauptanteil der Arbeit. Nette kleine Javascript Library. Das interessanteste daran ist warscheinlich die Heuristik in meinem kleinen Plugin, mit dem ich die Bilder in Hoch/Quer/Quadratformate bringe, damit das ganze nicht durch eine Übermacht an Querformaten allzu langweilig wird. Leider bleiben noch immer Lücken im Bilderstrom, da könnte Masonry eigentlich noch gerne etwas intelligenter werden (und z.B. kleine Quadrate hochziehen). Oder ich muss mich nochmal an die Heuristik setzen und dafür sorgen, dass die Chancen für Lücken verringert werden.
JSIL - .NET to JavaScript compiler. Keine Ahnung, ob ich das schon hatte, aber es ist eines dieser verrückten Projekte die man ruhig zweimal linken kann. Da wird wirklich der .NET IL Code übersetzt - man kann also Programme im Browser laufen lassen, die eigentlich nicht wirklich dafür gedacht waren. Zum Beispiel soll ein Teil von XNA laufen, so dass man Spiele im Browser laufen lassen kann, die eigentlich für die XBox sind.
jQuery Masonry. Alternative zu BlocksIt. Auch mal angucken. Schiebt Blöcke sogar etwas aggressiver, ordnet auch die Reihenfolge notfalls um.
BlocksIt.js - Dynamic Grid Layout jQuery Plugin. Drin was dran steht. Klingt ganz interessant, muss ich mir mal angucken.
Cubism.js. So viele Projekte, so wenig Zeit. Aber mal geblogmarkt, wenn ich mal in der nächsten Zukunft mit Zeitreihenvisualisierung zu tun habe, denn dafür sieht das richtig gut aus.
Introducing Pivot.js. Hmm, definitiv mal angucken, Pivot sieht ganz nett aus, simples API und interessante Möglichkeiten. Ich hab da so ein Projekt auf der Arbeit, das könnte einige Reporting-Features gut gebrauchen. Und Offloading auf den Client ist manchmal eine durchaus gute Idee.
flatiron/plates. Eine interessante JavaScript Templating Engine, die einen etwas anderen Ansatz wählt als viele andere - es gibt keine eigene Template-Sprache, sondern nur HTML und JavaScript. Jegliche Logik ist im JavaScript und jegliche Struktur in HTML und beide sind recht stark getrennt. Anstelle einer Template-Sprache gibt es Funktionen zur genauen Spezifikation welche Elemente im HTML wie verändert werden sollen.
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.