by Ryan Weaver
Whether you like flat php, Symfony, Drupal, Zend Framework or anything in between, we’re all solving the same fundamental problems. In this workshop, we’ll explore just how small the world is by building a “flat” PHP application, identifying these problems, and solving them piece by piece. We’ll learn what a “framework” really is as we create our own using components from Symfony, Zend Framework, and Lithium. When you leave, you’ll understand how to use a PSR-0 autoloader to bring new libraries into your app, how a dependency injection container can help you, and what’s really going on under the surface of the popular frameworks and CMS libraries.
Now that you know the basics of unit testing, you are ready to dive into advanced mock framework techniques and learn about integration testing. Some topics included are constraints (Hamcrest), mock frameworks, external and hostile dependencies, and DBUnit. This tutorial should teaching you integration testing techniques and better use of mock framework. You should leave this session knowing when write an integration test and when mocks are sufficient. Example code uses the PHPUnit framework. This course is a continuation of Developer Testing 101.
by Rob Richards
APIs are pretty much a necessity for organizations in this day and time, although many have a difficult time trying to figure out how to get started. It is not as simple as standing up and endpoint and exposing data as one must be cognizant of both the consumer and the delivery mechanisms in order to make an API successful. In this tutorial, I will briefly go through some of the whys of having an API and what one would want to be exposing before we go into depth on creating and exposing these APIs. Using real world scenarios we will explore creating APIs with different data formats, ways to expose them as well as how to deal with debugging when things go wrong. In addition to the creation, understanding and being able to write consumers is also a critical skill when developing APIs. We will cover this not only as part of debugging, but also when working on and discussing different consumer types such as mobile applications.
This workshop is a hands-on training where a real Zend Framework application is used as an example to start improving QA using tools to test, document and perform software metric calculations to indicate where the software can be improved. I also explain the reports produced by a CI system.
by Eli White
Interested in NoSQL (non-relational database) technologies? Want an introduction to one that is simple to use, immediately available, and easily scalable? Then SimpleDB may be for you. Come learn how to use Amazon SDB and what features it can provide to help solve some of your software development concerns.
by Brian Moon
HTML5 and CSS3 offer some great features that everyone is clamoring to use. However, not everyone can simply rip apart their site and redo all of their markup and styling across the board. There are some quick wins, especially with CSS3, to be had that you can integrate into your site without rewriting your whole entire site.
In the past few years, the PHP Zeitgeist seems like it’s been moving in the Neil Peart direction. Lots of work by lots of smart people is going into complex, verbose solutions. Lots of files, lots of nested directories, and lots of rules. No thanks. So I wrote the MicroPHP Manifesto: 1. I am a PHP developer 2. I like building small things 3. I want less code, not more 4. I like simple, readable code Contrary to popular belief, you can still kick ass with PHP using simple, readable code that avoids over-engineering and excessive abstraction. We’ll talk about how to make that happen with lightweight “micro-frameworks” and single-task, no-dependency libraries.
There are many fast data stores, and then there is Redis. Learn about this excellent NoSQL solution that is a powerful in-memory key-value store. Learn how to solve traditionally difficult problems with Redis, and how you can benefit from 100,000 reads/writes a second on commodity hardware. We’ll discuss how and when to use the different datatypes and commands to fit your needs. We’ll discuss the different PHP libraries with their pros and cons. We’ll then show some live examples on how to use it for a chatroom, and how Redis manages a billion data points for our dating matching system. Finally, we’ll discuss some of the upcoming features in the near future, such as clustering and scripting.
by Neal Anders
This presentation will take an existing open-source project (done in php) and cover how to integrate performance monitoring to identify areas that could be improved through code refactoring or database tweaks.
by Mark Brown
Everyone has heard of the cloud. Many still see it as an overhyped buzzword yet the cloud is today being used not only by developers building games and mobile devices applications but by now Enterprises as well. The cloud is changing the landscape forever, bringing with it some massive improvements and equally massive changes. As a developer you need to understand the options and implications for new applications you are building and also understand them for legacy applications where the cloud is making just as big of an impact.
In this session we’ll explore a wide array of applications and architectures and explain the technical considerations and implications when these applications are deployed within the cloud. In addition we will look at the two primary cloud platform service models, Infrastructure as a Service (IaaS) and Platform as a Service (PaaS), plus a third Software as a Service (SaaS). We will talk about some of the vendor offerings leveraging these service models, explore the differences between the approaches and explain the impact they have as you design, build, deploy and scale your applications highlighting complexity versus flexibility so that you understand what is the right approach for you.
Did you know that MySQL has a NoSQL interface? No? Would it interest you that they are using the memcached API to hook directly into the InnoDB and MySQL Cluster (NDB) storage engines – skipping the MySQL server completely? I recently heard about it, and was curious to see how it worked and what it did. Come with me as I discuss what I learned along the way.
by Paul Jones
When dealing with databases, developers frequently run into the N+1 problem, in which they populate domain objects via queries in loops. This causes terrible performance drags; in the case I will talk about, it took 200,000 queries to populate 40,000 records and 3+ hours to complete. There is a solution in plain PHP that makes the number of queries constant; for the previous example, the the number of queries is reduced to 5 and improves processing time to under 6 minutes. The talk shows typical PHP code involving the N+1 problem, then shows how to solve the problem in plain PHP (that is, without a framework or ORM), and includes editorializing about the origins of the N+1 problem in the developer mindset.
by Ian Barber
Giving a great user experience for browsers on mobile devices is going to be a bigger and bigger part of any web developers work over the next few yeas. In this talk we’ll look at how to take existing sites and adapt them for mobile support – including the administrative functionality as well as the main front end. We’ll look at the additional functionality available, and the limitations that will have to be mitigated when taking a site mobile. We’ll also look at how Facebook apps can be adapted to run in their mobile app, and where and when to consider specialist mobile sites as part of a strategy.
by Brian Moon
The Web moves fast, really fast. No one talks about what version of a web site you are using. Maybe you are using the beta version. Even then, it is always new. The Web is obsessed with new. It thrives on new. To meet this demand, in the early years of the web, teams learned a new way to deploy their software. Rather than the traditional models used by compiled, installed software, these pioneers on the Internet deployed software when it was ready. That meant Web sites could be responsive to changes, fix bugs quickly, and add new features to compete with the market. This method is still alive today. Successful web companies still do this to keep their advantage. While there are no set rules, there are good examples of what others do and how it helps them be successful.
Mention PHP CodeSniffer, and most will think it’s just for style. Add passing PHP CodeSniffer to your test suites, and hear the groans. Why are we wasting time on whitespace rules? Why does it matter that my lines are longer than X characters? The answer: PHP CodeSniffer is more than just style. In this talk we will discuss what sniffs can save you from runtime errors, sniffs that can help you upgrade your PHP install, and sniffs that can help you find the bits of code that are slowing down you and your team.
by Eli White
This talk will focus on XSS, CSRF, Session Hijacking, SQL Injection, and other security issues need addressed in Website Development, and how to close them. This talk will delve into some specific code examples showing where vulnerabilities exist, and how to prevent them.
Facebook apps can now be made using cloud providers such as PHP Fog and Heroku. How can you get set up on these systems and create applications to use with Facebook? This talk will discuss getting started in each system and creating a very simple Facebook application – we’ll go over the code examples and demonstrate basic functionality. If you’re familiar with developing for Facebook, this talk will show you how to deploy those apps to the cloud. If you haven’t built any Facebook applications yet, this will get you started on that path.
by Rich Bowen
In the Twitter, Mobile App, Youtube era, you have less and less time to persuade your customers that you have the right solution to their problems. The time of telling them to RTFM are long gone, but some of us just can’t escape, and continue to treat the LUSER as an inconvenience. In this talk, Rich will share some tips from his 15 years of documentation and customer support experience, to help you stop being a jerk, and help your customers succeed at using your products.
Puppet is a configuration management tool which allows easy deployment and configuration ranging from one to a thousand servers (and even more). Even though puppet is a common tool in the devops-world, it is still a strange piece of software for developers. How does it work and what can it do for you as a developer?
by Paul Jones
This talk will give an overview of the Aura project, a collection of independent (non-framework) library packages providing commonly-needed tools for developers. The talk includes a discussion of the benefits of dependency injection when removing dependencies.
REST web services are everywhere! It seems like everything you want is available via a web service, but getting started with one of these web services can be overwhelming – and debugging the interactions bewilders some of the smartest developers I know. In this talk, I will talk about HTTP, how it works, and how to watch and understand the traffic between your system and the server. From there I’ll proceed to REST – how REST web services layer on top of HTTP and how you can expect a REST web service to behave. We’ll go over how to monitor and understand requests and responses for these services. Once we’ve covered that, I’ll talk about how OAuth is used for authentication in the framework of a REST application. PHP code samples will be shown for interacting with an OAuth REST web service, and I will cover http monitoring tools for multiple OS’s. When you’re done with this talk you’ll understand enough about REST web services to be able to get started confidently, and debug many of the common issues you may encounter.
by Rich Bowen
Yes, we all hate mod_rewrite, but we also can’t quite seem to manage without it. In this talk, the author of “The Definitive Guide To Apache mod_rewrite” will show you how to accomplish wizardry with mod_rewrite as well as numerous other ‘url mapping’ modules available for the Apache HTTP Server. Rich is the author of much of the mod_rewrite documentation, and several books about the Apache HTTP Server.
The Standard PHP Library (SPL) might be one of the most powerful, yet the most unused part of PHP. The lack of documentation about SPL makes it that a lot users don’t really harvest the power that SPL brings. During this presentation I will dive into the numerous iterators, data-structures and interfaces that SPL defines and when & how to implement them in your own projects.
CSS has been the Achilles Heel for many developers in their web development career. Even if we are not the designers, many times we break what the designers give us. Ultimately, you’re left with visual bugs that can do not make any sense In this presentation, we’ll visually demonstrate the commonly misunderstood core principles in CSS and the usual pitfalls we run into. We’ll show how to fix these pitfalls, and help you understand why they happen. After this presentation, you will have a much better understanding of CSS, know the tools to use to debug it, and the resources to help you along the way. You’ll not only have an awesome website under-the-hood, but a good looking one too.
Learn about 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!
by Rob Richards
People may consider API and Web application security the same, but are often surprised to find that API security involves many additional, some much more complex issues, that must be addressed. During this presentation I will cover some of the more common issues such as authentication and authorization, privacy, as well as payload and other API related attacks and security vulnerabilities.
by Neal Anders
This presentation will be an overview of using php://memory to store data during application runtime. We will cover the benefits over traditional methods and also some drawbacks.
22nd–25th May 2012