javascript - 4.11.2009 - 23.12.2010

Oni Labs: Apollo. Interessante JavaScript-Runtime für Browser die StratifiedJS nach JavaScript übersetzt und damit erlaubt asynchronen Code weitestgehend so zu schreiben wie man synchronen Code schreiben würde. Gerade mit Ajax kann das sehr praktisch sein, weil der eigentliche Algorithmus nicht mehr in den vielen Callbacks verbuddelt wird.

Jquery Snowfall Plugin 1.4 | Somethinghitme. Ich glaub mich knutscht ein Schneemann. Und wer nicht selber hacken will, kann auch das Wordpress Snow Storm plugin benutzen.

mrdoob/three.js - GitHub. 3D Engine in JavaScript. Eigentlich hab ich keine echte Anwendung derzeit für sowas, aber für Visualisierungen könnte das mal ganz praktisch sein. Und nunja, es ist einfach cool, allein das rechtfertigt ja schon ein Blogmark.

Namespacing in JavaScript. Alles was man dazu immer schon wissen wollte, aber nicht zu fragen gewagt hat. Oder auch: warum syntaktischer Support für Namespaces überbewertet ist und plain old objects reichen.

Chromium Blog: A New Crankshaft for V8. Und damit wird JavaScript noch ne Runde schneller. V8 ist auch die Basis für Node.Js, womit es diese Performanceverbesserung in Bälde wohl auch für den Server gibt.

chrisdickinson's wilson. Einen noch vor dem Mittagessen, denn das Framework orientiert sich stark an Django, und da ich ja Django-Fan bin, ist das sicherlich einen eigenen Link wert.

Modules - node. Viele Module für Node.js, mehr als ich auf die Schnelle durchgucken kann (oder will), also erstmal nur als for-future-perusal weggeblogmarkt.

persistence.js: An Asynchronous Javascript ORM for HTML5/Gears. Weil man ja dann doch immer mal Daten speichern will, hier ein Link auf eine Client-Side ORM Lib für JavaScript. Schaut ganz ok aus und könnte vielleicht auch für die Serverseite benutzt werden. (hab noch einen anderen Link dafür gefunden, der explizit Node.js mit MySQL unterstützt).

Express - node web framework. Gut, wenn man mit Node.js einfach mal schnell kleine Webservices bauen will. Ich finde das passt gerade gut zu Node.js Installationen und jQuery auf der Client-Seite. Im Moment drängelt sich JavaScript bei mir in viele Nischen, in denen vorher Python beheimatet war. Nicht zuletzt weil JavaScript tatsächlich eine gar nicht mal so üble Sprache ist.

Socket.IO ist eine kleine JavaScript Library, die Socket-Kommunikation vom Browser unterstützt und dabei verschiedenste Techniken anwenden kann und die beste verfügbare automatisch auswählt. Dadurch also auch über verschiedene Browser und Browsergenerationen funktioniert.

FrontPage - Conkeror. Mal weggeblogmarkt als Kuriosum und weil mich solche Projekte einfach faszinieren - ein Browser in JavaScript mit einer an Emacs angelehnten Architektur (nur eben JavaScript statt ELisp).

Higher Order Javascript liefert viele Denkansätze über JavaScript Programmierung (und CoffeeScript) und wie man funktionale Programmierung sinnvoll in JavaScript nutzen kann. Schließlich ist JavaScript eine durchaus mächtige Sprache mit interessanten Abstraktionen, die man ruhig mal nutzen kann.

Backbone.js ist ein interessantes Projekt, welches eine echte Backbone-Struktur für komplexere JavaScript Projekte liefert. Es implementiert Model/View/Controller Struktur für JavaScript und liefert eine Reihe von Collection-Klassen mit entsprechenden APIs mit. Was es nicht liefert, ist ein dicker Stapel UI-Kram oder die 1001ste Implementierung von DOM Navigation oder ähnliches - es sollte also gut zusammen mit Sachen wie jQuery harmonieren, denn es liefert eigentlich nur die Grundstruktur auf der man aufbauen kann, wenn man nicht mehr alles im DOM speichern will. Es gibt allerdings schon ein paar Überlappungen, zum Beispiel bei Events - die werden ja auch von jQuery zur Verfügung gestellt, allerdings sind sie hier nicht an DOM-Knoten gebunden, sondern an beliebige Objekte.

Datejs - An open-source JavaScript Date Library - macht einen guten Eindruck, so für die diversen Formatparsereien und Kalenderbezogenen Geschichten.

How I build-in Tumblr in my Drupal install ist schon sehr nah an dem dran was ich mit Tumblr auf meiner Homepage machen will. Jetzt muss ich nur noch ein minimales Widget schreiben und den Code da reinfummeln und statt auf die regulären Postings nur auf die Fotos gehen. und ich hab wieder Tumblr-Fotos auf der Homepage.

Update: wer rechts guckt kann die Tumblr Fotos wieder sehen. Also auf der Homepage. Klappt ganz gut und frisst keine Zeit mehr. Irgendwann pack ich das Plugin das ich da gebaut habe mal zusammen, im Moment ist es noch etwas roh.

hyphenator könnte ich mir mal angucken, denn dann läuft die Silbentrennung einfach mit JavaScript auf dem Browser. Ist ja sowieso nur interessant für die Webseiten selber, Feed-Reader müssen eh selber rendern.

Update: jau, sieht gut aus. Jetzt kann ich mir meine Homepage wieder angucken, ohne Pickel zu bekommen, und die Integration war mit dem custom package builder von denen sehr simpel - ein paar Checkboxen durchgehen, eine optimierte Download-Version der Library bauen und diese im Head des Blogs einbinden. Als Klasse hab ich einfach entry-content genommen, dadurch werden alle Beiträge (und nur die) mit Silbentrennung versorgt. Und da Client-seitig, betrifft es weder den Feed noch irgendwelche anderen internen Wege.

Processing.js v1.0 Released und es ist immer noch ein echt nettes Spielzeug. Jetzt ist es von den Features auch fast gleichauf mit dem großen Processing.

JQTreeTable benutzt zwar nicht DataTables, aber ist trotzdem ganz interessant, denn es liefert eine Finder-ähnlichen Tabellendarstellung für hierarchische Daten.

jQuery lightBox plugin ist sehr nett. Es benutzt kein Prototype und kein Scriptaculous, sondern einfach nur jQuery - was sehr hilfreich ist, wenn eine Site sowieso schon jQuery benutzt. Und mit dem jQuery LightBox Plugin für Wordpress kann man es sehr einfach für Bilderanzeigen in seinem eigenen Blog benutzen.

don’t look » columnManager - interessantes jQuery Plugin welches effizientes Spalten ein/ausblenden für Tabellen ermöglicht. Wenn man das mit dem DataTable Plugin verheiraten könnte, wäre es eine sehr praktische Sache.

John Resig - Simple JavaScript Inheritance - sehr nettes Pattern mit dem man Klassenbasierte Vererbung mit JavaScript simulieren kann (für die Situationen, wo diese Struktur mehr Sinn macht als das normale Prototypensystem von JavaScript).

jQuery column cell selector - bramstein.com - noch ein jQuery Plugin, dieses liefert einen praktischen Pseudo-Selektor für Spalten in einer Tabelle um dann mit JavaScript dort Änderungen vorzunehmen.

Building iPhone Apps with HTML, CSS, and JavaScript - hatte ich das schon? Egal. jqTouch zur Erstellung von iPhone-Web-Anwendungen. Da ich da gerade in der Firma mit rumspiele, mal geblogmarkt.

PhoneGap - wenn die Site mal da ist, soll da eine Anwendung zur Wandlung einer Web-Anwendung in eine native Anwendung (mit erweitertem Zugriff zu native Features des iPhone oder anderer Devices) sein. Mal vorgemerkt.

emscripten - LLVM-Bytecode in JavaScript compilieren, mit Schleifenerkennung etc. Ist sogar schon benutzbar um nicht-trivialen C/C++ Code nach JavaScript zu compilieren. Der Autor sieht z.B. einen Sinn in der Portierung von vorhandenem Code für Spiele in die JavaScript Welt, das ganze ist also durchaus ernst gemeint. Keine Angabe ob man einen Linux-Kernel auf einer Webseite damit booten kann ...

pjs4ipad - Project Hosting on Google Code - das ist ein wirklich cooles Projekt: processing.js in einer Variante für das iPad, bei der HTML5 local storage benutzt wird um Programme lokal zu speichern, so dass man mit einem eigenen Programm auch offline arbeiten kann. Interessant zum Beispiel um unterwegs mal ein bischen zu doodeln (kleine Programme schreiben, die interessante optische Effekte haben). Und weil es alles WebApp ist, trifft die AppStore-Restriktion auch nicht.

TIDE 2.0 beta - mal angucken, eine JavaScript IDE die komplett im Browser läuft.

Building iPhone Apps with HTML, CSS, and JavaScript - wer keinen Bock auf AppStore hat und wem eine WebApp reicht, hier gibts ein Buch darüber. Unter CC Lizenz.

jquery-aop - Project Hosting on Google Code - AOP bietet (unter anderem) einfacheres programmiertes Debugging und ist sehr praktisch wenn man Frameworks nachträglich modifizieren will, aber nicht wildes Monkey-Patching will. Da jQuery mein bevorzugtes JavaScript Werkzeug ist, sollte ich mir das mal genauer angucken.

AdBlock for Safari - mit Safari 5 kann man jetzt Ads blocken. In diesem Fall ist eine Chrome Extension nach Safari portiert - scheintbar sind die recht ähnlich (beide basieren ja auf JS + HTML5 als Technik).

Marak's JSLINQ at master - GitHub - nette kleine JavaScript Bibliothek, die eine Query-Sprache für JSON Daten bietet. Orientiert sich an LINQ von Microsoft, hat aber derzeit nur einfache Queries implementiert. Trotzdem vielleicht ganz interessant um JavaScript Code flexibler und besser lesbar zu gestalten, wenn mit größeren JSON Datenmengen gearbeitet wird.

jcotton - Animationen und Grafiken mit JavaScript und Canvas bauen. Sieht ganz interessant aus.

Perfection kills » What’s wrong with extending the DOM - weil ich immer wieder mal mit Kollegen diskutiere warum JQuery besser als Prototype: Prototype benutzt massiv die Erweiterung von Prototypen, wärend JQuery fast alles an seinem eigenen JQuery Objekt aufhängt und daher viel kooperativer im Zusammenspiel mit anderem JavaScript ist.

YourHead Software - bin noch am überlegen, ob ich mir deren Plugins für RapidWeaver hole. Aus dem letzten MacHeist hab ich ja RapidWeaver recht günstig kriegen können und die ersten Experimente sind wirklich nett. Und die YourHead-Plugins bauen alle auf JavaScript auf anstelle von Flash, das könnte gut für statische Websites benutzt werden. Außerdem ist deren internes Datenformat einfach Ordner voller XML-Files, da könnte man auch was mit Tools machen.

dajaxproject.com - easy to use ajax library for django - sollte ich mir vielleicht mal angucken, das aktuelle Projekt wird unter Umständen recht viel Ajax benutzen und wenn man den Anteil JavaScript reduzieren kann wär das ja durchaus erstrebenswert.

persistence.js: An Asynchronous Javascript ORM for HTML5/Gears « I am Zef - sehr interessant, ein Object-Relational-Mapper in JavaScript, der Objekte auf HTML5 Datenbanken abbildet. Sowas könnte sehr interessant für Offline-iPhone-Webanwendungen sein, denn nackte Datenbankprogrammierung (nackte Datenbank, nicht nackter Programmierer) macht nicht wirklich immer Spaß.

michaelv.org - sieht aus wie Windows 3.1 und hat eine Reihe von klassischen Windows-Programmen. Aber alles in JavaScript gedengelt. Ja, da ist ein DOS Prompt. Und ein Webbrowser. Und alles mögliche andere. Einfach mal rumklicken.

Closure Compiler - eigentlich eher ein JavaScript-Optimizer denn Compiler - es entfernt überflüssiges, kompaktiert den Code, bereinigt einige langsame Dinge und ersetzt sie durch effizientere Varianten und liefert auch noch einige statische Tests auf dem JavaScript Code. Mal für Firmenprojekte geblogmarkt.

How to create offline webapps on the iPhone - grauenhaftes Seitenlayout, aber interessante Doku wie man für das iPhone Web-Anwendungen baut, die dank HTML5 Application Cache auch dann funktionieren wenn das iPhone offline ist. Nachdem ich einen Moment überlegt hab, ob ich mir so eine TI Uhr kaufen will, und mich drüber ärgerte das die nicht als Taschenuhrversion existiert, hab ich dann wieder klar denken können und mich an mein iPhone erinnert ... (manchmal ist das naheliegende zu naheliegend)

Inheritance Patterns in JavaScript - interessanter Artikel darüber, welcher Klassen- und Vererbungsstrategie in JavaScript der Vorzug zu geben ist. Hauptsächlich für JavaScript-Framework-Hacker interessant, denn bei den anderen wird in der Regel eine Technik schon von den Frameworks gewählt worden sein.

jQuery 1.4 Released – The 14 Days of jQuery - neue Version von jQuery ist raus, viele Änderungen.

HeyChinaski.com » Blog Archive » HeyGraph Javascript and canvas graphing tool - Grafikbibliothek die Graphen automatisch ausrichtet und anzeigt. Könnte für das eine oder andere Projekt mal interessant werden.

qb.js: An implementation of QBASIC in Javascript (part 1) - Steve Hanov's Programming Blog - drin was drauf steht. Irgendjemand hat verdammt zu viel Zeit.

The Render Engine - Javascript Game Engine - da JavaScript mit modernen Browsern wie Safari 4 und Chrome (und Betas von Firefox) ja mitlerweile ernstzunehmende Performance liefert, kann man auch so verrückte Sachen machen wie Rendering-Engines für Spiele in JavaScript schreiben.

JavaScript web workers: use visitors to your website to do background data processing for you. : programming - verrückte Idee: auf Webseiten mit JavaScript Worker für distributed computing einrichten. Jeder Besucher beteiligt sich an der Berechnung von irgendwelchen Daten. Ausser natürlich er benutzt sowas wie NoScript oder PithHelmet und filtert den Kram raus.

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

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

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.