ForwardJS 2019 Schedule


January 24th, 2019

9:00am
5:00pm

TBD

Ryan Burgess, Jem Young, and Diane Tate

TBD

Ryan Burgess, Jem Young, and Diane Tate
09:00am - 05:00pm

10:45am
11:25am

Porting 100K lines of code to TypeScript

Andrew Roberts

Porting 100K lines of code to TypeScript

Andrew Roberts
10:45am - 11:25am

TinyMCE is a well-known JavaScript library for rich text editing. In 2017, we migrated the entire codebase to TypeScript. Find out the tools we used, challenges we faced and the advantages we are now experiencing.

11:30am
12:10pm

GraphQL Without GraphQL - Backend Agnostic Requests with GraphQL style querying

Conor Hastings

GraphQL Without GraphQL - Backend Agnostic Requests with GraphQL style querying

Conor Hastings
11:30am - 12:10pm

GraphQL offers tons of benefits,. The colocation of data is the most revolutionary to me. What if we could utilize existing the GraphQL query parser but talk to any backend? I’ll explore how we can use GraphQL style data fetching without a GraphQL backend to bring colocation of data in the GraphQL query format that is source agnostic.

11:30am
12:10pm

Mentorship: The Awesome Parts

Suraksha Pai

Mentorship: The Awesome Parts

Suraksha Pai
11:30am - 12:10pm

As developers, we go through different phases in our career. In the initial periods, the focus is mainly on understanding core concepts, tenaciously solving problems, and incorporating constructive feedback. Soon, responsibilities come in the form of designing large systems, collaboration with people, both on a team and across organizations, and providing constructive feedback. This talk is about how mentorship plays a significant role in the development of both technical and people skills.

What is Mentorship? What values do you learn as a mentee, or a mentor, or both? How does mentorship have a positive impact on your career? These questions are answered using examples from my journey- first as a mentee, and then as a mentor at Yelp! All that sounds great, but how does one start finding a mentor or a mentee, you ask? You’re about to find out!

1:20pm
2:00pm

Testing, Testing, 1, 2, NaN

Gant Laborde

Testing, Testing, 1, 2, NaN

Gant Laborde
01:20pm - 02:00pm

Santa Clause, The Free Lunch, and JS Testing - All myths? We all know Testing is key, but it’s not easy. What are your options, what exists, and what works? Let’s talk about it all. What tools exist, and what matters in testing React and React Native.

1:20pm
2:00pm

Yo Dawg, I Heard You Like (Angular) Components

Michael Solati

Yo Dawg, I Heard You Like (Angular) Components

Michael Solati
01:20pm - 02:00pm

You write React for work, but you don't want to no mo'. You ask your boss, please? But he still says, no! How about instead of missing class, you try something different? Well, the Angular team has something cool for you... Angular elements! Angular elements are Angular components packaged as custom elements, a web standard for defining new HTML elements in a framework-agnostic way. Learn how to write and package your Angular components to be used across any framework (or no framework) by extending HTML to allow you to define a tag whose content is created and controlled by your Angular code. Now you can put your Angular components into any other frameworks components! (You gotta fight for your right to write Angular!)

1:20pm
1:35pm

Debugging the Scariest Development Environments: End the nightmares with tools like envinfo and Solidarity

Trevor Brindle

Debugging the Scariest Development Environments: End the nightmares with tools like envinfo and Solidarity

Trevor Brindle
01:20pm - 01:35pm

In a world where perpetually confused developers can’t quite get their environments working, new libraries emerge from the ashes of lost productivity: envinfo and Solidarity. Escape the complexity and witness the rise of projects embracing change to save their projects from themselves.

2:05pm
2:45pm

Managing Frontend State with Relational Transducers

Yifan Wu

Managing Frontend State with Relational Transducers

Yifan Wu
02:05pm - 02:45pm

Interactive application are becoming increasingly data intensive, running into challenges of asynchrony/consistency, and performance/networking. This talk will show how we can use a database management over interaction history to model the interactive application, and an accompany demo of a new JS library based on relational transducers.

2:50pm
3:30pm

Security Issues in Modern JavaScript Applications

Amanvir Sangha

Security Issues in Modern JavaScript Applications

Amanvir Sangha
02:50pm - 03:30pm

Developers are keeping up with JavaScript, but are they keeping up with security? This talk covers prevalent but not well known security issues in modern full stack JavaScript applications and how to avoid them, with a focus on applications built in the last two years.

2:50pm
3:30pm

What Crafting Taught Me about Code

Sarah Federman

What Crafting Taught Me about Code

Sarah Federman
02:50pm - 03:30pm

What could a bunch of DIY Pinterest projects teach us about coding? There's hidden insights everywhere in your life if you know where to look. Let's talk about the power of pattern recognition, how to practice it, and how embracing it can enrich your team!

4:05pm
4:45pm

Trading the Cascade for Consistency

Theresa Ma

Trading the Cascade for Consistency

Theresa Ma
04:05pm - 04:45pm

The cascade is a beautiful and troublesome thing - the infinite inheritance is arguably the best and worst part of CSS. We rely on it for setting styles in context and base styles and we try to protect it from naming collisions and specificity wars through all sorts of conventions in the classic markup + css world. Since migrating to React, we’ve had to do things a bit differently. This is the story of why we traded in the cascade for consistency and how we fumbled and figured our way through the challenges of CSS in React, eventually getting to a production quality design system.

How do we deal with reusable CSS in a design system centric world? Problems with the cascade: consistent BEM style naming conventions allow styles to easily be manually overridden & with hundreds of devs, our frontend infra team can’t be on every css code review If we give up the cascade and everything in CSS Modules becomes namespaced, how do we share basic styles that we want to include across all our components’ pages besides dumping globals on a page?

We based our solution on two key requirements: Components should be able to be used in isolation from one another Components need to be generic enough for developers to use across the site, but consistent enough that they adhere to our design system

This talk will cover some options as to how to write CSS in React without going down the CSS in JS route, alternatives to using global styles, specificity issues, baking meyer reset into base components, patterns around component abstractions, how to deal with no longer having the cascade part of styling when components interact, etc. This is a more in-depth talk version of https://engineeringblog.yelp.com/2018/03/css-in-the-age-of-react.html

4:05pm
4:45pm

Refactor Refactor Refactor: Leverage AST's to Push your Legacy Code (& the Web) Forward

Amal Hussein

Refactor Refactor Refactor: Leverage AST's to Push your Legacy Code (& the Web) Forward

Amal Hussein
04:05pm - 04:45pm

Web apps are evolving targets which show their age via varying degrees of code cruft. And that's ok. Tech debt is an expected side-effect of living production web apps, and the challenge lies in paying down the debt while still pushing forward.

Enter Abstract Syntax Tree’s...

AST’s enable developers to parse input code into a predictable tree data structure that can be easily traversed, manipulated and then regenerated in place. Transpliers such as BabelJS use this powerful pattern to transpile ES2015+ down to a baseline of ES5.

While this 1:1 transpiling is the most common usage of ASTs, they can also be leveraged to supercharge the transformation of your legacy code to meet the conventions, libraries, and/or design patterns your team is using today.

Amal aims to demystify this process by breaking down the steps of how to build your own custom AST based transforms.

Happy Traversing!

4:25pm
4:45pm

Creating WebVR for Communal Art

Andrés Cuervo

Creating WebVR for Communal Art

Andrés Cuervo
04:25pm - 04:45pm

In this talk I'll go through how I created interface elements for a WebVR installation at JSConf EU 2018, getting started with WebVR, & ideas for the future of WebVR art!

4:50pm
5:30pm

Measuring Latency In Single-Page Applications

Jordan Hawker

Measuring Latency In Single-Page Applications

Jordan Hawker
04:50pm - 05:30pm

You've launched your application, and now you've been asked to optimize it. How do you know how fast it is? Is your data accurate and actionable? We'll explore both generic and framework-specific approaches to instrumenting your application, along with real-world examples of how to put these techniques in practice!

4:50pm
5:30pm

Panel: Front End Happy Hour

Brian Holt, Jem Young, Mars Jullian, Ryan Burgess, Augustus Yuan, and Ryan Anklam

Panel: Front End Happy Hour

Brian Holt, Jem Young, Mars Jullian, Ryan Burgess, Augustus Yuan, and Ryan Anklam
04:50pm - 05:30pm

Topics and description TBD