Minnesota's Premier PHP Conference

March 2-3, 2013

University of Minnesota Continuing Education Center St Paul, MN

Sessions

Beyond PHP : it's not (just) about the code ! - Wim Godden
Most PHP developers focus on writing code. But creating Web applications is about much more than just wrting PHP. Take a step outside the PHP cocoon and into the big PHP ecosphere to find out how small code changes can make a world of difference on servers and network. This talk is an eye-opener for developers who spend over 80% of their time coding, debugging and testing.
Introduction to OO PHP - Michael Pavlak
Object Oriented PHP is the key to mastering the power of solid application design. This session introduces the object model of PHP and how PHP scripts can leverage Object Oriented principles in business applications. We will also review examples of code submitted to phpclasses.org and how they can increase developer productivity by leveraging OPC (other peoples code).
PHP Arrays - Michael Pavlak
Arrays are the foundation of PHP application processing. With over 70+ basic functions on array processing, PHP arrays are used for everything from data access to advanced analytics. In this session we will explore features of array processing and management from simple to complex structures and demystify why PHP programmers would do things to PHP arrays that most scientists would never do to a lab rat!
PHP101 - Michael Pavlak
We will review language history & syntax, variable usage, array processing and data access using MySQL.
Beautiful PHP CLI Scripts - Jesse Donat
PHP isn't just about websites! In this talk I plan on covering: - How and why PHP can be used as a shell script - How to get started developing PHP shell scripts - How to correctly handle streams (standard error / standard out) eg: when to use which - Handling arguments and user input - Advanced cursor control for developing UI like progress bars and simple windowing - Introduction to Process Control and real time stream passthru / processing I intend to include code samples, libraries I and others have developed, as well as real life examples and demonstrations from my professional work.
Building an Identity Extraction Engine in PHP - Jonathan LeBlanc
When it comes to building customized experiences for your users, the biggest key is in understanding who those users are and what they're interested in. The largest problem with the traditional method for doing this, which is through a profile system, is that this is all user-curated content, meaning that the user has the ability to enter in whatever they want and be whoever they want. While this gives people the opportunity to portray themselves how they wish to the outside world, it is an unreliable identity source because it's based on perceived identity. In this session we will take a practical look into constructing an identity entity extraction engine, using PHP, from web sources. This will deliver us a highly personalized, automated identity mechanism to be able to drive customized experiences to users based on their derived personalities. We will explore concepts such as: - Building a categorization profile of interests for users using web sources that the user interacts with. - Using weighting mechanisms, like the Open Graph Protocol, to drive higher levels of entity relevance. - Creating personality overlays between multiple users to surface new content sources. - Dealing with users who are unknown to you by combining identity data capturing with HTML5 storage mechanisms.
Building Testable PHP Applications - Chris Hartjes
You are ready to start writing tests for your code, but your code isn't ready to be tested. It's a mess and you know it, but you have got work to do and only so much time to go back and rewrite code that is already working..sort of. You want your evenings and weekends back. What if I told you there are a few easy-to-follow rules for creating testable PHP code? Rules that you can incorporate into your workflow RIGHT NOW. Let legendary (in his own mind) grumpy programmer Chris Hartjes show you tips and tricks he has learned to write PHP code that is easy to test and maintain.
Cryptography for the Average Developer - Anthony Ferrara
Every developer at one point or another needs to implement some form of cryptography in one of their applications. Whether it's hashing passwords or encrypting sensitive user data, the security requirements are daunting. Yet you don't need to be an expert in cryptography to implement it correctly. All you need to do is understand the basics, and trust the experts. In this talk, we'll take a look at some of the basic concepts of cryptography and how to implement them in PHP. Additionally, we'll discuss the common problems that developers face and how best to solve them. Finally, we'll dispel some of the myth and rumors around password hashing and how (and more importantly why) to do it properly.
Don't be STUPID, Grasp SOLID - Anthony Ferrara
When it comes to Object Oriented Programming, there is no shortage of guidelines and principles for how to properly design an OO system. There is also no shortage of acronyms to describe these principles: DRY, SRP, LSP, LoD, ISP, OCP, etc. However, there are two acronyms that really shine through to describe how to, and how not to do OOP well. The two acronyms are SOLID and STUPID (respectively). We'll discuss some of the underlying principles of Object Oriented Programming, and how we can learn from the principles identified by each of these two acronyms. Additionally, we'll explore some additional anti-patterns of Object Oriented Design and how they can be avoided. Finally, we'll talk about how all of this applies to our every day development tasks, and the real-world benefit these design principles provide...
Enterprise PHP Architecture through Design Patterns and Modularization - Aaron Saray
Object Oriented Programming in enterprise level PHP is incredibly important. In this presentation, concepts like MVC architecture, data mappers, services, and domain and data models will be discussed. Simple demonstrations will be used to show patterns and best practices. In addition, using tools like Doctrine or integration with Salesforce or the AS/400 will also be discussed. There will be an emphasis on the practical application of these techniques as well - this isn't just a theoretical talk! This presentation is great for those just beginning to create enterprise applications as well as those who have had years of experience.
PHAR, the PHP .exe format - Helgi Thorbjoernsson
Learn what the PHAR (PHP Archives) format is all about. A PHAR is conceptually similar to a Java JAR but made to fit PHP's needs. Hear how to use it to distribute your product to clients, why open source projects have started offering their projects as a PHAR file, run your application directly from the PHAR container without extracting anything to the filesystem, secure it using the signature feature to ensure the container hasn't been tampered with and many other interesting features. By the end of it you will be wanting to use PHAR for CLI and Web apps alike!
Refactoring 101 - Adam Culp
Adam Culp will talk about refactoring code. (The practice of altering code to make it cleaner, simpler, and sometimes faster, while not sacrificing functionality.) We all hate to do it, but it is a necessary evil. So lets talk about how to do it better. Adam will discuss: When to refactor. How to refactor. Why to refactor. How a refactor can help us write better code in the future. A common methodology and steps to follow while refactoring. Resources to help us all on our refactor journey.
Drupal Development Tips - Chris Tankersley
Any PHP developer can develop modules for Drupal, but like any system newcomers, will have a learning curve that must be overcome before the system makes sense. With Drupal playing the role of both a CMS as well as a generic application framework, you have the power to build complex applications as well as small modularized code. We'll look at tools and practices to make Drupal development easier like the devel module, SimpleTest unit testing, and moving components back and forth with the Features module.
Intro to Laravel - Ben Edmunds
Are you ashamed to admit you're a PHP developer? Have you been using the same old, boring PHP framework for years? Tired of your PHP applications turning into enormous beasts? Maybe you've heard about Laravel but haven't made the effort to dive into it? In this presentation, we'll walk through what makes Laravel an elegant, fun, and exciting framework to make PHP applications that you'll be proud of.
Introduction to Zend Framework 2 - Mike Stowe
The new service driven version of Zend Framework makes application development faster and applications more efficient. In this session we will take a look at building a simple application using Zend Framework 2 and the skeleton app.
Migrating a Zend Framework application to ZF 2 - Bart McLeod
Moving from ZF 1 to ZF 2 is not like redecorating your home. It's more like rehousing an entire population. Zend Framework 2 has new cool features that constitute a brand new MVC architecture. ZF 2 allows for very flexible programming. Wouldn't it be just awesome if your ZF 1 applications would work on ZF 2, if you could migrate them? So that new features you develop can immediately benefit from this flexibility? If you have existing ZF 1 applications that you intend to continue developing on, this talk might be for you. In order to follow along, it would help if you had experimented at least a little with ZF 2, so that you have a basic idea of what it could do for you. This, however, is not an absolute requirement. Even if you haven't seen any ZF 2 code before, this talk will enlighten you on what to expect from ZF 2 and on what kind of challenges you might want to anticipate. ZF 2 is a new product. At a first glance, there are more differences with ZF 1 then there are similarities. In this presentation I will map features of typical ZF 1 MVC web applications to their counterparts in ZF 2 MVC web applications, using code examples and a demo application. At the end of the talk, you should have a clue as to where you could go with your own applications. You should be able to grasp in what way ZF 1 Model, View and Controllers relate to their equivalents in ZF 2 and how these are configured and managed using Modules, the ServiceManager and the EventManager. If time permits, you will also see the new Zend\Db and the new Zend\Form components in action.
Symfony2 and MongoDB - Pablo Godel
In this talk we will see how to use MongoDB in Symfony2 projects to speed up the development of web applications. We will give an introduction of MongoDB as a NoSQL database server and look at the options on how to work with it from Symfony2 and PHP applications.
Symfony2 internals - RAUL FRAILE
“Once upon a time there was a request...” A deep explanation of how are interconnected the Symfony2 components to create the full-stack framework and all the events that take place during the request to generate a response. HttpFoundation, HttpKernel and EventDispatcher will be addressed, as well as some important concepts to understand the internals such as autoloading/PSR-0 and dependency injection.
The WordPress Hacker's Guide to the \Galaxy() - Jason Rhodes
As someone who started with PHP as a self-described "WordPress hacker", I had a hard time finding the path to becoming a knowledgeable programmer. Having now stumbled a short way up that path, I think we can make it easier for anyone who's interested in finding it. I'll share a brief overview of the tools and concepts I wish I'd known getting started, including MVC, templating languages, caching with APC, exception handling, version control, PHP tips, etc. I'll finish with a few suggestions for how advanced programmers can get involved with some of the popular platforms, learning from how Drupal and Symfony are working together on Drupal 8.
Data Aggregation with MongoDB - Jeremy Mikola
Real-time analytics dashboards, nightly reports and ad hoc querying are just some of the ways we make sense of data. Each entails its own set of design constraints, benefits and trade-offs. Originally, map/reduce or data warehousing (i.e. exporting to an RDBMS) was the only option for data aggregation in MongoDB; however, version 2.2 introduced a new aggregation framework. Modeled after UNIX pipes, this framework combines the simplicity of SQL aggregation operators (e.g. min, group by) with the power of map/reduce and performance we've come to expect from MongoDB. In the latter half of this talk, we will construct a PHP application from scratch, which utilizes the aggregation framework to provide an ad hoc reporting tool.
Getting Acquainted with MongoDB - Jeremy Mikola
MongoDB is a non-relational, document database that aims to hit a sweet spot of functionality and flexibility. This session will introduce MongoDB's storage model and query language using the native PHP driver and a plethora of code examples. Along the way, we will discuss appropriate use cases for MongoDB (vs. other relational and non-relational databases) and explore new features, such as geospatial indexing and methods of data aggregation.
MySQL 5.6 - David Stokes
A review of the new features in MySQL 5.6 --Replication improvements covering many aspects. --InnoDB improvements for higher transactional throughput.
MySQL Replication - David Stokes
MySQL Replication is a native feature of MySQL. This session will give a broad overview of replication within MySQL as well as a simple real world configuration example to get you started. We will then continue with a more in-depth investigation of the MySQL Replication Features in MySQL 5.6. MySQL Replication Overview Replication Configuration --- Examples of a Real World Setup MySQL 5.6 Replication Features Replication Monitoring
What every web developer should know about database optimization - Steve Meyers
Most developers are developers, not DBAs, yet many smaller companies have inadequate database experience in-house. This is largely because databases like MySQL and PostgreSQL don't necessarily require a full-time DBA to administer. It's become more important for developers at smaller companies to have some basic knowledge of how to keep their database happy.
What every web developer should know about database optimization - Continued - Steve Meyers
Second part of the session on database optimization
Caching and Tuning fun for high scalability - Wim Godden
Caching has been a 'hot' topic for a few years. But caching takes more than merely taking data and putting it in a cache : the right caching techniques can improve performance and reduce load significantly. But we'll also look at some major pitfalls, showing that caching the wrong way can bring down your site. If you're looking for a clear explanation about various caching techniques and tools like Memcached, Nginx and Varnish, as well as ways to deploy them in an efficient way, this talk is for you. In this tutorial, we'll start from a Zend Framework based site. We'll add caching, begin to add servers and replace the standard LAMP stack, all while performing live benchmarks.
Deep dive into Gearman - Helgi Thorbjoernsson
With every passing year the data that companies and application store grows astronomically, both through more data logging for business analysis and the consumption of 3rd party data (mashups), but how can those companies make sense of all that data and turn it into something useful that is constantly updating and evolving? Gearman is a very good and simple solution to this data problem. Gearman allows you to farm out work to other machines better suited to do the job at hand in a language and platform agnostic manner. During the talk I will tell stories of 2 different products where I faced a huge data processing challenges and how I solved them with Gearman. I will do demos and live coding of Gearman workers, a deep dive into the system! Welcome to the Age of Data, we have cookies.
Git Your Code Under Control - Mike Stowe
Ever make a change only to realize the old way was better? Or did you just get done writing 400 lines of code only to have a co-worker overwrite the file by accident. Learn how to use Git and GitHub to manage your code base, including setting up a repository, checkout, commit, revert, branch, push/ pulls, utilize remote repositories, and more.
Phing All The Things! - Omni Adams
Phing is a build system that lets you do all sorts of neat things quickly and easily. If you find yourself manually running complicated processes or frequently having to look up command line parameters for your tools, Phing can help make you more efficient. If your deployments have many error-prone steps or you find yourself dealing with fragile procedures, Phing can help keep your sanity.
Scaling PHP with HipHop - Sara Golemon
HipHop is the Open Source PHP language compiler and runtime designed and used by Facebook. HipHop offers a significant speed improvement over the official PHP runtime and supports most of its core features. This session will provide an introduction to how and why to use HipHop over PHP, and the benefits it offers.
Embrace Your Inner Designer - Josh Broton
Whether you want to admit it or not, the decisions that you make as a developer greatly influence the final design of your application’s user interface. It doesn’t matter if you’re working with a designer, or you’re a one-man A-Team, there are some very easy and powerful things that you can do to ensure that the final product is intuitive, usable and (gasp!) beautiful. Come embrace that designer inside of you that wants to get out (and wear hipster glasses).
Get hooked on git hooks - Omni Adams
Git hooks allow you to do nearly anything you want them to on certain git actions such as merging, committing, or updating. You could even build a poor man’s continuous integration system using git hooks and some scripts. This talk will cover the basics of local and remote git hooks and build some useful hooks to help your team build better software and improve your development workflow. Example hooks will include running PHPCS before you commit locally, running lint and PHPCS remotely when pushing to the remote git repository, and automagically creating review requests in Review Board for new commits.
HTML5 WebSockets - Scott Mattocks
The emergence of HTML 5 and related technologies opens up a new world of possibilities for web applications. Among those new technologies are WebSockets, which allow for bi-directional communication between the browser and the server. This session will introduce WebSockets by exploring a few practical applications. Afterward, we will dig into the JavaScript API before concluding with a look at the WebSocket communication protocol.
JavaScript's Difficult Concepts Explained - Jeff Carouth
When approaching JavaScript as a PHP developer some of the nuances of the language take a while to become comfortable. If you've ever wondered how context and the this keyword work, when to declare a variable, how to create objects and use prototypes in JavaScript, you are not alone. These concepts seems crazy at first, but with some examples you can grasp and use them in your code today. This session will cover the finer points of JavaScript the language from the perspective of someone who is proficient with PHP or another language.
Rocking Responsive Web Development - Josh Broton
Up until the last few years, it was completely acceptable to design/develop a new website for one size of monitor. But with the release of the iPhone, iPad and other mobile devices, we’ve witnessed the beginning of a mobile revolution. By the end of this year, over 50% of Americans will use their phone or tablet as their primary web browsing device. The question is, are the sites that you are creating ready? In this talk, I discuss reasons why responsive is the best way to develop new websites, as well as the best techniques I’ve discovered after a year of full time development of responsive websites.
Using Backbone.js in a PHP Environment - Ken Harris
Backbone.js is a Javascript framework for building client-side web applications. It provides models, collections, views, and routing for the Javascript code on the client. In this talk, I will provide an introduction to Backbone.js, its components, and walk through a simple example application. I will also examine the server PHP side of the equation and detail the interface and interactions between PHP and Backbone.js.
Deploying PHP on PAAS: Why & How - Jérôme Petazzoni
PHP has been around for 17+ years. Back in the days, it was FTP, PhpMyAdmin, and sometimes CVS or SVN. Things have changed: git and mercurial have risen; everybody wants a “staging” or “pre-production” environment; replication, scaling, and load-balancers are not only for expensive, high-end projects; and developers want to mix & match languages, which led to the coming of “polyglot” platforms. We’ll see how Platform-as-a-Service has become a very solid offering for PHP hosting; the numerous advantages and productivity improvements that it provides; and how to embrace it in the most efficient way.
Learning how to learn - Joel Clermont
As developers, we are constantly faced with new things to learn. New versions of languages, new tooling, new best practices, and so on. How do you cope with it all? In this talk, I'll get a bit meta and talk about learning how to learn. We like our code to be efficient, so why shouldn't our learning be efficient as well?

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.

made possible by

gold sponsors
Web and PHP Logo
dotCloud Logo
silver sponsors
Clockwork Logo
ESP Logo
bronze sponsors
True North PHP Conference Logo
New Relic Logo

show your pride

Add a MidwestPHP badge to your site or blog