SwissJS (the former SwissJeese) is an awesome Javascript conference placed in Bern, Switzerland. I wanted to share the great impressions and amazing time I had - so here is my review.

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 Object.observe(), ECMAScript 6 and Web Components. He emphasized that AngularJS 2 is built on standards rather than on magic - for example explicit EventListeners in AngularJS 2 instead of magical 2-way data bindings in version 1. To focus even more on standards, AngularJS 2 is written in Typescript (especially TS 1.5 with ES7 annotation) but allows developers to also use Javascript for their applications. The building blocks for applications of version 1 (Provider, Factory, Service, Directive, etc.) have been reduced to the minimum in the new version; there are just 2: 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 ([property-binding]="expression" and (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).

References:

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

I must say, it was a very short and nice presentation and I could understand the basics (at least I hope so). About React I have mixed feelings. On one hand I really like the idea of the functional state transitions of dumb components, but on the other hand I don’t like to write components in JSX (HTML-like embedded snippets in Javascript).

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!

References:

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.

References:

Lightning Talks

Déjà Vue

Raphael Saunier presented Vue.js, a simple, small and versatile micro-framework to render Mustache-styled views with 2-way data binding.

Schiffts z’Baern

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.

RethinkDB

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

Node.js JassServer

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.

References:

Typescript

Reto Schläpfer from ParkingCard AG shared his experience of moving the codebase of their web application from Javascript to Typescript (a superset of Javascript). Modules, ES6 and optional static typing are key features for application-scale Javascript development and the main ingredients of Typescript. Reto gave interesting insights of the transition from Javascript to Typescript; thanks to Typescript and static typing they could remove half of their unittests (“should render without error”) and be more productive with better refactoring and tooling. He also emphasized the ability to gradually switch to Typescript, because valid Javascript is also valid Typescript. In the end, Reto showed some awesome live refactoring and auto-completion tooling with the power static typing. He used Visual Studio Code for his demos btw.

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!

References:

Lightning talks part 2

CodeART

Pierre-Loic Doulcet showed his Javascript implementation of Processing that let’s art students play around with real Processing examples found on the web in Codepen. We saw a beautiful demo; however, the mix of typed Processing code with Javascript in the same scope looks a bit scary.

Learn JS Data

Timo Grossenbacher gave an introduction to the very helpful Learn JS Data website - a great starting point for all future Javascript data scientists. You will learn cool stuff including map, redcue, Regular Expressions and D3.js nest.

React + Flummox + Webpack + Hotloader demo

Thomas Preusse A complementary demo to the React talk, showing a React component, a little Flux and a some hot-reload Javascript magic.

Postacard

Gilles Doge just came for the gift. Not too hard to imagine when you look at his website Postacard that sends your #office Instagram pictures to your office address per post. For free btw. No flaws.

The dawn of JS for Big Data

Pierre-Loic Doulcet from AXA Technology Services spoke about data analysis and big data computation in JavaScript. Right now, JavaScript is often used for data preprocessing and cleaning. Thanks to RegEx, String manipulations and D3.js there are loads of good resources available. However, his talk was also a wake-up call for all the R/Python/Java data scientists out there to write much needed scientific tools and libraries for JavaScript; we need good Machine Learning tools and better distributed computing tools - JS-Spark is a good start already.

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.

References:

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.

References:

Conclusion

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!