Tag 1, 09:35-10:50

Testgetrieben entwickeln mit JavaScript

Ihr Kunde beschwert sich über die Fehleranfälligkeit Ihrer Software und darüber, dass Änderungswünsche nur schleppend umgesetzt werden. Ihr Chef auch. Dementsprechend machen beide Druck: Die Arbeit muss schneller gehen, die Arbeit muss weniger kosten, die Arbeit muss besser werden. In den Augen Ihres Kunden und Ihres Chefs ein einfaches Unterfangen: Arbeiten Sie doch einfach schneller und besser. Bevor Sie nun das Handtuch werfen und sich einen neuen Job suchen, gibt es einen Ausweg: Unittests und testgetriebene Entwicklung (TDD) helfen, Qualität messen, nachzuverfolgen und garantieren zu können. Kurzum: Wenn Sie die geschilderte Situation kennen, sind Sie hier richtig.

Golo Roden
(the native web)

Tag 1, 30. Juni 2014
09:35-10:50

Raum KOMED

Sind ernsthafte JavaScript-Projekte möglich?

Unabhängig von der steigenden Verbreitung von JavaScript wird JavaScript-Projekten häufig immer noch die Professionalität abgesprochen. Dieser Vortrag stellt alle Werkzeuge, Techniken und Spracheigenschaften vor, die man braucht, um auch große und langlebige Projekte in JavaScript umzusetzen und die Spötter so zu widerlegen. Methoden zur Modularisierung und Kapselung, Refactoring, Code-Analyse, statische Code-Checker und automatisierte Build-Prozesse sollen genauso Thema sein wie Tests.

Oliver Zeigermann

Tag 1, 30. Juni 2014
09:35-10:50

Raum 313

Ist AngularJS das Richtige für mein Projekt?

AngularJS ist ein JavaScript-Framework, das Entwickler dabei unterstützt, moderne clientseitige Webanwendungen zu erstellen. Erstmalig finden bewährte Konzepte wie Dependency Injection und testgetriebene Entwicklung nun auch Einzug in die JavaScript-Welt und machen sie somit attraktiv für den Enterprise-Einsatz. Dieser Vortrag bietet einen Einstieg in die grundlegenden Konzepte des Frameworks und beleuchtet anhand kleiner Beispiele die Vor- und Nachteile, vor allem aber auch die Grenzen des Frameworks. Abschließend werden die Erfahrungen, basierend auf einer Vielzahl von realisierten Enterprise-Projekten in mehr als zwei Jahren AngularJS zusammengefasst.

Robin Böhm

Tag 1, 30. Juni 2014
09:35-10:50

Raum 316

Tag 1, 11:20-12:05

JavaScript in der Praxis bei ElitePartner.de

Wenig Theorie, viele Erfahrungen aus der Praxis: In diesem Vortrag werden die Technolgien hinter der neuen mobilen Webseite von ElitePartner vorgestellt. Unter anderem kommen hier AngularJS, RESTful APIs, Logstash und Graylog2 zum Einsatz, aber auch Continuous Integration und Testing (inklusive „On Device Testing”), Build-Infrastruktur und Lessons Learned sollen Thema sein. Es wird gezeigt, wie sich Frontend-Projekte in ein Testing- und CI-System wie TeamCity integrieren lassen, wie sich ein reines JS-Framework wie AngularJS in einem Enterprise-Java-Umfeld schlägt und sich dort integriert.

Oliver Ochs
(Holisticon)

Kolja Markwardt
(EliteMedianet)

Tag 1, 30. Juni 2014
11:20-12:05

Raum KOMED

Kommunikations-APIs für JavaScript

Rund um HTML5 gibt es eine Reihe spannender JavaScript-APIs. Einer der wichtigsten Aspekte hierbei ist die Kommunikation. Es ist mittlerweile möglich, HTTP-Anfragen über die Domänengrenze hinweg zu senden, Push-Nachrichten vom Server zu erhalten, auf bidirektionale Full-Duplex-Kommunikation zu setzen und mehr. Diese Session zeigt alte und neue Techniken, zahlreiche Codebeispiele und bietet eine Entscheidungshilfe, was sich wann im Projekteinsatz lohnt.

Christian Wenz

Tag 1, 30. Juni 2014
11:20-12:05

Raum 313

Verteilte Anwendungen mit Vert.x

„The right tool for the job” – das bedeutet mitunter verschiedene Programmiersprachen einzusetzen. Bei größeren, verteilten Anwendungen ist das zum Teil aber nicht immer praktisch – auch im Hinblick auf die eingesetzten Bibliotheken und das Know-How im Team. Vert.x erlaubt den Einsatz der selben Mechanismen und Funktionen über einzelne Programmiersprachen hinweg – so kann Java-Code sich mit Node.js oder Ruby über den integrierten Eventbus verständigen und sogar bis in den Browser des Nutzers kommunizieren.

Martin Naumann
(Centralway)

Tag 1, 30. Juni 2014
11:20-12:05

Raum 316

Tag 1, 12:15-13:00

Effektives jQuery – Entwurfsmuster für Wartbarkeit und Performance

Viele Webentwickler kennen jQuery, aber nur wenige wissen, wie es sich optimal nutzen lässt. Dieser Talk beleuchtet einige Grundlagen der Bibliothek unter neuen Gesichtspunkten und zeigt Zuhörern damit Mittel und Wege, um sie effektiv zu nutzen. Zu den behandelten Fragen zählen unter anderem: Wie lassen sich Markup, CSS und JavaScript strukturieren, damit sie gut zusammenarbeiten und trotzdem wartbar bleiben? Wie lassen sich CSS3-Transitions mit Fallbacks nutzen? Was hat Event Delegation mit „just in time” Initialisierung zu tun?

Jörn Zaefferer

Tag 1, 30. Juni 2014
12:15-13:00

Raum KOMED

WebRTC: Das Web auf dem nächsten Level

WebRTC wird das Web, wie wir es kennen, verändern. Es ermöglicht direkte Kommunikation per Video, ohne dass dafür schwere Infrastruktur benötigt wird. Damit ist der Grundstein für die Entwicklung von interaktiven Anwendungen, bei denen die Video-Funktionalität nur ein integrierter Bestandteil ist, gelegt. Das ist noch nicht alles, was WebRTC zu bieten hat: Noch größere Auswirkungen werden die Data Channels des Standards haben, welche eine sichere Kommunikation zwischen Nutzern ermöglichen. Auch mit ihnen lassen sich Server-Kosten senken, aber vor allem können sie die Vertrauenswürdigkeit zukünftiger Web-Dienste erhöhen. Die Referenten werden zeigen, was möglich ist, wie man WebRTC einsetzen kann und was sie bei der Entwicklung von palava.tv, einer freien und quelloffenen Browser-zu-Browser-Plattform, lernen konnten.

Jan Lelis

Marius Melzer

Tag 1, 30. Juni 2014
12:15-13:00

Raum 313

JavaScript und Java kombinieren – polyglotte Programmierung auf der JVM

Nicht selten sorgen Anforderungen dafür, dass die gleiche Logik an zahlreichen Stellen zum Einsatz kommen muss. Ein klassisches Problem ist die Validierung, die serverseitig auszuführen ist, aber nach Möglichkeit ebenfalls in einer mobilen Anwendung oder dem Browser stattfinden sollte. In diesem Vortrag wird gezeigt, wie JavaScript-Code sich in eine klassische Java-Anwendung integrieren lässt. JavaScript dient dann als Bindeglied, mit dem sich solche Anforderungen ohne Code-Duplizierung und große Rewrites realisieren lassen. Abgerundet wird der Talk durch einen Blick auf alternative Ökosysteme und aktuelle Möglichkeiten zur polyglotten Programmierung mit JavaScript.

Ben Ripkens
(codecentric)

Tag 1, 30. Juni 2014
12:15-13:00

Raum 316

Tag 1, 14:00-14:45

Sechs Technologien, die die Web-Plattform verändern werden

Diese Keynote gibt einen Überblick über sechs Web-Technologien, die Sie kennen sollten, weil sie die Plattform entscheidend beeinflussen werden:

  • asm.js: native Geschwindigkeit fürs Web
  • ParallelJS: parallele Ausführung für JavaScript
  • ECMAScript 6: JavaScript entwickelt sich weiter
  • Service Workers: verbesserter Offline-Betrieb von Webanwendungen
  • Web Components: standardisierte Infrastruktur für Widgets
  • CSS Grid Layout: GUI-Layout wie man es von iOS, Android und anderen Betriebssystem kennt

Axel Rauschmayer

Tag 1, 30. Juni 2014
14:00-14:45

Raum KOMED

Tag 1, 14:55-15:40

AngularJS in einem Enterprise-Projekt

AngularJS ist aktuell eines der aufstrebenden JavaScript-SPA-Frameworks und scheint bereit für den Einsatz in Enterprise-Projekten. Trotzdem gibt es relativ wenig konkrete Projekterfahrung und entsprechend sachverständige Entwickler in Deutschland. In diesem Vortrag wird über ein bei Bosch gestartetes Projekt und die dabei gesammelten Erfahrungen berichtet. Die Themen reichen von noch fehlenden Konzepten des Framework (die im Rahmen des Projektes erarbeitet werden müssen) über die Einarbeitung von Mitarbeitern bis hin zur Integration in klassische vorhandene Entwicklungsinfrastrukturen (wie Designtools und Buildserver). Es ist also möglich, große moderne Webanwendungen mit AngularJS zu erstellen!

Bernhard Moser
(Robert Bosch)

Tag 1, 30. Juni 2014
14:55-15:40

Raum KOMED

WTFJS
0.1 + 0.2 === 0.3 // false
"0" == false // true
[5, 2, 10].sort() // [10, 2, 5]

Wegen Kuriositäten wie diesen (und aufgrund weiterer Eigenheiten) wird JavaScript gern verlacht und verspottet. Dabei steckt in der Regel ein Grund dahinter – manchmal sogar ein Sinn. WTFJS beschäftigt sich mit den WTF-Momenten von JavaScript, versehen mit Geschichten aus dem Alltag und Zitaten aus dem Standard.

Matthias Reuter
(Inovex)

Tag 1, 30. Juni 2014
14:55-15:40

Raum 313

Virtuelle Umgebungen mit Vagrant, Docker und Ansible

Virtuelle Maschinen sind für die Entwicklung und den Betrieb von komplexen Applikationen nützliche Hilfsmittel. Doch die manuelle Installation und Provisionierung ist eine mühselige und langwierige Aufgabe. In diesem Vortrag werden drei Tools vorgestellt, die den Umgang mit virtuellen Umgebungen deutlich vereinfachen: Vagrant zur Verwaltung von virtuellen Maschinen, Docker, um die Komponenten einer Applikation zu trennen und Ansible zur Orchestrierung und Administration der Systeme. Nach einer kurzen Vorstellung der drei Programme folgt ein Praxisbeispiel, wie eine Applikation und ihre Komponenten in einer virtuellen Umgebung betrieben werden können.

Simon Olofsson
(Content Management AG)

Tag 1, 30. Juni 2014
14:55-15:40

Raum 316

Tag 1, 15:50-16:35

Aus der Werkzeugkiste eines modernen Webentwicklers

Ziel dieses Vortrags ist es, einen Überblick über Tools, Best Practices und Workflows für den professionellen Frontend-Entwickler von heute und morgen zu geben. Der Schwerpunkt liegt hierbei auf schnellem Prototyping und der Automatisierung von Arbeitsabläufen mit Yo und Grunt sowie der modularen Entwicklung mit Bower, aber auch andere Werkzeuge wie Vagrant für vorgefertigte Entwicklungssysteme sind Thema.

Béla Varga
(CHIP Digital)

Tag 1, 30. Juni 2014
15:50-16:35

Raum KOMED

Die wahrscheinlich wichtigste Architekturentscheidung: Client- oder serverseitiges Rendering?

Aktuell verlagert sich die Anwendungslogik von Webapplikationen immer stärker hin zum Browser. Gleichzeitig wird der Server immer mehr die alleinige Rolle des Service-Erbringers einnehmen. Dennoch fällt die Entscheidung über die Architektur heutiger Webanwendungen unterschiedlich aus und wird erfahrungsgemäß meist unterschätzt. In diesem Vortrag werden die möglichen Lösungsansätze analysiert und bewertet.

David Amend
(DAB Bank)

Tag 1, 30. Juni 2014
15:50-16:35

Raum 313

Third-Party JavaScript entwickeln und einsetzen

Immer mehr Dienste lassen sich mittels Third-Party JavaScript ohne viel Aufwand in das eigene Frontend integrieren, wobei Social Plugins und Analytics oft nur der Anfang sind. Die Entwicklung von Third-Party JavaScript setzt jedoch auch entsprechende Erfahrung und Kenntnisse voraus, damit der Code browserübergreifend und korrekt in den unterschiedlichsten Anwendungen ausgeführt wird. Basierend auf den Erfahrungen bei der Entwicklung der Portalseiten der ProSiebenSat.1 umfasst der Vortrag sowohl die Entwicklung von Third-Party JavaScript als auch den oft unterschätzten Schritt der Integration von externen Skripten im eigenen Frontend.

Michael Muckel
(ProSiebenSat.1 Digital)

Tag 1, 30. Juni 2014
15:50-16:35

Raum 316

Tag 1, 17:05-17:50

JavaScript-Architektur in der Praxis

In einem sich schnell wandelnden Umfeld ist die Architektur eines Softwareprojekts ständigen Änderungen in den Anforderungen ausgesetzt, was zwangsläufig Anpassungen nötig macht. Der Vortrag zeigt, wie man beim Werkstattportal von AutoScout24 damit umgeht, welche Probleme aufgetreten sind und wie sie gelöst wurden. Außerdem zeigen die Entwickler, wie sie Buzzwords der letzten Jahre adaptiert haben, verschiedene – teilweise unterschiedlichen Paradigmen folgende – Ansätze und Patterns in verschiedenen Komponenten so pragmatisch wie möglich einzusetzen gelernt haben und dabei versucht haben, die Kosten möglichst gering zu halten.

Roman Jendrusch
(AutoScout24)

Matthias Kainer
(AutoScout24)

Tag 1, 30. Juni 2014
17:05-17:50

Raum KOMED

Conquer Architectural Challenges with End-to-End JavaScript

As an application architect or other IT leader, how do you address time-to-market and ever-changing application requirements? Wakanda aims to help the pragmatic developer sidestep unnecessary plumbing code and integration layers. Join us for a hands-on session that covers: Using a standards-based, end-to-end JavaScript stack to decrease complexity and reduce your time-to-market; employing a NoSQL business object datastore for both relational and unstructured data to reduce maintenance costs; building hybrid or native mobile-apps with an API-centric backend. With concrete examples, we will: Expose a recursive relationship data model in – literally – 10 seconds, with no boilerplate code and no SQL joins; integrate third-party JavaScript libraries and UI toolkits (e.g. D3.js, select2ljs, JQWidget, Wijmo) in reusable drag-and-drop widgets; use a new AngularJS connector to develop an innovative front end with a rock solid back end!

Ricardo Mello
(Wakanda)

Alexandre Morgaut
(Wakanda)

Tag 1, 30. Juni 2014
17:05-17:50

Raum 313

Integration von Node.js und Legacy-C-Anwendungen

Node.js und 1001 C-API: Vom Client bis zum Server in JavaScript zu entwickeln ist eine Idee, die mit Node.js in vielen Umgebungen möglich wird. Was aber tun, wenn die Legacy-Anwendung nur eine C-API bietet und mit ins Boot muss? Oder wie kann man eigentlich auf die Hardware mit einem für C ausgelegten SDK mit Node.js zugreifen? Die Antwort auf solche und ähnliche Fragen soll dieser Vortrag geben. Es werden sowohl das direkte Aufrufen von Funktionen aus C-Bibliotheken mittels FFI als auch Probleme wie beidseitige IPC zwischen C-Programmen und Node.js besprochen und Lösungsvorschläge mittels JSON-RPC und ZeroMQ demonstriert. Abgerundet wird der Vortrag durch Erfahrung aus zwei großen Kundenprojekten.

Christian Ulbrich
(Zalari)

Tag 1, 30. Juni 2014
17:05-17:50

Raum 316

Tag 1, 18:00-18:45

JavaScript performance: evolving the engine, evolving the language

How to write perfect JavaScript? What does „performant JavaScript” mean? In this talk we will cover some best practices for JavaScript performance, coming from the V8 implementation experience. We will also go over features coming in EcmaScript 6 and beyond that will improve JavaScript expressiveness and help engines in their optimizations.

Dmitry Lomov
(Google)

Tag 1, 30. Juni 2014
18:00-18:45

Raum KOMED

ECMAScript 6 – the future is now

Seit Mai 2011 befindet sich ES6 im „Proposal Freeze”-Status – Zeit, sich die Neuerungen genauer anzuschauen. ES6 erweitert nicht nur vorhandene Klassen, sondern bringt auch neue langersehnte wie Map, Set und Proxy mit. Die wohl gravierendsten Veränderungen sind aber Scoping, Virtualisierung, Modularisierung, Template Strings und Generatoren. Der Vortrag wird sowohl die neuen Features im Detail beleuchten als auch die Vorteile von deren Verwendung demonstrieren. Den Abschluss wird die Anwendbarkeit von ES6 in aktuellen Browsern (mittels Shims und Transpilern) und Node.js bilden, sodass Entwickler erfahren, wie sie schon heute „aufwärtskompatiblen” und eleganteren JavaScript-Code schreiben können.

Lars Gersmann
(Content Management AG)

Tag 1, 30. Juni 2014
18:00-18:45

Raum 313

Dynamisches, Rule- und Model-driven UI

Anhand der Anwendung AKIOMA.config!, einer Lösung für die Erstellung beliebig komplexer Produkt-Konfiguratoren, zeigt der Vortrag wie ein komplexes JavaScript UI mit verschiedenen Backend-Technologien kombiniert wurde. Ziel war es, ein komplexes JavaScript UI über Node vollständig durch ein Repository sowie eine Rules-Engine steuern zu lassen. Mike Liewehr zeigt live, wie Regeln und Datenstruktur on-the-fly geändert werden und sich das JavaScript-UI dynamisch in Echtzeit anpasst. Dabei wird detailliert auf die zugrundeliegende Architektur eingegangen. Technologien: Node.js, Progress Rollbase, Corticon Rules engine.

Mike Liewehr
(Progress)

Tag 1, 30. Juni 2014
18:00-18:45

Raum 316

Tag 2, 09:00-10:15

Frontend-Ops mit Grunt.js: Glücklichere Entwickler und bessere Codequalität

Bewährte Praktiken aus dem Backend-Bereich halten jetzt schon seit einiger Zeit im Frontend Einzug. Die neuen Tätigkeiten wurden vor Kurzem unter dem Begriff Frontend-Ops als neue Disziplin im Frontend definiert. Ein großer Teil der damit verbundenen Verantwortlichkeiten wird mit Hilfe von JavaScript Build Tools abgedeckt. Grunt.js ist momentan das bekannteste und am weitesten verbreitete Werkzeug, mit dem sich Build-Prozesse und unzählige andere Tasks abbilden lassen. Dieser Talk wird Grunt.js und Frontend-Ops vorstellen und aufzeigen, wie weitreichend die Möglichkeiten von Grunt.js sind, um das Leben von Entwicklern zu verbessern und die Qualität und die Wartbarkeit von Code deutlich zu erhöhen.

Kahlil Lechelt
(ETECTURE)

Tag 2, 1. Juli 2014
09:00-10:15

Raum KOMED

Desktop- und Mobile-App aus einer Quelle

Dieser Vortrag zeigt am praktischen Beispiel, wie sich aus einem einzigen Quelltext funktionierende Applikationen für den Desktop (Mac und Windows) und die beiden großen mobilen Plattformen (iOS und Android) erstellen, kompilieren und verteilen lassen. Dabei ist unter anderem die sinnvolle Integration von Systemoperationen wie dem Dateizugriff ein Thema. Der Vortrag zeigt den kompletten Weg der Entwicklung und geht insbesondere auf die verwendeten Frameworks node-webkit, XDK und PhoneGap ein.

Ralf Schwöbel
(Tradebit)

Tag 2, 1. Juli 2014
09:00-10:15

Raum 313

Leben eingehaucht: Real-Time-Anwendungen mit SignalR und AngularJS

Aktives und nahezu in Echtzeit ausgeführtes Pushen von Daten vom Server in beliebige Clients und Devices hinein ist wirklich realisierbar. Die Referenten zeigen anhand des Open-Source-Frameworks SignalR, wie man serverseitige .NET-Anwendungen erweitert, um in JavaScript-Clients (Browser oder nativ) aktiv hineinzurufen. Sehen Sie die architekturellen Grundmuster, die technischen Details über HTTP und Web Sockets sowie Showcases auf Basis von AngularJS in Gestalt von Geschäftsanwendungen und Live-Dashboards. Gemäß dem Motto: „Und es bewegt sich doch!”

Thomas Hilzendegen
(Thinktecture)

Christian Weyer
(Thinktecture)

Tag 2, 1. Juli 2014
09:00-10:15

Raum 316

Tag 2, 10:45-11:30

Löcher stopfen: Wie man Memory Leaks in JavaScript findet und beseitigt

Auch wenn JavaScript einen Garbage Collector besitzt, schützt dieser nicht vor Memory Leaks durch nicht vollständig aufgeräumte Referenzen. Insbesondere langlaufende Single Page Applications können auf diese Weise über längere Zeit große Mengen an Hauptspeicher beanspruchen, was das Benutzererlebnis erheblich beeinträchtigen kann. In diesem Vortrag wird gezeigt, wie man derartige Leaks mit den Entwicklerwerkzeugen von Chrome effektiv aufspüren und beseitigen kann.

Christian Speckner
(Mayflower)

Tag 2, 1. Juli 2014
10:45-11:30

Raum KOMED

Offline, na und?

Lange Zeit standen die Begriffe „web” und „online” in einer sehr engen Beziehung zueinander. Dank HTML5 ändert sich das nun. Es fokussiert auf die Entwicklung von Webapplikationen, die es notwendig machen, Daten lokal zu speichern. APIs wie Web Storage, IndexedDB, Web SQL Database und die File API geben Entwicklern die Möglichkeit, Webapplikationen zu entwickeln, die vom Nutzer generierte Daten persistent lokal vorhalten können, um damit „offline” zu arbeiten. Der Vortrag gibt einen Überblick über die verschiedenen technischen Möglichkeiten und stellt Limitierungen der einzelnen Ansätze einander gegenüber.

Stephan Hochdörfer
(bitExpert)

Tag 2, 1. Juli 2014
10:45-11:30

Raum 313

DevOps: Mehr als nur Entwicklung, Deployment und Betrieb

Ole Michaelis berichtet von seinen Erfahrungen bei Jimdo, einem Unternehmen, das ein Baukastensystem zum einfachen Erstellen von Webseiten, Blogs oder Shops anbietet: Bei Jimdo als Software Engineer eingestellt, traf er auf eine in sechs Jahren organisch gewachsene Software, die genau so aussah, wie man es von einem System diesen Alters erwarten würde: Keine klaren Abstraktionen, keine Services – kein moderner Schnickschnack. Schnell merkte er, dass er – wenn er die Software ändern wollte – bei der Systemarchitektur anfangen müsste, da sich alles stark miteinander verkoppelt darstellte. Aus diesem Grund wurde er Teil des „Infrastruktur-Teams”. Dabei lernte er unter anderem, was es heißt, „Bereitschaft” zu machen, was wiederum seine Art, Software zu entwickeln, verändert hat.

Ole Michaelis
(Jimdo)

Tag 2, 1. Juli 2014
10:45-11:30

Raum 316

Tag 2, 11:40-12:25

Package-Management für JavaScript

Software wird immer umfangreicher und komplexer. Gerade Webapplikationen umfassen notgedrungen viele unterschiedliche Technologien. Front- und Backend-Technologien mit dem gleichen Build-Tool und der gleichen Paketverwaltung zu handhaben, wäre zwar prinzipiell wünschenswert, ist aber nur allzu oft äußerst problematisch. Anforderungen und zu erledigende Aufgaben unterscheiden sich in JavaScript und dem Web teilweise dramatisch von denen bei Java, .NET und Co. In diesem Talk unterhalten wir uns über „The Right Tool For The Job”, „Separation Of Concerns” und darüber, wie sich die Verwaltung der einzelnen Komponenten trotzdem in Einklang bringen lässt.

Rodney Rehm

Tag 2, 1. Juli 2014
11:40-12:25

Raum KOMED

Codequalität messen

Bei gesetzten Sprachen wie Java, C und PHP gehören Tools zum Messen von Kennzahlen zur Bestimmung der Qualität von Software zum Alltag. Für JavaScript ist das noch ein recht neuer Bereich. Besonders in modernen Webprojekten ist eine Charakterisierung der Software in Bezug auf Qualitätskennzahlen allerdings ein wichtiger Faktor hinsichtlich der Entwicklungs- und Ausführungsgeschwindigkeit sowie der Stabilität. Dieser Vortrag gibt eine Einführung in Metriken, wie sie sich erfassen und für die tägliche Arbeit nutzen lassen.

Andy Grunwald
(trivago)

Tag 2, 1. Juli 2014
11:40-12:25

Raum 313

Von Windows-Anwendungen zum Web – ein Erfahrungsbericht

Gute und verlässliche Anwedungen zu entwickeln, ist auch mit bekanntem Toolset eine Herausforderung. Möchte man allerdings eine Windows-Anwendung in eine Single Page Application (SPA) umwandeln, ergibt sich ein interessanter Mix. Dieser Vortrag soll einen Einblick in einen solchen Übergang geben. Dafür werden zunächst die ursprünglichen Entscheidungen zu Architektur und Framework sowie die daraus resultierenden Herausforderungen beschrieben. Die gewonnen Erkenntnisse werden herausgefiltert und es wird veranschaulicht, wie sie in neuen Projekten Eingang gefunden haben.

Alexander Esser
(Statkraft)

Tag 2, 1. Juli 2014
11:40-12:25

Raum 316

Tag 2, 13:25-14:10

Serious business: How Node.js is conquering the enterprise

A little over five years old, Node.js is no longer a novelty toy, but a fast growing production-ready platform which is used for sizable real-world applications. In his keynote Bert Belder will explain what Node is often used for: building API servers to serve both web and mobile clients, and serving as a central hub to connect various applications and services. He'll explain why large enterprises pick Node for that, and why Node is indeed a good fit for this use case. At the same time, Node.js is still relatively young, and there are ways to make it even more powerful and reliable. This talk will also address some of the issues that users run often into, and what future developments in Node-land can be expected to make it easier to use.

Bert Belder
(StrongLoop)

Tag 2, 1. Juli 2014
13:25-14:10

Raum KOMED

Tag 2, 14:20-15:05

Da is’ was kaputt – Debugging client-side JavaScript (in production!)

„Works on my machine” – wie oft hat man diesen Satz als Entwickler schon gehört oder sogar selbst verwendet? Test Driven Development, hohe Testabdeckung und ausgereifte Qualitätssicherungsmaßnahmen sind gut, aber: Was tun, wenn das Kind bereits in den Brunnen gefallen ist? Was, wenn die Applikation oder die Webseite bereits auf die Produktiv-Server ausgeliefert wurden und der Kunde meldet: „Da is' was kaputt!?” Dieser Vortrag soll zeigen, wie man Fehler in JavaScript-Anwendungen findet und vor allem, wie uns die Anwendung selbst dabei unterstützen kann. Nicht nur während der Entwicklung, sondern auch während der Produktion.

Dominik Siebel
(trivago)

Jan van Thoor
(trivago)

Tag 2, 1. Juli 2014
14:20-15:05

Raum KOMED

Performance-Best-Practices versus HTTP/2

15 Jahre ist es her, dass die IETF HTTP/1.1 vorgestellt hat. Das war zu einer Zeit, als Webseiten noch mit Tabellen und dem <font>-Tag gestaltet wurden und sie mit kaum mehr als 4 Bildern ausgestattet waren. Auf dieses Anwendungsszenario war HTTP/1.1 perfekt zugeschnitten. Für heutige Projekte ist HTTP/1.1 jedoch ein massiver Flaschenhals. Um dessen konzeptionelle Nachteile zu kompensieren haben wir Buildprozesse entwickelt, bei denen wir Ressourcen via Konkatenierung, Inlining oder Spriting bündeln. Darüber hinaus setzen wir auf Konzepte wie Domain-Sharding und cookieless-Domains. Die gute Nachricht ist: HTTP/2 steht endlich vor der Tür und räumt mit den Nachteilen seines Vorgängers auf. Es wird außerdem von den meisten modernen Browsern bereits unterstützt. Allerdings reicht es nicht aus, einfach nur einen Schalter umzulegen. Wir müssen massiv umdenken und etablierte Prozesse und Konzepte über Bord werfen, wenn wir das Beste aus HTTP/2 herausholen wollen.

Christian Schaefer

Tag 2, 1. Juli 2014
14:20-15:05

Raum 313

E2E-Testing mit Protractor

Tests durchführen ist wichtig – besonders in komplexen Anwendungen. Da es zu viel Zeit kostet oder Know-how fehlt, werden Anwendungen allerdings häufig nicht genügend überprüft. Der Vortrag soll eine Einführung in das E2E-Testing-Framework Protractor geben, mit dem sich End-to-End-Tests für Angular-Apps wunderbar schreiben lassen. Konfiguration, das automatisierte Ausführen von Tests und deren Syntax werden genauer unter die Lupe genommen. Anhand von Beispielen wird außerdem gezeigt, wie einfach man E2E-Tests selber schreiben kann.

Pascal Precht
(CouchCommerce)

Tag 2, 1. Juli 2014
14:20-15:05

Raum 316

Tag 2, 15:35-16:20

Web Security in Single Page Apps and Node.js

Security always seems to be an afterthought but is a very important part of building a production-ready application. In the last few years, everyone seems to be building Single Page Apps (SPAs), which is great! However, there are lots of bad patterns in tutorials that are being copied across projects. Patterns that don't protect yourself against XSS or Clickjacking attacks. A few more examples are: many templating languages out there don't escape output by default, Express.js doesn't enable CSRF protection by default, etc. The good news is there are some best practices to share and lots of great modules. I hope to spread awareness of web security vulnerabilities in SPAs and Node.js.

Mark Stuart
(Paypal)

Tag 2, 1. Juli 2014
15:35-16:20

Raum KOMED

Unterschiedliche Error-Typen in JavaScript

Viele JavaScript-Entwickler haben oft die folgenden Fragen: Was ist besser? throw "error";, throw new Error("error"); oder throw new MyError("error");? Wie sieht der Code von MyError aus und worauf muss man alles achten? Wie bekomme ich als Entwickler mit, wenn JavaScript-Fehler in der Live-Umgebung auftreten? Antworten soll diese Präsentation geben, bei der es etwa darum geht, wie man JavaScript-Fehler am Besten behandeln müsste und eigene Fehler-„Klassen” erzeugt. Darüber hinaus soll gezeigt werden, wie Entwickler mitbekommen können, wann Fehler bei den Benutzern auftreten und wie sie sich beispielsweise als Splunk-Warnungen oder in einer Web-UI darstellen beziehungsweise suchen lassen.

Ádám Béres-Deák
(AutoScout24)

Tag 2, 1. Juli 2014
15:35-16:20

Raum 313

Neue Bildkompressionsverfahren für optimale Webseiten-Performance

Während Internet Service Provider kürzere Ladezeiten durch höhere Bandbreiten in ihren Netzen versprechen, verhindern physikalische Eigenschaften bei Bandbreiten von mehr als 5 Mbps signifikante Verbesserungen beim Laden. Um Nutzern Webseiten schneller verfügbar zu machen, können Techniken wie adaptive JPEG-Kompression und neue Bildformate wie WebP und JPEGXR helfen, Dateigrößen und folglich die Ladedauer zu reduzieren. Im Vortrag sollen die Teilnehmer die in den Formaten eingesetzten Verfahren, Grundlagen computergestützter Bildverarbeitungsprozesse sowie entsprechende Algorithmen kennenlernen, und erfahren, wie man mit ihren Limitierungen umgehen kann.

Tobias Baldauf

Tag 2, 1. Juli 2014
15:35-16:20

Raum 316

Tag 2, 16:30-17:15

Im DOM hört Dich keiner schreien – eine Reise in die gruselige Schicht zwischen HTML und JavaScript

Dieser Vortrag dreht sich um das DOM und seine Schattenseiten. Dabei geht es insbesondere um die Abweichungen, Fallstricke und die sicherheitskritischen Aspekte des DOM. Sie werden zum Beispiel lernen, welche verschiedenen Arten es gibt, Strings in Code umzuwandeln – ohne dabei eval() aufzurufen – oder wie man mit inaktivem HTML ganze Bereiche des DOM-Baums umschreiben und blockieren kann. Und Sie werden eine Reihe an echten Angriffen gegen moderne, JavaScript-lastige Web-Applikationen beobachten. Anschließend werden auch Verteidigungstechniken vorgestellt: Neben Best-Practices und Defensiv-Strategien lernen Sie auch neue Open-Source Tools kennen.

Mario Heiderich
(cure53)

Tag 2, 1. Juli 2014
16:30-17:15

Raum KOMED

Niemand hat die Absicht, ein Framework zu entwickeln – JavaScript-Erfahrungen bei GMX und WEB.DE

Ein Erfahrungsbericht über die Neuentwicklung des GMX Mediacenters in komponenten-orientiertem JavaScript: Responsive, liquid, adaptive war gestern. Moderne Webanwendungen laufen zu fast 100 Prozent im Browser und müssen auf Smartphones, Phablets, Tablets, Desktop-PCs und bald auch auf Fernsehern und Armbanduhren laufen. Die Bildschirmgröße ist dabei nur eine Variable und schon das Bedienkonzept (Mouse versus Touch versus beides gleichzeitig) stellt die Entwicklung vor Herausforderungen. Die richtige Architektur auf Clientseite gewährleistet, dass sich solche Applikationen überhaupt wirtschaftlich entwickeln und pflegen lassen.

Jörg Wendland
(1&1)

Tag 2, 1. Juli 2014
16:30-17:15

Raum 313

Supercharging Node with Kraken

The topic of this talk is the newly released Node suite KrakenJS and why it helps companies like PayPal and Netflix to use Node in their corporate infrastructure. After a brief introduction on why Kraken was released, the emphasis will be on its top features that can be incredibly helpful when running apps on large scale.

Cristiano Betta
(Paypal)

Tag 2, 1. Juli 2014
16:30-17:15

Raum 316

Tag 3, 09:00-17:00

Workshop: TDD mit AngularJS

AngularJS ist ein JavaScript-Framework, das dabei unterstützt, moderne clientseitige Web-Anwendungen zu erstellen. Erstmalig finden bewährte Konzepte wie Dependency Injection und testgetriebene Entwicklung nun auch Einzug in die JavaScript-Welt und machen diese attraktiv für den Enterprise-Einsatz. AngularJS bietet hier eine sehr nachvollziehbare Implementierung und achtet im hohen Maße auf das Bilden und Einhalten von Schnittstellen. Dieser Workshop führt an die Entwicklung mit AngularJS heran und fokussiert insbesondere die Möglichkeiten zum Test-Driven-Development (TDD). Saubere Anwendungsentwicklung mit JavaScript ist eben doch möglich. Finden Sie es heraus!

Bitte beachten Sie die Unterlagen zur Vorbereitung des Workshops.

Robin Böhm

Philipp Tarasiewicz

Tag 3, 2. Juli 2014
09:00-17:00

Raum 313

Workshop: Node.js & Co.

Kaum eine Programmiersprache hat in den vergangenen 15 Jahren dermaßen Karriere gemacht wie JavaScript: Was 1995 als einfache, aber exotische Skriptsprache für die clientseitige Interaktion auf Webseiten begann, treibt heute sämtliche großen, modernen Webseiten wie Facebook, Twitter und Co. an. Und auch auf dem Desktop und mobilen Geräten findet JavaScript zunehmend Einzug. Was liegt also näher, als JavaScript auch serverseitig zu nutzen? Golo Roden stellt Node.js vor, das (wahrscheinlich) nächste große Ding für die Entwicklung hochperformanter, skalierbarer und echtzeitfähiger Webanwendungen.

Golo Roden
(the native web)

Tag 3, 2. Juli 2014
09:00-17:00

Raum 314

Tag 3, 09:00-12:30

Workshop: Modularisierung mit RequireJS und Browserify

Da heute die Webapps immer größer und komplexer werden, ist es sehr wichtig geworden, dass man den Code gut modularisiert und testet. Dabei können RequireJS und Browserify von großer Hilfe sein. Den Teilnehmern möchte ich zeigen, welche Probleme diese Tools lösen, und welchen positiven Impact sie auf Ladezeit und Performance haben. Ich würde kurz erwähnen, wie man diese Tasks mit Grunt automatisieren kann.

Ádám Béres-Déak
(AutoScout24)

Tag 3, 2. Juli 2014
09:00-12:30

Raum 315

Workshop: JavaScript für Java- und C#-Entwickler

In diesem halbtägigen Workshop werden die Teilnehmer in alle für Enterprise-Entwickler (Java, C#) wesentlichen Spracheigenschaften von JavaScript eingeführt. Es werden die Themen Objekte, Arrays, Exceptions, Funktionen, prototypische Vererbung und Module besprochen. Der Workshop enthält zudem kleine Übungen am eigenen Rechner. Bringen Sie dafür einen Laptop mit, auf dem ein aktueller Firefox- oder Chrome-Browser installiert ist.

Oliver Ochs
(Holisticon)

Oliver Zeigermann

Tag 3, 2. Juli 2014
09:00-12:30

Raum 316

Tag 3, 13:30-17:00

Workshop: Prozessautomatisierung für komplexe Webanwendungen mit Grunt

In diesem Workshop lernen Sie, wie sich JavaScript zur Automatisierung und Optimierung ganzer Prozessketten einsetzen lässt. Erarbeitet wird dies beispielhaft für Frontend, Backend, Website, Testing und Deployment. Besonderes Augenmerk liegt auf der Einsetzbarkeit in Teams und echten Arbeitsumgebungen. Zudem wird auf die Integration mit anderen Tools wie Git eingegangen.

Stephan Bönnemann
(excellenteasy)

David Pfahler
(excellenteasy)

Tag 3, 2. Juli 2014
13:30-17:00

Raum 315

Workshop: Verteilte Node.js-Echtzeit-Backendsysteme mit Apache Storm

In Echtzeit das Interesse von Kunden zu wecken ist das Thema unserer Zeit. Egal, ob es dabei um Gaming, Onlineshops oder redaktionell gepflegte Inhalte geht, das Ziel bleibt dabei immer gleich: eine individuell zugeschnittene Erfahrung zu erschaffen. Dieser Workshop vermittelt eine solide Grundlage, die dies und mehr durch Geschäftslogiken und Datenanalysen, die direkt auf Datenströmen arbeiten, ermöglicht. Apache Storm hilft, solche Systeme auf einfache Art und Weise zu erschaffen und zu betreiben. Es bietet verschiedene Abstraktionsebenen, die es unter anderem erlauben, Komponenten in Node.js zu entwicklen und Datenströme zustandsorientiert zu verarbeiten. Dies soll an Hand konkreter Beispiele genauer betrachtet werden. Dafür steht eine Entwicklungs-VM zur Verfügung, mit der sich alle Schritte direkt nachvollziehen lassen. Ausgehend von lokalen Beispielen soll im Anschluss das Deployment in der Cloud probiert werden. Zusammenfassend wird das System dann mit interaktiven Browsersessions integriert, um gemeinsam das wahrscheinlich mit Abstand verrückteste Lolcat-Spiel der Welt zu spielen: Plan 9 from Outer Kitten.

Mike Lohmann
(DECK36)

Stefan Schadwinkel
(DECK36)

Tag 3, 2. Juli 2014
13:30-17:00

Raum 316