Join us on Friday, November 2nd, 2018 for a full day of tutorials followed by a three tracks of talks on Saturday, November 3rd, 2018. 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 2nd November 2018

09:00 Binary for IoT
Workshop by Ed Barnard (3 hour)

We've come full circle: A generation ago people were expected to manipulate binary numbers. Those forgotten skills are coming back into demand. The Raspberry Pi, IoT microcontrollers, network code, pure-PHP libraries, all deal with binary-based interfaces or hardware pins. This tutorial focuses on learning the software skills you need for working close to the hardware. We'll "learn binary" and practice this knowledge with two pure PHP projects. We'll first learn and use AND, OR, XOR to build a binary adder implementing Boolean logic gates in PHP. Next we learn shifting, masking, one's complement, two's complement for our second PHP project: Implement your own algorithm converting decimal to hexadecimal without sprintf(). This hands-on tutorial focuses on gaining a strong working knowledge of the skills you need for working close to modern IoT hardware. Zero prior "binary" knowledge is expected.

Native Mobile Apps with Tabris.js
Workshop by Tim Bond (3 hour)

Tabris.js is a mobile framework that lets you develop native iOS and Android apps from a single code base written entirely in JavaScript. Tabris.js is fully native (no WebViews! and allows you to use existing JavaScript libraries, node modules and Cordova plugins to build your apps. The developer app lets you reload your code at the push of a button for a fast develop/test cycle. Tabris.js also has an online build service eliminating the need to set up SDKs to generate packages for mobile devices.

Simplify Your Workflow With Docker
Workshop by Clinton Otte-Ford, Trezy (3 hour)

We've all been there. You've tested your application time and time again, and everything is working *perfectly*. Now all you need to do is pull the code down to your deployment server and you're good to go, right? **Right?** Except... you're not. You deploy your code, and almost immediately you get users complaining that things aren't working. Turns out, you forgot to install some vital packages like `imagemagick` and `bcrypt`. Womp womp. There's a better way. Docker allows you to transcend these issues by building the same environment every time. This talk will go through the basics of Docker, how to get started, wha\sts a Dockerfile, why not just use a VM, as well as diving into the some of the common issues that Docker can solve for PHP developers.

Call... Text... Video Me Maybe?
Workshop by Mike Stowe (3 hour)

Have you ever wondered how you could add voice, telephone, SMS, MMS, messaging, video, meeting, or fax (yes - I said fax) capabilities to your web app? Learn how easy it is to build in all of these with HTTP based APIs and take your application beyond the browser. For this session we'll focus on using the RingCentral APIs (although you can easily use any other vendor as the process is nearly the same).

WordPress Security Auditing, Applied
Workshop by David Hayes (3 hour)

I love WordPress. But WordPress sites are regularly compromised by bad code (and a lack of updates), that's the ugly truth of the situation. In this workshop we'll work to make sure that our code is never the reason that such a thing could happen. We'll start with a discussion of the security essentials for WordPress, and then in WP and PHP code. Then we'll dive into code, auditing and fixing a plugin with real and common security vulnerabilities. At the end, we'll gather back together and talk about what we found and what we missed.

Laravel: Building APIs Like a Pro
Workshop by Justin Yost (3 hour)

APIs are quickly becoming one of the primary tools developers will work on and build. Whether it's an API to power a JavaScript desktop front-end or a mobile app, or to be used by your customers to make the next awesome third party integration, APIs aren't just a tool for the big players in development spaces. They are for everyone and anyone. Together we'll learn how to build an API in Laravel, from the simple and basic, BREAD interface to some more complex interfaces as well as building an OAuth login and authentication system for your API.

Saturday 3rd November 2018

How We Got Here, A Brief History of Open Source
Keynote by Chris Tankersley (50 minutes)

We all have a journey, a journey that shapes who and what we are. Ideals, hopes, dreams, and a constant stream of decisions helps make us who we are. The same is true of the idea of Open Source. The journey and story of Open Source has shaped the software landscape in the present and will continue to shape the direction of software into the future. As developers we should know this tale, this history, the important chapters that helped found the ideals of Open Source, and understand why PHP is one of the last truly Open Source projects still around.

10:00 Object-oriented Programming in Practice
Workshop by Oscar Merida (50 minutes)

It's easy to explain the syntax of Classes and Objects in PHP. It's another thing to have it all "click" and write code which is more than procedural functions written inside of a class. In this talk, we'll look at practical examples of using interfaces, abstract classes, and objects to write code which is concise, flexible, testable, and easy to maintain. If you're still writing procedural PHP, you'll come away with a better understanding of how to make the leap to thinking in an object oriented way.

Getting Started with WP-CLI
Talk by Nate Finch (50 minutes)

Do you work with or maintain WordPress sites and wonder if there's an easier way to keep things updated? Are you looking for a way to automate a site setup, turning a five minute install into a 5 second install? (Well, at least less than 5 minutes). Are you bogged down by repetitive tasks that you think, "Ugh, OMG!!!, I wish there was a script I could run that would take care of this for me.” Let's dig into WP-CLI (the WordPress Command Line Interface) together and see how it can help us get a little more "fun" out of functions, some extra "dates" out of updates (ok, maybe not that... but maybe !not that, if you know what I mean), a little more "me" time from themes and plugins.

Communication Boot Camp for Developers
Talk by Debbie Marks (50 minutes)

Addressing conflict is one of the most difficult hurdles to overcome within the workplace. You may think, “How can I resolve this without coming off as the bad guy?” “What if the conflict is with someone at a higher level with me?” “What if the repercussions land on me?” Do you ever feel intimidated talking to that coworker? Wonder what to say at the office social? You will learn communication skills to address each of these common issues and more during this tutorial. You will have the opportunity to practice your new skills with a new friend in an encouraging environment-and you can take these skills into your personal relationships as well.

11:10 Beyond FizzBuzz: Master Job Interview Coding Challenges
Talk by Vesna Vuynovich Kovach (50 minutes)

Picture this: you're acing a job interview, and you feel great. Then out comes the dreaded whiteboard, and you're faced with some off-the-wall task with no bearing to reality or sanity. Find us some palindromes! Tell us how many sewer covers there are in the city of San Francisco! Print "FizzBuzz" some of the time! Don't lose your cool. Most of these coding challenges fall into a few categories that you can master. Many become very easy once you realize the trick to it. In this talk, you'll learn about some popular challenges and how to knock them out of the park. You'll explore alternative methods, and find out how to impress your interviewer with your understanding of data structures and algorithms. Learn how to use unit tests to sharpen your skills. Practice the principles you learn in this talk, and you'll be able fly through standard job coding challenges with ease.

Extending and Writing with Gutenberg
Talk by Daniel Greig (50 minutes)

Gutenberg is WordPress's newest method for creating pages. Come and hear about how it will change how you create content, and how you as a programmer can make it easier for editors to create pages.

MySQL 8 -- A New Beginning
Talk by Dave Stokes (50 minutes)

MySQL 5.7 was the next received version of the most popular database on the web. But now MySQL is available with many new features plus improved performance. First there is a true data dictionary to store meta data instead of a series of files that tie up inodes; the good news is that you can now have millions of tables in a schema and the bad news is that you can not have millions of tables in a schema. Common Table Expressions and Windowing Functions to make it easier to write sub-queries and to perform analytics on your data. The new scheduler handles higher data contention levels, you get rue descending indexes, UTF8MB4 support (and it is the default character set), roles, and better JSON support.

Using Our Powers for Good: Tech and Social Impact
Talk by Hilary Stohs-Krause (20 minutes)

Want to make an impact in your community, but don't know how, or feel like you don't have time? You're not alone. Luckily, there are a number of ways you can use your tech-industry skills to create positive change in your community - and yourself! (Fun fact: volunteers live longer and make more money than those who don't volunteer.) In this talk, we'll look at the why's, the how's, and the where's for sharing our skills. You'll learn more about the breadth of ways to give back - both technical and non-technical - and hopefully leave feeling empowered to reach out in your own community and start making connections.

Building a Cloud-friendly Application
Talk by Larry Garfield (20 minutes)

The days of hand-crafted artisanal servers are long over. Modern web applications need to be able to run on many different servers without code changes. Not just different hosting providers, but different environments on the same hosting provider. Whether you're using a legacy dev/stage/prod setup or a modern branch-is-environment host, modern hosting imposes some requirements on your application design but also offers a huge potential for new and powerful tools. In this session, we'll explore some key guidelines for building a cloud-friendly application, as well as look at some architectural options that a modern hosting platform enables.

Localizing Websites
Talk by PHILIPP STRAZNY (20 minutes)

Should I translate my website? How do I do that? How do translators work? How do I work with translators? How do I make sure that the translations are correct? These questions and more will be the focus of this presentation. We'll look at CMSs in general and WordPress in particular. We'll look at PHP's gettext utilities and when (NOT) to use them.

PHP and The MySQL Document Store
Talk by Dave Stokes (20 minutes)

Tried of embedding ugly strings of SQL commands in your beautiful PHP code? Or your SQL programming skills not exactly sparkling? The MySQL Document Store allows you to use MySQL as a NoSQL JSON document database using modern programming structure. You get the best of of SQL and NoSQL on one server with the same set of data. This session covers the MySQL XDevAPI PECL extension and how to use the MySQL Document store to access document collections and/or relational tables. This will allow new developers to avoid the steep SQL learning curve and provide much easier to read (and comprehend) code.

More Secure API Requests with WordPress Helper Functions
Talk by Nate Finch (20 minutes)

Making API requests with JavaScript is something web developers do everyday. API services often require you to keep API keys out of the browser or route your requests through a server to secure the request. These requirements are meant to keep the API secure and not overloaded with hijacked requests. We will look at a workflow in WordPress that will route a request through the server and return the information to the browser without a page refresh. This workflow is particularly useful if you want or need to keep your API keys secret or out of the browser client, and make requests from a server and not the browser.

Tmux and VIM as an IDE
Talk by gunnard engebreth (20 minutes)

This is not a talk about VIM VS. EMACS! This is how to use a CLI in a dev/production environment that emphasizes staying on the keyboard. I will show you how to install plugins for VIM that will allow for easy directory navigation, code syntax, and code completion. TMUX will be utilized as a persistent connection and efficient way to re-connect to what you were last just doing.

14:30 Doing more with SSH
Talk by Corey Halpin (50 minutes)

SSH is an incredible Swiss-army chainsaw of secure networking. This talk presents a brief overview of how the SSH protocol works, including recommendations on how to configure SSH clients and servers for higher security. This incorporates a brief tutorial on how to create and use ssh keys for authentication, including the use of ssh-agent and agent forwarding so that password-protected keys can be used relatively painlessly. An overview of SSH's network tunneling features will be presented, including the use of static and dynamic port forwarding, jump hosts using a ProxyCommand, and light-weight VPNs with the ssh Tunnel feature. Discussion will also cover tools that can extend SSH's power like mosh (for interactive terminals on high-latency networks), sshuttle (a VPN when Tunnel won't work), and advanced-ssh-config (for simplifying the generation of complex .ssh/config files).

Plugins. What Are They Good For?
Workshop by Daniel Greig (1 hour, 50 minutes)

In this talk, I will endeavor to answer what do WordPress plugins do and why you would want to use one. I will also be looking at how you would go about creating your own.

Machine Learning Algorithms
Talk by Naveen VK (50 minutes)

Machine learning and artificial intelligence pop up in moves and TV shows all the time, but have you ever wondered how they actually work in the real world? Do you know what a Neural Network is and why it's important? Join me for a high level introduction to the algorithms used in supervised and unsupervised machine learning as well as their concepts, theory, and use case examples.

15:40 UX Design for the Internet of Things
Talk by Hrushikesh Ghatpande (50 minutes)

There has been a tremendous upswing in the use of IoT (Internet of Things) and web-based user interfaces. Data is the new oil, and everyone wants to collect more data on their operations. It's all fun and games while the sensors are installed and the data starts flowing in, but working with touchscreens for manual input and displaying the data in real-time can be quite painful if the UI/UX design isn't suitable for its application. Learn how to design your interface to handle everyday challenges while being flexible enough to adapt to constantly changing scenarios in the industry. These principles and guidelines will help you create an effective design as well as improve the overall user experience. This talk won't just be theoretical but will go through some practical considerations and ways to handle them, using real-world examples.

Git Legit
Talk by Pauline Vos (50 minutes)

If you're fighting with Git on a regular basis, you might not be using it optimally. Many Git users tend to use Git as a save point, like in a video game; chronologically making checkpoint commits as they go. This spreads out changes to the same areas in the code over several commits, necessitates merging and resolving conflicts, and generally just makes an incomprehensible jumble of your history. This talk makes a case for atomic commits and how to use them while only minimally affecting your workflow. Using pre-recorded demos, you'll learn how to properly interactively rebase, fix up, reset, bisect, and more. By the end of the talk, you'll have seen how this Git flow will make your life easier and how it will affect your ability to cherry pick, drop unwanted commits, and most importantly: not spend hours resolving conflicts in rebase hell. A little change in habits can go a very long way!

Web Access Jeopardy
Talk by Marsha Schwanke (30 minutes)

Ready, Set, Go! -- In this interactive session, teams of contestants will select questions from different categories about web access and accumulate points based on their response. Gain awareness and test your knowledge of concepts to help your web applications be more accessible and usable to a diverse audience.

17:20 Conquering Your Inner Critic
Keynote by Debbie Marks (30 minutes)

Our brains complain and let us know everything that is wrong with us and the world, but what can we do about it? With personal and professional stories (and humor), I will share ideas to help you quiet down that negative voice in your head.