“Small Data” Machine Learning

What do you do if you have a single letter Twitter handle and your reply stream is virtually useless due to people using “@a” in ways that make you lose faith in humanity (“I’m @a bar” is the best of it)? These days, you might call machine learning to the rescue. ML is a hot new topic, but may be a bit difficult to get started with in a large project. This session will explain how I used ML and a couple of other tricks to build a reply stream cleaner that sanitizes my Twitter consumption and will hopefully inspire you to use ML in your own projects.

Session type: Talk
Scheduled: January 26 09:00
Room: Nucleus Room
Speaker: Andrei Zmievski


7 Tools for Your devops stack

Technology moves fast, most people are so busy they don’t have time to keep up with what’s new, or sometimes don’t really understand the need for these tools, until they take 5 minutes and listen to somebody using them.

This talk will go over a bunch of unmissable open source system tools tools, some of them didn’t even exist 2 years ago,

We won’t spill which ones we’ll cover .. but rest assured .. you’ll learn a few.

Session type: Talk
Scheduled: January 25 17:10
Room: King Foo Room
Speaker: Kris Buytaert


Algorithm, Review, Sorting

For a lot of us, sorting is a simple as adding an ORDER BY and letting the magic happen. However, understanding the algorithms and data structures behind it is not only interesting, it makes us better developers too! Some algorithms still in common use are over 100 years old, others have been improved as late as the ’90s. We’ll look at a variety of algorithms and see which situations they’re best suited for to see how we can improve our own code.

Session type: Talk
Scheduled: January 25 16:00
Room: King Foo Room
Speaker: Rowan Merewood


Allowed memory size of X bytes exhausted

Every PHP programmer has already met such an error, haven’t you ?
This talk is about understanding memory management in PHP. We’ll first define what memory is with some recall about heap and stack. We’ll then dive into PHP’s source code to introduce and detail the component responsible of memory : Zend Memory Manager.
We’ll see together how it works, and above all how to customize it and master it from PHP code. Some practical use case may be provided, such as how to master your PHP variables for them not to be too memory greedy, as well as some tools to help mastering memory in PHP scripts and apps.

Session type: Talk
Scheduled: January 25 16:00
Room: Nucleus Room
Speaker: Julien Pauli


Application Logic Security

This session will outline security practices and solutions designed to address security issues within application’s business and processing logic, which are often overlooked in favor of basic security flaws such as SQL Injection, XSS, etc…

Session type: Talk
Scheduled: January 26 16:10
Room: King Foo Room
Speaker: Ilia Alshanetsky


Continuous Inspection: Fight back the 7 deadly sins of a developer!

Software Engineering has evolved and matured enough over the past years to start setting up standards and procedures to enable developers do their job efficiently and well. Some programming languages are ahead of other and have implemented standards years ago, while others only started following this practise. Continuous Inspection practice allows to manage source code quality during development cycle and is an integral part of Continuous Integration practise. I will tell you how you can put these practises into use with Sonar and Jenkins platforms and fight back the temptation of the seven deadly sins of a developer. It’s about time to start the Holy War, and win is the only option!

Session type: Talk
Scheduled: January 26 11:40
Room: Nucleus Room
Speaker: Sebastian Marek


Debugging for beginners

Writing code that works is a handy skill to have, however sometimes the code doesn’t work and you have to work out why. This session will look at how to do this. This session looks at the fundamentals of debugging in PHP and then introduces you to some useful techniques and tools to help you fix your code. Fixing an error is impossible if you don’t know what the problem is, so we start by ensuring that our PHP environment is set up to provide all the information we need. We will look at the different types of PHP errors and start with simple use of var_dump() to find and fix problems. Finally, we see how the Xdebug extension can help its better reporting and step-by-step debugging features.

Session type: Talk
Scheduled: January 26 16:10
Room: Nucleus Room
Speaker: Rob Allen


Gearman and ZeroMQ, two different animals

Most developers have heard about Gearman and ZeroMQ, but don’t really know how they differ and in what aspects they are the same. This talk will give you an introduction on both solutions, followed by some real world examples and will try to guide you in choosing the right one.

Session type: Talk
Scheduled: January 26 13:40
Room: Nucleus Room
Speaker: Jachim Coudenys


Getting started with Zend Framework 2

This talk walks through the process of building a simple Zend Framework 2 application from scratch. Starting with the skeleton application, I will go through how we can create a database-driven application that allows you to list, add, edit and delete items. We will cover configuration, modules, databases, forms and the view layer at a high level to provide a clear introduction to all the key elements of a Zend Framework 2 application.

Session type: Talk
Scheduled: January 26 16:10
Room: Combell Room
Speaker: Matthew Weier O'Phinney


Git (and GitHub) for Ninjas

You’re a git user, and you love what it does for you. Learn how to take it to the next level, straight from the experts at GitHub. Rewrite history, find bugs, and make your development job easier and more pleasant.

Session type: Talk
Scheduled: January 26 10:10
Room: Nucleus Room
Speaker: Ben Straub


Git and GitHub: Level Up

Unless you’re a git wizard (a gizzard?), there’s always something else git can help you do.

We’ll talk about development workflows, git clients, history management and manglement, finding bugs, command-line fu, and effective GitHub. And, well, lots more.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speaker: Ben Straub


Inside the Symfony 2 DIC and Config

The Dependency Injection Container at the heart of Symfony 2 is a
powerful tool in your hands. In this workshop, we go beyond just
adding custom services, and look at how listeners, tags, and compiler
passes work and how to make use of them. We will also talk about how
to properly create a structured and validated configuration for your
own bundles to use in your service definitions.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speaker: Andreas Hucks


Introducing PHP 5.4

PHP 5.4 is the next up and coming version of PHP, this session will introduce the audience to the new functionalities and improvements that version of PHP brings to the table. The session will use code examples to outline the new functionalities and and demonstrate how they can be used to improve/optimize development workflows. Some time will be spent outlining the migration process from earlier version of PHP and what gotcha, and BC breaks to watch-out for.

Session type: Talk
Scheduled: January 25 17:10
Room: Combell Room
Speaker: Ilia Alshanetsky


Keynote: Being grumpy for fun and profit

There is more to the Grumpy Programmer than the cartoon character you find on Twitter. By learning to be “grumpy”, you can have fun, build your career and provide yourself with a defense against the upcoming unevenly distributed future of building web applications.

Session type: Talk
Scheduled: January 25 13:20
Room: Combell Room
Speaker: Chris Hartjes


Make Your Project SOLID!

The 5 SOLID principles incarnate the essence of good object oriented design and programming. Sadly, only few people know about them and even fewer obey to them in their daily work. This session will not only explain the principles without lots of theory, but also show you how to realize them in your everyday work, using practical examples from real world projects.

Session type: Talk
Scheduled: January 26 10:10
Room: Combell Room
Speaker: Tobias Schlitt


Mastering Selenium for automated acceptance tests

Setting up the entire testing suite for automated browser testing of your web applications.
Create a headless system to run Selenium tests. An overview of the different testing setups which can
be integrated within Jenkins – such as html tests and PHPUnit using the Selenium WebDriver. After the talk you will have the necessary tools to detect and avoid potential regression on your web applications with every release you and your business partners do.

Session type: Talk
Scheduled: January 26 09:00
Room: King Foo Room
Speaker: Nick Belhomme


MongoDB workshop

During this workshop we will have a look on how MongoDB can be used. After a short introduction we continue with a few scenarios for schema design to illustrate that even although MongoDB is schemaless, how the data is stored has a big impact on performance. Then we proceed to do some hands on work where we import data and do some queries to show how indexes should be used. In the second half we look at set-ups. From single machine set-ups via replication and finally sharding. At the end of this workshop, you’ll have a good understand of MongoDB’s strong points. As language, we’ll use PHP, but the workshop would equally be useful for users of other languages.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speaker: Derick Rethans


Password Storage (And Hacking) in PHP

Password storage is a common problem that every developer needs to solve at some point in their career. Often, we rely upon frameworks and libraries to do it for us. But do they get it right? How should passwords be stored? How are they going to be attacked? All these questions (and more) will be answered. This session will dive head first into password storage and all aspects surrounding it. We’ll cover some common misconceptions and dangerous mistakes. We’ll also explore some of the best available tools to solve the problem, and go into why they are the best. Finally, we’ll look at some of the tools that attackers will use to attempt to extract plain text passwords. We’ll explore each point from both angles: the pragmatic developer and the attacker. For the safety and security of your users, make sure that you know how to securely store their passwords. It’s not just the right thing to do, but it is negligent not to!

Session type: Talk
Scheduled: January 25 17:10
Room: Nucleus Room
Speaker: Anthony Ferrara


PHP Annotations: They exist!

Annotations are more than phpdoc comments, they’re a fully-featured way of including additional information alongside your code. We might have rejected an RFC to add support into the PHP core, but the community has embraced this tool anyway! This session shows you who is doing what with annotations, and will give you some ideas on how to use the existing tools in your own projects to keep life simple. Developers, architects and anyone responsible for the technical direction of an application should attend this session.

Session type: Talk
Scheduled: January 25 14:40
Room: Nucleus Room
Speaker: Rafael Dohms


PHP on Windows Azure Workshop [Free]

In this workshop, you will create a simple web application, learn how to deploy it to Window Azure Web Sites (using Git or FTP), customize your PHP runtime, leverage Windows Azure Data Storage options (including MySQL) and learn how to troubleshoot common issues. As part of this tutorial you will learn how to use the Open Source SDK for Developing PHP applications to leverage additional building block services. Lastly, you’ll learn how to create a customized dedicated MySQL or MongoDB data store installed on a Linux Virtual Machine.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speakers: Cory Fowler , Brian Swan


Practical Design Patterns in PHP

Observer, adapter, decorator, facade, composite… All these weird words refer to design patterns. Design patterns are general reusable solutions for solving common redundant problems in software architecture. Getting inspiration on some well known design patterns and implementing them in PHP will make your application code easier to understand, maintain and evolve. Based on very practical code samples, this talk will focus on the most usefull patterns in order to help you design better PHP applications.

Session type: Talk
Scheduled: January 26 14:50
Room: Combell Room
Speaker: Hugo Hamon


Process any amounts of data. Any time

Processing one billion database rows doesn’t need to kill your web server. Really, it doesn’t. Applying lazy evaluation ideas you can make your scripts handle as much data as there exists, never using more memory than one unit’s size (for example a database row). Using clever iterators, cursors and streams I’ll show you how you can reduce memory usage drastically, thus making your scripts more reliable and your sysadmins happy.

Session type: Talk
Scheduled: January 26 11:40
Room: Combell Room
Speaker: Juozas "Joe" Kaziukenas


React: Event-driven PHP

NodeJS seems to be the current hype in the programming world. It is an
implementation of the reactor pattern using libev under the hood. None of
these concepts are new. They have been used by C programmers for decades and
also gained some traction in the ruby and python communities over the last few
years.

For some reason people believe that PHP does not allow writing non-blocking
network daemons. As a matter of fact, this has been possible for quite a while
already. But because the stream functions of PHP are not very well known, it
did not gain enough exposure. This is where React comes in.

React is a library for building event-driven servers with PHP. It’s relatively
new, but already has some libraries based on it. This talk will go into how
event-driven programming works on a low level and what APIs PHP provides. Then
I will show you how React provides a usability layer on top of these APIs, how
you can use it to build servers for various protocols, and how you can talk to
existing apps by using a message queue.

Session type: Talk
Scheduled: January 26 13:40
Room: Combell Room
Speaker: Igor Wiedler


Regex clinic

Regular Expressions: every developer’s best friend and worst nightmare! Join Andrei Zmievski, PHP developer and author of the PHP Regex (PCRE) extension, on a journey that will take you from your first steps into the world of regular expressions to complete mastery of this most useful of tools. A must for everyone who’s ever wondered what /(?=\d+)bar/ means.

Session type: Talk
Scheduled: January 25 14:40
Room: Combell Room
Speaker: Andrei Zmievski


RESTful Services Made Easy with ZF2

Need to understand ZF2? This tutorial will walk you through building a RESTful web service using the ZF2 MVC system. We’ll walk though fundamental ZF2 components, such as service manager and event manager and show how ZF2′s new modular MVC system works. We’ll show how the various aspects of REST, including proper use of HTTP methods, the usage of media types, approaches to content negotiation, and hyperlinking can be implemented within a ZF2 application. In the process, we’ll build a simple web service in Zend Framework 2 that demonstrates and implements each of these capabilities.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speakers: Matthew Weier O'Phinney , Rob Allen


Scaling your development team

10 people working on a single code base can be considered large, but what about a 1000 people?

At Facebook, code is pushed 5 times a week to over 1 billion people. The small amount of downtime is due to the practices of our engineering team and the process used to do a release.

Scott’s talk is going to cover everything that goes into the development of a feature at Facebook and how that code is pushed. He will try to cover as much as possible about the underlying technology stack and the open source software they use and release to make it all happen.

Session type: Talk
Scheduled: January 26 14:50
Room: King Foo Room
Speaker: Scott MacVicar


Silex Anatomy

Let’s slice up the silex microframework and see how it looks like on the inside. In this session I will dive into the source and show you how silex ties together a bunch of Symfony2 components. The principles followed by these components allow for great flexibility and generally apply to any software.

Session type: Talk
Scheduled: January 25 14:40
Room: King Foo Room
Speaker: Igor Wiedler


SQL Masterclass

This workshop takes you gives you the opportunity to practice your MySQL skills and pick up some new ones. These are hands-on, industry-relevant techniques that you will be able to apply to your applications straight away. We’ll look at designing and managing MySQL databases, good data storage practices and when and why we would break the “rules”!

You will also do some serious SQL query-writing, with multiple joins and calculated/aggregate fields – by the time you leave you’ll be JOINing in many places, GROUPing by a selection of fields, calculating results and HAVING fun! If you’re writing SQL but ready to sharpen up your skills, then this is the place to be. Please bring a laptop and an enquiring mind.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speaker: Lorna Mitchell


Symfony Content Management Framework

In this talk i will present the Content Management Framework (CMF). It is a set of building blocks you can use to build content management in any Symfony2 project: Content repository with translation and versioning, database routing, menu system and building the page.
Content management systems tend to be monolithic applications. You get a storage architecture, the server application, a templating system and the user interfaces in one big piece. This is far from ideal. Symfony itself is a flexible framework where central components are strictly separated. The Content Management Framework provides a couple of Symfony Bundles that can be used to build content management. Modular bundles provide tree based storage (PHPCR-ODM), routing from content, menus and a block system.

Session type: Talk
Scheduled: January 26 10:10
Room: King Foo Room
Speaker: David Buchmann


Testable Code

Writing testable code is a challenge that touches various aspects of software design and development. In this workshop, you will gain detailed insights on theoretical and practical aspects of writing testable code. See what makes code testable, how to make code testable and how to identify code that should be made testable. You can bring your own code to this session, to get it analyzed on stage, if you want.

Session type: Tutorial
Scheduled: January 25 09:00
Room: Tutorial Room
Speakers: Tobias Schlitt , Benjamin Eberlei


The Evolution of PHP on Windows Azure

: Imagine humans evolving from a single-cell organism to where we are today in just 4 years – that’s how far PHP on Windows Azure has evolved since the first beta release of Windows Azure in October of 2008. Thanks in part to the pioneering work done by Maarten Balliauw and other contributors to the original Windows Azure SDK for PHP, support for PHP on Windows Azure has gone from non-existent to first-class in a short period of time. Gone are the days of needing a Windows OS to develop, package, and deploy a PHP application, only to wait 15 minutes to see your code running. Now, PHP developers can develop on the OS of their choice, push code using a variety of tools (including Git), and see their code running in seconds. Also gone are the days of having to deploy your code to a Windows OS. You can now quickly and easily spin up Linux VMs that are offered in the Image Gallery, or you can provide your own image to run your LAMP applications.
This talk will focus on how and what the Windows Azure team has learned about what PHP developers expect from a cloud platform and the type of development experience they want. Within the context of the evolution of PHP on Windows Azure, the talk will provide an overview of the Windows Azure Platform and demonstrate many of the new features that are specifically aimed at supporting PHP development. Finally, the talk will conclude with some of the thinking on the future evolution on PHP on Windows Azure.

Session type: Talk
Scheduled: January 26 14:50
Room: Nucleus Room
Speaker: Brian Swan


The Pomodoro Technique

The Pomodoro Technique is a time management tool; we’ll see how to work with it as freelancers and in a team. The technique is not only related to programming, but was invented by a programmer: it’s based on timeboxing on periods of 25 minutes called Pomodoros (tomatoes) from the shape of the original kitchen timer used for measuring them.
The main goals of the technique are:
- managing interruptions, often a tough task for a programmer to do while his boss and colleagues have the need to communicate with him continuously.
- Defining goals for the day and for short period of times, which would otherwise go wasted in checking email.
- Maintaining focus throughout the whole work day: it’s not easy to stay really productive for 6-8 hours.
- Estimating tasks and actually getting better at estimation over time: Pomodoros become the unit of measurement.
The purpose of the talk is to raise awareness about time management and to introduce the technique as one of the tools you can use in this field. The technique adapts well to Agile environments and also revives XP and Scrum concepts on a smaller scale.

Session type: Talk
Scheduled: January 26 11:40
Room: King Foo Room
Speaker: Giorgio Sironi


There is a PHP Library for That!

Reinventing the wheel is always boring and by chance the PHP community is very prolific.

Looking for an already made quality PHP library remains sometimes difficult. But thanks to Github, PEAR and Packagist, it’s now very easy to dig a little and find powerful and well written PHP libraries.

This session will introduce some of the best PHP libraries for manipulating images, abstracting an HTTP client, manipulating relational and noSQL databases, checking and fixing code style violations, testing your code…

As you’ll see, there is a library for that!

Session type: Talk
Scheduled: January 25 16:00
Room: Combell Room
Speaker: Hugo Hamon


Usability for Developers

Not everyone has access to a user interface designer, but that doesn’t mean that usability is out of your reach. This talk will cover user experience basics along with simple, easy-to-implement tricks to improve usability. This talk will also cover ways to test if your site or application is making the grade.

Session type: Talk
Scheduled: January 26 09:00
Room: Combell Room
Speaker: Beth Tucker Long


You thought Composer can’t do that?

Composer is a new PHP dependency manager making the use of 3rd party libraries in PHP projects as easy as it should be. However more advanced setups involving private package repositories, forked libraries and special installation routines require a deeper understanding of how Composer and the tools in its ecosystem work. If you have already used Composer then this talk will equip you with the background you need to solve challenges in projects with more complicated dependencies.

Session type: Talk
Scheduled: January 26 13:40
Room: King Foo Room
Speaker: Nils Adermann