Am Rande notiert ...

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.

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.