AngularJS 2 - A Glance Into the Future
The conference started with something I like to call the nasty Redmond Syndrome: A blue-screen followed by Windows Updates (5 out of 100 completed); however, they audience took it with a lot of fun.
Gion Kunz from oddEVEN gave a great introduction to the main concepts and AngularJS 2. First, Gion spoke about the evolution of web standards with a focus on
ECMAScript 6 and
Directive (adds functionality to the DOM, such as ng-click) and
Component (Directive with a view). Gion also showed the new (strange/opinionated) syntax of AngularJS 2 (
(event-binding)="expression"). The idea was to find a syntax that has valid attribute names (at least in all modern browsers).
I am very excited about AngularJS 2. It looks very promising - a new versatile framework/environment to develop large-scale and modern web applications. However, I quite don’t understand why the thing is still called Angular - because almost all AngularJS magic has been replaced (by standards).
React - the Ideas Behind the Hype
Mark Hintz from Interactive Things gave a very interesting introduction to React, JSX and Flux. He explained that developers have to use a (new) HTML-like language called
JSX to write dumb components.
React will parse the JSX file into a
Virtual DOM tree and apply the diff of the changes to the existing DOM tree of a web page. In a functional style, the state of a dumb component will be modified only by events and its previous state - a concept which is called
Flux. This enables us, to write simple components and compose them to a complex UI - where we don’t have to manage all the state changes (like in jQuery).
Update 1: With React, developers can write isomorphic applications - this means these apps can render on the server and on the client. Thanks for the clarification Thomas and Reto!
Creating UIs for the Web Audio API
Stephen Band from Cruncher gave the most awesome talk of the day. He started off with a live demo of Soundio - an open source web based GarageBand-like mixer with stereo-input, drag-and-drop effects, recording and MIDI. It was simply awesome - such that I didn’t even have time to grab my phone for a picture because I didn’t want to miss any loop, setting or effect. After the demo, Stephen gave an introduction to the
Web Audi API and explaining the need for a wrapper because of its write-only nature. Well,
SoundIO is a wrapper for this; a Graph Object Model to construct tree based sound graphs. We also learned that audio controls need to be adapted for human perception of volume, frequency, etc. Stephen also presented a
MIDI wrapper that makes it way easier to trigger and process MIDI events.
What else can I say; it was awesome and I cannot wait to contribute or to join the Swiss Web Audio group - that needs to be founded first.
Christian Cueni won the audience’s heart with the most explicit swiss-german REST-API that I have every seen - whereas its only use is to tell you if it is raining or not. In Bern. Well, there was also a video of an Arduino based cloud-shaped LED that was blinking according to the expected start of the rain. Pretty neat & freaky.
Òscar Vilaplana gave the most intense 10min session of the day; scaling, queries, changes, joins, Python - we heard about almost everything. And indeed I need to check out RethinkDB, because it looks fantastic.
Multicore programming in JS
Lukasz Gintowt introduced a breakthrough browser-based sharing of CPU computation power with his JS-Spark project; simply open a web page on another device and the master will use the client’s CPUs for computation. This was somehow the coolest scientific library/tool I have seen since a long time. And it is astonishingly easy to use.
Patrick Walter and Nick Pyane presented a game server for the swiss card game Jass to let humans or bots play against each other. I would have loved to see a demo - but there are no bots yet. Please contribute.
Location-based Pokémon with NodeJs
Stefanie Taepke from Unic AG talked about her last project, a real-time location-based NodeJS game concept of the Nintendo classics Pokemon (red and blue, of course). First, she explained the general concept of the game, where the phone shows a map based on the users location. The user can navigate on this map by - guess what - moving around in the real world. Then, depending on the current vegetation the user can find different Pokémons (and also other Pokemon trainers). Stefanie used Leaflet.js and OpenStreetMap to create a beautiful custom map in which she placed Pokémons based on their natural habits.
The location-based concept is similar to Google’s Ingress and in my opinion amazing - just think about mapping the real world as a game map where you can find different Pokémons in different terrains. However, we could not see a lot of the (mobile) game. This left the audience with a strong feeling to contribute to the project - which was shutdown due to some legal issues with Nintendo. But nothing can stop us from developing this game, we just have to place other cute creatures in this world and catch them all.
I really liked Reto’s talk, enthusiasm and motivation - his talk was a perfect mix of technical details and practical hands-on experience. As a result, most people I spoke to after his talk wanted to give Typescript a try. And maybe also Visual Studio Code. Mission accomplished. Hours of
undefined is not a function and refactorings saved. Thanks Reto, I love Typescript as much as you do!
Lightning talks part 2
Learn JS Data
Regular Expressions and
React + Flummox + Webpack + Hotloader demo
The dawn of JS for Big Data
I definitely agree, imagine training a Neural Net via
WebGL on the GPUs while playing around with an completely interactive
Jupyter notebook for nodeJS on the client - which is running on a distributed cluster (maybe via JS-Spark). The future is bright.
This talk lasts 三十分钟
Philip Hofstetter from Sensational AG surprised me with his enthusiastic talk about internationalization and what is wrong with existing implementations. Most important takeaways are, that it is very hard, time-consuming and it needs 20MB to get internationalization right. Languages are not locales, countries are not locales and encodings are not locales at all. And ordering, number formats and dates are all locale-specific.
I must really say, I learned a lot about what can go wrong with internationalization - I mean almost everything can go wrong. However, I didn’t learn how to fix all those problems; it seems it’s really difficult to get all of them right. And I learned also that I need to let the user choose (if we cannot be sure - and we can never be sure). Wow. So much learn.
Thanks to the sponsors (Ginetta, SwissTXT and 89Grad), the organizers (big thanks to Joel, Pierre, Christoph and Dimiter), the speakers and of course the amazing people SwissJS was an amazing conference. I met many cool people, discussed dozens of interesting topics and technologies and I learned a lot. And I enjoyed all the food and drinks :) Well, definitely, you will see me there next year!