The Pacific Northwest PHP Conference is a 3-day event in the Pacific Northwest region of the United States for PHP and Web developers. Our past conferences have included world renown speakers from the PHP community, and covers a wide range of topics — from APIs to unit testing.

Thursday 7th September 2017

09:00 Build a Bot
Workshop by Ian Littman (1 hour, 45 minutes)

Think you can do better than Google Assistant, Alexa, or Siri? Want to build your own intelligent Facebook Messenger bot? Dipping your toe into the water is easier than you think, thanks to tools like and Google's Cloud Speech API. We'll start by building a chat bot that can keep track of context from message to message. Then we'll mix in speech input and output to get something a little closer to your favorite assistant app.

Becoming an Open Source Contributor
Workshop by Beth Tucker Long (1 hour, 45 minutes)

Are you interested in contributing to an open source project but aren't sure where to get started? Have you tried to contribute but gave up trying to figure out the contribution process? This tutorial will walk you through the contribution process and the tools you need to make contributions to popular open source projects. Bring your laptop, because we won't just be talking about contributions, you will actually make a contribution during this tutorial. Come to the talk a developer; leave as an open source contributor!

12:30 Demystifying Object-Oriented Programming
Workshop by Alena Holligan (2 hour)

Abstraction, Encapsulation, Polymorphism, Interfaces and Namespacing: whether you’ve been programming in PHP for years or are just starting your journey, these terms can be overwhelming. Learn what it take to be a "modern" PHP developer with real life examples of Object-Oriented terminology that will give you the experience to get your hands dirty.

Let Your Tests Drive Your Development
Workshop by Michelangelo van Dam (2 hour)

Test driven development (TDD) is still a subject all developers agree upon it's a great thing, but never get around to actually do it for many reasons. In this workshop I use real world business requirements on legacy code for which we need to fix bugs and add features, but we're doing it in a TDD way. No matter if you're already a testing veteran or a junior developer just started working yesterday, this workshop will give you the skills and passion to continue your career as a Test Driven Developer. BONUS: We also cover the test migrations required to move from PHP 5.x to PHP 7.x!

15:00 Microservices: The Strangler Pattern
Workshop by Ed Barnard (2 hour)

How do you upgrade a legacy application without attempting a full rewrite? Our large PHP application at InboxDollars works well and generates revenue. Unfortunately, we're locked into an old version of CakePHP. Rather than rewriting the ancient beast, we created a way to write new feature code using modern PHP while leaving our main application intact. We follow the Strangler Pattern using microservices. In this tutorial we learn: How the Strangler Pattern works Producer/Consumer programming using microservices Criteria for identifying your Strangler Pattern candidates Structuring your code with an eye to future change Our example uses CakePHP and RabbitMQ. It's based on our experience at InboxDollars, but we focus on principles that apply to any language or framework.

Practical PHP Deployment with Jenkins
Workshop by Adam Culp (2 hour)

Developers would love to "automate all the things", but where do we start? What tools exist for automating? And what can actually be automated? If we don't have unit tests can we still benefit from deployment automation? Adam Culp will show how a PHP application pulled from git, complete with unit tests, Composer dependency management, and package creation, can be deployed flawlessly using Jenkins. Then see how "Dev" and "Ops" are supported by a system if the application breaks through automated rollbacks.

Friday 8th September 2017

Using Our Superpowers For Good
Keynote by Eryn O'Neil (45 minutes)

Technology has snuck into nearly every part of our lives, from electronic medical records to online bill-pay systems to apps that remember which craft beers you’ve tasted. We usually think of this technology as a tool, something as indifferent as a hammer or a ruler. But in a world where algorithms decide which version of the news you read or when you should turn left, pretending our software is detached is naive—or even dangerous. So, when so few technologists (that’s us) are creating software for use by so many (that’s nearly everyone else in the world), how can we do right by them? What responsibility do we have to use our skills for good? And how can we get this right when humans beings insist on being so varied and complicated and, well… human?

10:00 Status Change: Now Using Event Sourcing
Talk by Emily Stamey (45 minutes)

Being flexible to changes in business process makes our jobs easier, and it helps our applications adapt to those changes with minimal code changes. One of the biggest adaptions in our applications has been the addition of Event Sourcing to make a note of an Event that happened in the system. With these Events, we can affect change immediately, or even later. This is most helpful in our reporting interfaces. We can build, change, and throw away our reports very easily. This is much easier than our older reports being generated by large SQL queries. Attendees will learn: - idealogical differences between status flags and events - triggering events in your application - handling events to reflect the state of your application data - building reports from events that are easy to change

Let's Talk Scope
Talk by Alena Holligan (45 minutes)

Scope is a major factor in any application, from programing scope to project scope, and communication is key. We will discuss different application scopes including global, functional, class, and package scope. From there we will show how everything ties together with communication of the project itself. Why and how to stay on top of project scope and how that can make or break the final outcome.

Open Source: a Panel Discussion
Talk by Tessa Mero, Margaret Staples, Sammy Kaye Powers, Sara Golemon, Emily Stamey (45 minutes)

A discussion on participating in open source

14:30 Let's Get Random: Under the Hood of PHP 7's CSPRNG
Talk by Sammy Kaye Powers (45 minutes)

Randomness is really important in many cryptographic contexts. Unfortunately true randomness is a non-trivial achievement for computers. In fact, using weak sources of randomness can leave your application open to myriad vulnerabilities. Enter: a good cryptographically secure pseudorandom number generator (CSPRNG). We'll discuss the importance of using good sources of randomness, the CSPRNG options we had in PHP 5.x, and how the new-goodness CSPRNG functions in PHP 7 work under the hood.

How PHP Ticks
Talk by Sara Golemon (45 minutes)

A look into the internals of PHP; How it came to be, how it works, and how PHP 7 leapt far out in front of its predecessor on performance and memory consumption with some thoughts on what's next for PHP 8.

Modern and Secure PHP
Talk by Ben Edmunds (45 minutes)

This is not the PHP of old. Learn what's changed in the PHP world over the last few years. Classes, objects, statics, traits, unit testing, composer, password hashing; it's a whole new ballgame. Learn what has changed in the PHP world over the last several years. We'll cover The newest PHP language features. Community efforts such as the PHP Framework Interoperability Group, Composer, and PHP the Right Way. How to secure your application using up to date techniques.

Saturday 9th September 2017

09:00 Making more human interfaces using Machine Learning APIs
Keynote by Christian Heilmann (45 minutes)

In order to understand interfaces, humans need information and context. You can't always provide that. But machines can by comparing what you have with trillions of other, similar datasets on the web. Using Machine Learning, Deep Learning and Artificial Intelligence you can roll interfaces that not only have what your user gave you, but enhance it with important meta data to make it more usable. In this talk you'll learn about APIs to use to turn images and video into text, to find people in photos, to know the emotions of people in photos, to allow for human input into digital interfaces and to prevent unwanted content to enter your products. You don't need to be a data scientist to do this, you can tap into already existing offers for you.

10:00 Bringing Old Legacy Apps To PHP 7 and Beyond
Talk by Sammy Kaye Powers (45 minutes)

Most developers don't get the luxury of working on a greenfield project using a web framework of their choice. Often times we find ourselves inheriting a legacy codebase written years ago for an end-of-life version of PHP and a now-defunct web framework. The initial temptation might be, "I'll just rewrite all this on x framework". But hold on there my framework friend, a rewrite is costly and is rarely the correct answer. We'll discuss some common pitfalls when getting a legacy codebase ready for PHP 7 and what we can do to make the upgrade path as painless as possible. These incremental changes will keep the business running while improving security, stability and maintainability of the codebase.

11:00 Does Your Code Measure Up?
Talk by Adam Culp (45 minutes)

After days, weeks, or months of coding many developers don't know how to gauge the quality of their code. Adam Culp will introduce tools to grade, benchmark, and analyze PHP code in an automated fashion allowing developers to write better quality software. He will explain key metrics to help understand what may need to be refactored, and use code smells to point out bugs before end-users discover them. Attendees will see how to use these tools, know where to find them, and be able to implement them in their own workflows.

UX and UI: Panel discussion
Talk by Andrew Woods, Eryn O'Neil, Marcia Burrows, Beth Tucker Long (45 minutes)

A discussion about UX and UI from a developer perspective

And who would have thought, it FIGures
Talk by Sara Golemon (45 minutes)

Wondering what goes on in the Framework Interoperability Group and why PHP Standards Recommendations matter to you? We'll take a look at the process your favorite PHP components use to cooperate with each other towards building consistent, interoperable components. We'll also take a short run through what PSRs already exist and have been widely adopted, and how you can make your voice heard guiding the future of the PHP ecosystem.

Using PHP and JavaScript to Design a Better Board Game
Talk by Marcia Burrows (45 minutes)

Marcia Burrows is known for creating computer games, but recently her team of two at Goal Quest Games brought a board game from initial inspiration to publication in only 9 months. How? PHP and JavaScript. See how using PHP facilitated long-distance teamwork and helped a weak game develop into a better one. PHP / MySql enabled the team to easily coordinate updates to playing cards, and with JavaScript, updated board designs could be generated instantly. These methods allowed rapid prototyping and play-testing cycles. And, with this methodology Goal Quest Games will quickly adapt and publish a recently requested custom version. Attendees will learn the value of the rapid prototyping / play-testing cycle in game development as well as how to generate board images for print using JavaScript.

More Than Just A Hammer
Talk by Ben Edmunds (45 minutes)

Learn to expand beyond just PHP to integrate other languages into both your personal skill set and the solutions you deliver. In this talk we'll cover integrating JavaScript (frontend and backend via node) and how you can expand your current skill set to include this or any other language alongside PHP. The old saying, if all you have is a hammer everything looks like a nail, is very true so let's learn how to use a wrench and maybe a chainsaw! Not only will this give you another tool in your tool belt, it will give you a greater understanding of development practices and the ability to on new jobs, new projects, and new challenges.