•  

Dutch PHP Conference 2013 schedule

Thursday 6th June 2013

  • Advanced Symfony2

    by Hugo Hamon

    This workshop dives into Symfony advanced features. You will learn how to master the dependency injection container configuration and write cacheable contents for an HTTP cache like Varnish.

    At 9:30am to 12:45pm, Thursday 6th June

  • Code Review for Security

    by Anthony Ferrara

    Imagine the day where you get an email from your CEO: "Our site has been hacked! Millions of user records have been leaked! And we're being sued!"... Unfortunately, that situation appears to be quite common place in the modern world. In the past year alone LinkedIn, Sony, Zappos, Twitter, Apple, Yahoo and LastFM (and a lot more) have compromised, leaking over 100 million user records. How has this become common place? Developers traditionally haven't focused on security (that's someone else's problem, right?)... Wrong! Security is everyone's job!

    Come and learn more about how to identify and fix security issues! In this workshop, we'll cover the most dangerous and prevalent security vulnerabilities in PHP applications today. We'll look at how those vulnerabilities work under the hood, and how to prevent them. Then, we'll spend time reviewing actual code with actual vulnerabilities. Once we've identified a potential vulnerability, you will actually execute an attack against it! By the end of the workshop, you should be able to identify insecure code and fix it!

    At 9:30am to 12:45pm, Thursday 6th June

  • Hands on PHP memory usage

    by julienPauli

    This tutorial will start by recalling you what the memory is in computer science. We'll then foresee how PHP deals with memory by introducing the internal component Zend Memory Manager. Then, we'll show you how to code efficiently by avoiding leaks in your code, talking about garbage collection, circular references, and copy on write mechanisms.

    Practical exercises include installing tools, using them and thinking about script problems regarding memory usage.

    At 9:30am to 12:45pm, Thursday 6th June

  • Introduction to Modules in Zend Framework 2

    by Evan Coury

    One of the highly anticipated new features of the upcoming Zend Framework 2.0 release 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.

    At 9:30am to 12:45pm, Thursday 6th June

  • Rapid, Smart Development in Magento: 120 Minute Module

    by benmarks

    For knowledgeable developers, the Magento framework IS a rapid development framework. Through its nimble ORM, flexible theming architecture, class rewrite system, and event/observer architecture, the framework should allow any developer to achieve his or her goals with maximum flexibility for upgrades and future customization. The speaker - a seasoned developer, Magento U instructor, and avid developer community advocate - explains the fundamental concepts behind a well-built Magento module and demonstrates the speed with which modules can be developed. Experienced Magento developers in the audience will have several AHA! moments, and new or recent developers will experience the most concise learning bootstrap available. The presentation concludes with Q&A.

    At 9:30am to 12:45pm, Thursday 6th June

  • The Pair-Programming Workshop

    by Sebastian Schürmann

    Why are 2 developers on one problem and one computer faster than 2 persons on 2 problems? Why is the code quality radically better? How to integrate Pair-Programming into your daily work routine? All this questions should be answered and experimented on in one workshop.We will explore all the facts that are out there (including some that can convince your boss to buy into it): Pairing, Test first Development as a Pair, Katas and Coding Dojos.

    At 9:30am to 12:45pm, Thursday 6th June

  • Build RESTful JSON API's with HAL

    by weierophinney

    RESTful APIs are the de facto standard for web services today, and JSON is quickly becoming the dominant format. How do you represent hypermedia links, however, so that you can provide users with the next set of actions available? How do you communicate errors? Hypermedia Application Language, or HAL, provides a number of strategies and answers around these questions. In this workshop, we'll look at the various considerations necessary when building RESTful JSON APIs, and how adopting standards outlined by HAL can enable you to build robust APIs for your end users.

    Examples will use Zend Framework 2 and modules developed for Zend Framework 2, but the strategies and ideas outlined should be portable to any project.

    At 1:45pm to 5:00pm, Thursday 6th June

  • Extra Workshop: Code Review for Security

    by Anthony Ferrara

    Imagine the day where you get an email from your CEO: "Our site has been hacked! Millions of user records have been leaked! And we're being sued!"... Unfortunately, that situation appears to be quite common place in the modern world. In the past year alone LinkedIn, Sony, Zappos, Twitter, Apple, Yahoo and LastFM (and a lot more) have compromised, leaking over 100 million user records. How has this become common place? Developers traditionally haven't focused on security (that's someone else's problem, right?)... Wrong! Security is everyone's job!

    Come and learn more about how to identify and fix security issues! In this workshop, we'll cover the most dangerous and prevalent security vulnerabilities in PHP applications today. We'll look at how those vulnerabilities work under the hood, and how to prevent them. Then, we'll spend time reviewing actual code with actual vulnerabilities. Once we've identified a potential vulnerability, you will actually execute an attack against it! By the end of the workshop, you should be able to identify insecure code and fix it!

    Who is the target audience of this workshop?

    Any developer who has preformed code-review before
    Any developer who wants to understand security better
    How experienced do I need to be?
    If you understand how to read code, you have enough experience to attend this workshop!

    Tutorial requirements:

    · A laptop
    · Install a LAMP stack

    o PHP 5.3+
    o Apache 2
    o MySQL 5.1+

    · A cursory understanding of the OWASP Top 10 will be very helpful

    At 1:45pm to 5:00pm, Thursday 6th June

  • Extra Workshop: Hands on PHP memory usage

    by julienPauli

    This tutorial will start by recalling you what the memory is in computer science. We'll then foresee how PHP deals with memory by introducing the internal component Zend Memory Manager. Then, we'll show you how to code efficiently by avoiding leaks in your code, talking about garbage collection, circular references, and copy on write mechanisms.

    Practical exercises include installing tools, using them and thinking about script problems regarding memory usage.

    Tutorial requirements:
    · A laptop with administration access to it
    · Your favorite IDE or text editor
    · Basic Linux knowledge
    · Install VirtualBox

    At 1:45pm to 5:00pm, Thursday 6th June

  • Extra Workshop: The Pair-Programming Workshop -half day-

    by Sebastian Schürmann

    Why are 2 developers on one problem and one computer faster than 2 persons on 2 problems? Why is the code quality radically better? How to integrate Pair-Programming into your daily work routine? All this questions should be answered and experimented on in one workshop.We will explore all the facts that are out there (including some that can convince your boss to buy into it): Pairing, Test first Development as a Pair, Katas and Coding Dojos.

    Tutorial requirements:
    · A laptop
    · Programming skills (at least HTML(5) is required)
    · Little PHP or Javascript knowledge

    At 1:45pm to 5:00pm, Thursday 6th June

  • Introduction to Symfony

    by Hugo Hamon

    In this short introduction to Symfony workshop, you will discover how to install the framework with Composer and deliver your very first HTML pages. You will learn how the code in a typical Symfony standard application is organized into standalone components and bundles. During the workshop, we will focus on the internal routing system and also on building smart templates thanks to the Twig template engine. A short demo of database handling with Doctrine will be presented if we have extra time.

    At 1:45pm to 5:00pm, Thursday 6th June

  • Varnish workshop

    by Thijs Feryn

    Lots of people want to use a reverse proxy cache like Varnish to ensure the scalability of their site, app or service. Varnish isn't that hard to install and configure, but there are so much things you can do with it that a 3 hour workshop can be useful. We'll cover the basics: installation, backend setup, loadbalancing and default Varnish behaviour. We'll also learn how Varnish deals with Cache-Control, Expires, ETag and Vary headers.

    We'll work with the integrated logging and monitoring tools to examine the flow and the hitrate. Eventually we'll learn how to write caching rules in the Varnish Configuration Language. This will increase the hit rate of your application.There will be some theory, but the majority of the session will consist of practical examples and hands on exercises.

    At 1:45pm to 5:00pm, Thursday 6th June

    Coverage slide deck

  • Workshop Big Data Analytics

    by David Zuelke

    To be announced

    At 1:45pm to 5:00pm, Thursday 6th June

Friday 7th June 2013

  • A Web Of Identity

    by Adewale Oshineye

    We're moving from a web of pages to a web of people and devices. Those people and devices have identities associated with them. In this talk I'm going to show how identity is currently propagated from devices to browsers to sites and apps. I'll also talk about the new kinds of devices that are turning up on the market, how they're sing the web, how they're changing the web and what we can do about it.

    At 9:40am to 10:30am, Friday 7th June

    Coverage slide deck

  • How to remove PHP calls and scale your site like crazy!

    by Wim Godden

    Although tools like Varnish can improve performance and scalability for static sites, when user-specific content is needed, a hit to the PHP/Ruby/Python/. Net backend is still required, causing scalability issues. We'll look at a brand-new Nginx module which implements an ultra-fast and scalable solution to this problem, changing the way developers think about designing sites with user-specific content.

    We'll go into how the module works and show performance and scalability differences between existing setups and setups with this new tool.

    At 10:45am to 11:30am, Friday 7th June

    Coverage slide deck

  • Introduction to Modules in Zend Framework 2

    by Evan Coury

    One of the highly anticipated new features of the upcoming Zend Framework 2.0 release 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.

    At 10:45am to 11:30am, Friday 7th June

  • Unbreakable Domain Models

    by Mathias Verraes

    DataMappers like Doctrine2 help us a lot to persist data. Yet many projects are still struggling with tough questions:
    - Where to put business logic?
    - How to prevent our code from abuse?
    - Where to put queries, and how test them?

    It’s time to look beyond the old Gang of Four design patterns. There are Value Objects, Entities and Aggregates at the core; Repositories for persistence; Specifications to accurately describe object selections; Encapsulated Operations to protect invariants; and Domain Services and Double Dispatch when we need to group behavior safely. These patterns help us evolve from structural data models, to rich behavioral models. They capture not just state and relationships, but true meaning. These patterns protect our models from being used incorrectly, and allow us to test the essence of our applications.

    The presentation is a fast paced introduction to the patterns that will make your Domain Model expressive, unbreakable, and beautiful.

    At 10:45am to 11:30am, Friday 7th June

  • Uncon: Phing for power users

    by Stephan Hochdörfer

    Uncon session

    How to get more out of Composer, Phing and Jenkins

    At 10:45am to 11:30am, Friday 7th June

    Coverage slide deck

  • Introduction to LISP

    by Igor Wiedler

    Choose the red pill. LISP is a very old family of functional languages. It is minimalistic in syntax, yet extremely powerful. This talk will show you a different way of thinking about programs, how to solve problems by using recursion and how to extend the language through macros. It will bend your mind and take you down the rabbit hole.

    At 11:45am to 12:30pm, Friday 7th June

  • Surviving a Prime Time TV Commercial

    by David Zuelke

    Setting up an online shop is a relatively trivial task these days. Pick your application, adjust some templates, sign payment provider contracts, make sure your supply chain is in order, and launch. But once you decide to aim higher and start airing commercials, on TV, during prime time hours, then regular off-the-shelf software will not cope with the flood of incoming requests. That's when it is time to build something a little more durable, without a single point of failure, serving pages in under a hundred milliseconds, unfazed by extreme concurrency, and powered by Symfony2. This is a talk about lessons learned and missions accomplished.

    At 11:45am to 12:30pm, Friday 7th June

  • The latest MySQL with PHP

    by Johannes Schlüter

    Earlier this year Oracle released MySQL 5.6. In this session we will look at recent changes in PHP and new MySQL PECL extensions as well as the new version of MySQL.

    At 11:45am to 12:30pm, Friday 7th June

  • Uncon: Hands-on PHPStorm Tips & Tricks

    by Alexey Gopachenko

    Uncon session:

    Get some hands-on tips & tricks from the PHPStorm Team lead at Jetbrains

    At 11:45am to 12:30pm, Friday 7th June

  • PHP, Under The Hood

    by Anthony Ferrara

    PHP is one of the most popular open source programming languages in the world. It powers some of the highest traffic sites in the world, and at the same time it powers some of the lowest traffic sites in the world. But have you ever wondered how it works under the hood? Have you been overwelmed by the thought of looking at the C code that runs PHP? Well, this talk is for you!

    We're going to explore how PHP works under the hood, by looking at a PHP implementation of it: PHPPHP! Have you ever wondered what an OPCODE Cache is really doing? Have you ever wondered what a T_PAAMAYIM_NEKUDOTAYIM is? Have you ever wondered why an interpreted languages has a compiler? We'll explore all of these topics, and more! And the best part of it all? You don't need to know C to understand the details! Using PHPPHP, we can explore the language details in a high level language, where things like memory management don't get in the way of the real content. If you've ever wanted to know how PHP works, this is the talk for you!

    At 1:30pm to 2:15pm, Friday 7th June

  • Reverse caching proxies: Varnish or Nginx?

    by Thijs Feryn

    In a world full of scalability challenges, a reverse caching proxy has become an essential tool to protect your backend servers. This talk is dedicated to that and compares Varnish to Nginx as the 2 tools for the job. We'll be talking about setting the up, playing around with config, making them serve cached PHP content and do some advanced tricks such as ESI.

    At 1:30pm to 2:15pm, Friday 7th June

    Coverage slide deck

  • Sass in the real world

    by Roy Tomeij

    You've seen all the Getting started with Sass & Compass talks. Sure, the parent reference and sprites are awesome, but how to use that to tackle real-life problems? Let's take a look at advanced uses, such as the benefits of nested lists, retina sprites, using Sass to code for performance and more.

    At 1:30pm to 2:15pm, Friday 7th June

  • Uncon: ZF2 for ZF1 developers

    by Gary Hockin

    At 1:30pm to 1:55pm, Friday 7th June

  • Uncon: The Mikado Method

    by Pascal de Vink

    At 1:55pm to 2:20pm, Friday 7th June

  • Cheater's Math

    by Ivo Jansch

    I recently released three iPhone apps: GameCoach for Letterpress, Ruzzle and WordOn. These apps were an exercise in game strategy, character recognition and artificial 'intelligence'. To make these apps possible, I made a cms system in Php that acts as a game analyzer and game management tool. It uses imagick and a number of other tools to collect, analyze and process game screenshots, extract relevant information and build up a binary tree based character recognition algorithm tailored to a specific game. In this session I will demonstrate some of the leanings of this project and show how php helped me build these apps.

    At 2:30pm to 3:15pm, Friday 7th June

  • Dependency Injection Smells

    by Matthias Noback

    With the rise of dependency injection (DI) containers, which may or may not also be service locators, it is now very easy to keep track of all the dependencies of your classes and to switch between implementations. The temptation of using the new operator has since become much smaller. Still, all the options of the containers and locators, the syntax of the service definitions and lack of knowledge about design patterns related to dependency injection have resulted in some bad dependency injection design practices.

    In this talk I will describe a couple of very recognizable and also very well fixable Dependency Injection Smells. After showing a code fragment which contains one of these DI smells, I will continue to work out different scenarios in which the situation gets out of hand and the smell becomes too bad. A solution then comes from existing design patterns and some general design principles.

    At 2:30pm to 3:15pm, Friday 7th June

  • High Performance Websites with Scalable Workers

    by JustinCarmony

    There comes a point in time with a website when eventually need to do something in the background. There are always cron jobs, but eventually those either don’t scale well, or are not responsive enough. Learn about how to help your website efficiently scale by using workers. We’ll discuss the fundamental theory behind workers and how to easily implement them. We’ll learn about several different technologies to help manage workers such as Gearman, Supervisord, Redis, and others. We’ll show a live demo of PHP workers performing tasks and you’ll leave with sound understanding of how to implement workers in your own application.

    At 2:30pm to 3:15pm, Friday 7th June