The Midwest PHP Conference is hosted by the Minnesota PHP User Group community through the North Foundation in Bloomington, Minnesota from March 8th - 9th, 2019. This is our seventh year and each year the conference continues to become better. Our goal is to share best practices, ideas, and techniques about building state-of-the-art software applications.

Friday 8th March 2019

Keynote by Jessica Mauerhan in Main Ballroom (1 hour)

There is a stereotype of programmers as being antisocial and difficult, and unfortunately many of us take on this attitude as if it comes with the job - but it doesn't have to be this way! I know it from experience, because I've been an angry, judgemental know-it-all, and I'm ready to tell you how I completely changed my attitude and refactored my life. In this talk I'll explain how anger and fear are the root causes of our aggressive behavior, how these feelings manifest as judgemental comments online, bullying in the workplace and ultimately keep the tech community toxic and stunted. I'll show you how embracing compassion, respect, and empathy will make you a better programmer and a happier person.

10:00 Learning the PHP-FIG HTTP Stack
Talk by Beau Simensen in Ballroom D (1 hour)

The PHP-FIG has produced four PSRs relating to HTTP: PSR-7 HTTP message interfaces, PSR-15 HTTP Server Request Handlers, PSR-17 HTTP Factories and PSR-18 HTTP Client. Learn the differences between these PSRs and how they work together to enable a rich set of tools making it easier for applications and libraries to work with HTTP in PHP.

Building a Reusable UI Component Library with Components You'll Actually Reuse?!
Talk by Amy Gebhardt in Main Ballroom (1 hour)

UI Component libraries: another trendy term and (alleged) best practice that you probably can’t stop hearing about. We’re told creating one will speed up the development process and encourage consistency in designs, all while making the entire code base easier to maintain and the app more delightful to use. Sounds like a win, right? The spirit of the idea is great, but like most hip best practices, an actual implementation is time-consuming and challenging. In this talk, we’ll dive into a practical approach for creating a UI component library from scratch or alongside an existing system - whether you’re a team of one or one hundred. We’ll cover a top ten list of things to think through so you can be confident in creating a successful library. From the super technical to the complex people challenges, you'll learn how to jump into this project prepared enough to build a reusable component library with components your team will actually reuse.

PHP 7: Give or take a version
Talk by Sara Golemon in Ballroom C (1 hour)

PHP has been keeping its promise to deliver new versions with new functionality on a yearly basis for about half a decade now. It's understandable if some sites are having trouble keeping up with what's new and why upgrading matters. Join me as we cover the exciting history of PHP 7 so far and look into the future of PHP 7.4 late this year and what 8.0 is likely to bring in 2020.

You don't know Git
Talk by Jason McCreary in Ballroom D (1 hour)

We all use Git every day. But let's be honest, we are either clicking buttons in a GUI or memorizing the commands. We don't really know Git. I didn't know Git. Yet over the years, I've made it a point to learn each of the commands. Now instead of worrying I'll break something, I'm empowered to use Git from the command line. This has dramatically improved my workflow and made me a better developer. In this talk, we'll take a closer look through live demos of some of the commands and options Git has that you can use to level-up your everyday development.

Async Middleware
Talk by Matthew Weier O'Phinney in Main Ballroom (1 hour)

Your middleware application or API relies on heavy processing, but you don't need your clients to know that. How can you speed up returning a response? Typical scenarios involve message queues, but that's a whole new architectural nightmare. Is there a better way? In this session, we'll look at various Asynchronous approaches to writing PHP, including the Swoole extension, and how they can answer this very question, allowing you to both improve performance for your users, as well as scale your application.

Modern Layouts with CSS Grid, Flexbox, Calc, and Custom Properties
Talk by Jen Kramer in Ballroom C (1 hour)

For the first time in the history of the web, CSS is graced with tools for laying out web pages without hacks. Flexbox and Grid have made a tremendous impact on the industry, providing methods for creating responsive websites with designs not previously possible. CSS Calc and CSS Custom Properties give us a first chance to use math and variables within CSS itself, without requiring compiling. Together, these four new CSS modules work together to revolutionize CSS in modern evergreen browsers. Attendees will leave with an understanding of creating custom responsive designs with the latest tools for layout, using semantically correct HTML markup and the latest CSS modules.

13:00 The Dark Corners of the SPL
Talk by Omni Adams in Ballroom D (50 minutes)

PHP is a huge language, with lots of "kitchen sink" functionality for you to build data structures with. But did you know PHP includes a standard library that has built-in structures like linked lists, queues, stacks, and higher-performance arrays? This talk will cover a few of the more interesting ones in depth, including how to use them and most importantly why you'd use them over other solutions.

Practical Security for Web Applications
Talk by Chris Holland in Main Ballroom (1 hour)

Explore effective methods to identify & avoid the most common and devastating security pitfalls in Web Applications. When it comes to an enterprise's exposure to security vulnerabilities, one could easily argue that its web presence is by far its greatest threat. There are many ways to build vulnerable applications and a few effective ways to "build them right". We'll instrument you to stay on right side of this equation.

Accessibility every day
Talk by Caryn Pagel in Ballroom C (1 hour)

Making your websites and digital products accessible to people with disabilities has many benefits. Lack of digital accessibility is becoming a hot spot for lawsuits. Accessibility is still new to many developers, so by learning more about it, you’re setting yourself apart from others in your field. Of course, the most important benefit of accessibility is that people with disabilities (20% of the world population!) can use what you and your team have built. We’ll cover: * Why digital accessibility matters * How people with disabilities access the web * Technical standards across the globe * What you can do today to make your websites and digital products accessible

14:00 Voice Is The New Keyboard: Voice Interfaces In 2019 And Beyond
Talk by Keanan Koppenhaver in Ballroom D (1 hour)

The next generation of devices is here, and they’re all voice enabled. With the rise of technologies like Apple’s Siri, Amazon’s Alexa, and Google Assistant and Microsoft’s Cortana, businesses need to think about how to structure their offerings to be compatible with these interfaces. This talk will explore how voice search is influencing SEO and customer acquisition as well as how to adapt to give customers a viable voice-interface option to interact with your services. We’ll interact with Alexa and Google Assistant live to see how they can take your PHP application to the next level and provide a unique interface to your content.

Make Your Server a Fortress - A developer's guide to server security
Talk by Roger Creasy in Main Ballroom (1 hour)

Thanks to cloud providers like DigitalOcean, AWS, GCP, Linode, etc, we as developers can easily spin up servers for testing or production. We can have a complete server ready to go in a matter of seconds. Often security is an afterthought leaving servers vulnerable to attacks, abuse, or worse. In this talk I will introduce some basic security settings and monitoring. I will make attendees aware of some of the many types of attacks, and the methodologies that can help protect them.

Building for the PHP Command Line Interface
Talk by Steve Grunwell in Ballroom C (1 hour)

Executing PHP from the command line enables us to interact with our applications in new and interesting ways: from performing site maintenance to scaffolding new projects, CLI tools like WP-CLI, Artisan, and Drush make it easy to interface with our code without ever opening a browser. Attendees will be introduced to popular PHP CLI tools and their default capabilities. We'll discuss characteristics of good CLI scripts, strong use-cases for writing custom commands, then write several CLI programs across different platforms.

Rising the Tide
Keynote by Ian Coldwater in Main Ballroom (1 hour)

Rising the Tide

Saturday 9th March 2019

Mental Health and You
Keynote by Matt Trask in Main Ballroom (1 hour)

A few years ago, Ed Finkler got the conversation going about working in tech with mental health issues. Today we are keeping the dream alive with OSMI, pushing forward helping people understand what's out there in the way of help and understanding. We will look at stats, stories, and more as we work through some tough issues.

Achieving Undisturbed REST
Talk by Mike Stowe in Ballroom D (1 hour)

Building an API is easy. Designing an API is hard. That's the motto of Undisturbed REST: a guide to designing the perfect API, and the book used by many of today's top enterprises to answer key questions and build a sustainable, efficient API that lasts. In this session we'll jump right in, tackling the questions you need to answer, looking at how to design your API, and learning from real examples in the field. And as a special bonus, each participant will receive a complimentary PDF version of the book to dig in and continue learning with.

Writing code that lasts
Talk by Jason McCreary in Main Ballroom (1 hour)

“Clean Code” is code that communicates. But how do we write "clean code"? In this talk we’ll look 10 simple practices that will help you write code which communicates. We’ll see how each one reducing complexity and improves readability. We’ll also look some of the common “Code Smells” in PHP and the refactors to clean them up. Don’t worry though, we’re not just going to “talk”. All of these practices and refactors will be done with live coding demos to show you all of the little steps involved so you can start cleaning up your own code.

Testing Like You've Never Tested Before (Because You Haven't)
Talk by Steve Grunwell in Ballroom C (1 hour)

Testing software in an automated fashion is one of the best ways to guarantee quality, reduce bugs, and prevent regressions in our code, and is a prerequisite to operating in a Continuous Integration environment. Unfortunately, the most difficult parts of testing come right at the beginning: scaffolding a test suite and writing our very first tests. For those who are new to automated testing, these hurdles can prove overwhelming. This talk covers the fundamentals of testing, in a beginner-friendly way. We'll discuss how testing makes software better, the various levels of the Automation Pyramid, how to scaffold some basic unit and integration tests, and discuss the characteristics of great tests.

Testing Business Critical Features With Behat
Talk by Andrew Taylor in Ballroom D (1 hour)

Every site seems to have that one feature that, if it breaks, would be a catastrophe. Lost profits and angry clients are something we all want to avoid. In this session, we will explore the fundamentals of Behat and look at some example tests covering critical features.

Building Your First PHP Application in Docker
Talk by Karl Hughes in Main Ballroom (1 hour)

Whether you're just starting out or an expert PHP developer, you've probably heard the dreaded line, "Works on my machine." Docker is quickly taking hold as the answer to this problem by making virtualization faster and more flexible than ever before. In this walk-through, we'll take a step-by-step look at exactly how to set up a PHP application using Docker. Along the way we'll explore how Docker works, why containers are an improvement over virtual machines, and how this setup can eliminate differences between local and production environments.

How PHP Ticks
Talk by Sara Golemon in Ballroom C (1 hour)

Ever wonder what goes on under the hood of your favorite language runtime? Buckle in for an overload of how the pieces which make up PHP fit together, and how you can dig into the source yourself and maybe get involved in making our runtime just a little bit better.

LUNCH in Main Ballroom (1 hour)


Optimize your mobile experience
Talk by Brent Peterson in Ballroom D (1 hour)

The web brings every device across several spectrums, regardless if it is your desktop, tablet or mobile device. In this talk, we'll go through examples of mobile optimizations and numbers to back up why the mobile workflow matters and what can be done to enhance the usability of key flows.

Load Testing Your App
Talk by Ian Littman in Main Ballroom (1 hour)

Want to find out which pieces of your site break down under load first, so you know how you'll need to scale before your systems catch fire? Load testing answers this question, and these days you can simulate full user behavior in a load test, rather than merely hammering a single endpoint. In this talk, we'll go through a number of conceptual points that you won't want to miss in order for your load tests to perform their intended purpose. Then we'll jump into implementation details, using the K6 load test tool to build a load test that exercises an application in a way that's similar to what we'd see in real life.

Building to spec - the OpenAPI Spec and PHP
Talk by Matt Trask in Ballroom C (1 hour)

The OpenAPI Specification has hit 3.0 and thats incredible! But what does that mean for developers? What tooling is available for PHP developers to develop against this spec? We will take a look at an API that will be pre-built and understand how it fits in with the OpenAPI Spec, how we can build our workflow around the OpenAPI Spec.

Talk by Mike Stowe in Ballroom D (1 hour)

GraphQL is hot - pushed forward by Facebook internal usage and GitHub's public GraphQL API. But what are the real benefits of GraphQL verses REST, and is there a risk of history repeating itself? In this session we'll take a look a quick look at the history of APIs, evaluate the pros and cons of both REST and GraphQL, and take a look at common use cases where you might want to consider using one or the other.

Code Reviews: That's a Great Idea!
Talk by Amy Gebhardt in Main Ballroom (1 hour)

We all know that code reviews are beneficial. We’ve been told time and time again that they should be part of our development process. But – like most best practices – a practical implementation is challenging (and time consuming). Your team is convinced they are a great idea. You’ll have an opportunity to squash bugs in the least costly of development times, learn new things from your talented teammates, and build a stronger foundation of trust. Awesome. Everyone is on board. But now what? What tools are out there? What are you actually looking for? How often should the reviews happen? What about bias? In this talk, you’ll get a practical guide to making code reviews effective. Whether you’re the reviewer or reviewee: there are ways to make sure this really is a great idea.

Removing Application Bottlenecks with Serverless
Talk by Keanan Koppenhaver in Ballroom C (1 hour)

It seems that "serverless" is taking the world by storm, but it can be daunting to imagine a world where your entire application is shifted to this architecture. One of the easiest ways to adopt serverless as a paradigm is to use it for certain features of your application that can either be run asynchronously or are currently causing you scaling issues. By tackling these problems one at a time, you can start to understand the differences in development workflow, deployment, and testing that serverless brings to the table. In this talk, we'll start with an application that has scaling problems on the critical path and look at how we can refactor just this one feature to use serverless functions and help the app run much more smoothly.

15:00 Free Software: It's not about the license
Keynote by Larry Garfield in Main Ballroom (1 hour)

Free Software. Open Source. Software Freedom. Free as in Speech or Free as in Beer? We're all familiar with the buzzwords, the catchphrases, and slogans. We all know the "GPL vs BSD" debate, and have probably participate in it at some point. But what do they mean, really? Is Open Source really just a friendlier name for Free Software, or is there something more to it? Yes. Yes there is. Free Software, at its core, is a philosophical, cultural, and political movement. It is a part of, and inspiration for, the Free Culture movement. A movement born of a simple belief: That you should have control of your own digital destiny, and that it is immoral to deprive people of that right. Let's try to recollect where our community came from, and the principles upon which it was founded.