Join us on Friday, September 22nd, 2017 for a full day of tutorials followed by a three tracks of talks on Saturday, September 23rd, 2017. Madison PHP Conference in Madison, Wisconsin focuses on PHP and related web technologies. This event is organized by Madison PHP and is designed to offer something to attendees at all skill levels. It will be two days of networking, learning, sharing, and great fun!

Friday 22nd September 2017

09:00 Create an API-centric System for Web and Mobile
Workshop by Christian Varela in Oakbrook (3 hour)

In this tutorial, we start by defining an API with Apigility as our main engine, we will define all the details to make sure we set up our API so it can be consumed by our web application and our mobile application. We continue by creating a web application that will consume the API resources and how to define the flow from data consumption to views using **Zend Framework**. Then we will define a simple mobile app, which will consume the services from our API. For this we will use Sencha Touch. We will learn about the details to promote our App to the App store and Google play.

Guide to UX Testing with Assistive Technology
Workshop by Andrea Skeries in Odana (3 hour)

An accessible website opens the door for millions more people to engage in your site content. In many cases, it is also a legal requirement. Learn testing techniques to check your website for ADA, Section 508 and WCAG 2.0 compliance. During this workshop you will hone your manual testing skills as well as learn about automated testing tools.

Linux SysAdmin 101
Workshop by Liam Wiltshire in Grand Canyon (3 hour)

The vast majority of PHP developers work with a Linux environment - be that a staging box, AWS or more traditional hosting, most servers we work with are Linux-based. However, not all of us have an 'in depth' knowledge of the platform. This tutorial gives a detailed, hands on introduction to Linux SysAdmin, so that any PHP developer can SSH into a box and debug an issue, without having to go to a senior dev, or having to phone up their hosting company and sit in a queue forever. Working with pre-created Linux virtual machines, delegates will have hands-on instruction on the following topics: - Introduction to Linux distros (focused on Ubuntu (deb) and CentOS (rpm)) - The Linux CLI (Connecting to Linux, using the CLI, common CLI tools) - Setting up a standard LAMP (Apache) stack and LNMP (Nginx) stack, including SSL and vhosts - Server troubleshooting - Server monitoring using built in tools Having 'in house' developers with Linux skills is a massive benefit to any organization, so by the end of this tutorial delegates will not only be able to take on small server tasks, but also have the grounding and skills to learn more and develop their SysAdmin knowledge further.

13:30 Docker for PHP Developers
Workshop by Chris Tankersley in Oakbrook (3 hour)

Docker is quickly becoming an invaluable development and deployment tool for many organizations. Come and spend the day learning about what Docker is, how to use it, how to integrate it into your workflow, and build an environment that works for you and the rest of your team. This hands-on tutorial will give you the kick-start needed to start using Docker effectively.

Hack Your Home With a Raspberry Pi
Workshop by Kenneth E. Marks in Odana (3 hour)

Do you ever wonder what's happening at your home when you're not there? Wouldn't it be fun to get a text message when your dryer is done? Using a LAMP stack on a device smaller than a credit card, you will learn to connect sensors to create web-enabled devices to monitor the temperature around your house and more! In this tutorial, you will do all of this on a Raspberry Pi Zero that you get to keep!

Getting More Out Of Git
Workshop by Jordan Kasper in Grand Canyon (3 hour)

You've taken the plunge and your organization is fully immersed in Git... Great! But now the hard stuff starts creeping in. Your team is growing, becoming more diverse and distributed. It's time to level up. This tutorial will walk attendees through a number of real world scenarios and how they might be handled using Git on the command line. This is not an introductory workshop, so come prepared with some basic understanding of version control with Git including staging (adding), committing, pushing, and pulling changes. We'll cover many topics including branching strategies, amending commits, resetting, using the stash, cherry-picking, and merging versus rebasing. Attendees will come out of this session with a better grasp of how to use more advanced features of Git and some new strategies to take back to the office.

Saturday 23rd September 2017

Engineering a Successful Career Through Failure!
Keynote by Rodney Urquhart in Grand Canyon (1 hour)


10:10 The Road to PHP 7.1
Talk by Michelangelo van Dam in Oakbrook (1 hour)

In December 2015, PHP 7.0 was released, marking a new milestone for PHP and web application developers. Looking at the changelog and removed functions, we thought all was going to be easy to migrate to PHP 7.0. Unfortunately, many of the extensions and tools we use weren't ready yet. In December 2016, PHP 7.1 was released and the urgency to update became real as PHP 5.6 was nearing end-of-life. In this talk, I describe the analysis and the challenges we faced migrating towards PHP 7.1 so you can learn how to defeat those challenges if you plan to migrate too.

What Makes a Great Developer?
Talk by Matthew Turland in Odana (1 hour)

Regardless of our technical specialization, seniority level, or present job, we want to be the best developers we can be. On our individual journeys, we meet others we hold in high regard and consider to be exemplary of our vocation and our craft. What makes these developers great? How can we best follow their example? We'll explore these and related questions about what crucial knowledge, values, skills, goals, and challenges you must pursue on your own path to being a great developer.

Pulling up Your Legacy App by Its Bootstraps!
Talk by Emily Stamey in Grand Canyon (1 hour)

Your mission, should you choose to accept it, is to support an application built on an older framework. Refactoring isn't an easy option. The code is untested and nowhere near best practices or standards. In this session, we'll talk about strategies to incorporate modern PHP coding practices to add features and functionality and retiring the older code in pieces. We'll review specific examples and code from a real project where we bootstrapped a legacy application that needed a lot of help to become useful to its users and simpler for developers to maintain. We'll talk about strategies to leave the existing code in place until the new code is ready to replace it in whole or in pieces. Attendees will learn common terminology around legacy codebases, strategies for assessing the state of the legacy application before deciding how to proceed, and the tools that were crucial to our refactoring project. The specific tools are from the PHP ecosystem, but they are applicable in other legacy environments (testing packages, package manager, database migration tool, and dependency injection container tools) - general ideas of how the Events, CQRS, and DDD worked to help us improve our application.

11:20 Empathy As A Service: Supporting Mental Health in the Tech Workplace
Talk by Nara Kasbergen in Oakbrook (1 hour)

At any given time, 1 in 5 Americans 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 5 or more employees have at least one colleague who is affected. At the same time, the tech industry is often characterized by high stress, long hours, workplace pressure to be available by phone and e-mail after-hours or sometimes even while on vacation, 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 that 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 4 in 5 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.

PHP OOP: An Object-oriented Programming Primer
Talk by Oscar Merida in Odana (1 hour)

Whether you are a brand new developer or an experienced coder - the PHP object model can hold some mysteries that are worth exploring. This session will briefly cover the basics of working with Objects in PHP, then dive quickly through inheritance, abstracts, interfaces, traits, late static binding, magic methods, namespaces and maybe even reflection. It's a lot to cover to make sure to show up with your eyes open and ready to move quickly!

RegEx Is Your Friend
Talk by Liam Wiltshire in Grand Canyon (1 hour)

RegEx is scary. At least, if you ask Google, that's what you might think (257,000). And slow (441,000). In fact, regular expressions are neither of these, and indeed are a powerful tool in your utility belt. "RegEx Is Your Friend" will provide some real-world usable examples of how RegEx can be used in a way that's fast, explaining how the different parts of regular expressions work and execute to make it understandable for all. No matter if you don't know your '$' from your '^', you are not sure when to use RegEx (and when not to), or you just need to find a way to make your RegEx run faster, there will be useful help and tips for everyone.

13:30 Will You Help Me End Pixelated Images on the Internet?
Talk by Julka Grodel in Oakbrook (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.

Building Unique Templates with Custom Post Types in WordPress
Talk by Andrea Roenning in Odana (1 hour)

Custom Post Types help extend WordPress's super powers to provide a more versatile content management system. They help create a WordPress administrator experience that makes it easy to add and edit repetitive content and gives you flexibility to create unique web pages to fit your, or your customers' unique needs. This talk will cover creating Custom Post Types and how to create a WordPress template page to display their content. Slides:

Browser Serving Your Web Application Security
Talk by Philippe Gamache in Grand Canyon (1 hour)

One important concept in web application security is defense in depth. You protect your server, your network, your database and your application, but what about the user browser? Can it be done? Yes! Several new technologies and protocols to assist security has been added to the browsers. Several should be added, activated and configure from your web server or web page. In this presentation we will explore these technologies and learn how to use them. You'll learn about the Robots meta tags (for crawlers indexing), Browsing Compatibility, XSS and Clickjaking Protection, SSL/TLS Control, and Content Security Policy.

14:40 Creating a Local Dev Environment with Vagrant and Puppet
Talk by Daniel Greig in Oakbrook (1 hour)

Local environments suffer from multiple problems. Different versions of PHP, base OS differences, and configuration differences. Those differences could just be between you and the production server, or even between you and your co-workers. These differences can cause frustration and panic when you push code to production and find out that date() works differently between the Windows version of PHP and the Linux version. What if I were to tell you that we could avoid all those hassles? By the end of this talk, you should have a good understanding of why we would want to do this and how you would get started on this with your own projects.

PHP Prepared Statements and MySQL Table Design
Talk by Ed Barnard in Odana (1 hour)

When using a PHP framework, standard practice is to use an Object-Relational Model (ORM) for database access. However, with high-volume logging and statistics-gathering, it pays to go "old school" with PHP prepared statements. Meanwhile, when MySQL tables quickly grow by millions of rows, table storage space becomes an issue. Our table design must focus on keeping these tables more compact and efficient. Here too, prepared statements simplify both coding and table design. We'll be using CakePHP 3's excellent support for PHP prepared statements, but all concepts are native to PHP and apply to any project striking this use case.

Illusions of Web Development and How They Are Destroying the Industry
Talk by Stefany Newman in Grand Canyon (1 hour)

Web development (or web programming as I like to call it) is filled with illusions. These illusions, masquerading as common sense, are things like attempting to be "time saving" and tidbits like "don't re-invent the wheel" that are widespread among programmers and web developers. Though good intentioned, these illusions mislead us as web programmers to take the wrong path when building a website. In this talk, I want to bust some of these illusions and mistakes; like using content management systems for single page websites when a simple HTML page will suffice, or installing ultra heavy CSS frameworks when just 500 lines of CSS will be needed, or using a standard shopping cart that your cousin's best friend's sister uses and you want it for your ecommerce shop when you are selling just one product and don't need it (true story). I want to talk about things like that. I see websites being built in a horrible fashion daily and this is not how web development was supposed to be.

15:50 What Raising 3 Kids Taught Me About Working with Users
Talk by Derek Binkley in Oakbrook (1 hour)

No matter the size of your team most developers work with users or stakeholders to develop project requirements. Making your way through competing requests to get to a good design takes a lot of time and skill. In this talk Derek will use what he has learned as a parent and humorously apply it to product design and requirement gathering. You will learn about effective methods for getting agreement on product features and interface design. You will learn ways of discovering what stakeholders really need to ensure delivery of a great product. These are valuable skills that can help you create better applications, become more valuable to your team, and advance your career. You might even pick up a parenting tip or two.

10 Things You Didn't Know You Could Do With Composer
Talk by Patrick Schwisow in Odana (1 hour)

Over the last five years, Composer has changed the way PHP developers work. It figures out which versions of our required libraries work together and installs everything for us, but if that's all you've ever used Composer for, you're missing out. Come learn how and when to use validation, autoload overrides, and other features you've never heard of.

Dev Divas: History's Heroines of Computing
Talk by Vesna Vuynovich Kovach in Grand Canyon (1 hour)

Through most of the 20th century, progress in science and technology was powered largely by thousands upon thousands of women who both created massively complex algorithms and executed them by hand. Over decades, machines took on the second task superbly. But the first task proved impossible to offload to machines. Today we call it "computer programming." The contributions made by these women cannot be understated -- except that in fact, it has been. Meet the mostly unsung women who shaped the high-tech world we live in -- the women who brought us the first computer language, the compiler, the flowchart, and so much more. Celebrate their stories, and learn about their struggles. Find out what the landscape looks like today for women in tech, and learn how you can contribute to a brighter future for all.

Thank You PHP Community, I Owe You so Much
Keynote by Michelangelo van Dam in Grand Canyon (1 hour)

In my daily work, I bring all my experiences and knowledge to the table, and I'm making a good living out of it. But this wasn't always the case. I struggled through life when I was younger, and it wasn't until 2007 that I got in touch with the PHP community at a conference. That moment changed everything in my life. This talk is about how amazing and life changing the PHP community is and why it's important for people to become part of it. I know you want to change the world, and now it's within your reach. Your actions can change the life of many for the best, and we'd like you to join us.