jsDay will be all about Javascript and web development.

Wednesday 10th May 2017

09:45 I am good at JavaScript, I swear.
Keynote by Jose Aguinaga in Track 1 (50 minutes)

Fraud syndrome, better known as impostor syndrome, is a common phenomena where someone feels like a fraud because they think everyone is better than themselves. Working with JavaScript tends to generate this effect on developers, because there is always a new library to learn, and a new framework to master. Despite their experience, every developer that interacted with JavaScript, has found themselves with a confused face while trying to understand the new technology everybody is talking about, just to have it replaced by another one in the incoming months. In this talk, Jose Aguinaga, author of "How it feels to learn Javascript in 2016" and experienced developer (he swears), will talk about JavaScript fatigue and better approaches to avoid the Fear Of Missing Out other than trying to learn everything that comes from HackerNews. From his job in San Francisco, to teaching coding in Bali, Jose will share his personal experiences of working for multiple startups in various cities across the world, and share his views on how to learn the most popular (and unpopular) language in the world.

Building Chatbots with JavaScript
Talk by Tessa Mero in Track 1 (50 minutes)

Chatbots and conversational agents have become very popular in the recent years and there is a huge research effort to automate conversations in several applications. What are Chatbots? How can it benefit you? How do you write the code for it? These questions will be answered during the session with step by step directions using node.js so you can easily follow along. Come join me and build your first Hello World Chatbot!

SPA, isomorphic and back to the server: our journey with JavaScript
Talk by Alessandro Nadalin in Track 2 (50 minutes)

We've been toying around with JS since 4 years, trying to figure out what's the best approach to build mobile-friendly apps that would offer the best performances on mobile devices. We first went SPA and then decided to take a different approach. 2 years ago we presented a talk, at this very same conference, about how we decided to tackle our problems on mobile with an isomorphic application. Today, we would like to guide you through 2 years of that choice and why we decided to take a step back and go revamp our mobile website again, with server-side rendering and a pinch of React.

Getting touchy
Workshop by Patrick H. Lauke in Track 3 (2 hours, 30 minutes)

Beyond smartphones and tablets, touch screens are finding their way into laptops and even desktop computers. With hardware support for touch becoming increasingly ubiquitous, it's time to explore what new possibilities are available to developers. This workshop will cover the basics of handling touch (as well as stylus/pen input) in JavaScript — from making sure simple single-tap interactions are as responsive as possible, all the way to examples of full multitouch, gesture-enabled elements, with a particular focus on common pitfalls and browser inconsistencies.

12:00 Frontend automation: bring it to the next level
Talk by Matteo Ronchi in Track 1 (25 minutes)

In the last years, complexity of front end development has exponentially grown making it really difficult to keep up with all the new solutions being developed. Maintaining and configuring automation tools is becoming a real burden, very difficult for newcomers and time consuming for experienced developers. You'll see how it's possible to improve your project's automation using several techniques, tricks and tools. At the end you will be able to improve your developer experience while maintaining and evolving your project's automation.

Web Bluetooth
Talk by Sandro Paganotti in Track 2 (50 minutes)

Web Bluetooth is cool, it draws a line from the browser to the real world. Join this talk for a sneak peak of these API and how, along with Web USB, they are starting shaping the future interactions between the browser and the physical world.

14:30 Animate the Web with Ember.js
Talk by Jessica Jordan in Track 1 (25 minutes)

https://jessica-jordan.github.io/animate-the-web-with-emberjs/#/ Were you a fan of animated cartoons as a kid, and wondered if one day you could create your own? Here's the great news: you can! Using open web standards and Ember.js you're able to create frame-by-frame animations—and even to make them interactive! This talk will explain why open web standards are more important than ever for creating animated content. We'll see how we can leverage the power of HTML5 Canvas in Ember efficiently and how to make animations interactive with the support of actions.

Advanced TypeScript: elegant solutions to common problems
Talk by Stefano Mostarda in Track 2 (25 minutes)

TypeScript is JavaScript on steroids. Not only it adds static typing to JavaScript applications, but it also adds ES2016+ features like arrow functions, destructuring, async/await, decorators, type guards and so on. These features are extremely powerful and help to write code in a simpler way compared to the past. In this sessions we’ll talk about these features and we’ll see how to use them to better solve from common to advanced problems.

15:00 Building a serverless company with Node, React and the Serverless framework
Talk by Luciano Mammino in Track 1 (50 minutes)

Planet9energy.com is a new electricity company building a sophisticated analytics and energy trading platform for the UK market. Since the earliest draft of the platform we took the unconventional decision to go serverless and build the product on top of AWS Lambda and the Serverless framework using Node.js. In this talk I want to discuss why we took this radical decision, what are the pros and cons of this approach and what are the main issues we faced as a tech team in our design and development experience. We will discuss how normal things like testing and deployment need to be re-thought to work on a serverless fashion but also the benefits of (almost) infinite self-scalability and the piece of mind of not having to manage hundreds of servers. Finally we will underline how Node.js seems to fit naturally in this scenario and how it makes developing serverless applications extremely convenient.

Let's build a full stack
Talk by Yoshua Wuyts in Track 2 (50 minutes)

Ever wondered what happens in the code that powers your applications? How about we explore the internals of a modern day JavaScript stack by going through all the code needed to create a performant, modern application. ⚠️ Warning: live coding ahead ⚠️

16:30 Browsers behind your back
Talk by Phil Nash in Track 1 (25 minutes)

You've probably heard of the magic of a Service Worker when a user is offline, but what can we do for them when they get back online? We can take advantage of the Service Worker's life outside of the page and start to perform actions in the background. In this talk we'll investigate the Background Sync API and the APIs that it depends upon, we'll look at what you might use it for and see it in action. Once that is behind us we can take a peek into the future and even more background tasks with a look at the Periodic Sync API.

Test like it's 2017
Talk by Michele Bertoli in Track 2 (25 minutes)

Testing UIs has always been a hard job. In the components era, there are new tools and solutions available that transform completely the way we approach testing. From snapshots, through end-to-end frameworks, to style guide testing. In this talk, we'll see some modern (and creative) testing solutions.

17:00 I think I know what you’re talking about but I’m not sure
Talk by Jenn in Track 1 (25 minutes)

Recursion, instantiate, lexical scope - where do these words come from?! If you’ve ever been in conversation with other developers and thought, "I think I know what they’re talking about, but I’m not sure...", you’re not alone. Let’s delve into the weird and wonderful parlance that computer scientists and developers have created for themselves. Whether the words are borrowed or just plain made up, I’ll uncover how they made their way into the vocabulary of the modern programmer. In this session, you’ll learn everything from etymology to history to broader definitions, all of which can help you understand what the heck that person’s rambling about. So, the next time you’re in conversation, you’ll be the one discussing dependency injection versus inversion of control with ease.

Visual Regression Testing: from a tool to a process
Talk by Nikhil Verma in Track 2 (25 minutes)

We work with many Javascript based tools in our day to day lives. But how do we take those tools from being used by a single person on a machine and integrate it into a team's workflow? How can we link those tool into chains and go from a tool to a process? :) In this talk I will discuss how I converted PhantomCSS, a tool for visual regression testing, and integrated it into our workflow. I will also cover the challenges we faced which ranged from integrating the tests into our CI, test execution taking too long, ability to browse the test results and notifying developers about failed regressions.

HAPPY HOUR in Track 1 (1 hour)

Getting together, chats, spritz, beer, networking etc

PARTY !!! in Track 1 (4 hour)


Thursday 11th May 2017

JavaScript @ Uber
Keynote by Dustin Whittle in Track 1 (50 minutes)

Join this session for a deep dive on how Uber leverages JavaScript across its engineering orgs. From building frontend properties with a full JavaScript stack using express and react to the tools and infrastructure we use to automate best practices.

What the hell is fiber and why should I care
Talk by Fatos Hoti in Track 1 (25 minutes)

React Fiber is an ongoing reimplementation of React's core algorithm. For more join the talk :) Until then isfiberreadyyet.com.

CS101: intro to computational complexity: the Sorting Problem
Talk by Claudia Hernández in Track 2 (25 minutes)

Have you ever wondered how Array#sort works under the hood? Setting aside its default, not well-known behavior of sorting elements lexicographically instead of numerically, there is actually so much more going on than meets the eye. In this CS101 we’ll explore some useful sorting algorithms currently used by popular JS engines such as Chrome's V8 and Firefox's SpiderMonkey. We'll demystify O(n) notation, talk about performance, and take a look at the JS implementations of said algorithms. As a developer, learning how these algorithms work, why and when to use them will help you solve complex problems in your web applications. If you ever skipped this course at school (or never actually taken it), now's your chance to catch up and learn a thing or two !

Building Web Apps
Talk by Ada Rose Edwards in Track 1 (25 minutes)

The modern web is more interoperable than ever. Combining APIs for push notifications, offline support and getting an icon on the homescreen there has never been a more worthwhile time to use the Web to make native-like apps. This talk aims to detail the benefits the Web can bring to you and how to best take advantage of the Web platform.

Calendar / Kalender / تقويم (aka, the fun of locali[zs]ation)
Talk by Paul Verbeek-Mast in Track 2 (25 minutes)

For the past few months I’ve been creating a calendar for our partners at Booking.com. Months? Yes, months. Creating a calendar that works correctly all across the world for 42 different languages and even more locales, is not something that you do in a week. In this talk I will talk to you about the weird things I learned. From Brazilian Summer Time to Slovakian date formatting. And how to avoid the many (many!) mistakes I made.

12:00 The dangers of object oriented designs
Talk by M_a_s_s_i in Track 1 (25 minutes)

Object orientation has been all the rage since the late 80s (at least for those old enough to remember). And this is not a passing fad: very recently a class construct has been added to the Javascript standard to make writing object oriented code simpler. On the other hand functional programming is gaining popularity, and the average developer has a hard time understanding what's really going on, which trend is just a fashion and which practices are actually useful. To shed some light on this we'll see what was the real vision when object orientation was invented, what is still good about it, what is troublesome, and how we can use this knowledge to write better code.

What Custom Elements are good for?
Talk by Maurizio Mangione in Track 2 (50 minutes)

The idea is to explain what Custom Elements are good for, when you can take advantage of this new technology in combination with the other Web Components feature and how to integrate them with JS frameworks like React, Angular etc...

14:30 knock-knock-who-there-file- compression-talk_ FINAL_2.tar.trz.bz2.gz
Talk by Irina Shestak in Track 1 (25 minutes)

Fade in. An opened terminal window. iTerm2 is the flavour. Dracula, the theme. You split the panes in two. You are at it again: a stash of audio buffers and that dream of manipulating a lossless file. With node as your language of choice you embark on the night. You manipulate, you transform, you have your byte order sorted, on their own accord your fingers start to type gzip -f yourFavPhilCollinsSong.wav. All of a sudden, a whisper: But what if. we stream. file compression. on the fly. Fade to black. In this talk we will walk through file compression algorithms in node as well compression standards. We will cover working with streams, audio buffers, and typed arrays to get us to compress and decompress files, and yourFavPhilCollinsSong.wav.

Developing zero-knowledge solutions with JavaScript
Talk by Jose Aguinaga in Track 2 (25 minutes)

On January of 2017, the Web Cryptography API became a W3C recommendation. Using native browser implementations of cryptography techniques, developers can provided client-side solutions to their users to protect their data, create zero-knowledge systems, and provide customer specific content without relying on server-side implementations. During this short talk, we'll see some use cases of the Web Cryptography API, as well as some of its implementations to encrypt user's data.

15:00 An empty database in everybody's pocket
Talk by Phil Nash in Track 1 (50 minutes)

IndexedDB is not new. It is supported in almost every browser. Without it, the future of progressive web apps are in peril. But there is not a lot of love for it and that needs to change. We'll investigate why we should love IndexedDB and the kind of apps you can create when you have the power of a database in the browser. Then we'll dive into how to use IndexedDB with a look at both the terrifying API and the friendly libraries that will help us along the way. Together we'll discover a new love for IndexedDB.

Vue.js? PWA? PRA?
Talk by Blake Newman in Track 2 (50 minutes)

Slides (improved): http://slides.com/blakenewman/vue-service-worker-realtime What is Vue.js where did it come from? We will take an overview look at the new kid on the block. Exploring the workings of a `Progressive Framework’ and where it sits in the industry. While discovering Vue.js we will explore the infamous PWA’s (Progressive Web Applications), which will take the spot light in majority of application in the web. Extending the PWA platform we will look how Sockets and Service Workers can coexist together, a PRA (Progressive Realtime Application), allowing platforms to improve the user experience without affecting the critical download chain.

The big rewrite: a true story
Talk by Marco Botton in Track 1 (50 minutes)

Balsamiq Mockups, the popular tool for wireframing, was based on Adobe Flash/Air. We rewrote it from scratch using Javascript as main language, to make it run natively on the browser, while desktop and mobile versions are in the works. During this project, that took more than two years of work, we faced a lot of technical challenges in all fields: multiplatform architecture, UI performance , vector graphics, real time collaboration, management of a large codebase, ES6, debugging, automated and manual testing... In this talk, centered on the web version of Balsamiq Wireframes (we also fixed the name!), I will discuss the choices we made, what worked well and what not so well, what we learned and... what we did not. :-)

How much performance can you get out of JavaScript?
Talk by M_a_s_s_i in Track 2 (50 minutes)

Javascript started as a slow, interpreted language, but in more than two decades things have changed completely and now we have even game engines running in the browser. What is its maximum theoretical performance, and how can you write code that exploits its full potential?

How Open Source changed my life
Keynote by Matteo Collina in Track 1 (25 minutes)

At some point in my career I decided I wanted to quit software development and do an MBA. For a stroke of luck, I failed the admission test and I kept developing software. It was early 2010, and I did not know Node.js existed, and the impact it would have on my life. I wanted to speak at conferences, and I was terrible at it. Then, I was lucky to find a job that allowed me time to develop Open Source libraries. I was lucky that someone noticed one, and I went speaking at NodeConf.eu 2013. Now I travel the world as a consultant and conference speaker, and I maintain close to 200 OSS libraries. Open Source can change your life too, because there is no such thing as luck.