Browsers like Internet Explorer 6 are very, very out of date.
Please upgrade, or download Safari, Firefox, Google Chrome or Internet Explorer 9.

Dutch PHP Conference

Join us in Amsterdam for the PHP community's most exciting event!

7, 8 & 9 june 2012, RAI, Amsterdam, NL

Register Early Bird Ticket sale ends 15th April!

A Knapsack of Geotools: More than Just Google Maps

Saturday 14:30, track1 Talk level: Beginner Talk type: Overview

Where? As location becomes increasingly important, and as more and more data is geotagged, this may be the most important question your app needs to answer. How do you determine what city and country your users are coming from? Figure out which neighborhood a place is in? Keep a location history for a physical object? Group people together based on proximity? One of these days you'll need to reach into your knapsack of geo-tools to solve problems like these and this talk aims to make you ready. We'll cover using location-aware storage like MongoDB and ElasticSearch, GeoIP, reverse geocoding, third-party location web services, geo-hashing, and more. Warning: words like Euclidean may be used during the course of this talk.

A quick start on Zend Framework 2

Friday 13:30, track2 Talk level: Beginner Talk type: Hands on

In this talk we will present a simple web application built with Zend Framework 2. We will show the new features of the framework, such as the new MVC layer, the Event Manager, the Dependency Injection and much more. The aim of this talk is how to start programming with the new architecture of ZF2. Moreover, we will show the differences with the version 1 of the framework and how to migrate applications from ZF1 to ZF2.

Agile Applications with ExtJS and Zend Framework

Saturday 13:30, track2 Talk level: Beginner Talk type: Overview

ExtJS is an enterprise-level Javascript framework, the Zend Framework is one of the most powerful and flexible PHP frameworks to date - its a match made in heaven. I'll introduce you to these two technologies and how to combine them into an easy to maintain, agile application that can move as fast as your project needs. I'll show you how to build a sample application including a frontend MVC, REST backend and unit testing the result.

Composer: Project Dependency Management for PHP

Saturday 14:30, track3 Talk level: Intermediate Talk type: Overview

Composer provides you with a new and simple way to describe and install a project's dependencies. Finally using 3rd party libraries in PHP projects is as easy it should be. Composer was inspired by concepts from Node.js npm, Ruby's Bundler and other package management systems. In this talk I'll show how Composer can help you with your next project and how you can make your libraries available for others. I'll demonstrate the advantages Composer has over other PHP package management tools.

Continuous data processing and PHP

Friday 16:45, track3 Talk level: Beginner Talk type: Overview

At Smith Electric Vehicles we process billions of pieces of data every week into our telematics system, all coming from remote collection devices continually sending us data. With that data, we need to be able to continually add it to our database, report against it, display recent data, maintain it, and most importantly - ensure we receive every byte of data. No easy challenge!

This talk will discuss some of the concepts, tools and technologies available to help deal with continually processing and managing data through heavily de-coupled systems. From the services needed to ensure you can safely perform maintenance without loosing data, to reporting, storing, managing, displaying and reacting upon this data from within your web application, your database systems while keeping your hair in the process.

Coupling Cohesion and more SUDO science

Saturday 11:45, track2 Talk level: Beginner Talk type: In depth

The concepts of coupling and cohesion are not new at all. But in the discussion of developers the more buzzworthy "patterns" dominate the dialogue about how Objects and Programs need to be constructed.
Let's take a step back and begin one base earlier with coupling and cohesion. This talk tries to highlight the following points:
- Definition of tight and loose coupling
- Types of coupling with examples
- Definition of high and low cohesion
- Examples for cohesion types

There is a lot more to Software and Programm architecture than just OOP and Patterns. These old basic concepts can help you to navigate the sea of patterns even more easy and enables you to decide a little better which piece of code is suitable for your needs and still maintainable in 2 years.

Cranking Nginx up to 11

Friday 14:30, track1 Talk level: Expert Talk type: Overview

You may see Nginx as the run of the mill web server, geared towards serving up static files and your language of choice but there is so much more to Nginx than that. Under the hood is a treasure trove of additional features and configurations that can help you take things to the next level. This includes having Nginx talk directly to Memcached / Redis (perfect for APIs, without hitting your application), proxy functionality, GeoIP, Lua in the config, MogileFS file serving, improved headers manipulation, and the less useful yet cool ability to query Drizzle / Postgres directly.

This is only the tip of the iceberg. I will take you one a journey to explore the hidden corners of Nginx and show you how to crank it up to 11!

Designing Beautiful Software

Friday 11:45, track1 Talk level: Intermediate Talk type: Overview

Software is a craft. Like any craft, the software we build can be either hastily put together with little love, or well crafted for longevity. Typically in software, we look at how extensible and maintainable a system may be in order to judge its quality.  

In this session, we'll take a practical example, and develop it from a quick one-liner into a re-usable component. Along the way, we'll discuss the choices we make as developers, and how they affect both how we develop and the results we produce. The goal of the session is to inspire developers to create beautiful software.

Designing HTTP Interfaces and RESTful Web Services

Friday 16:45, track1 Talk level: Intermediate Talk type: Overview

A lot of Web Services today claim to be RESTful APIs. But are they really? Do the URLs accurately identify resources? Are the powers of HTTP leveraged properly? What is "Hypermedia", what is the Uniform Interface, and what is the secret behind the HATEOAS acronym that is so essential to the REST architectural style? This talk gives answers and guidelines using real-life as well as completely made-up examples to show what REST really is about and why Hypermedia matters.

ElasticSearch [R]evolution: Welcome

Friday 13:30, track1 Talk level: Beginner Talk type: Overview

ElasticSearch is quickly becoming one of the primary contenders in the search space: it is distributed, highly available, fast, RESTful, and ready to be plugged into Web applications. Its developers have been busy in the last year; this talk will do a quick introduction to ElasticSearch and cover some of the most interesting and exciting new features. We might even take down a live server or two to illustrate a point.

Event and Signal Programming

Saturday 10:45, track1 Talk level: Intermediate Talk type: Overview

Although event driven programming has been around for many years, it's relatively new as an "engine" in the PHP community. But before you can start using it in your code, you should learn the basic patterns and paradigms common to the programming style. Learn from the toolkits that have used event driven programming from the beginning, and look at how to use new PHP 5.4 features to easily apply them to your application.

Extending Doctrine 2 for your Domain Model

Saturday 10:45, track3 Talk level: Intermediate Talk type: In depth

Sure, it can save models and do relations but Doctrine 2 can do a whole lot more. This talk introduces features like Events and Filters that can keep your code clean and organized. If you like the idea of automatically updating your solr index or adding audit logs without changing any existing code, this is the talk for you.

The emphasis is on practical application of the lesser known but powerful features. The talk is geared toward people who are curious what Doctrine 2 can offer over a standard database layer or have used it previously.

Fast, Not Furious

Friday 15:45, track1 Talk level: Expert Talk type: In depth

There's a saying "hardware is cheaper than developers", but this only holds true if you treat your hardware with the respect it deserves.

Learn how to diagnose, confirm and fix bottlenecks in your application using new tools like XHProf and tried and true tools like xdebug.

Also, we'll take an in-depth look at apc (advanced PHP cache) and memcache; even if you know and use memcache, this one can probably teach you a thing or two.

Frisby.js: BDD for your REST API

Friday 13:30, track3 Talk level: Expert Talk type: Overview

Frisby.js is a REST API testing framework built on node.js and Jasmine that makes testing API endpoints easy, fast, and fun. Use Frisby to step in the shoes of your developer community and ensure consistency in API response structures, keys, and types. Great for ensuring your APIs don’t change or break across versions, and remain reliable and consistent so your developer community can thrive.

This talk will focus on the benefits of API endpoint testing with Frisby, its syntax and methods, live usage demonstration, recommended project setup and folder structure, and usage with GitHub so users can help identify and report issues with your API.

From the Ground Up: Hands-on coding, deploying, and scaling with AWS

Saturday 14:30, track2 Talk level: Intermediate Talk type: Hands on

Ten years ago the Amazon Web Services platform was launched and in that time it has dominated and shaped the way cloud computing is viewed. Even after a decade there are still a lot of buzzwords flying around and putting your app in the cloud is often sold as a simple, cure-all solution. So what's really involved? This talk will give you a hands-on walkthrough of building a PHP application stack in AWS. We will cover the basic design principles needed to create a scalable and distributed platform, compare the AWS components with their "roll your own" counterparts, examine how to structure and build our machine images. With an application up and running, we'll follow that through with monitoring a running fleet, configuring the AWS autoscaling functionality, and deploying updates to an arbitrary set of instances. This is not a theoretical, text-book talk - this is real-life configuration with the cool concepts and tricky hacks that involves.

Hands on FLOW3

Friday 10:45, track2 Talk level: Intermediate Talk type: Overview

The FLOW3 framework got a lot of attention when version 1.0 was released after years of development. Its main approach is to deliver a whole-in-one concept for modern programming techniques and guiding developers to write excellent code. This session takes you on a tour through FLOW3's key features by demonstrating the making of a real application.

How not to design a toad

Friday 10:45, track3 Talk level: Intermediate Talk type: In depth

It is not uncommon to encounter an unappealing or unfriendly user interface that is designed by developers. The code could be genius, the functionality is everything that you ever wanted but due to its appearance it still doesn't feel comfortable using. During this talk I will present techniques and tactics with which developers will increase their designing skills, to make users happier and help promote your application. To quote Aral Balkan: 'The age of features is dead; Welcome to the age of User Experience.

Let's build a parser!

Saturday 13:30, track3 Talk level: Intermediate Talk type: Overview

Our world is filled with languages: HTML, CSS, JavaScript, PHP, SQL, INI, YAML, XML, XPath, MarkDown and more custom languages like Atlassians Jira JQL, Doctrines DQL and Behats Gherkin language.
And other structured texts like date formats, Googles search syntax, Apache Configuration files and the HTTP protocol request and response.

Large code bases, meta programming and the upcoming Domain Specific Modeling field make it imperative that we as developers are capable of reading and interpreting these languages.

During this talk an introduction will be given to parsing. Terms like 'formal grammar', 'lexing / scanning', 'LL / LALR / PEG' will be explained and put into context.
We will look at a recursive descent parsing as a practical way to parse languages.
Finally the audience will be left with ways to get started with parsing structured text into memory.

After this session the audience will never make the mistake of parsing HTML with regular expressions again!

Mashing up JavaScript – Advanced techniques for modern web applications

Friday 11:45, track3 Talk level: Intermediate Talk type: Overview

Nowadays many modern web applications are solely relying on JavaScript to render their frontend and only provide an API endpoint at their backend, resulting in a much more fluent and desktop-application-like user experience. But if you want to create mashups, load data from many different places or include external widgets into your site, you are quickly running into boundaries because of browser and security restrictions. In this presentation I will talk about techniques, some older, some brand new which will help you to:

   * create rich JavaScript based Web Applications
   * make API calls to external domains
   * authenticate these calls through OAuth2 without compromising your secrets
   * load external content and JavaScript widgets safely
   * get real-time notifications from your backend with activityStrea.ms, PubsubHubbub, node.js and Websockets
   * and use the browser to store the some of the user's data.

Additionally to talking about it, I'll show you how this works all together in a real JavaScript mashup based on the StatusNET micro blogging platform.

OAuth: A Question of Trust

Friday 11:45, track2 Talk level: Intermediate Talk type: Overview

OAuth is a great solution to a difficult problem, but still manages to sound complicated since it involves multiple steps (for OAuth 1) and multiple flows (for OAuth 2) - and the two versions are nothing alike.  This session gives a high level overview of which problem "OAuth" actually solves, covers how both OAuth 1 and OAuth 2 fit into existing architecture and when to use them, and gives resources for finding out more about each.  If you're sharing user data between applications and want to do so securely, then this session is for you.

PHAR, the PHP .exe format

Saturday 13:30, track1 Talk level: Expert Talk type: Hands on

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!

PHP 5.4: The New Bits

Saturday 11:45, track1 Talk level: Beginner Talk type: Overview

PHP 5.4 is about to be unleashed into the world; bringing some of the most exciting changes to the PHP language to date. Learn about traits, array dereferencing, indirect method calls using array callback syntax and improvements to closures and streams.

Additionally, we'll go back over the new bits in PHP 5.3, in case you missed them! Namespaces, closures and PHAR, oh my!

Programming Style and Your Brain

Friday 09:40

Computer programs are the most complicated things that humans make. They must be perfect, which is hard for us because we are not perfect. Programming is thought to be a "head" activity, but there is a lot of "gut" involved. Indeed, it may be the gut that gives us the insight necessary for solving hard problems. But gut messes us up when it come to matters of style.

The systems in our brains that make us vulnerable to advertising and propaganda also influence our programming styles. This talk looks systematically at the development of a programming style that specifically improves the reliability of programs. The examples are given in JavaScript, a language with an uncommonly large number of bad parts, but the principles are applicable to all languages.

Puppet for dummies

Saturday 11:45, track3 Talk level: Beginner Talk type: Overview

Puppet is a configuration management tool which allows easy deployment and configuration ranging from 1 to 1 thousand servers (and even more). Even though its common knowledge for devops, puppet is still a strange piece of software for developers. How does it work and what can it do for you as a developer?
This talk is about the "other" side of development: the actual deployment of your software. It's not hard to have a VPS up and running at some cloud hosting company but when it comes to management of systems, many things needs to be taken care of. This talk is not so much about how operations and development can work together in a "devops" methodology, but how configuration management tools like puppet, vagrant, veewee etc can make deployment AND development easier.

Redis for the Everyday Developer

Friday 15:45, track3 Talk level: Intermediate Talk type: Overview

More than some arcane NoSQL tool, Redis is a simple but powerful swiss army knife you can begin using today.

This talk introduces the audience to Redis and focuses on using it to cleanly solve common problems. Along the way, we'll see how Redis can be used as an alternative to several common PHP tools.

Scalability issues: cure first, prevent later

Friday 16:45, track2 Talk level: Beginner Talk type: In depth

The "it works on my machine" mentality has resulted in numerous face palm moments. This is even more painful when a your app is under heavy load due to a marketing campaign.

With some minimal code changes and some smart utilities, you can maximize your scalability and performance. Keywords: Varnish, PHP-FPM, Nginx, APC, CDN, Gearman, Memcached and a proper server setup.

I'll show you how you can make a slow app with a crappy code base go mighty fast on one and even multiple servers. The focus of this talk is to cure first and eventually learn and prevent.

Separating the concerns

Friday 15:45, track2 Talk level: Intermediate Talk type: Overview

Separation of concerns is one of the key foundations to make software scalable, maintainable and readable. So even though everybody agrees
it's a "good thing"(tm), lots of object oriented code that is written does not follow this principle. How is it that this separation sounds easy in theory but is very hard in practice? During this talk, Joshua and Stephan will demonstrate through real life examples on various levels of code how separation of concerns will create better code for both you and the person that will be maintaining your code.

SPL in the Wild

Friday 10:45, track1 Talk level: Beginner Talk type: In depth

The standard PHP library (SPL) is growing in both maturity and use.  But a lot of developers still aren't aware of the tools in SPL or simply haven't seen good examples of how to use the code.  From interfaces to an autoload stack to classes that make objects act like arrays, there are tools to make every application leaner and faster, or simply more clever.  Using live projects from github, take a look at the good, bad, and the ugly of SPL usage in PHP development.

The API Dilemma

Friday 14:30, track2 Talk level: Beginner Talk type: Overview

Creating a good, useful and functional API for your application can be one of the most difficult parts of a project. With more and more things becoming API-powered, it's important to plan well and provide what the user expects. I'll look at some principles you can follow to make sure the API you write is the right one, both from the developer perspective and what you, as a user, should expect of a quality web service API.

The state of DI in PHP

Saturday 10:45, track2 Talk level: Beginner Talk type: Overview

The Dependency Injection (DI) pattern finally arrived in the PHP world. The major PHP frameworks provide support for DI in their latest releases. Many developers seem to be hooked by this programming pattern as it provides a good approach to create maintainable applications. This session will introduce the basics of the DI pattern to the audience as well as giving a brief overview about the current state of DI and give you some insights how you could make use of DI in your project.

To be announced

Saturday 09:40

Rasmus Lerdorf will do the Saturday opening keynote! The subject of the keynote will be announced later on.

To be announced

Saturday 15:45

Who will do the Saturday closing keynote? What will it be about? This will be announced soon!

Travis CI - Distributed CI for the masses!

Friday 14:30, track3 Talk level: Beginner Talk type: Overview

Continuous Integration has typically been a practice only performed by companies who want that piece of mind for their client software, but does it need to be like this?

Travis CI is a continuous integration service for the open source community. We make testing OS projects dead simple and fun. But most importantly, we help improve code quality for large projects like Doctrine2 and symfony, to smaller libraries like FOSRest.

The vision behind Travis CI is to become for builds what PEAR is for distributing libraries.

In this talk Josh, one of the core members of the Travis CI team, will introduce you to the vision behind Travis, the how it is implemented, and why it matters to everyone in the OS community.

Sponsors

  • Zend - the PHP Company
  • Engine Yard
  • Orchestra