We're so excited to bring you a schedule packed with incredible sessions from our invited speakers and open call submitters.

Check out all of the topics that you can see at Abstractions below and make sure you are registered.

Be sure to take a look at our Distractions area. In the Distractions area, you will be able to take a break from the sessions and refresh your spirit with some non-lecture content and thoughtful activities.

A downloadable schedule is included in our downloadable program.

Viewing Options


Abstractions Stage

9:00 AM - 10:00 AM, Abstractions Stage

OK We Had Our Fun so Now Let's Get Serious

Joe Armstrong

Even though we've been playing with computers since 1948, we still don't know how to program them reliably. This lecture will cover the history of computing, complexity, and why programming is difficult. What dangers do we face? How should we approach programming as a mental discipline?

6:15 PM - 7:15 PM, Abstractions Stage

JavaScript and the Rise of the New Virtual Machine

Scott Hanselman

Description TBA


10:00 AM - 11:00 AM, Distractions

Yoga for Engineers

Marylou Lenhart

Sitting at a desk all day contributes to the already typically sedentary lifestyle of the modern world. Yoga for Engineers will teach you some easy exercises and yoga postures that help strengthen the muscles that are weakened by sitting in a chair during your work day.

11:00 AM - 3:00 PM, Distractions

Hack Session


Stop by this hack session where we'll have an open room for working on projects and meeting new people based on what they're working on.

4:00 PM - 7:00 PM, Distractions

Hack Session (open data slant)


Stop by this hack session where we'll have an open room for working on projects and meeting new people based on what they're working on.

12:00 PM - 1:00 PM, Distractions

The Joy of Miniature Painting

Caleb Thompson

Devs stare at computers all day only to go home and stare at more glowing boxes. A nontechnical hobby can help keep us engaged at work. As Caleb paints on stage he'll describe the techniques he uses, discuss how painting has helped him stave off burnout, and talk about beating mental health stigmas.

1:00 PM - 2:00 PM, Distractions

The Joy of Miniature Painting (Repeat Session)

Caleb Thompson

Devs stare at computers all day only to go home and stare at more glowing boxes. A nontechnical hobby can help keep us engaged at work. As Caleb paints on stage he'll describe the techniques he uses, discuss how painting has helped him stave off burnout, and talk about beating mental health stigmas.

3:00 PM - 4:00 PM, Distractions

Speaker Meet and Greet

Sandi Metz, Jeffrey Zeldman, Saron Yitbarek, Larry Wall

Sandi Metz, Jeffrey Zeldman, Saron Yitbarek, Larry Wall and other speakers are hoping to talk to any and all of the conference attendees who are interested in their work. Spend time at this meet-and-greet chatting with them about their talk or their other current products.

7:30 PM - 8:00 PM, Distractions

Just a Minute - Semifinals (Eastern Division)

Andrew Faraday

Just a Minute is a game show that has delighted audiences across Britain for almost half a century. Speakers are challenged to speak for one minute without hesitation, repetition, or deviation – a feat that is much harder than it sounds. Fast-paced, funny, and techy audiences love it.

7:00 PM - 9:00 PM, Distractions

Girl Develop It Code & Coffee - Abstractions Edition

Girl Develop It

Do you like coffee, tea, or programming? Need some guidance on your work? Meet at 18:50 at the Distraction area to walk about ten blocks to the 21st Street Coffee Shop (Strip District). Note the venue is not open until 19:00! Please read the Girl Develop It and Abstractions Codes of Conduct before attending. Non-members welcome!

8:00 PM - 10:00 PM, Distractions

"What Comes Next is the Future" movie premiere

Bearded Studio

Watch the world premiere of “What Comes Next is the Future.” This documentary by Bearded is an effort to capture the titanic shift in the web landscape initiated by mobile devices. A special panel will feature Jeffrey Zeldman, Matt Griffin, Christopher Schmitt, and more.

Builder Stage

11:00 AM - 11:45 AM, Builder Stage

Exploring Elixir for building concurrent and robust applications

José Valim

Description TBA

12:40 PM - 1:20 PM, Builder Stage

Creative: Courage

Petro Salema

Every true act of creation is a risk. The essence of our creativity is not imagination or skill, but courage. Petro will translate the principles of courage into processes of software development and teambuilding so we can stop imprisoning ourselves within the limitations of others' success.

1:45 PM - 2:30 PM, Builder Stage

Perl 6

Larry Wall

Description TBA

2:40 PM - 3:10 PM, Builder Stage

Performance under pressure

Mat Marquis


3:20 PM - 4:05 PM, Builder Stage

Abstracting Security: Secrets, Certificates, and More

Mitchell Hashimoto

For security to be pervasive, it must be abstracted. HashiCorp has been working on this problem with Vault, used by some of the world's most security-sensitive organizations. Learn about the need for easy best practices in security and what it's like to work with these secure organizations.

5:10 PM - 5:55 PM, Builder Stage

Let Us Now Praise Ordinary People

Mike Monteiro

Everywhere you turn, companies are promising to change the world. But when the people already on top make these promises, are they really changing it for your benefit? If we really want to change the world, we need to change more than how we design it: we need to change who designs it.

Compiler Stage

10:10 AM - 10:55 AM, Compiler Stage

I, Web Designer

Matt Griffin

What does it mean to be a “web designer?” Griffin draws on video interviews shot for his documentary “What Comes Next is the Future” to explore web experts' perspectives on specialization and overlap, iteration, ceding control, designers as coders, legacies of graphic design, and more.

11:50 AM - 12:30 PM, Compiler Stage

The buzzwords are not the territory

Andrew Clay Shafer

Everyone needs to continuously devops containerized cloud native microservices or die trying. Or maybe not. Tech hypecycles bridge the past to the future. What can we learn from the hypecycles of yesteryear? What's actually happening right now?

12:40 PM - 1:20 PM, Compiler Stage

Build your own tools with Electron and React.

Adam Simpson

Tooling can be great, but sometimes a tool doesn't fit how you or your team works. With Electron and React, it's incredibly easy to build your own. This talk will cover not only how to get started with Electron and handle common pitfalls, but also why React is such a great choice.

1:30 PM - 2:20 PM, Compiler Stage

Let's talk about MIDI.

Ruth John

MIDI, the Web MIDI API, and the Web Audio API are much more useful than you might have imagined. This interactive talk will match MIDI with the Web Animation API and the Web Bluetooth API. As the web gets hardware-ready, this talk is great start to getting those APIs at your fingertips.

2:30 PM - 3:15 PM, Compiler Stage

Everyone Else is So Clever

Lyza Danger Gardner

Other people build beautiful things and launch profound projects. Are the rest of us just inefficient and frenetic? Is the web’s awesome, impetuous progress making dilettantes of us all? Join Lyza for a tale of uncertainty and triumph on the curious path to the newest browser technologies.

4:15 PM - 5:00 PM, Compiler Stage

Embracing your impending obsolescence.

Bryan Liles

Is 2016 really the year of the bot? After filtering out the hype of impending bot technology, Bryan will explore the usefulness of bots and how we can use this technology to our advantage. From deploying software to managing open source projects and beyond, bots create a fun new world.

Domain Stage

10:10 AM - 10:50 AM, Domain Stage

Power up your prompt!

Stephen Ball

The command line: more than an afterthought, it is our connection to all of the systems and services that make up our applications. Stephen will layer on a series of plugins and tools that will transform our bare bones prompt into an amazing force of speed and efficiency.

11:00 AM - 11:40 AM, Domain Stage

Why we need to bring back the apprenticeship, and how to make it happen

Rachel Krantz

Apprenticeships are mostly reserved for trade-oriented work. The prevailing internship model in tech has its limitations, especially since more people without CS degrees are pursuing careers in tech. Learn about how you can benefit from implementing apprenticeships at your own company.

11:50 AM - 12:30 PM, Domain Stage

Friendly Functional Programming For The Web

Luke Westby

Elm is a functional programming language for the web designed for approachability. Elm can build browser apps that are free of runtime errors and easy to maintain using functional concepts, but without immense CS knowledge. No runtime errors, no category theory, just great UI code.

12:40 PM - 1:20 PM, Domain Stage

The Kids Are Going To Be 200 OK

Heidi Waterhouse

Infosec is like sex ed. If you wait until kids need it, you have waited too long. We are at a crossroads where we can teach children that their only safety lies in compliance and censorship, or we can give them tools and mental models for how to stay reasonably safe in an unreasonable world.

1:25 PM - 2:05 PM, Domain Stage

BDD: Baby Driven Development

Allison McMillan

Raising a child and being a developer are surprisingly similar journeys. Explore the similarities through common approaches to coding and childrearing. Learn how our community be more responsive and understanding of the large percentage of developers who are current or future parents.

2:10 PM - 2:50 PM, Domain Stage

Sunlight & Air: 10 Lessons for Growing Junior Developers

Erika Carlson

Training junior developers is an essential piece of building a successful team, but it's a complex and challenging task. Learn to identify potential, mentor for technical growth, and effectively coach junior developers in soft skills and interpersonal development.

3:20 PM - 4:00 PM, Domain Stage

Irresistible APIs

Kirsten Hunter

Web APIs are relatively simple to implement, which has led to many ill-conceived APIs out in the world. Creating APIs that make developers jump for joy is a goal we should all have, and this talk outlines a process for API development which will result in a better-considered product.

4:15 PM - 4:55 PM, Domain Stage

Interfaces: Building Worlds & Feeling Great

Brad Fults

Great software comes from great interfaces. Not just APIs, UIs and java.lang.Interfaces, but as broad as one entity working with any other entity. Interfaces are everywhere in software - Brad will show people some ways to think about them and make them better at every level of abstraction.

5:10 PM - 5:50 PM, Domain Stage

Flunking the Turing Test

Safia Abdalla

In popular culture, the Turing Test is often depicted as the absolute test for determining machine intelligence. However, there are other alternatives that capture the nuances of intelligence more effectively. Safia will explore these alternatives and the shortcomings of the Turing Test.

Element Stage

10:10 AM - 10:50 AM, Element Stage

Lazy-loading ES2015 modules in the browser

Tiago Garcia

Learn about loading code during page load time vs lazy loading, then how to load ES2015 modules both synchronously (during page load) and asynchronously (lazy-load) using System.js over Babel, as well as how to use JSPM to organize this process and resolve dependencies from NPM and GitHub.

11:00 AM - 11:40 AM, Element Stage

Risks in the Software Supply Chain

Mark Sherman

11:50 AM - 12:30 PM, Element Stage

More than a formality: How to get the most out of stakeholder interviews

Azy Groth

You know that sitcom gimmick where one miscommunication ruins everything? Managing software projects can feel like that plot line on repeat. Break the cycle by prioritizing stakeholder interviews at kickoff. It’s your best chance to set expectations, allay fears, and recruit allies.

1:25 PM - 2:05 PM, Element Stage

Diving into the details with DTrace

Colin Jones

Performance issues can be hard to solve. DTrace can help, and it's not as scary of a tool as it might first appear! By instrumenting the OS to answer incredibly specific questions about systems performance, Dtrace helps us generate new questions and hypotheses.

2:10 PM - 2:50 PM, Element Stage

Accessible SVGs

Heather Migliorisi

SVG is emerging as the preferred graphic format on the web today. Are you ditching icon fonts and old image formats for the well-supported SVG? Let’s see how the shift toward SVG will impact users of assistive technology (AT) and what is needed to ensure a great experience for everyone!

3:20 PM - 4:00 PM, Element Stage

Designing the Details: How Micro-Interactions Can Elevate Your UX

Karen Tang

So you like your UX, but do you love it? To take your UX up a notch, consider adding micro-interactions. Pay attention to the triggers and feedback that happen almost invisibly. Use design elements like motion, color, copy, and simplicity. Learn how details can make all the difference!

4:15 PM - 4:55 PM, Element Stage

Back Up Your Life

Michelle Noorali; Adam Reese

Getting your environment set up for a new project/language is tedious. The feeling of losing all of your hard earned configuration settings in an instant is horrifying. However, getting comfortable with a tracked dotfile workflow can help to prevent unnecessary loss and distress.

5:10 PM - 5:50 PM, Element Stage

Cryptography Pitfalls

John Downey

This talk will give developers and sysadmins a taste for the myriad pitfalls real systems have encountered while implementing cryptography. The goal is for everyone to walk away with an appreciation of these challenges and some pointers for avoiding these issues in their own systems.

Framework Stage

10:10 AM - 10:50 AM, Framework Stage

Actor Clustering with Docker Containers and Akka.Net in F#

Riccardo Terrell

In this session, you'll learn to build and deploy distributed systems combining the power of Akka.Net, the flexibility of F\#, and the simplicity of Docker containers. Together these technologies enhance the effects of F\# “code-quotation,” which allows for the deployment of arbitrary Actors.

11:00 AM - 11:40 AM, Framework Stage

The Sound of JavaScript - Music and Synthesis in the Browser

Barak Chamo

Barak will present recent work exploring WebAudio and building web-based synthesizers and visualizers. Live code and examples will provide some audio background and useful advice on using WebAudio in real-life projects including audio visualization, midi, and stream manipulation.

11:50 AM - 12:30 PM, Framework Stage

Machine Learning (ML) in Healthcare - For the Rest of Us

Mohinder Dick

Mohinder hopes to inspire developers to get into machine learning and apply their new skills to healthcare. Learn how open data and OSS like Spark, Python, and R can be used to promote life changing outcomes in healthcare.

1:25 PM - 2:05 PM, Framework Stage

Functional embedded systems with Elixir and Nerves

Justin Schneck

Nerves can create enhanced embedded systems in hardware running Elixir. Justin will demonstrate service discovery, hot code swapping, and collaboration through pubsub messaging and mesh networking. Explore the Nerves development lifecycle from development to deployment.

2:10 PM - 2:50 PM, Framework Stage

From Evergreen to Evergreat: Leveling up Seattle's Parks with Microcontrollers!

Walé Ogundipé

See how Walé and his team designed, prototyped, and developed a user feedback system for Seattle's Parks that is orders of magnitude cheaper than similar solutions they currently have in place. Walé will show off the latest iteration with new hardware and software stack choices.

3:20 PM - 4:00 PM, Framework Stage

Making Data Dance

Barrett Clark

Databases are incredibly powerful and can do remarkable things at scale. Why not harness that power? This talk will discuss some of the things you can do with PostgreSQL that will both blow your mind and also help you transform data into knowledge and impressive visualizations.

4:15 PM - 4:55 PM, Framework Stage

The Art of The Laptop Cluster

David Blank-Edelman

Today we build microservices and distributed systems – how can we ensure that our laptops are a step towards production-ready software and not a distraction from it? Explore the art and challenges of constructing useful clusters on our primary development/operations control machines.

5:10 PM - 5:50 PM, Framework Stage

Threads, Processes and the Death of Moore's Law

André Henry

Moore's Law is at its end. CPUs will only get more powerful with the addition of more cores. To take full advantage of these new processors, computer programmers must understand multithreaded programming and the different models presented to us by our languages, frameworks and processors.


Abstractions Stage

9:00 AM - 10:00 AM, Abstractions Stage

Free Software, Free Society

Allison Randal

"And if it comes back to being all alone at the starting gate, so be it. We hadn't wanted this fuss, these extras. We were calm under an appearance of turmoil, and so we remain even today..." (John Ashbery, “Episode” from Planisphere)

6:15 PM - 7:15 PM, Abstractions Stage

Has the Fun Gone out of Web Design?

Jeffrey Zeldman

Has a deluge of frameworks and technologies leached the creativity from digital design, replacing the joy of craft with a hellish treadmill of overly complicated tools to master? Learn how our oldest design tools can still carry us through our new multi-device, rapidly evolving medium.


10:30 AM - 10:50 AM, Distractions

Building and Programming a Quadcopter Flight Controller from Scratch

Ryan Boland

Curious about how drone flight controller software works, Ryan embarked on a project to build and code a flight controller from scratch. From soldering to uploading code and testing, this talk covers his journey of learning how to build and program a quadcopter from scratch.

10:55 AM - 11:00 AM, Distractions

Building an internet-connected Christmas Tree

Will Dages

A few years ago Will connected some LED lights to the Internet, wrapped them around a Christmas tree, and made them change to whatever color was sent in a text message. Since then, a number of improvements have been made. Come play with the demo and learn how it works from end-to-end.

11:00 AM - 11:05 AM, Distractions

Video Game Hacking: Memory Introspection For Fun

jackie kircher

Jackie will present a live demo where you can edit video games as you can play them. Learn about scanning memory and the fundamentals of assembly so you can watch and play along as she (or you!) explores the memory of a running game, bending and breaking its rules on the fly.

11:05 AM - 11:10 AM, Distractions

Micro-datacenter chaos monkeys!

Steve Sloka

Kubernetes handles container orchestration, scaling, and a number of failure scenarios gracefully with a real Raspberry Pi computing cluster. Play a real-life chaos monkey by pulling the plugs and visualize using Minecraft! See how containers can be run with hardware you can touch!

11:10 AM - 12:00 PM, Distractions

Distractions Demos

Sloka, Kircher, Dages, Boland

The presenters from the Distractions segment will set up demo stations to display their work and answer questions

11:00 AM - 6:00 PM, Distractions

Board Games with LFG

You & Friends!

Bring some board or tabletop games you want to play, or enjoy some of the LFG-provided games. Bond over Werewolf, speed race at Set, or play whatever you want to dive into. You can bring some new conference friends with you or meet some there!

2:00 PM - 4:00 PM, Distractions

Sticker Swap


Bring your sticker cache to Abstractions and swap with other attendees. Use the swap session to exchange stories about the stickers on your laptop lid. Build your collection with stickers from faraway lands and try to create a 1-inch thick layer of stickers on your laptop lid.

7:30 PM - 8:00 PM, Distractions

Just a Minute - Semifinals (Western Division)

Andrew Faraday

Just a Minute is a game show that has delighted audiences across Britain for almost half a century. Speakers are challenged to speak for one minute without hesitation, repetition, or deviation – a feat that is much harder than it sounds. Fast-paced, funny, and techy audiences love it.

7:00 PM - 9:00 PM, Distractions

PJ Hagerty Karaoke Hour

PJ Hagerty & You!

It isn't a conference unless PJ Hagerty is around leading a group to a nearby karaoke bar. We're officially endorsing it as a scheduled event!

Builder Stage

11:00 AM - 11:45 AM, Builder Stage

Get A Whiff Of This

Sandi Metz

Much our work involves altering imperfect code. Certain small problems occur so frequently that they've been given names, and are collectively known as "Code Smells". Learn how to identify the “smells” and fix anything without being forced to understand everything.

12:40 PM - 1:25 PM, Builder Stage

The Twelve-Factor Container

Casey West

Like virtual machines, containers represent a constrained set of capabilities that let us make fine-grained guarantees about resource constraints and process isolation. But the “lightweight VM” metaphor is problematic. Learn the common pitfalls in containerization and how you can avoid them.

3:25 PM - 4:10 PM, Builder Stage

Kubernetes Abstractions: Building Next Generation Automation Tools

Kelsey Hightower

Kubernetes provides a new set of abstractions for building highly available automation tools that scale to 1000s of nodes. Through live demos and code walkthroughs, leverage cluster level APIs and distributed systems design patterns for building next-generation automation tools.

5:10 PM - 5:55 PM, Builder Stage

Scaling Engineering Culture

Raffi Krikorian

If you don't plan how the engineering team's culture is set up and evolves, then it will set itself up organically – probably with unexpected consequences. This talk delves into the process of setting up or retrofitting a culture where software co-evolves with engineering organization.

Compiler Stage

10:10 AM - 10:55 AM, Compiler Stage

The Five-figure WordPress Website

Lara Schenck

WordPress gets a bad rap in many developer circles, but for some clients, it's indisputably the best choice. Learn a themeless, CMS first approach and toolset for building content-centric Wordpress websites and will discuss the business aspects of working with the client on their site.

11:50 AM - 12:35 PM, Compiler Stage

Optimizations you shouldn't know about

Aaron Patterson

Aaron will tackling two types of optimizations: VM optimizations that remain hidden from the programmer, and optimizations that we should do to our own code. Explore VM internals and caching tricks in Ruby, and learn how to decide which optimizations are worthwhile and which aren't.

1:30 PM - 2:10 PM, Compiler Stage

Building a Community Exoskeleton

Jono Bacon

Community is at the core of all successful open source projects. Learn how you can tap into underlying behavioral principles and build an exoskeleton that wraps around community members to help them do great things. Delve into success stories in open source and elsewhere.

2:20 PM - 3:05 PM, Compiler Stage

The Nature of Functional Programming: Code Reuse without Nouns

Joshua Suereth

If you've ever wanted to take a simple Hello, World program and turn it into a fully-featured photo blog for cat pictures, this talk is for you! It will cover the basics of programming using functions instead of objects, starting from first principles.

3:25 PM - 4:05 PM, Compiler Stage

Reviving a Community with Code

Amanda Laucher; Jonathan Graham

Can a coal miner learn to code and create a successful career in the tech industry? Amanda and Jonathan will discuss how they've used functional programming concepts to develop a group of programmers from local residents in SW Pennsylvania with no previous coding experience.

4:20 PM - 5:05 PM, Compiler Stage

The Ecological Impact of Compute

Seth Vargo

As compute becomes cheaper and more readily available, the costs to our environment cannot go unnoticed. We are increasing energy use at exponential rates by over-provisioning requirements, under-utliizing resources, and clicking buttons in UIs. As a business owner, you want to save costs, but what are the environmental impacts services like AWS and GCE are having on our planet? Tools like Nomad, Kubernetes, and Mesos allow organizations to maximize resource utilization, but can schedulers also be used to help save our planet?

Domain Stage

10:10 AM - 10:50 AM, Domain Stage

Your Emotional API: How to be a Better Developer by Being a Better Human

John Sawers

Feelings are messy and uncomfortable - why don’t we just ignore them? Ignoring them impairs our ability to write good code. Even small increases in emotional mastery can have huge impacts on our careers and productivity. John will talk theory and practice for healthy emotions.

11:50 AM - 12:30 PM, Domain Stage

From Mobile First to Offline First

Bradley Holt

Building on the principles of mobile first, offline first is an approach to application design in which a web, mobile, desktop, or Internet of Things (IoT) application is first built for offline use, then is progressively enhanced to take advantage of network connectivity when available.

12:40 PM - 1:20 PM, Domain Stage

Interactive Archival of Art and Science


Growing concerns of media preservation mean a surge of digital libraries. But digital preservation is not just photos and video; it's also interactive software: art creating new art. wilkie will explore the problem of preserving software – past, present, and future – and why it is hard.

2:20 PM - 3:00 PM, Domain Stage

Fringe Accessibility

Adrian Roselli

If you are aware of accessibility practices, you may know some of the basics. Adrian will touch on some newer or more obscure techniques that can help prime you to look at the new hotness features with a more critical eye. There will be code and concepts and maybe heckling.

3:25 PM - 4:05 PM, Domain Stage

Make The Big Change ... One Small Change at a Time

Chris Geihsler

Avoiding the big redesign your app desperately needs? Hear a story of how a heavily-used Rails application was safely and incrementally re-architected to be simpler, more maintainable, and more effective by utilizing automated testing and principles from functional programming.

5:10 PM - 5:50 PM, Domain Stage

Beyond The Tab: Executing JavaScript Across Browser Contexts

Andrew Dunkman

Keeping JavaScript from interfering across tabs is great, but what about when a web application wants to share state without a server? Andrew will help you get started with SharedWorkers and ServiceWorkers. He'll share some other techniques and the wisdom to know when to use them.

Element Stage

10:10 AM - 10:50 AM, Element Stage

Retiring Service Interfaces: A Retrospective on Two 10+ Year Old Services

Jeff Nickoloff

This talk is a retrospective on the retirement of two 10+ year-old services that Jeff's team owned in Amazon Marketplace, and it might help you accomplish the same impossible task. It will cover iteration vs. retirement, motivations, client discovery, communication, and success factors.

11:00 AM - 11:40 AM, Element Stage

What Every Developer Needs to Know About Coordinated Vulnerability Disclosure

Garret Wassermann

Today's software is complicated, making bugs unavoidable. This talk is about what happens when code reviews and automated testing fail to find a security bug, but the Internet succeeds. Learn how to prepare for and respond to security bug reports and coordinate a fix.

12:40 PM - 1:20 PM, Element Stage

Practical Accommodations for Mental Health

Laura K.

We have accommodations for many physical health issues. But when it comes to mental health, things are still pretty abysmal. Based on talks with other folks and her own experience, Laura will present some practical ways that mental health can be accommodated at work.

1:30 PM - 2:10 PM, Element Stage

Take-What-You-Want Compensation at an Open Software Company: A Case Study in the Future of Work

Chad Whitacre

How can we distribute money in open-source without ruining intrinsic motivation? Gratipay has discovered an exciting solution: take-what-you-want compensation. Learn about Gratipay's experience with 100+ people sharing over $20,000 in revenue over about two years.

2:20 PM - 3:00 PM, Element Stage

Generate All The Things

Brian Ketelsen

Your service or API is your contract with the world. Unfortunately your documentation, deployment descriptors, test plan and database aren't tied to that contract. This talk will show you how to generate all of those things, keeping your source code as the Single Source of Truth.

4:15 PM - 4:55 PM, Element Stage

Abstract Away Your Resume: Learning and Self-Reinvention Through Accelerating Technological Change

Adam Glassman

Through the lens of a personal story, explore how much has changed in software development in the last several years, how much we can expect to change in the years to come, and what skills, tools, and mindset will enable developers to ride the wave of change as it gathers momentum.

5:10 PM - 5:50 PM, Element Stage

The Impact of DevOps and Lean Principles

Luke Kanies

DevOps is more than a buzzword-y trend – it delivers results. This talk shares results from the most thorough analysis of DevOps to date, explains how Lean Principles translate to DevOps and software delivery, and shows how it all impacts quality, agility, security, and the bottom line.

Framework Stage

10:10 AM - 10:50 AM, Framework Stage

You Too Can Be A Sketching Machine!

Rizwan Javaid

The power of sketching lies in using sketching to ideate, iterate, and communicate our ideas. It is time to gain the confidence you need to sketch in person or in front of a group. By harnessing the power of sketching we all can become sketching machines.

11:00 AM - 11:40 AM, Framework Stage

A11Y 411

James Pozenel

You keep on saying to yourself, "I want to prioritize making my website accessible, but I don't know where to start," or “Do I really need to do it?” In this talk, you'll learn how you can prepare yourself and your team for the journey of making your website accessible and ADA-compliant.

11:50 AM - 12:30 PM, Framework Stage

PowerShell: Bringing DevOps to Windows!

Kevin Berridge

PowerShell is an essential tool that all Windows developers should know! Learn about how you can be productive with Powershell and put it into practice in your own projects, and dive into real-world examples of some of the ways that Kevin uses PowerShell on his team.

12:40 PM - 1:20 PM, Framework Stage

Games as Conversational Interfaces

Kevin Zurawel

Interactive fiction – e.g. "Zork” – presents players with deep, engaging experiences using nothing but text and their own creativity. What if there were some way to combine IF with the Web? We can! Take a look at what Inform v7 and Parchment allow us to do in the browser.

1:30 PM - 2:10 PM, Framework Stage

I'll gladly pay you Tuesday for a hamburger today.

Jack Moffett

UX debt is the accumulation of decisions made during design and development that negatively impact the users of a product or service. This talk will explore various sources of UX debt and a variety of methods for identifying, classifying, addressing, and ultimately avoiding it.

2:20 PM - 3:00 PM, Framework Stage

A Walled Garden in the Desert: Quality and Security Issues in the IoT

Emily Gorcenski

IoT security is of interest to many developers: novel enough to be interesting, approachable enough to be solvable. But the depth of IoT integration into daily life means that security analysis must reach further than usual. This talk covers technical and social issues beyond the basics.

4:15 PM - 4:55 PM, Framework Stage

The Why, How, and What of Human-Centered Design

Chris Roberts

Human-Centered Design (HCD) has the power to significantly transform the way we work and the things we make—especially with respect to technology. Anyone can practice it and everyone should. Learn how you can be a pro and evangelize others to meet the unique needs of users.

5:10 PM - 5:50 PM, Framework Stage

Handle Conflict like a Boss

Deb Nicholson

Many of us avoid tricky situations and let conflict avoidance keep us from accomplishing amazing things. This talk covers when to handle conflict, strategies for both one-on-one situations and group situations, and tips on how to scale your conflict resolution skills like a boss.


Abstractions Stage

9:00 AM - 10:00 AM, Abstractions Stage

npm Past, Present and Future

Laurie Voss

Laurie will present a history of how package management in JavaScript got to where it is, and where it's going.

6:15 PM - 8:15 PM, Abstractions Stage

Free Software and Your Freedom

Richard Stallman

Richard Stallman will speak about the goals and philosophy of the Free Software Movement, and the status and history of the GNU operating system, which, in combination with the kernel Linux, is now used by tens of millions of users worldwide.


10:00 AM - 11:00 AM, Distractions

Yoga for Engineers (Repeat Session)

Marylou Lenhart

Sitting at a desk all day contributes to the already typically sedentary lifestyle of the modern world. Yoga for Engineers will teach you some easy exercises and yoga postures that help strengthen the muscles that are weakened by sitting in a chair during your work day.

11:00 AM - 12:00 PM, Distractions

Girl Develop It Abstract Social

Girl Develop It

Learn more about Girl Develop It from the members and chapter leaders of several chapters across the country with a quick introductory session and about an hour of socializing. Before attending, please be sure to read both the Girl Develop It and the Abstractions Codes of Conduct.

10:30 AM - 10:50 AM, Distractions

Let's Save the World Together

Sean Marcia & Elizabeth Freeman

Working with software, we have the amazing capability to make a difference in the world. Come see how you can get involved with great projects that enable us to effect meaningful change, and how doing so has the unintended consequence of building a more tightly knit community.

10:50 AM - 10:55 AM, Distractions

Things You Forgot Were Hard

♥ Jeremy!

Do you remember what it was like to learn to program? The Dreyfus model of skill acquisition suggests that as expertise increases toward mastery, people lose sense of what was truly difficult in their salad days. Reclaim your past and learn to engage with and lift up the novice programmer.

10:55 AM - 11:00 AM, Distractions

Open Data Distractions

Bob Gradeck

Through the Western Pennsylvania Regional Data Center, a growing number of datasets have been released as open data. Drop by to put your skills to work on one or a number of fun, bite-size data analysis and visualization challenges. We'll have something for everyone.

11:00 AM - 12:00 PM, Distractions

Distractions Demos

<3Jeremy!, Gradeck, Marcia

The presenters from the Distractions segment will set up demo stations to display their work and answer questions

12:30 PM - 1:30 PM, Distractions

Just a Minute - Finals

Andrew Faraday

Just a Minute is a game show that has delighted audiences across Britain for almost half a century. Speakers are challenged to speak for one minute without hesitation, repetition, or deviation – a feat that is much harder than it sounds. Fast-paced, funny, and techy audiences love it.

11:30 AM - 5:30 PM, Distractions

GameOn Video Game Lounge

You & Friends!

Take a break from the lectures and play some games with new friends!

12:30 PM - 2:00 PM, Distractions

Cornhole Tournament

You & Friends

Pick teams and play a cornhole tournament against the friends you've made at the conference.

2:00 PM - 4:00 PM, Distractions

Therapy Dogs

Therapy Dogs

Even for the seasoned attendee, conferences can be utterly exhausting and draining. Stop by for some love and affection from the therapy dogs – they're dogs that make you feel better!

Builder Stage

10:10 AM - 10:55 AM, Builder Stage

Style Guide Best Practices

Brad Frost

Style guides are a solution to the challenge of creating a consistently good experience across devices and environments. They establish a shared vocabulary, make testing easier, and lay a future-friendly foundation. Learn best practices and considerations for maintaining style guides.

11:50 AM - 12:35 PM, Builder Stage

Anatomy of a Great Pull Request

Sean Griffin

Getting a pull request merged into open source is hard. How can you keep yours from getting lost in the noise? Sean will look at what it takes to get a pull request merged into a project like Ruby on Rails. Learn about common mistakes that beginners make and how you can avoid them.

3:25 PM - 4:10 PM, Builder Stage

The Guest: A Guide to Code Hospitality

Nadia Odunayo

How do you prepare to welcome a guest? Come explore the art of code hospitality – working on codebases in a way that respects your teammates and provides for their needs. By working hospitably, we can facilitate team productivity and help new members quickly feel at home.

5:10 PM - 5:55 PM, Builder Stage

Lucky: Examining the Barriers of Contributing to Open Source

Saron Yitbarek

Saron discusses how socioeconomic status and access to education & high-speed Internet affect who is able to contribute to the open source community. Understanding these barriers makes us better equipped to create on-ramps for more people and to create a stronger coding community.

Compiler Stage

11:00 AM - 11:45 AM, Compiler Stage

Security: Back to Basics

Eileen Uchitelle

The Internet is built on technologies that were never meant to work together. Basic features in seemingly simple technologies, such as XML, resulted in hidden security flaws. Learn how attackers exploit common vulnerabilities and explore how to build software with security in mind.

2:20 PM - 3:05 PM, Compiler Stage

10 Things You Don't Know About YAML

Ingy döt Net

YAML gets used just about everywhere but hardly ever gets talked about. It's simple and obvious, right? Indeed, but it's also deep and mysterious. Come learn (at least) 10 things you'd never expect about the data language you see almost every day, including an exclusive bonus surprise!

4:20 PM - 5:05 PM, Compiler Stage

Marrying a cloud provider: the hidden costs of simplicity vs. available functionality

Phil Dougherty

Review the benefits and drawbacks of choosing a provider based on how easy it is to use now. What hidden costs could come with continuing to utilize it later as your infrastructure grows? This is important for early stage startups and developers to consider when choosing a hosting vendor.

Domain Stage

10:10 AM - 10:50 AM, Domain Stage

Breaching a Web Application - Common Issues and Mitigating Steps

Jason Frank

Jason will showcase several methods for identifying and exploiting misconfigurations to gain unauthorized access on several application platforms, commonly used across the Internet today. He will highlight several proactive steps to protect a web application from an attacker.

11:00 AM - 11:40 AM, Domain Stage

Building a (Self-Sustaining) Culture of Learning

Joseph Mastey

How can we create the kind of places we want to work at? As an engineer and now a consultant for company culture, Joseph has seen plenty of pitfalls and some great strategies for constant learning, even under a deadline. A good alternate title for this talk would be "guerrilla learning."

11:50 AM - 12:30 PM, Domain Stage

HTTP/2: Everything You Wanted to Know but Were Afraid to Ask

Frederik Deweerdt

Deploying HTTP/2 might not be as easy as the rumors suggest. Join Frederik as he takes a practical look at HTTP/2 and how its core features relate to real-world conditions. Explore the single-connection model, the implications of HTTP/2 flow control mechanisms, and more.

12:40 PM - 1:20 PM, Domain Stage

Designing for Virtual Reality

Becky Torbochkin

As consumer virtual reality grows, designing for VR is something we are still discovering how to do well. Becky will discuss some common VR UX problems such as simulation sickness and the fragmentation of many different input devices, and she'll share some best practices for VR UX.

1:30 PM - 2:10 PM, Domain Stage

Decoupled, Immutable REST APIs with Kafka Streams

Bobby Calderwood

REST APIs are great, but their typical CRUD-oriented implementation tightly couples various concerns – such as reads (perception) to writes (action) – that would be better separated. Commander is a pattern for de-coupling these concerns using Kafka and Kafka Streams.

2:20 PM - 3:00 PM, Domain Stage

Moneyball on the Keyboard: Scouting Talented Developers

Adam Jonas

Adam Jonas, a former baseball scout, compares the subjective and flawed nature of baseball insiders' collective wisdom to the tech industry's poor history of evaluating talent. How can the web development community use objective analysis to grow its teams and surface undervalued skills?

3:25 PM - 4:05 PM, Domain Stage

The Seven Righteous Fights

Heidi Waterhouse

There are seven fights that Heidi experiences over and over whenever she starts at a new company. It's valuable to keep these issues in mind from the inception of a project to avoid falling prey to the "cost-saving" choices that end up being more expensive in the long run.

4:20 PM - 5:00 PM, Domain Stage

Baking Privacy Into Your UX Process

Karen Tang

We live in a world where it seems like we lose a tiny bit more of our privacy every day to the tech gadgets and services around us. Learn why great UX starts with good privacy practices and how you can apply simple design guidelines to help you re-examine your products in a new light.

5:10 PM - 5:50 PM, Domain Stage

Towards 9 9's with Reactive Systems

Justin Pihony

There are so many paths of possible failure in a system that you cannot predict them all. You must embrace failure in order to gain resilience against it. This talk will discuss the patterns and tooling for building a reactive system, as defined in the Reactive Manifesto.

Element Stage

10:10 AM - 10:50 AM, Element Stage

Writing So Your Words Are Read

Tracy Osborn

It’s hard to write documentation that anyone can get excited about. This is true for projects aimed at beginners, but it goes double for projects and writing aimed at intermediate/expert programmers. Find out how to write documentation that everyone would want to read and can understand.

11:00 AM - 11:40 AM, Element Stage

Making the Web Go Fast with Jelly Snakes and Raspberry Twizzlers

Jack Skinner

Take a fun and playful journey from HTTP/1.1 to HTTP/2 and explore the best and worst practices of the way the web worked. How is HTTP/2 changing the game for performance? It’s all explained of course, using jelly snakes and raspberry Twizzlers.

11:50 AM - 12:30 PM, Element Stage

Invisible Infrastructure

Fred Hatfull

Like it or not, most companies have at least one service, repository, or even server that has become entirely invisible: nobody knows what it does, where it is, or if it's important. Learn how to leverage techniques, both common and uncommon, to recover from and avoid these situations.

12:40 PM - 1:20 PM, Element Stage

Teaching GitHub for Poets

Aaron Suggs

Discover the benefits of teaching your whole organization to contribute code. Kickstarter teaches GitHub for Poets, a one-hour class that empowers all staff to make improvements to our site safely and easily; and promotes an engineering culture of transparency and inclusion.

1:30 PM - 2:10 PM, Element Stage

Don't Fear Failure

Sean Kelly

Our industry gets so swept up with all the success stories, we forget to appreciate the other 99% – who we are and what we do. This talk covers failure – why it's important to to talk about it, how to learn from it, and how to accept it as part of being a better software engineer.

2:20 PM - 3:00 PM, Element Stage

The Nomadic Coder

Jon McCartie

Ever felt like you're stuck where you're at? Ever wished you could sell it all and travel the world while writing code? It's a dream that's actually not too far off. Learn from personal experience how to hit the road and code your way to a more fulfilling lifestyle while seeing the world!

3:25 PM - 4:05 PM, Element Stage

Ship it! Containerized Cloud-Native Deployments

Steve Sloka

Everyone has jumped on using containers for dev, test, and even production environments. Teams are struggling to effectively manage configuration, versioning, and deployment of these environments. Steve will offer some patterns, best practices and real-world experience.

4:20 PM - 5:00 PM, Element Stage

Open source and art: why it works and how to have fun with it.

Annie Ruygt

Artists and patrons have worked together through history to create stunning works of art. The magic combination is stability and collaboration. Tech companies can act as a patron and foster art that will enrich their communities, connect users, and spread new, impactful ideas.

5:10 PM - 5:50 PM, Element Stage

Road Runner Rules: More what you’d call Guidelines for Design Systems

Micah Godbolt

What is a design system? How do we create them? What rules should it follow? How do you get your team on board? This talk will be useful for designers who want to learn how to turn their visual language into a design system and for developers who want to create more modular components.

Framework Stage

10:10 AM - 10:50 AM, Framework Stage

How to scale up, one microservice at a time

Marko Anastasov

The secret of moving fast as you grow is to drop the HTTP mindset and embrace asynchonous microservices that do one thing well. Come see how fun it is to build them, which DevOps tools we need for that, and what lessons from CPU architecture we can apply to continuous delivery.

11:00 AM - 11:40 AM, Framework Stage

Web Development is Distributed Systems Programming

Mikaela Patella

This talk is a visual hand-drawn graph-based journey through the history of web development, the current environment, and the future of our community. The slide system itself is a living demo of a distributed system, written with a clojure/datomic backend, and a clojurescript front end.

11:50 AM - 12:30 PM, Framework Stage

Conversational User Interfaces: Let apps speak for themselves

Greg Nicholas

When we think about user interfaces, why do we only consider the GUI? Why is it so far outside the norm to have a conversation with our devices? This talk outlines the obstacles to a multi-modal future along with new tools to support these experiences in applications today.

12:40 PM - 1:20 PM, Framework Stage

The Curious Case for the Immutable Object

David Hoerster

As object-oriented developers, the concept of immutability is more academic than practical. However, with the advent of multi-core processors and the broader adoption of async/await patterns, concurrency becomes an issue. How do you ensure there are no side effects from other processing?

1:30 PM - 2:10 PM, Framework Stage

De-facto standards hacking: bringing -webkit- prefixed CSS to a browser near you.

Mike Taylor

WHATWG's has been leading efforts to standardize non-standard, often -webkit- prefixed CSS as first-class web citizens. Learn about the controversial history of browsers implementing other browser's vendor prefixes and look at landmines, problems and solutions along the way.

2:20 PM - 3:00 PM, Framework Stage

Generative Art with JavaScript and CSS

Barak Chamo

Barak will present recent work exploring WebAudio and web-based synthesizers and visualizers. Live code & examples will provide some audio background and useful advice on using WebAudio in real-life projects, including audio visualization, midi, and stream manipulation.

3:25 PM - 4:05 PM, Framework Stage

Documentation Sucks: or How I Learned to Curate Information Instead of Write Documents

Todd Waits

Dynamically generating documentation lives where people interact with it. It's relevant because it can be presented dynamically in a curated format. Explore a unified doc process that pulls from your issue tracker, wiki, and other sources to export documentation artifacts on demand.

4:20 PM - 5:00 PM, Framework Stage

What Your Javascript Does When You’re Not Around

Emily Nakashima

We're shipping more application logic than ever to users' browsers. What happens when it gets there? Dive into the weird world of browser monitoring on a fast-paced tour of the strange cases Emily and her team have seen since launching a major re-write of their dashboard in React.

5:10 PM - 5:50 PM, Framework Stage

The Analytics of Social Progress: When Machine Learning meets Human Problems

Amy Hepner

Focusing on the opportunities and risks of applying data science to social problems, Amy will discuss the basics of supervised machine learning and the implications of applying math to community: when is it helpful, and how can we assure that it is not perpetuating systemic bias?