Forward JS Schedule


12:32pm
12:32pm

Maintaining Consistency in a Real-Time Collaborative Web Application

Brian Fields
JS: Main Room

Maintaining Consistency in a Real-Time Collaborative Web Application

Brian Fields
JS : Main Room
12:32pm - 12:32pm

A challenge in real-time collaborative web applications is maintaining consistent state across all participants. In the classroom application we’ve developed at Minerva, this state could involve things such as what document is currently showing on the main stage, whether poll results are visible to students, and chat messages.

Although it’s easy to use a drop-in pubsub solution to deliver messages from one browser to another, it’s much more difficult to maintain an eventual consistency guarantee for all the state that is communicated. Simultaneous and conflicting user actions, unequal network latencies, dropped connections, bogged down CPUs, and participants entering in the middle of a session all complicate matters.

In this talk, I’ll show how we extended Backbone to provide this consistency guarantee without requiring programmers to think about race conditions, all while using speculative updates to maintain a responsive web UI.

To enable screen reader support, press shortcut ⌘+Option+Z. To learn about keyboard shortcuts, press shortcut ⌘slash.

12:46pm
12:46pm

An Intro to Design Systems

Sarah Federman
JS: Main Room

An Intro to Design Systems

Sarah Federman
JS : Main Room
12:46pm - 12:46pm

A design system can vastly improve your team's productivity, but most of all, it leads to better products! We're going to explore common approaches to building design systems, the technology behind them, and how to go about creating your own.

12:54pm
12:54pm

Giving it a REST: An intro to GraphQL

Brian Douglas
JS: Main Room

Giving it a REST: An intro to GraphQL

Brian Douglas
JS : Main Room
12:54pm - 12:54pm

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. I will walk through how to approach adding it to your React and Angular projects and explore the relationship between it and your UI. I will also explore the architecture of Apollo Client, one of the leading GraphQL client implementations.

12:59pm
12:59pm

Write once, Use anywhere

Tejas Manohar
JS: Main Room

Write once, Use anywhere

Tejas Manohar
JS : Main Room
12:59pm - 12:59pm

PUT or PATCH? 200 or 201? HTTP or WebSockets? Today, protocols requiring enormous tribal knowledge rule the web when we really just care about calling remote functions. Introducing GRPC, an RPC framework from Google built on top of HTTP/2 and Protobuf. Define your API as plain old functions and generate idiomatic clients for a variety of platforms. In this talk, we’ll learn how to move faster and break fewer things with GRPC.

1:04pm
1:04pm

A Full Stack Websocket Deep Dive

Brad Urani
JS: Main Room

A Full Stack Websocket Deep Dive

Brad Urani
JS : Main Room
01:04pm - 01:04pm

Depending on whom you ask, a websocket is either a pipe, a channel, or a protocol. We know they allow two-way communication between a browser and server, but if you don't understand how they work, using them can be a leap of faith. Join us for a deep dive into websockets. We'll start at the browser and see how to connect, inspect and debug. Then we'll use node.js to build a websocket server using TCP sockets. Finally, we'll use a few handy Linux tools to peak into the kernel and see what's going on at the very lowest level. Along the way, we'll give concrete definitions to sometimes vague terms, like "connection" and "listening". Love cool tools? We'll explore several for debugging websockets at every layer of the stack. Whether you're just discovering websockets, or have used them for years, you'll learn something new, and discover that all it takes to use them confidently is a little understanding.

1:08pm
1:08pm

Create Electronic Dance Music with JavaScript

Walmik Deshpande
JS: Main Room

Create Electronic Dance Music with JavaScript

Walmik Deshpande
JS : Main Room
01:08pm - 01:08pm

When you go to a club or a party or a rave.. What is one of the most obvious things you notice about the music?

It's repetitive!

Since we are engineers, what comes first to mind when we see something repeating itself over and over again?

Automate the damn thing \m/

I've created a Node.js module called Scribbletune which has a very minimalistic API (only 3 methods). I'd like to showcase this module along with the options available to us today when it comes to creating music with JavaScript & Node.js right from the terminal. Using my module and regular JavaScript String and Array functions I will put together the structure of a Electronic Dance Music track and show how easy it is for you to start dabbling with EDM using JavaScript

1:12pm
1:12pm

WebGL the Easy Way With Unity

Rocco Balsamo
JS: Main Room

WebGL the Easy Way With Unity

Rocco Balsamo
JS : Main Room
01:12pm - 01:12pm

Ever try creating an app from scratch with Three.js or pure WebGL? I know I did, and I got nowhere fast. These platforms can be intimidating and tedious for those without an intimate knowledge of computer graphics.

But today, there's a way to build full-fledged WebGL applications and games with a mature editor that professional game developers have been using for about a decade. In 40 minutes, I'll show you how to create a simple physics demo, export it to WebGL and talk back and forth between the WebGL instance and your javascript application. I'll also show you how to customize your WebGL canvas, and how to access remote resources and API's directly from Unity scripting. Finally I'll share some of the advantages and limitations of this approach for production-level development.

1:17pm
1:17pm

Atom: Linting Like a Boss!

Robert Murray
JS: Main Room

Atom: Linting Like a Boss!

Robert Murray
JS : Main Room
01:17pm - 01:17pm

How to setup Atom to lint JavaScript code with eslint regardless of whether you're writing commonjs, node, react, or for angular 4.

1:21pm
1:21pm

Why ClojureScript?

Lily M. Goh
JS: Main Room

Why ClojureScript?

Lily M. Goh
JS : Main Room
01:21pm - 01:21pm

Three years ago, I made a transition from JavaScript to ClojureScript and have not looked back. In this talk I'll explore the costs and benefits of using ClojureScript, a functional lisp, and why you should consider making the same transition.

1:35pm
1:35pm

ClojureScript in your Pocket: ClojureScript, ReactNative, & GraphQL

Lily M. Goh and Dom Kiva-Meyer
JS: Main Room

ClojureScript in your Pocket: ClojureScript, ReactNative, & GraphQL

Lily M. Goh and Dom Kiva-Meyer
JS : Main Room
01:35pm - 01:35pm

In this talk we’ll explore how we replaced a buggy iOS app and an outsourced and abandoned Android app with a single React Native and ClojureScript app.

React Native allowed us to write a single codebase; GraphQL allowed us to eliminate the data-syncing issues that plagued the iOS app; ClojureScript let us move fast and recreate, in a matter of months, what took almost two years to build in Swift and Java.

We’ll discuss the obstacles that we encountered, how we circumvented them, and where we think the mobile industry will move. This is an exciting time to be (or become!) a mobile app developer.

3:13pm
3:13pm

The Node.js Event Loop: Not So Single Threaded

Bryan Hughes
JS: Main Room

The Node.js Event Loop: Not So Single Threaded

Bryan Hughes
JS : Main Room
03:13pm - 03:13pm

You've probably heard, and possibly lamented, that Node.js is single threaded. It's true that all JavaScript executed by Node.js is run in a single thread. This means each JavScript file you write, module you require, and even Node.js itself, all contend for processing time.

But JavaScript isn't the only code in Node.js. There's also a lot of C++, most important of which is the event loop. One of the event loops responsibilities is to manage a set of threads called the thread pool. As it turns out, most C++ code in Node.js is multithreaded!

Come learn how the event loop works in detail, how it affects the performance of your app, and how you can use this knowledge to your advantage!

3:15pm
3:15pm

“Works for Me”: Understanding Privilege in Tech

Bryan Hughes
JS: Main Room

“Works for Me”: Understanding Privilege in Tech

Bryan Hughes
JS : Main Room
03:15pm - 03:15pm

"Works for me." The words spoken to dismiss a thousand bugs. "Can't Reproduce." Issue closed. "You're getting worked up over nothing." "It was just a joke." "I worked just as hard to get here." "It didn't bother me." Problem dismissed.

"Works for me" is a natural reaction when confronted with cultural issues that don't impact us directly. It's a statement that isn't inaccurate, but is wildly incomplete. We have to learn to see past our own experiences and see and accept the experiences of others.

This talk will dive into how and why dismissal of culture concerns happens in the tech community, and how we can combat it with knowledge and empathy.

3:45pm
3:45pm

Getting hooked on Vue.js

Dalton A. Mitchell
JS: Main Room

Getting hooked on Vue.js

Dalton A. Mitchell
JS : Main Room
03:45pm - 03:45pm

This is the story of how I used Vue.js to build the redesigned UI of our web application. While I was initially skeptical, Vue made it easy to just try it out on a tiny feature at first, eventually building a full featured SPA without much more knowledge required than for the "Hello World" examples that I started with. Along the way, I learned some surprising things by trying a new tool and will share lessons about how framework creators can build tools that allow developers to be productive without sacrificing performance or an enjoyable user experience.

8:33pm
8:33pm

Scaling the Production of Complex Data Visualization Using Visual Programming

Sol Eun
JS: Main Room

Scaling the Production of Complex Data Visualization Using Visual Programming

Sol Eun
JS : Main Room
08:33pm - 08:33pm

We live in a world with enormous amount of data presented to us and with the advancement of technology and research, we process more information and are empowered to make data-informed decision about many things in our lives. For example, we can get suggestions on the movies we are more likely to enjoy, be reminded by things we have to buy when we enter a grocery store and even avoid traffic congestions and receive fastest route getting from point a to b.

Data Visualization has played a critical role on our ability to consume large sets of data. Even though commonly used chart types such as bar charts and line charts have been effective ways to present data, leading publishers and companies have been exploring better ways to tell stories using data by leveraging the latest technology and research.

Pega has been developing this project because we think building these complex data visualizations is very code-dependent and time-consuming. With tens of thousands of application developers and partners, we needed a flexible yet highly maintainable approach to produce and deploy these visualizations. Writing javascript which has been a primary method to develop these visualizations is not scalable and painful to maintain and troubleshoot. Visual programming method allows Pega to control fundamental building blocks and core architecture while enabling application developers to create data visualizations to meet demand and specifications of many enterprises.

You can find a very early prototype (don't judge us for the UI) of building a simple radar chart. https://www.youtube.com/watch?v=ZBN24SJnp_Q

Agenda 1. State of Business Intelligence - Many BI solutions are focused on helping users to create common chart types faster which is great. - One the other hand, authoring for many advanced visualization still is a challenge because of a steep learning curve. 2. Change of Perception - Chart as an atomic unit of data visualization. - There are only handful of chart types to support. - It is impossible to create advanced visualizations without coding. 3. Opportunity to Change How We Author Data Visualization - We propose visual programming language for web data visualization authoring. - Provide set of fundamental building blocks and enable complex results to emerge from them. - By organizing building blocks, authors can configure complex data visualizations with interactions and animations which is important to effective story telling. 4. Demo - Common chart types with interactions and animations (Bar, Line, Pie, scatter plots) - Advanced data visualizations (Rebuilding NY Times examples) 5. Design Decisions and Challenges - Three.js - Lazy Evaluation - Interactions - Animations - Rendering

10:20pm
10:20pm

House of Kards

Folashade Okunubi
JS: Main Room

House of Kards

Folashade Okunubi
JS : Main Room
10:20pm - 10:20pm

What a tangled web we weave. I don’t follow celebrity couples but it’s hard to ignore the love matrix that is the Kardashian family. With ES6 proxies, you can create behavior akin to pointers. Come listen as I throw shade and we learn about ES6 Proxies. We’ll learn about their behavior, how to use them as pointers, and how to use them to practice tree traversal. JS tree traversal will help you study for interviews, without having to setup a different environment.