Minnesota's Premier PHP Conference

March 15-16, 2014

University of Saint Thomas Minneapolis, MN


7 Things I Wish Somebody Told Me - Aaron Saray
There's more to being a successful programmer than just dominating your chosen language. After years of programming, I've found that a few other important skills emerge. Problem solving, communication and empathy have found their way into my development process. If you're earning your stripes as a junior programmer, you'll benefit from my lessons learned "the hard way." And for those in a mentoring role, this refresher will serve as a guide to sharing your own experiences that helped shape you into a great programmer. Come find out why these 7 honest and practical tips deserve a spot in your programmer toolbox.
Bringing Good Design to the Table - Brian Fenton
Many databases begin life with simple tables or even with tables imported from Excel or Access. Over time they can grow more complex and problems appear like inconsistent data, poor performance or orphan records. In this talk we'll cover principles of database design and normalization. We'll look at common design mistakes and how to avoid or fix them using a set of example tables.
Building rock solid software in the real world - Omni Adams
As a professional developer, you already do all of the best practices. You store your code in a source control and write unit tests. You already know all of the patterns and when to use them. Your code is perfect and beautiful. Then you hire another developer. He puts his braces in the wrong place and uses different formatting then you. He keeps committing broken code to your code base. Then you add another two members to your team along with a junior developer. All of your beautiful code is getting ugly, brittle, poorly documented, and hard to maintain. We'll discuss some of the pitfalls and strategies when developing software in the real world, from style guides to code reviews to automated checks that keep your team from imploding in ego-driven angst.
Code Reviews: The "Secret" to Building Quality Software - Patrick Schwisow
Even the best of us can overlook things and make the occasional mistake, but a mistake that makes it to production means no sleep, unhappy customers, and lost revenue. Code reviews minimize this risk and keep you sleeping soundly. Having QA review your code helps, but your developers know the code best. You also avoid having a single point of failure by ensuring that there are always two developers who thoroughly understand each update. Learn how to incorporate peer reviews and testing into your workflow, making big improvements in code quality without derailing your team's velocity.
Continuous Integration in Real Life - Beth Tucker Long
Continuous integration is a big picture idea for big projects, but what if your projects and pictures aren't big? Is continuous integration worthwhile for every day projects? Learn more about what continuous integration actually is, what tools are available to help you implement it, and how you can make it work for you, even in the small stuff.
Doctrine, Object Persistence, and You - Jeremy Mikola
Doctrine has come a long way from its humble beginnings as an active record ORM for SQL databases. After an overview of relevant design patterns, we'll discuss the practical benefits (and caveats) of managed object persistence in Doctrine ORM and the newer Non-SQL ODMs, look at data modeling via its widely used annotation library, and explore APIs for persistence and query services. Finally, we'll survey other projects in the family, such as lower-level database and cache abstractions.
DOs and DON'Ts of MongoDB - Jeremy Mikola
There are no "best practices" without "worst practices". This presentation will look at proper use cases for MongoDB, covering topics such as schema design, querying, and methods of data aggregation. Tips and caveats will be sprinkled throughout as we discuss DOs and DON'Ts applicable to the PHP driver right down to operations and deployment of the database itself.
Foundations of PHP - Beth Tucker Long
A building works better with a solid foundation beneath it. The same is true for PHP. Whether you are new to programming or are just looking for a refresher, this session will take you through the basics. Beth Tucker Long will cover strings and arrays, conditions and loops, sessions and cookies, form validation and security, and writing your own functions. Best of all, Beth won't just talk about these concepts, she'll go through actual code, so you can see them in action. Bring your laptop, follow along, and you'll have a working application when you leave. Questions are welcomed!
From SQL to noSQL - Derick Rethans
In this talk I will explain the differences between different types of noSQL databases as well as the CAP theorem. I will then progress to illustrate which paradign shifts are necessary to succesfully implement noSQL, using MongoDB as an example. The approaches to schema design, fault tolerance, the network breaking and latency are all things that are inherent to scalability with noSQL solutions and with this talk you will learn how to use MongoDB effectively considering all the above mentioned situations. Covered subjects will be: CAP theorem, schema design, dealing with error situations and architecture of multi-node set-ups.
Getting Started with the Symfony2 Framework - Maxwell Vandervelde
The presentation is not a how-to on learning how to build a Symfony2 application from the ground up. Rather, the presentation is a high level overview of the framework. It focuses on the internals and environment of the framework that your code will interact with along with the principles that went into its creation. The intent is that hopefully by doing this we can eliminate some of the initial frustrations that occur when any developer tries to learn something new. The goal here is to prepare and align developers of varying backgrounds and ready them to begin the process of learning the framework.
Git and Github: Working Effectively on a Team - Jeff Carouth
Git is great. Project hosting on Github is even better. But how does git fit into your team workflow? In this talk we will cover how to effectively use git as your source control management system from an individual developer's perspective and then from a team perspective. You will learn how to efficiently use git during feature implementation and experimentation including stashing, committing, rebasing, and code sharing techniques; how you can leverage Github to spur conversations about code and implementation; and a workflow incorporating code review using Github's pull requests.
How I Learned to Stop Caring and Made Better Software - Eli White
Best practices are important, but are they always the best for your situation? I spent years working on large software projects where best practices were crucial. Milestone planning, multiple code branching, 99.9% uptime requirements, heavy testing, deployment processes, etc. But I then blindly applied those to every project afterwards. In retrospect, that hurt many projects, especially in smaller companies or startups where speed of innovation was more important and downtime acceptable. In this session, learn from my experience and discover where cutting corners is not only acceptable, but better for the project. At the same time, learn which practices are crucial and should be used no matter what!
How to succeed with Open Source - Glen Campbell
There is a lot of confusion around open-source projects. For example, Android is often touted as an open-source mobile operating system, but have you ever met someone outside of Google that has successfully submitted code to it? There are a lot of proprietary systems that operate under the mask of "open source" but, on the other hand, there are some truly remarkable tools and libraries that are available. By becoming involved in the development and maintenance of open-source solutions, businesses can leverage an enormous, highly-motivated group of programmers who will work for you, essentially for free. To take the most advantage of this, however, participants in open-source projects must be "good citizens;" they need to understand how to contribute, how to measure and manage open-source workers, and how to set expectations internally with regards to using open-source software. When you work with an essentially volunteer workforce, you cannot use the same management strategies that may have worked for you in the past. It's important to be flexible as well as cautious about participating in open-source work, but the benefits can be great.
HTTP ALL THE THINGS: Simplifying Rich Applications by Respecting the Rules of the Web - Nate Abele
A new model for designing web applications has emerged, driven by client-side JavaScript frameworks, new browser features, and increased expectations for rich user experiences. This talk will take you on a tour of one such framework (AngularJS), and will show you how building a backend optimized for it can also mean building a backend optimized for the web. By leveraging often-overlooked features of HTTP, you can create cleaner architectures, with simpler, better, and more consistent HTTP APIs.
Introducing Tests in Legacy PHP Applications - Jeff Carouth
You know testing is beneficial to your project. You are familiar with merits and caveats of test-driven development. But the project you’re hacking on right now is what most would call a legacy application. How do you apply your test knowledge to an application that doesn’t lend itself to traditional unit testing? The answer most will give is, “you don’t,” but we’re going to look at ways to write tests now that will allow you to improve and refactor your application to evolve the code to a more manageable state. The traditional “easy” route to dealing with legacy code is to rewrite but a little patience and skill applied to writing tests will yield better results.
Introduction to Modules in Zend Framework 2 - Evan Coury
One of the highly anticipated new features of Zend Framework 2 is the introduction of an all new and powerful approach to modules. This new module system has been designed with flexibility, simplicity, performance, and re-usability in mind. Modules in ZF2 can contain just about anything: PHP code, including MVC functionality; library code; view scripts; and/or public assets such as images, CSS, and JavaScript. With compelling features such native, best-in-class Phar packaging support and event-driven design, the possibilities are truly endless. Join Evan Coury, the author of the new ZF2 module system, as he explains everything ZF2 modules have to offer.
It Was Like That When I Got Here: Steps Toward Modernizing a Legacy Codebase - Paul Jones
The codebase at work is absolutely terrible. It's a mess of spaghetti that has been around for years and is and completely untestable. Any time you fix a bug right here, a new bug appears over there. In this talk, Paul explains why the code is so bad, and gives practical steps on how you can start digging your way out of the legacy hole while keeping the system running the whole time.
Managing Dependencies with Composer - Beau Simensen
Traditionally, managing third-party code in PHP projects has not been a trivial task. Fortunately, the PHP community now has Composer, a top-notch dependency manager. Learn what Composer is and how you can put it to work for fun and profit. You will see how to set up a new project, find packages, as well as how to create and distribute your own packages.
Mocking Dependencies with PHPUnit - Matt Frost
Creating a test suite that you can have confidence in is hard work. It's nearly impossible to create unit tests for your whole application without knowing how to mock your dependencies. This talk will focus on the different types of test doubles, when to use them. It will also provide some code examples to tie the theortical and practical side together.
Much more Eggs than Bacon: A Development Environment Cookbook - Jacob Mather
Have you ever wrote code that worked when you wrote it, but failed when it went to QA? Or staging? Or production? Learning how to build a high quality development environment is a serious undertaking and will involve a lot of trial and error — unless you come to this talk. Having spent the better part of the last year prepping, implementing, rolling out, maintaining, stabilizing, and growing a large scale development environment platform, I will show you the ropes. The real secret to building a system everyone can love: it’s all about making eggs, not bacon.
Not Your Grandmother's WordPress - Jason Rhodes
You’re a responsible-yet-totally-hip developer staring at a brand new WordPress project—don’t panic! The WordPress team might support PHP 5.2 but you don’t have to! In fact, you can use a workflow that would make even a Laravel developer jealous. I’ll show you some set-up tricks, explain how to manage everything with Composer, get you started with WP-CLI and show you how to deploy with confidence.
PHP from the CLI - Cal Evans
PHP is a powerful tool. It is estimated that it is running on more than 80% of the servers on the web today. Many know that PHP can also be run from the command line, but don’t truly appreciate the power that it gives them. You can use PHP for everything from simple command line pipes to back-end maintenance for complex web apps. In this session we will start with some simple examples of using PHP from the command line and then build up to using it as part of a larger application.
PHP, RabbitMQ, and You - Jason Lotito
You've optimized your database queries, you're using memcache and APC, and you've even upgraded your servers. But now your processes are taking too long to run. A script running in cron every minute just isn't going to cut it. Where do you turn next? This talk introduces you to RabbitMQ specifically, and queues in general. We'll actually show how to implement RabbitMQ into your code, how to best use your messages, writing consumers in PHP and Node.js, and more. All from the experience of someone working on sites sending tens-of-thousands messages a second.
Professional-grade software design - Brian Fenton
So you know about object oriented code and wrapping functions up into classes with similar behavior. This talk will take you on a deeper dive into SOLID, a mnemonic for five rules of well-designed OO code. We'll also cover some common design patterns, with examples, and cover some further guidelines about designing clean code.
Stabilize Your Environment, Stabilize Your Code - Jacob Mather
Without a development environment that closely matches your production environment, the process of promoting your code from dev to prod will be fraught with peril. We will go into the fine details that you need to know to get started working with Vagrant, VirtualBox and Puppet, teaching the tools needed to not only stabilize your development environment, but improve the confidence you have in your code as it is promoted from development to production.
Sticks, Spit, and Duct Tape: Advanced Responsive Techniques - Josh Broton
HTML/CSS can be a fickle lover, so it’s important to know 2 (or even 3) ways to accomplish the task at hand. This talk discusses plan B, C, and maybe D for your responsive layout. Methods like flexbox, text-align, float, and display: table can add flexibility and strength to your CSS arsenal. Other topics include responsive images, responsive javascript, and performance.
Using PHP with OpenStack Clouds - Glen Campbell
OpenStack is the largest competitor to Amazon Web Services at the moment. However, OpenStack isn't a single provider; instead, it's a suite of open-source software that allows anyone to manage an open-source cloud, as well as being a public offering by companies like HP and and Rackspace (my employer). This session gives an overview of the various OpenStack components ("projects") and lots of details on using php-opencloud, the open-source SDK for working with OpenStack clouds.
Vagrant for Virtualized Development - Adam Culp
Adam Culp will talk about using Vagrant to create and manage virtualized development environments, making it easier to mirror production servers. Then will lightly cover using Puppet for more advanced provisioning, making the addition of multiple development environments and servers easier and faster. Then will cover other tools helpful to use with Vagrant to make it even easier to use, and follow up with a brief LIVE demo of using Vagrant, Puppet, phPHPet.com, and Composer to get a development environment up quickly. If you're developing and are not sure what these technologies are, this talk is for you. As a developer it's increasingly important to ensure our development, testing, staging, and production environments are as closely matched to each other as possible, alleviating the "can't reproduce it on my machine" excuses. Whether you use 2, 3, or 4 of these environments is of less importance if they are all built on the same "stack" of applications.
Web Security and You - Eli White
This talk will focus on XSS, CSRF, Session Hijacking, SQL Injection, and other security vulnerabilities that need addressed in Website Development. This talk will cover a gambit of these issues, giving specific code examples showing what the vulnerabilities look like and how to identify them. It will then present solutions to close them down and protect yourself.
You're the Tech Lead! Now what? - Eryn O'Neil
You've been programming for a while now. You know your way around the code, and you're starting to feel kind of senior. And it looks like someone else noticed, because you're the technical lead on your next project. Congratulations! But now what? It's a big job: The technical lead can be responsible for designing software architecture, writing requirements, interfacing with clients or management, mentoring less-experienced developers, or dividing work amongst the team-- and those are just the parts of the job they tell you about ahead of time. We'll talk about how to oversee the technological vision for the project without losing sight of what's happening on the ground, how to motivate your team members without overstepping your bounds, and some tactics to deal with challenges you might not anticipate, but will almost certainly encounter.

Disclaimer: While we will do everything we can to ensure all sessions as described, sessions and speakers are subject to change based on speaker availability and company obligations.

featured sponsors