Sessions

Adventures in Laravel 5

Joe Ferguson

Mid
Framework

With the release of Laravel 5 there are a lot of new toys to play with. We’ll cover the new features and how to start using them in your applications. We’ll be covering the new directory structure, changes in blade templates, commands and events, form requests, helpers, route caching and middlewares, controller method injection, migrating from Laravel 4, and more! We will also discuss changes to Illuminate packages and the new Elixir, Socialite, and Contracts packages.

Be a Bold Coder

Beth Tucker Long

Entry
Other

Do you cringe when you have to show someone else your code? Have you ever complained about terribly written code only to discover it was yours from six months ago? Coding is a constantly evolving field. How can you keep up? Learn what standards are out there to help you keep your code clean, what tools can help you proof your code, and where to find information on best practices so you can stay current and boldly share your code with others.

Best Practices for Framework-Agnostic Code

Jonathan Eskew

Mid
Development

Modern frameworks like Symfony and Laravel make writing clean code a breeze. They ship with solid inversion of control (IoC) containers and a suite of robust components that let you focus on writing your application without having to deal with boilerplate and plumbing. But what happens when you want to write components and libraries without restricting yourself to a single framework? Using the AWS SDK for PHP as an example, this session will explore how to write clean, framework-agnostic code and low-level libraries.

Build middleware applications with Zend Framework 3

Enrico Zimuel

Entry
Framework

Zend Framework 3 offers the possibility to write PHP application using a Middleware approach. With the usage of the component zend-expressive, combined with the PSR-7 standard, we will show how to build performant, well structured and reusable web applications. We will show how to design and implement simple web applications, APIs and complex web architectures using dependency injection containers, routing systems and template adapters.

Building Great APIs

Ben Ramsey

Entry
Api

Much focus has been spent discussing the merits of RESTful APIs. Sure, REST is important, but how do we put these concepts into practice and build great APIs? How RESTful do we need to be, and where do we draw the line with a pragmatic approach to ship code and make our users happy? In this talk, I’ll show how to build APIs that put into practice the concepts of REST, while showing that it’s okay to bend or break the rules. Along the way, we’ll cover the Richardson Maturity Model, hypermedia, when and where to use content negotiation, and API versioning pitfalls.

Building Real-Time Data Pipelines

Samantha Quiñones

Entry
Api

Taking a data-driven approach to application management starts with instrumentation, but storing, analyzing, and distributing that data to the people who need it introduces a unique set of problems. Discover how one of the world’s top digital media platforms handles the massive stream of analytics pouring in from millions of consumer devices. We’ll dive into the technologies that allow us to collect, route, store, and find meaning in data at 20 MB/s.

Caching Best Practices

Eli White

Mid
Development

Whether you use Memcached or another caching technology, such as APC or OPcache, having an application level cache is important for performance & scalability. Learn some best practices for making this cache layer the most efficient & easy to use. Techniques such as ‘biggest smallest reusable item’ & automatic write-through caching will be covered.

Containers and Docker for the PHP developer

Robert McFrazier

Mid
Devops

In this session we will discuss the basics of containers and how to use Docker, running in a Vagrant VM to allow any PHP developer to create an extremely flexible development environment and also learn more about these powerful technologies. Using a practical example of building a development environment allows you to create something other that a basic “hello world” example while learning about containers and Docker.

Data Structures in PHP

Matthew Turland

Mid
Development

Some problem classes require specialized data structures to optimize runtime or memory usage. This session will cover more recent additions to the core Standard PHP Library extension from PHP 5.3 as well as several libraries in the wild that offer additional data structures. No computer science background is necessary; this tutorial will present data structures in understandable terms with practical examples.

Debugging: past, present and future

Derick Rethans

Mid
Development

In this talk I will go over all the past, present and future debugging techniques. The talk start by giving an overview on PHP’s (ancient) standard features for debugging, additional (userland) libraries and functionality in frameworks.

After the introductions we move on to the meatier stuff and I will talk about live-action debuggers, such as Xdebug and Zend’s debugger. They both provide information while a script is being executed, in combination with IDEs. I will demo that integration.

For the future, I will be talking about a tool that allows you to “step back” while debugging as well; introspect what your script’s or application’s exact execution paths was; and trace variable modifications.d

Demystifying Object-Oriented Programming

Alena Holligan

Entry
Development

Abstraction, Encapsulation, Polymorphism, and Interfaces: whether you’ve been programming in PHP for years or are just starting your journey, these terms can be overwhelming even on a good day. Variables, conditionals, those all make sense. But this whole Object-Oriented thing is WAY more complicated. Not only that, people that already understand it act like it’s so easy and they talk right over the simple questions and never explain the basic concepts in a way that actually makes sense. In this session we’ll take you through real life examples of Object-Oriented terminology in a way that will make sense of all the mumbo jumbo and allow you to utilizing OOP immediately.

Dependency Injection for Beginners

John Kelly

Entry
Development

What is Dependency Injection? Why is it a buzzword? What does it mean for my everyday development? In this talk, we’ll go over what Dependency Injection is, how it’s used in today’s modern frameworks, and why you should care about it. We’ll go over uses in ZF2, Symfony, and Laravel as examples.

Drupal 8: The Crash Course

Larry Garfield

Mid
Framework

One of the most widely-used and mature Content Management Systems on the planet, Drupal runs more than one in fifty websites in the world. However, it has always been something of an odd duck, with an architecture and design very different than anything else in PHP.

Enter Drupal 8: Almost a complete rewrite under the hood, Drupal 8 is a modern, PHP 5.4-boasting, REST-capable, object-oriented powerhouse. Now leveraging 3rd party components from no less than 9 different projects, Drupal 8 aims to be the premiere Content Management Platform for PHP.

But how do you use all this new-fangled stuff? This session will provide a walkthrough of Drupal’s key systems and APIs, intended to give developers a taste of what building with Drupal 8 will be like.

Prior familiarity with Drupal 7 is helpful but will not be assumed.

ELK: Ruminating on logs

Mathew Beane

Entry
Devops

We’re talking about serious log crunching and intelligence gathering with Elastic, Logstash, and Kibana.

ELK is an end-to-end stack for gathering structured and unstructured data from servers. It delivers insights in real time using the Kibana dashboard giving unprecedented horizontal visibility. The visualization and search tools will make your day to day hunting a breeze.

During this brief walkthrough of the setup, configuration and use of the toolset we will show you how to find the trees from the forest in today’s modern cloud environments and beyond.

Encryption, authentication and data integrity in PHP

Enrico Zimuel

Advanced
Security

Do you need to encrypt sensitive data in PHP? Encryption is not enough, you need also authentication and data integrity! In this talk I will explain how to provide encryption using block ciphers, e.g. AES, and authentication plus data integrity using HMAC algorithms. We will talk about public key cryptography in PHP using OpenSSL, to provide digital signatures and watermarking techniques. Moreover, we will show some PHP examples using the zend-crypt component of Zend Framework that offers a simple and robust API for cryptographic scopes in PHP.

Everything You Need To Know to Be Comfortable With WordPress

David Hayes

Entry
Framework

There are a few core things that people need to understand to be comfortable and productive in the WordPress ecosystem themes, plugins, “The Loop”, the template hierarchy, and the WordPress hooks system. We’ll go in-depth on each of those things using the analogy of a factory to understand how they all fit together into what WordPress produces. We’ll throw in a few interesting and random tidbits learned in nearly a decade of fiddling with WordPress.

Going Pro

Cal Evans

All
Keynote

What makes a developer a “professional developer”? Getting paid? Getting quoted? Publishing a book? Let’s take a look at this.

This talk will look at the traits that define a professional developer. Not the hard tech skills, those change with the tools being used. These are the soft and quasi-soft skills that developers have to master to be considered a professional developer.

Along the way there will be some tweetable moments, and of course, a long line of bad jokes. Hopefully though, you will take away a concept that you need to work on to round out your skills and unlock your “Going Pro” badge.

How Long Will It Take? – Estimation Methods To Answer The Impossible Question

Jared Faris

Entry
Other

“How long will it take?” is something no developer likes to hear. Devs don’t work in a vacuum; someone in the business will want to do some planning. This talk will start with why you need to be good at estimating and cover fallacies surrounding it (including its role in Agile). We’ll discuss multiple ways to perform estimates with their pros and cons. You’ll leave knowing why estimation is important with tools to make it easier and less scary.

Introducing the OWASP Top 10

Gary Hockin

Entry
Security

Every year the OWASP community releases a Top 10 List of what it considers are the most critical web application security flaws. Join us as we step through the current OWASP Top 10 vulnerabilities, explaining what they are and how they can affect your PHP application. We’ll take a quickfire look at all 10 security concerns complete with examples and best practices. You’ll leave the talk with a basic understanding of each flaw giving you a great grounding to audit your own applications and an impetus to learn more about website security.

Laravel Forge: Hello World to Hello Production

Joe Ferguson

Mid
Framework

With the recent release of Laravel Forge, Envoyer and Homestead, it has never been easier to go from nothing to something with an easy to use PHP Framework. This talk will cover creating a basic Laravel application using the Laravel specific Vagrant box “Homestead”, connecting to a server (Linode, Rackspace, Digital Ocean), and deploying the application via Forge. The talk will also cover tips and tricks on customizing Homestead to fit custom needs as well as how to use Forge & Envoyer to deploy new versions of our application.

Lessons in Load Testing: Using PHP to load test your site and APIs

Jason Lotito

Entry
Testing

Learn how to write scripted load tests in PHP to run against your system without breaking the bank. Jason will cover not only the importance of load testing, but share stories of how load tests uncovered problems that would otherwise not have been discovered until production. Also, learn how to use load testing to learn how to deal with large traffic sites without needing to be employed by a large scale site first. We’ll be using RedLine13, an almost free load testing tool that is at the same time inexpensive, easy, and effective.

Manage Your Content with Elasticsearch

Samantha Quiñones

Entry
Database

Elasticsearch is one of the most powerful search and data management platforms available today, but it’s not known for its simplicity. In this hands-on workshop, you’ll learn how to get the most out of this very capable platform. We’ll explore querying and filtering, creating efficient indices, custom views, clustering strategies and dive into Elasticsearch’s powerful suite of aggregations. This introduction will get you ready to build complex search and statistical applications that make your content and data even more valuable.

Mocking with Mockery

Ben Ramsey

Mid
Testing

Mockery is a mock object framework that may be used with any unit testing framework. It is a flexible and human-readable domain specific language (DSL) for mocking objects in unit tests. With it, we can create some pretty powerful tests and even test legacy code containing hard dependencies. In this talk, I’ll show how to get started with Mockery. I’ll start with some basic mocking techniques and then move on to cover more advanced topics, including static methods, partial mocks, final classes, and hard dependencies.

PHP 7: The New New PHP

Larry Garfield

Mid
Development

The next era in the life of our favorite language has come. PHP 7 brings numerous improvements to PHP, from minor syntactic enhancements to major engine changes to a new, stronger type system.

What does it mean for developers? What exactly are the new tools at our disposal? Are the changes in PHP 7 worth the upgrade? We’ll try to answer that question, and make the case for upgrading sooner rather than later.

PHP-FIG Discussion

Samantha Quiñones

talk

Open to anyone

Polyglot Persistence – using the best DB for the job

Ryan Boyd

Entry
Database

Sometimes you need to store columns and rows. Sometimes you need to store massive documents. Sometimes you need to store relationship-focused data best represented in a graph. For many applications, it’s better to choose an appropriate database instead of force-fitting your data into a single form. This is the theory behind Polyglot Persistence.

This session will walk the audience through a PHP app which takes advantage of MySQL, MongoDB and Neo4j for different types of data, explaining the data architecture and pipeline. We’ll use the native PHP drivers for MySQL and MongoDB, the Neo4j HTTP API, and the Mongo Connector with the Neo4j Doc Manager for syncing data from the document-centric MongoDB to the relationship-centric Neo4j.

By the end of the session, you’ll understand when each type of database is best used, how to use each from PHP and how to make the cost-benefit calculation of single vs multiple types of datastores.

Rethinking Loops

John Kary

Mid
Development

You likely learned about loop constructs very early in your programming career and use them every day–so often you don’t think twice! The problem is for() and foreach() are so fundamental developers use them for everything! Even worse almost every developer will use them differently to accomplish the same goal. So what would intention-revealing PHP code look like without using for() and foreach()? Let’s explore some functional programming concepts and find out!

Knowing basic functional programming concepts will improve your PHP code. Your new mindset will favor writing code with better separation of concerns and decreased complexity: clean code. We will explore some poor examples of using loops to process data, then ease into learning functional concepts like map, reduce, filter and collection pipelining. We’ll then use our newfound knowledge to refactor a large foreach() loop to use the new techniques. Lastly we’ll explore some existing libraries and even experimental PHP RFC features to make our code even more concise. Beware: after this talk you’ll never look at for() and foreach() loops the same again!

Services in the Enterprise: How Not to Fail

Mike Stowe

Entry
Api

Many many years ago the idea of microservices was born, but in a slightly different fashion. The idea was simple, create modules that would talk to each other and could easily be plugged in or pulled out. The result today is known as SOA in the enterprise space, a problem that requires expensive middleware and fancy solutions. Are we doomed to let history repeat itself with microservices, or how can we ensure that our services are truly decoupled and that we are as agile to scale and expand as we were from day one. In this talk we’ll take a look at why the enterprise space failed with SOA, and how we can succeed with APIs.

The Code Manifesto: Empowering Our Community

Kayla Daniels

All
Keynote

The Code Manifesto is a set of values, created in hopes of guiding our community towards a place that is welcoming, safe, and empowering to all.

Currently, our communities are greatly lacking in diversity, and sometimes outright hostile towards the minority members that we do have. In this talk I try to illustrate that problem, and also cover WHY it matters, and finally what we can do to help fix it.

I talk about what the Code Manifesto is, why it came to be, and why each of the values were selected.

The Hidden Architecture of the Domain

Woody Gilk

Mid
Development

Often when talking about SOLID or architecture, the term “domain separation” is thrown around to describe how we should keep the framework logic separate from business logic. But what is actually inside of the domain? How can we organize domain code in a logical way? This presentation will give you some real world examples on how to organize your domain code with SOLID principles and provide some easy to follow guidelines for your own projects.

The Many Flavors of NoSQL

Bradley Holt

Entry
Database

The relational database has been the dominant model for persisting data for the last 40 years. While SQL databases aren’t going away anytime soon, the NoSQL (“not only SQL”) movement has challenged the relational database’s place as the default persistence layer for modern applications. Learn about horizontal scaling and eventual consistency as well as key-value stores, document databases, graph databases, and more.

Websockets and Event-driven Programming with ReactPHP

Steve Meyers

Mid
Development

Modern browsers support a new standard call Websockets, which allow persistent connections between a browser and a server. We’ll discuss how to implement Websockets with your client-side Javascript talking to your server-side PHP, using the ReactPHP framework.