Below are some of the talks I've given at various conferences over the years.


Working in shorter development cycles has a tendency to result in faster, less-risky delivery of changes to our production applications. Extensive automation is a key part of achieving this, but where do you begin? If you’re currently hosting on AWS, you’ll be happy to know that there’s a full suite of developer tools available to accomplish just that. In this session, we’ll explore using AWS CodePipeline, CodeBuild, and CodeDeploy to set up continuous integration, continuous delivery, and zero-downtime deployment of our PHP applications!

Essential AWS for PHP Applications

Have you ever thought "I'd like to use AWS for my PHP application, but it's so complicated!"? With over 70 distinct services available, how can you possibly learn them all or even decide which ones you need in the first place?

Join me in this session as we grow a simple LAMP server into a scalable, fault-tolerant, highly-available, secure application stack on AWS. Whether you've already got some experience with AWS, or all you know so far is how to spell it, you'll walk away from this talk armed with the essentials for running PHP workloads on AWS!

MySQL: Analysis, Understanding, and Optimization of Queries

Your new database query ran quickly when you tested it, but seconds after deploying it, alarms are blaring and you’re scrambling to rollback before the site goes down. What happened?!?

I can “EXPLAIN”.

Queries that perform well under development load with limited datasets can easily bring a database to its knees under production load. In this talk, you will learn to decipher MySQL query execution plans, recognize portions that can be improved, and take the necessary steps to optimize your queries - all without starting any fires!

Introduction to Graph Databases with Neo4j

Graph databases are all the rage these days, but the ideas they’re built upon are hundreds of years old. After a brief look at the history of graph theory and its practical applications in Computer Science, we’ll dive right into Neo4j - the world’s most popular graph database! Learn the differences between a graph database like Neo4j and your traditional RDBMS. See how to model your application’s domain using the new concepts available to you and how to query your graphs using Neo4j’s intuitive query language, Cypher. After this talk, you’ll agree that (Neo4j)-[:IS]->(Awesome) and be excited to use it in your next web application!

Job Queues with Gearman

When higher traffic coupled with costly operations begin to degrade your site’s performance, an asynchronous job queue can be a valuable tool to help relieve the stress. With Gearman, PHP developers can easily farm out non-time-critical jobs like image processing, external API requests, and complex data processing operations to a pool of workers better suited to the task, leaving their webservers free to continue serving requests.

Join Michael Moussa as he walks you through the basics of setting up a Gearman job server, writing clients to communicate with it, and creating workers to do the heavy lifting. After the basics are out of the way, he'll go into some pitfalls to watch out for when working with Gearman, as well as some tricks to make development easier.

Unit Testing PHP Applications

Testing your code before deploying to Production is important - so why rely on slow, limited, manual testing? Automated tests can help protect you from introducing bugs into your applications and provide valuable feedback on application design. They're quick, they run whenever you want them to, and they don't forget about those few lines of code you wrote months ago.

In this talk, you'll learn how to set up PHPUnit and configure it to run tests against your project. We'll write some tests together and go over more intermediate topics, such as mocking dependencies and making your code more "testable." Finally, we'll see which tools are available for us to help determine how much of our code is tested and to assess its overall quality. After this talk, you'll know everything you need to begin testing your PHP applications.