Mid-Atlantic Developer Conference is a polyglot event, designed to bring together programmers from the region, regardless of their choice of platform, for two full days of learning from each other and building a stronger regional community.

Friday 13th July 2018

Coding the Future
Keynote by Todd Marks (1 hour)

Todd Marks presents an overview of current and future technology and innovation. He will showcase a roadmap of future innovations and what development skills will be needed to execute them. This keynote will address where we are now, covering technologies such as augmented and virtual reality, robotics, autonomous vehicles, artificial intelligence, the Internet of Things, and blockchain. Marks will additionally share where we are going and discuss the development skills for artificial intelligence, digital entities, neural implants, brainwave UI, and one-man spacecraft.

Introduction to Web Components and Polymer
Workshop by John Riviello (2 hours, 15 minutes)

With the updates to iOS and Android phones released last year, web components are now supported natively. With libraries such as Polymer built on top of web components, it is now possible to easily create fast Progressive Web Apps (PWAs) without the overhead of a framework. In this workshop, we'll begin with a brief introduction to web components and Polymer. Then, we'll dive into hands-on experiences with the core aspects of web components: the template tag, custom elements, and the Shadow DOM. This workshop assumes an understanding of HTML, CSS, and JavaScript. No prior experience with web components, Polymer, or any library or framework (web components or otherwise) is required.

Driving Technical Change Within Large Organizations: Lessons From Four Years Rebuilding Healthcare.Gov
Talk by Christian Monaghan (1 hour)

We all have great ideas for new applications and tools we'd like our organizations to build or adopt. But large organizations are resistant to change, and all too often these ideas never get the oxygen they need because they are "new." This talk will focus on software design tactics such as how we use feature flags, phased rollouts, and environment fanouts to minimize risk while maximizing chances for a successful launch. It will also cover how we communicate with other teams and stakeholders to address their perceived risks so they can feel confident greenlighting new projects. You will learn how to: - use a phased rollout approach to minimize launch risk; - start by building a streamlined application that only handles the simplest user flows at first; - mimic legacy APIs so other teams can easily migrate to the new system without additional effort; - reverse-engineer other systems when those teams won't give you any support; - implement a fanout approach to minimize the operational burden of managing environments; - leverage feature flags to separate feature deployment from code deployment; - communicate with stakeholders to address perceived risks; - forge coalitions and partnerships with other forward-thinking individuals in your organization; - use your success as a wedge to drive further change.

APIs for Microservices
Talk by Mike Stowe (1 hour)

The concept of Microservices is changing the way we build and architect our systems, but are we really setting ourselves up for success? How can we ensure that our APIs act as a contractual, yet flexible representation of our service – and how do we address the “glue” issue to prevent ourselves from service lock-in? In this session we’ll jump back into history to see what’s worked and what hasn’t, look at how to build truly decoupled services, and explore tools and technologies that make the entire process easier.

Procrastination as a Service: Caching and Queueing
Talk by Lawrence Shea (1 hour)

In this talk, Lawrence Shea will convince you your parents were wrong, and procrastination is a best practice. We'll cover what caching is, queuing, why you (probably) don't need live data, why you should push everything off until later, and how we can get our lazy on with Redis. High-level overview of the talk: - What is caching? - Where caching can be applied in your project. - Audience involvement, a quick game showing how "perceived" performance is just as good as "real" performance. - What is queuing? - Where queuing can be applied in your project. - What is Redis? - Real world examples of when to use Redis caching. - Speed test examples showing cache versus DB, expensive calculation, etc. - Real world examples of when to use Redis queuing. Slides - https://docs.google.com/presentation/d/10KYm_rGgf7YsUStVck0uIf9p0t1wVOesDTXsUyhMJKw/edit?usp=sharing

Will You Help Me End Pixelated Images on the Internet?
Talk by Julka Grodel (1 hour)

Have you heard about how Scalable Vector Graphics can look great at any resolution and can take up less space than other images? Have you ever taken a look at the code behind them? Let me introduce you to the XML format that is SVG, styling them, and some transformations so you can begin putting them to work on your site. This talk assumes some knowledge of HTML or XML, and a bit of CSS.

Let’s Encrypt All the Things: HTTPS at Scale
Talk by Philip Sharp (1 hour)

The push for a more secure web got a boost two years ago when Let’s Encrypt---a free, automated certificate authority--was made available to everyone. It only takes a command line tool and a few keystrokes to securely serve almost any website. But what does it take to secure 10,000 websites? Let’s see what it takes while detailing the available tools, the changes in process and architecture needed to handle a large number of domains, and the inevitable surprises that appear.

Building the World’s First Beer Tap Powered by Facial Recognition
Talk by Jeff McGehee (1 hour)

Self-pour beer systems are an emerging market, and solutions are mostly in-bar novelties involving heavily customized installations. However, HOP is a scalable, modular, distributed self-pour system designed to be installed anywhere beer is sold. After a user is registered in the HOP system, they can visit any HOP station, have their identity confirmed via facial recognition, and pour themselves a cold draft beer. The HOP system leverages native iOS, AWS Lambda, and Elixir in the form of a Phoenix backend and Nerves firmware controlling beer dispensing and measurement hardware. This talk will cover the lean build process implemented in the development of this product, as well as an in-depth look at the current architecture from the hardware/firmware to the customer-facing iOS app to the web backend that brings it all together.

13:30 Empathy as a Service: Supporting Mental Health in the Tech Workplace
Keynote by Nara Kasbergen (1 hour)

At any given time, one in five adults are living with a mental illness, such as depression, bipolar disorder, generalized anxiety disorder, substance use disorder, burnout, or ADHD. Statistically, all of us working for an organization with five or more employees which have at least one colleague who is affected. The tech industry is often characterized by high stress, long hours, workplace pressure to be available by phone and email after-hours or sometimes even while on vacation. There's social pressure to constantly network and attend conferences and make a name for yourself, and the precarious balance between trying to do good by contributing to open-source and maintaining some semblance of free time that doesn't involve coding. Given how this demanding environment increasingly blurs the line between our professional and personal lives, how can we ensure the most vulnerable among us aren't being left behind? As a community, the single most damaging thing we can do is continue to treat mental health as a personal shortcoming that can't be talked about openly. We shouldn't think of it as "somebody else's problem." The four out of five of us who don't currently have mental health disorders must do our part to help end the stigma. This talk will begin with an overview of key statistics about mental illness, followed by the efforts of the non-profit organization Open Sourcing Mental Illness to gather more data about mental health in the tech industry, the ALGEE action plan taught by the Mental Health First Aid training course, and finally conclude with ideas and strategies for making our tech workplaces more accommodating and inclusive.

What I Learned About Health From Surveying 50k DC Developers
Talk by Matt Layman (1 hour)

As developers, we have relatively sedentary jobs which tax our minds but do little for our bodies. What are the physical and mental struggles which arise because of our profession? That was my question when I decided to survey developers from all over the Washington, DC area at the start of 2018. The survey reached 50,000 people from 30 local meetups ranging from PHP to C# to Python and from web development to data science to DevOps. Responses came in from many communities and revealed the kinds of struggles we have. These developers shared what is hardest for them and how they have applied their dev mindset to improve their lives. You will learn about the specific issues and their prevalence. We’ll also explore how developers combat these problems so you can take away some tips if you share the same struggles.

Managing an Autonomous Transit Network with Open Source
Talk by Raj Singh (1 hour)

Earlier this year IBM showed a vision of the future of autonomous bus transit networks at the Consumer Electronics Show. The exhibit featured a life-size “Olli” bus, and a bus stop that adapted to the accessibility needs of the rider. Whether you are young or old, blind or deaf, cognitively impaired, wheelchair-bound or color-blind, the intelligent Olli bus stop adapts to your needs and makes it easy to call for a bus, know when it will arrive, find points of interest near your destination, and get on and off safely. Making all this happen requires a lot of data and smart processing. Buses reported their location every 500 milliseconds. We tracked riders entering and exiting the stop and the bus. We also track the health of the IoT systems that keep everything running. And it was built around Apache CouchDB being the source of truth for information events, and all other software listening to the CouchDB changes feed and deciding whether to do something based on the change. In this presentation, I’ll discuss how we built the bus stop “concierge” kiosk app using a host of open source technologies, including CouchDB, PouchDB, ReactJS, Redux and Mapbox GL.

Modern Security With Microservices and the Cloud
Talk by Seth Vargo (1 hour)

It’s great that you’ve moved to microservices, but how are you distributing secrets? This talk offers an overview of Vault’s unique approach to secret management by providing secrets as a service for services (and humans), that is highly scalable and easily customizable to fit any environment. This talk has two primary goals: identify the new security challenges associated with using cloud technologies and microservices, and showcase how the free and open source tool, Vault, can help reduce those security challenges Topics include: - Discussion of traditional security (perimeter security, firewalls, etc.) - Identifying new challenges and solutions in cloud and microservices security - Describe Vault's architecture and how it provides "secrets as a service" - Storing static secrets such as Wi-Fi credentials - Generating dynamic secrets, such as database passwords or cloud credentials - Providing encryption as a service

GraphQL and your API (2 hours, 15 minutes)


Find Your Inner Mentor
Talk by Katherine Walker (1 hour)

Many engineers are hesitant to get involved in mentorship because they don’t realize how the skills they already have make them effective mentors. The most important skill for a good mentor is a willingness to help your mentee learn. You don’t have to have all of the answers. Many mentees assume their mentors are responsible for teaching them everything they’ll need. Instead, mentees must take an active role in their mentorship. An effective mentee is someone who sets their own goals and asks lots of questions. As a junior engineer, I recently completed a rotation program in which I was paired with three mentors for six weeks each. I am grateful to have had incredible mentors who showed me the qualities and skills important for mentorship. Through this program, I learned I needed to be proactive and involved to be an effective mentee. This talk is for anyone who has been involved in mentorship, either as a mentor or mentee, or who is interested in becoming involved in mentorship. If you’ve ever thought about participating in mentorship, this talk will help you clarify what’s involved and what skills you already have. If you haven’t ever thought about participating in mentorship, now is a great time to start!

WebAssembly: Super-Charging Applications On and Off the Web
Talk by Till Schneidereit (1 hour)

The web revolutionized the way people run applications and consume content. Users can open applications without an installation step, by simply clicking a link. Yet not all applications can easily be deployed to the web. Some existing applications are difficult to port to the web, either because they’re written in languages other than JavaScript, or because they run into performance issues. This talk will show you how WebAssembly fixes these issues and makes the web a more powerful and expressive platform. But WebAssembly isn’t just about the web. This talk will also show you some of the other fields WebAssembly is starting to gain traction in, from embedded devices, to Blockchain platforms, to CDNs.

Automated Accessibility Testing
Talk by Brian Thompson (1 hour)

Over the past few years, the rise of ADA based lawsuits for websites has continued to make headlines with Winn Dixie, Hobby Lobby, Five Guys, and Block getting hit in 2017. This talk will show how accessibility testing can be automated so as not to increase the time needed to deliver new features. 508 compliance and WCAG 2.0 have been around for decades in an attempt to make sure websites are accessible to all people, regardless of disability. While these guidelines have been around for quite some time, over the past few years we’ve seen an increase in high profile lawsuits for websites that are not accessible. In 2017, Winn Dixie lost a court case over the accessibility of their website as the court determined the $250,000 cost (according to Winn Dixie) to make the website accessible was not an undue burden. In today’s age, all websites should strive to be compliant with accessibility guidelines in order to ensure they are available to ALL potential website visitors. While making a website compliant with 508 guidelines and WCAG 2.0 is not necessarily a large development effort, it can be a large effort to test each page to ensure compliance. This lengthy testing time can slow down delivery of features/functionality as it gets reviewed for compliance and as it is iterated on by developers. Wouldn’t it be better if developers and testers could have an objective report that checks for common accessibility requirements rather than having to manually check each page every time a change is made? We’ll look at multiple tools produced by Google, WebAIM, Deque, and others that can be used to automatically generate a report on a site’s accessibility. After reviewing the available tools, we’ll look at ways they can be integrated into a development process so they are automatically run every time a change is made in order to save the time of testers. Attendees will leave with actual examples they can leverage on their own for semi-automated testing themselves as well as code examples that can be shared with development teams to even further automate the processing of ensuring an accessible web for all individuals.

Saturday 14th July 2018

Break Things to Fix Things: Testing More Than What “Should” Work
Talk by Ijeoma Ezeonyebuchi (1 hour)

Have you ever been so excited about building something only to find out much later it’s not working as expected? After building your exciting new thing, did you try to break it; use it in an unexpected way? Ensure beyond a doubt your application is safeguarded against all possible unintended functionalities? In an ideal world, users would use applications we build in specific predefined ways allowing us to build for the happiest of happy path scenarios. Though, in reality, that doesn't always happen. This talk will dive deep into how testing your application in unexpected ways at different points of the development process can allow you to discover bugs and hidden vulnerabilities and will conclude with a live demo inviting members from the audience to try and test some applications in the wild. It will be exciting, it will be daring, and most importantly it will highlight the joys of quality engineering.

Decoupled, Immutable REST APIs With Kafka Streams
Talk by Bobby Calderwood (1 hour)

Have you ever hit a wall with REST? Does modeling your problem domain into CRUD-able entities feel like fitting a square peg into a round hole? Perhaps instead of modeling our services like little databases, we should instead model them like reactors to event streams. REST APIs are great, but their typical implementation tightly couples various concerns which would be better separated: * Reads (perception) from writes (action) * Current state from historical narrative * Business logic from HTTP design from operational concerns like metrics and monitoring Commander is a pattern for writing REST APIs that de-couples these concerns, thereby alleviating common frustrations with CRUD-flavored REST. This pattern imposes a clear separation of action from perception and uses Kafka and Kafka Streams to separate business logic from HTTP concerns, all while preserving the historical narrative of the entire event stream. In this talk, I'll discuss the benefits and tradeoffs of this approach, and demonstrate my implementation using Clojure in the HTTP layer, and using Java with the new Kafka Streams library in the event stream processing layer.

Hands-On Getting Started With Docker
Workshop by Frank Font (2 hours, 15 minutes)

You know Docker has something to do with running containers, and that's a good thing (you think, or at least you hear some people say). You might not even be sure what a container is exactly in the context of Docker---the logo is whale with shipping containers on top of it, not exactly a happy sight if we saw it in nature. Where do you start if you want to understand what this technology is and how you can use it now? Well, if you know your way around a Linux command line to some simple measure, and you want to have a practical insight into what this technology is and how to use it, this talk is for you. We will explain the fundamentals of a Dockerfile; the fundamentals of a docker-compose file; and we will explore several approaches to managing and utilizing the containers produced by these packaging approaches. We might even have some fun as we learn a few new things!

Customer Support with Cognitive Voice
Talk by Ketan Barve (1 hour)

In this cognitive era, even customer support telephony systems need to be intelligent. Customers expect to speak to a company representative 24 hours a day, seven days a week, 365 days a year. However; it’s not uncommon for customer questions to go unanswered after business hours. If a customer can’t get an answer immediately there is a good chance they will look at a competitor’s offering instead. Using modern cloud-based services such as Twilio and IBM Watson APIs, we can integrate with offline digital platforms and ensure that your customers’ questions are addressed at any time of day, even when your call center is not staffed.

Lost Art of Troubleshooting
Talk by Leon Fayer (1 hour)

When your application goes haywire, the most valuable engineering skill is not the the ability to bring up a copy of your system or even knowledge of a your technology stack (although it doesn't hurt). It is the skill of understanding and solving problems. Finding the root cause of the issue and mitigating it with minimal disruption is a must-have skill for engineers responsible for developing and managing production systems. In this talk I will discuss the skills required to troubleshoot complex systems and traits that prevent engineers from being successful at troubleshooting. We will discuss some tips and tricks for troubleshooting complex systems in production.

Effective Gherkin: Quality Requirements for the Enterprise
Talk by Thomas Haver (1 hour)

Developing software is a costly endeavor and mistakes are often compounded by miscommunication. Developers and testers make mistakes because they misunderstand the business requirements. Business analysts make mistakes because they misunderstand the stakeholders. Defects from miscommunication often go undetected until the software has been implemented, which leads to expensive and time-consuming rework. Establishing a shared quality language is the nexus of understanding for stakeholders, designers, developers, testers, and customers. In this talk, participants will learn how to develop a set of quality test case standards to reduce the cost of quality and meet the customer’s needs. This training will leverage the industry practice of Behavior-Driven Development, which promotes requirements by example and collaboration, to develop a shared language across not only a team but the whole enterprise. The shared language is written in Gherkin format (Given, When, and Then specifications) to define requirements independent of application type and focused on delivering value that everyone in the organization understands.

DevOps for Small Teams
Talk by Joe Ferguson (1 hour)

DevOps is a large part of a company of any size. In the 9+ years that I have been a professional developer I have always taken an interest in DevOps and have been the “server person” for most of the teams I have been a part of. I would like to teach others how easy it is to implement modern tools to make their everyday development and development processes better. I will cover a range of topics from “Stop using WAMP/MAMP and start using Vagrant”, “version control isn’t renaming files”, “Automate common tasks with shell scripts/command line PHP apps” and “From Vagrant to Production”.

Why Open Source Is Vital to Development and Developers
Keynote by Jim Jagielski (1 hour)

At its core, any IT development done in today's environment needs to leverage, consume, and involve open source. This session will describe what open source is, why open source works, and how to fully engage with the open source community. Whether knowledgeable about open source, or requiring an intro to the topic, this session is for you. Suitable for both developers as well as managers and CXO-level execs, this talk will be presented by a leading figure in the open source community, Jim Jagielski, a Maryland native, who has contributed to PHP and is likely best known as a core-developer of the Apache web server and co-founder of the Apache Software Foundation.

Digital Meets Physical: Getting Started With ARKit
Workshop by Tricia Katz (2 hours, 15 minutes)

Augmented reality apps are expected to flood the app store thanks to Apple’s release of ARKit for iOS. Early apps are showing signs of being powerful and realistic, with everything from retail to real estate placing items in the empty space surrounding you. In this workshop, we’ll begin augmenting the world around you with ARKit. You’ll learn how to seamlessly blend virtual objects into the real world, a world where technology and consumers are ready to interact. The question is---AR you?

Leveraging Browser Service Workers to Improve Reliability and User Experience
Talk by Brian Thompson (1 hour)

It is Black Friday, and you're about to have the biggest traffic day your website has ever seen. When your first big sale hits, your servers get overloaded, and users start getting timeout pages. If you used JavaScript service workers on your site, your users wouldn't be noticing this problem. Any cloud provider out there will give you a SLA of 99.%. For those who need even more security in their uptime, a CDN can easily be added to help increase durability. But, none of these solutions are immune from problems and most definitely won’t cover you when your backend servers start returning 504 errors nor will they help you if there is network congestion clogging the pipes. Luckily, there is new functionality being added to browsers which can help us with this. Come learn about browser service workers which can be added to your website with just a few lines of code and immediately increase the performance, scalability, and availability of your website. We’ll go hands-on with the code to show exactly how to implement this new tech on your favorite website so you can go back to your hotel room and add it to immediately. We’ll also talk about what’s coming next and limitations of the current system as well as some real-world implementations of this system. Want to avoid angry calls from your boss/client because their website is timing out? This is the session to attend to prevent that!

You're an Expert. Here's How to Teach Like One.
Talk by Shannon Turner (1 hour)

Knowing how to code and being able to teach it are two separate skills. When we have expertise in a subject, it's easy to take for granted we'll be able to communicate our knowledge to others effectively. No previous teaching experience is required, but this talk will benefit anyone who trains, mentors, or teaches others (formally or informally), especially: * Someone who mentors a junior developer and wants to help them reach their potential. * Someone who manages mid-level developers. * Someone who communicates technical information to non-developers. * Someone who trains developers or teaches coding at any level. After the talk, you will have practical takeaways to help you more effectively communicate with developers and non-developers alike. We'll sharpen your teaching skills and help you become a better mentor, trainer, and team member. Learn (or re-learn!) how to teach and discover practical examples you can put to work right away!

Please Automatically Test Your Documentation!
Talk by Nik Everett (1 hour)

Nik Everett found that automatically rigging up something to automatically test your documentation is super useful for making sure it is up to date. It doesn't have to be complex or beautiful. It just has to run. He'll teach you how to duplicate his approach because he might have to use your software someday. In this talk you will: *hear some anecdotes about the dark times before Elasticsearch's docs where tested automatically * learn about the tools they built to test their documentation * follow the journey from no test coverage of the docs to near complete coverage * learn how to inspire others to do the same All of what the Elasticsearch team built is open source and freely reusable but is tuned for the particular kind of docs they have and as such probably aren't useful to you. Nik offers inspiration and processes to copy.

Build a Decentralized Application for the Ethereum Blockchain
Talk by Dana A. White (1 hour)

Blockchain is all the rage today. As the interest in cryptocurrencies from the general public increases on a daily basis, now is a great time for developers to focus on creating beautiful experiences for users to buy, trade and manage digital representations of physical assets. In this talk, we will build a decentralized Ticket Exchange application with ReactJS. Within the application, we will integrate 2 Smart Contracts: an EventToken which will be exchanged for Ether, and an actual Transaction contract that will facilitate each deal between buyer and seller. We are going to start by unboxing a custom Truffle Box, a template that is a marriage of the Truffle framework and Create React App. Then we will import the Smart Contracts into our React application. Along the way, we will reference relevant aspects of Solidity that will provide insight into how Smart Contracts are seamlessly integrated into a React Application. Ultimately, our application will culminate with that exchange of Tickets for EventCoin. These transactions will be rendered in the app as proof of that they were executed on the blockchain.

Introducing Juvet: Building Bots in Elixir
Talk by Jamie Wright (1 hour)

There is another massive shift happening in how we interact with companies through software. Users feel comfortable naturally talking with their applications through chatbots. Chat is the next generation of the user interface. Companies like Slack, Facebook, WhatsApp, and WeChat have some of the most popular apps in the world, and they are all betting on a messaging interface. Elixir is the perfect language and ecosystem for building bots and for conversational interfaces. In this session, we will see how we can build scalable, realtime web applications (or “bots”) using a new library Juvet and the Slack API. We will see what a good bot architecture looks like and how we can integrate with existing artificial intelligence services to make our bots smarter.

Web Ready Augmented Reality
Talk by Ali Spittel (1 hour)

Augmented reality is becoming more popular for both its artistic and business applications. This talk will explore the frameworks and tools which make AR more developer friendly, including adding live masks to a webcam image in 47 lines of JavaScript! During this talk we'll: * discuss the evolving focus on AR and how developers can use it on the web; * examine different augmented reality web frameworks; * discuss the technologies behind facial recognition and other augmented reality tools; and * look at an implementation of a facial recognition application in JavaScript. ## Links Article: https://dev.to/aspittel/facial-recognition-in-javascript-using-trackingjs-3l7 App: https://www.alispit.tel/tracking/

Cultivating Community: Building Powerful Relationships by Communicating With Empathy
Keynote by Sharon Steed (1 hour)

One of our most valuable commodities as humans is our ability to build relationships---both personally and professionally. And the key to any successful relationship is empathy: being able to understand someone, connect with someone, and view the world through their eyes. The problem is that the empathy needed to cultivate relationships, foster collaboration, and build strong communities is often lacking, especially when we are around people who are different from us. And if empathy is the tie that binds us, then vulnerability is the thread that holds the rope together. It's time to change the status quo in tech. Let's explore the impact of empathy on communities. We'll discuss how communication plays a role in building successful relationships; how empathy fosters highly collaborative teams; and finally we'll talk about true accessibility. Why? Because innovation is at it's best when it's inclusive, and to be inclusive, you must be empathetic.