Schedule

The finale schedule will be revealed at least 2 weeks prior to the event.

Schedule day 1 - Workshops (afternoon only)

13:00 - 13:30

Welcome & registration

Parallel workshops
13:30 - 16:30

Introduction to Vue.js

Vue.js has taken the Javascript universum by storm at speed of light and is gaining popularity every day.  Vue.js is an excellent choice for whatever JavaScript project you might be starting next.

Why? Well, it has a short, sweet and gentle learning curve. It's a pleasure to develop in the reactive, modular and flexible environment. And the documentation is excellent!

Learning Vue.js is fun, it's like playing with LEGO blocks. In this workshop you will learn how to build a single page application (SPA) with Vue components and routing.

Prior knowledge: You should have a (basic) knowledge of JavaScript and HTML.

Software requirements:

  • Node.js version 8.9 or above (8.11.0+ recommended)
  • Your favourite IDE

Intro to React Hooks

Join this brand-new workshop to learn the basics about the hot new thing: React Hooks!

Through a set of exercises, you will get to play with a few of them, and by the end you should be confident enough to write your own hooks and use the existing own with the best practices!

Knowledge of react is required, but just the minimum such as: state, props, and lifecycle hooks. Also you should know how to clone a git repository!

Get blazing fast at coding - React and TypeScript

During this workshop we’ll be working on an app that shows off the fastest car on the planet and that is built on React with Typescript.

TypeScript is just a superset of JavaScript.

But by allowing instant detection of many common errors a JavaScript developer faces, and by providing features improving the workflow, TypeScript is considerably increasing the speed of development thus making it a Sports Car on its own.

Participants will be given a broken version of the app they’ll need to fix before they can start implementing TypeScript fully in it.

Then they will add missing features as well.

By the end of the Workshop, participants will have a better understanding of
- React and its core features
- patterns and best-practices in React
- how to implement TypeScript in React

Hackages mentors will be there to guide them through this session.

Required skills:
- A good understanding of JavaScript

Requirements:
- Have Node JS and GIT installed on your computer

 

Access control in idiomatic React

In this workshop, we'll extend an idiomatic React app by using OAuth to access protected backend resources. I'll explain design decisions and implementation, exploring at each step, how to weigh security guarantees against ease of implementation, ensure the code remains idiomatic, and, provide an acceptable UX

Cookies and security tokens are competing techniques for providing authentication context. Although we discuss when one should be favored over the other, the focus of the workshop is on consuming APIs protected by JWT access tokens. These should be obtained securely from an OAuth 2 authorization server. In line with the IETF OAuth Working Group’s Best Current Practices, we use the authorization code grant with PKCE.

Apart from React, the main technical components for this workshop are

  • AWS Lambda
  • AWS API Gateway
  • Auth0
  • oidc-client-js

We will discuss alternatives for each and examine the forces that would push the web app design to another technology.

Prerequisites

Participants should bring a laptop with an environment in which they feel comfortable writing React applications. An AWS account is not needed, but is useful for those who want to set up their own backend.
In order to speed up setup, participants can clone the git repo at https://github.com/softwarewolves/riders and run npm install.

The objective of this workshop is to add the features of https://ride-sharing.ml to the cloned application. 

Schedule day 2 - conference day

08:30 - 09:00

Breakfast and registration

Keynote
09:00 - 10:00

Keynote: To all the code I've loved before

 

Whether this is your first year as an engineer or your tenth, our origin stories are more similar than we realize.

From writing a “Hello, World!” program, to getting your hands into some CSS for the first time, and everything in between, the code we write shapes us. This is a love letter to all the code I’ve written, read, reviewed and (sometimes) loathed.

The laughs and frustrations in this talk are shared by anyone that’s ever had to debug a missing semicolon, thought they accidentally wiped out a production database, or any number of the countless shenanigans we put ourselves through.

10:05 - 10:50

Scaling JavaScript to Video Ad Tech

When you watch an ad on the web, there's actually a lot going on behind the scenes. There's an automated auction that takes place in real time, involving a lot of server-to-server communication. Once there's a winner, a lot of parties want to be in the loop while that ad runs, and they all introduce their own client-side code.

DoubleVerify is one of those parties. As the leader in digital performance solutions, the company creates value for media buyers and sellers by bringing transparency and accountability to the market, ensuring ad viewability, brand safety, fraud protection, accurate impression delivery and audience quality across campaigns to drive performance.

Based in Ghent, the Belgian branch focuses on two parts of DoubleVerify's business. Firstly, we integrate measurement technology into video ads. Secondly, we automatically detect and fix issues with existing ads.

In this talk, we'll discuss how the team leverages JavaScript across the full stack. On the server side, we operate global infrastructure for our Node.js-based service, handling hundreds of thousands of requests per minute. On the client side, we continuously balance a minimal payload size against maximum browser compatibility.

As we've been doing this for many years, we'll share some key learnings that we've accumulated in the process. We'll also discuss the next iteration of our stack, as a sneak peek of what we're working on.

2nd Generation JavaScript Frameworks & Libraries

Did you know that over the past few years, large enterprises have been developing and open sourcing their JavaScript technology stacks? On GitHub, you'll find solutions by ING, Uber, PayPal, the Financial Times, Oracle, Microsoft, and many others. Some of these are software vendors, while others are in a variety of other industries. Each of them start from open source frameworks and libraries and all of them are interested in contributions.

The session focuses on something that's been going on below the surface, mostly unseen: large enterprises are using open source solutions in the JavaScript ecosystem (e.g., React, Vue, Knockout, Angular), developing their own internal tech stacks, and then pushing these stacks out to GitHub.

Let's explore the advantages of these and see what can be done and how practical these developments are.
 

10:50 - 11:05

Coffee break

11:05 - 11:35

Let's compose Web components

Creating web components shouldn't be limited to extending classes, it should use native solution but no magic that we can't understand.

What if instead of classes, we could create web components using only functions and being able to compose some of them together. In this talk we are going to see how we can use a library and native solutions like template literals for defining web components.

From 120 to 800 MB of RAM usage in 5 minutes. A story of plugging memory leaks.

'Recently your app has slowed down, are you working on a solution?'  

Having a well performing app is a crucial part of creating successful product - it might not be a key differentiator among other products, but it could be the reason for your users to leave you. When speaking about performance, we usually tend to focus on how fast we get into interactive mode. What happens then?

What if your average user spends hours, days or even weeks without reloading your SPA?

I'd like to share a story of how we came to the point we annoyed our customers with downgrading performance over time, how we identified our mistakes, created regression tests checking for memory leaks in different scenarios and, finally, fixed those problems.

And also how a random update to 3rd party tool can literally destroy experience of your users :)

11:40 - 12:10

Back to the future of JS II: Beyond what we can foresee

Do you want to know what the next exciting JS features that you don't even know you need? So, let me show you three proposals that may change the way you write code as the spread operator did. These features are:

  • Pattern Matching
  • Pipeline operator
  • Binary AST

After showing the usage of these features I'd like to invite you to help TC39 push these features forward and to contribute with proposals that you'd like to see implemented in JavaScript.

Javascript WebRTC: make JS Audio & Video Phone calls from your Web App

Javascript WebRTC is a new technology that is opening up huge scenario in distributed architectures to make real-time communications. We will look at the steps to make audio & video calls exploiting Javascript WebRTC technology. We will consider the pros and cons of two different implementations using sipML5 and Janus Gateway in a real scenario.

This talk is for all developers that are interested in making audio and video communication in their own web application with Javascript. We sill see great code examples, WebRTC technologies and a real open source demo of an audio/video call on GitHub.

12:15 - 12:45

Browsing NPM packages more effectively with Code Compass

 

With over 800.000 packages, the Node Package Manager (NPM) repository has grown to become the largest software repository in the world and it has become the de facto platform for sharing JavaScript libraries. With so many packages to choose from, and hundreds of new packages published every single day, how do you effectively find those packages most relevant to your project?

 

In this talk I will showcase a new search engine specifically tailored to finding and browsing software packages. By leveraging machine learning techniques and the millions of source files available on GitHub, our engine can tailor its search results to your specific project dependencies, so that the results you see become more relevant and more actionable.

Come listen and find out how to explore the universe of NPM packages in entirely new ways.

12:45 - 14:00

Lunch 

Afternoon parallel sessions
14:00 - 14:45

TDCD: Test Driven Component Development

Do you test your React components? I thought not, but why not? Maybe you feel that you don’t have time for tests? Or you feel that React is already tested, so you don’t need to test your components? More often than not, developers just don’t know how to test their components. CSS is hard. HTML is hard. Conflating CSS, HTML, and JavaScript is exponentially harder. TDD can help!

In this talk you’ll learn how to drive a component's behavior, agnostic of presentational concerns, with tests. You’ll learn how to focus on look and feel - visual refactoring - once you have a passing test suite. You’ll learn that it’s possible to build an entire functioning web application, and verify that it works, without ever looking at it in a browser.

Join me as I share a technique that has fundamentally changed how I build React Applications.

Passwords are so 1990

Authentication is hard, that’s why we tend to stick to the principles and techniques we know. The web however is evolving in a rapid pace, and so are the ways we should handle authentication. This talk will take you trough some  of the modern ways to authenticate.

Going from a token based approach for single page applications and APIs, to passwordless biometric authentication using the web authentication API.  Why keep on typing passwords when there might be a better alternative.

We’ll cover some of the pain points you might encounter while keeping your modern apps secure and have a quick look into the future. 

 

14:50 - 15:35

Machine learning for web developers

 

Machine learning is the thing that puts the wow-factor into your application. And just like any other wow-factor, people get used to it and start to expect it.

Machine learning is the domain of data scientists, but is getting more and more important for developers too. After all, you have to put this into your app.

In this talk we'll go through the basics of machine learning and illustrate those concepts with just a bit of tensorflow.js. This is a talk by a developer for developers

Taking your Angular application to the next level

Every three to four months Angular does a major update to their platform. As developers we have the luxury of a constant flow of new updates and features to improve our applications.
During this talk we will take a few steps back and have a closer look at which upgrades can have a big impact on your application.

We will focus on two components: lazy loading and web components. Those components can have a major impact on your application.

15:40 - 16:10

The search for App-iness : Progressive Web Apps

 

Progressive Web Apps combine the best of the web and the best of apps. They load quickly, even on flaky networks, have an icon on the home screen, can re-engage with users by sending push notifications, and load as top-level, full screen experiences.

In this talk Jamie Maria Schouren explains the what, why, and how of Progressive Web Apps, her own quest in search for "app-iness" and with code examples and real life use cases, shows why PWAs are the future of the web!

Transforming your hand drawings into HTML with AI

AI is becoming more and more commonplace in our lives: from face recognition to authenticate with your laptop or smartphone, creating your shopping list using your virtual assistant, or getting personalized recommendations in Netflix or your online web shop of choice.

As a developer this magic may feel intimidating and something you wouldn't touch with a 10-foot pole, unless you're a data scientist or any other sort of druid. 

In this session we'll look at how you can easily infuse your application with intelligence without knowing anything about machine learning. We'll use AI to convert hand-drawn designs and convert them into HTML code.

16:10 - 16:30

Coffee break

16:30 - 17:00

Making React applications work for everyone

React has quickly become one of the most popular front-end libraries for creating web applications. But how much do we know about how well these interfaces work for *all* of our users, including those with disabilities or impairments?

In this session I will discuss how React provides a basic foundation for accessible user interfaces as well as how to go beyond the out-of-the-box features to build more inclusive web apps.

I’ll cover common obstacles in designing and building accessible apps, helpful tools for testing, and share my own experience auditing an existing react app.

Contributing your time and effort to Open Source Software

Contributing to Open Source Software is incredibly important for the current software ecosystem. Especially JavaScript applications in this time and age make heavy use of it.

There's a problem though, not everybody knows how to spend their time and effort in contributing to it. I'll show guidelines and steps that you should take when helping on Open Source Projects, based on Github.

17:05 - 17:35

Don't make component abstract art

A (vue|react|angular) component automatically is a level of abstraction, which also means you can get into situations where it becomes impossible to understand what's going on. By following some sane rules and understanding what powers a component, we can make better components that are easier to reuse.

I'll go over the different levels of abstraction (prop, slots, components, mixins, component as XXX, css). Then also go over our more detailed approach on data fetching within a component.

The talk of course won't just be "this is what you can do", it'll include our journey from hard-to-reuse and where our solution to most questions was "copy paste and change" to "oh you can do it like that".

I plan to mix how this works in Vue, but also React and Angular; because it's interesting to compare things that come out of the box in one, to things you need to add manually otherwise.

Automating your NodeJS software delivery

 

Developers don’t get paid to write code. Instead, we're expected to deliver working software in production. How does your team turn source code into running software? And how do you make sure it stays working in all environments, including production, to environments like Kubernetes?

Atomist expands the range of development automation past what most of us have currently seen. 

"But my deployment process is unique!" No problem, we can solve this, in code, in TypeScript! How about having production or deploys through a single click? Build failed? Here’s a message in Slack with a detail on what wet wrong.

Or how about auto-formatting code so that you'll never forget. Let’s scale up ourselves, with Atomist.

17:40 - 18:10

Building dumb sh*t

We tend to see our jobs and our work as developers as the pursuit to help the world and build useful things for other people because that's what we are taught.

When we learn something we make to-do lists, we make useful things. In this talk I am gonna try and show you the value of making dumb things, making useless things.

JavaScript on the Internet of Things

JavaScript is ubiquitous and the Internet of Things (IoT) as well. In this talk, we want to show that JavaScript can be used from sensor to visualization. More specifically, we focus on integrating systems with JavaScript, demonstrating how data is generated, transmitted, aggregated and visualized.

Implementing and studying some IoT cases using LoRaWAN, we identified a pattern that manages metadata in an environment with very low bandwidth. We have built a framework called Ding.js based on this pattern to aid the development of IoT applications. The goal of this framework is to speed up setup time of many IoT solutions.
 

18:10 - 20:00

Reception + evening snack + networking

See you next year!