Ich war auf der
Nach dem Eröffnungssong von Bella Morningstar berichtete Dean McNamee von Plask. Laut Konferenzbeschreibung ist Plask „a multimedia programming environment. It brings together many of the recent advances in web-related technologies, graphics rendering, and languages, and brings them away from the web.“ Plask sei wie Processing auf Speed!
Peter van der Zee plädierte für mehr Tools. In Bezug auf Entwicklerwerkzeuge befinde sich JavaScript – trotz Firebug, Web-Inspector und Chrome-Debugger – noch im Mittelalter. Als Beispiel für ein gelungenes Entwicklungswerkzeug präsentierte Van der Zee Zeon.js. Dabei handelt es sich um ein Tool, das im Browser läuft und mit dessen Hilfe man in einer Text-Area JavaScript bearbeiten kann. Zeon.js findet dabei Probleme, ist jedoch anders als bekannte Tools wie JSLint interaktiv – und stellt so eine wirkliche Hilfe und kein Hindernis beim Entwickeln dar. Zeon.js benutzt einen selbst geschriebenen Parser und statische Analsyse, um Probleme zu finden. Van der Zee führte tiefer in dieses Thema ein und ermutigte die anwesenden Entwickler, ähnliche Werkzeuge zu schreiben, um die Arbeit mit JavaScript zu vereinfachen.
Aaron Quint ist der Autor von sammy.js. Frameworks seien laut Quint keine Religion, sondern sollten vielmehr Probleme lösen. Statt Hypes zu folgen, sollten sich Entwickler wieder mehr ihren eigentlichen Aufgaben widmen und weniger fanatisch im Hinblick auf Technologien und Frameworks eingestellt sein.
Marijn Haverbeke, der Autor des Buchs „Eloquent JavaScript“ und des Minifizierers uglify.js, beschäftigte sich in letzter Zeit vermehrt mit Front-End-Performance, dem DOM und hardwarebeschleunigtem Rendering. In seinem Talk präsentierte er seine Erkenntnisse.
Paul Bakaus, der Autor von jQuery-UI, ist inzwischen CTO bei der Social-Game-Schmiede Zynga. Er zeigte, welche Probleme es auch heute noch gibt, wenn man Spiele im Browser entwickeln möchte. Er plädierte dafür, alte Browser (< IE 9) nicht länger zu unterstützen. Zur Lösung der Probleme des Scrollens und des Viewport-Verschiebens vor allem auf mobilen Endgeräten präsentierte er Scroller und Viewporter, die beide ab heute als OpenSource auf Github zur Verfügung stehen.
Jan Kleinert und Paul Kinlan stellten Web-Intents vor, die das Konzept der Intents auf Android-Smartphones („An intent is an abstract description of an operation to be performed…“) auf den Webbrowser übertragen. Statt eine Vielzahl von Diensten für Image Hosting, Social Bookmarking usw. zu integrieren (und den Benutzer damit zu verwirren), spezifiziert eine Anwendung lediglich einen Intent (wie „Sharing“ oder „Image Editing“). Der Webbrowser schlägt dann dem Nutzer Dienste vor, die genau dieses Feature bieten und bei denen er bereits registriert ist. Web-Intents könnten die Art, in der Webanwendungen Dienste dritter Webanwendungen integrieren, grundlegend verändern, sofern sie sich durchsetzen können.
Philip Tellis zeigte detailliert und umfassend, wie sich Netzwerke mit JavaScript im Browser messen lassen. Gegen Ende seines Talks, der bis dahin einer der interessantesten war, zeigte er, wie sich ein Netzwerkscanner im Browser schreiben lässt, der automatisiert Cross-Site-Request-Forgery-Attacken durchführen kann.
Jakob Mattson hielt ein Plädoyer für eine neue dynamische Sprache, die JavaScript ablösen sollte, da letztere zu statisch und zu wenig formbar sei, um den Ansprüchen an eine moderne, dynamische Sprache gerecht zu werden. Auch Sprachen wie CoffeeScript, die JavaScript erzeugen, sind laut Mattson kein Ausweg.
Alon Zakai stellte Emscripten vor, das es ermöglicht, C/C++-Code im Browser laufen zu lassen. Dazu nutzt Emscripten die LLVM (Low Level Virtual Machine). Ähnlich wie ein Java-Compiler Bytecode erzeugt, erzeugt LLVM-GCC (ein GCC-Compiler, der die LLVM unterstützt) Bitcode. Diesen Bitcode, der sehr viel einfacher als C/C++-Code ist, kann Emscripten zu JavaScript kompilieren. Standardbibliotheken bringt Emscripten gleich mit, so dass sich C/C++-Bibliotheken direkt im Browser nutzen lassen. Selbst komplexe Anwendungen wie das Computerspiel Quake laufen so im Browser. Dieser Talk war mehr als beeindruckend.
Als Überraschungsgast trat Bendan Eich, der Schöpfer von JavaScript, auf. Er zeigte, welche Features voraussichtlich in ES6 (ECMAScript 6th Edition) enthalten sein werden. Außerdem konnte er RiverTrail präsentieren, das paralellisierbare Arrays in JavaScript implementiert. In einer grafischen Demo mit Web-CL zeigte er, dass eine paralellisierte Implementierung des Demos zehnmal so schnell lief wie eine sequentielle Implementierung.
Sein Talk entsprach im Wesentlichen dem Vortrag, den er auf der Capitol.js gehalten hatte. Er lässt sich auf seiner Website komplett einsehen.
Tomasz Janzcuk von Microsoft zeigte, wie sich leichtgewichtige Node-Anwendungen (Singe-Page-Anwendungen, die auf node.js aufbauen) kostengünstig skalieren lassen. Es lassen sich nicht nur einzelne Node-Instanzen pro virtualisierter Maschine, sondern auch innerhalb derselben verschiedene Node-Prozesse starten. Statt einzelner Node-Prozesse lassen sich zudem auch leichtgewichtige Threads verwenden. Dies ist aber nicht effektiv genug: Erst mit dem Verwenden von isolierten Kontexten innerhalb einzelner Threads lassen sich die Betriebskosten einer leichtgewichtigen Node-Anwendung signifikant drücken.
Andrea Giammarchi von Nokia berichtete von Problemen, die beim Entwickeln von HTML5-Apps auf neuen Endgeräten (Mobile und Tablet) auftreten. HTML5 ist kein fester Standard und die Implementierungen in verschiedenen (mobilen) Browsern sind noch sehr unterschiedlich. Er konnte Lösungen und Workarounds für gängige Probleme aufzeigen. Dieser Talk schien direkt aus der Praxis zu kommen und Giammarchis Tipps erscheinen sehr wertvoll.
Jed Schmidt rockte den Saal mit seinem Vortrag über 140byt.es.
Jakub Siemiątkowski implementierte Voxels in JavaScript. Wenn eine 3D-Welt nicht aus Polygonen sondern aus Würfeln zusammengesetzt wird, dann nennt man diese Würfel Voxel bzw. die Welt Voxelspace. Voxel sind sehr speicher- und rechenzeitintensiv. Trotzdem konnte er eine – wenn auch langsame und nicht besonders stabile – Implementierung live demonstrieren.
Lea Verou hielt einen sehr umfangreichen Talk über Polyfills. Das sind Softwarekomponenten, die fehlende Implementierungen von spezifizierten Features in Webbrowsern durch JavaScript nachimplementieren. Wenn ein Browser das spezifizierte Feature selbst implementiert, dann werden die Polyfills nicht verwendet, sondern die native Implementierung des Browsers führt das Feature selbst aus. Es handelt sich also um Softwarekomponenten, die nur so lange fortbestehen sollten, bis die jeweiligen Features von allen Zielbrowsern unterstützt werden.
James Coglan verwendete Websockets, um nahezu alle Laptops im Raum fernzusteuern, um darauf Musik wiederzugeben.
David Coallier demonstrierte node-php, womit sich PHP-Anwendungen in Node ausführen lassen. Durch node-php sind Node und PHP nicht länger Konkurrenzplattformen, sondern lassen sich gemeinsam in einer Webanwendung nutzen.
Tom Robinson, einer der Autoren des Cappuccino Webframeworks, hielt einen Talk über Compiler und Interpreter. Er führte anschaulich und durch Beispiele in die Welt von Compilern ein, die selbst in JavaScript implementiert sind oder es als Zielsprache erzeugen. Jeder Entwickler sollte selbst in der Lage sein, einen eigenen Compiler für eine eigene (domänenspezifische) Sprache zu schreiben, denn dies ist nicht so schwer, wie es auf den ersten Blick erscheint.
Douglas Campos präsentierte dyn.js, eine JavaScript-Implementierung auf der Java Virtual Machine. Anders als Rhino, das noch auf Java 1.2 aufbaut, verwendet dyn.js „Invoke Dynamic“, ein neues Feature der JVM seit Java 7. Durch „Invoke Dynamic“ kann JavaScript für die JVM sehr viel einfacher und evtl. sogar performanter implementiert werden, als dies noch durch Rhino erfolgt.
Michael Aufreiter hielt einen sehr interessanten Talk über data.js, eine JavaScript-Biblothek zum Bauen von datengetriebenen Webapplikationen. Es bietet Features zur Defintion, Manipulation und Persistierung von Graphen in Node und / oder im Webbrowser. Data.js ist die technische Basis von substance.io, einem webbasierten Dokumentenmanagementsystem.
Erik Corry führte in den neuen Garbage Collector von Googles V8 ein. Zudem konnte er Tipps zeigen, um Memory-Leaks zu vermeiden.
Michal Budzyinski hielt einen unterhaltsamen Talk über anaglyphe 3D-Darstellung – jene bunten Bilder, die über zweifarbige Brillen erst dreidimensional wahrgenommen werden. Er konnte in einer Live-Coding-Session eine Demo entwickeln, in der Side-By-Side-Bilder der NASA anaglyph im Browser dargestellt werden. Dazu verwendete er das Canvas-Element und JavaScript.
Beendet wurde die Konferenz durch zwei sehr emotionsgeladene Talks: James Whelton stellte das Projekt „Coder Dojo“ vor, in dem Kinder unterrichtet werden. Ein T-Shirt, das von Brendan Eich getragen wurde, wurde zugunsten dieses Projekts für 1.500 € an die Veranstalter versteigert. Chris Williams hielt schließlich das Schluss-Plädoyer, in dem er alle Anwesenden zu einer positiveren Einstellung im Umgang miteinander aufforderte.
Diese Konferenz war sehr gelungen – ein Lob an die Veranstalter!