DPC

Schedule

Tutorial
09:30 - 12:45 Tutorial day
Ansible: Orchestrate your Infrastructure (Jeremy Coates) D403 intermediate intermediate
Close
Jeremy Coates

Ansible: Orchestrate your Infrastructure

(In depth)

Software configuration management tools are gaining ground everywhere. We've all probably at least heard of puppet, chef or salt by now, however there's a new rising star: Ansible. In this talk we'll learn about the way ansible approaches configuration management, software deployment, remote execution and other general IT tasks. We'll examine how to get up and running in a moment and how easy it is to manage multiple concurrent servers in parallel without needing additional daemons or bootstrapping! The talk will cover differences to puppet, chef etc and examine how to customise and extend Ansible with our favourite language.

Join us for this talk and you'll see why this award winning Python project has relevance for PHP and your work life through getting your servers under control.

Close
Getting started with Apigility - Full day (Matthew Weier O'Phinney) D404 beginner beginner
Close
Matthew Weier O'Phinney

Getting started with Apigility - Full day

(Hands on)

Apigility provides tools for crafting web services, and a robust engine for delivering them in production. In this hands-on tutorial, we will use Apigility to both discuss the specifics of what makes a good API, as well as to build a simple RESTful API to consume via a web-based interface. Over the course of the tutorial, we will look at the following:

- managing HTTP method negotiation
- managing content negotiation
- providing error handling
- securing an API via authentication, authorization rules, and input validation
- versioning your API

We will discuss how Apigility will handle each of these details, allowing you to concentrate on your application.

By the end of the session you will be able to create an API within Apigility, and will have the understanding to decide if Apigility should be used to build your next API. (Hint: it should!)

Co-host: Rob Allen

Close
Database Optimization for Web Developers (Steve Meyers) D407 intermediate intermediate
Close
Steve Meyers

Database Optimization for Web Developers

(Hands on)

Most developers are developers, not DBAs, yet many smaller companies have inadequate database experience in-house. This is largely because databases like MySQL and PostgreSQL don't necessarily require a full-time DBA to administer. It's become more important for developers at smaller companies to have some basic knowledge of how to keep their database happy.

During this session, we will load a test database schema, and then explore different types of queries and indexes, and how to get the best performance out of your database.  We will discuss JOIN order, proper indexing, WHERE filtering, caching, and many other subjects.

We will NOT cover in detail things like server options, as changing those are not generally an option for web developers.

Close
Unleash the Power of Zend framework 2 - Full day (Gary Hockin) D408 beginner beginner
Close
Gary Hockin

Unleash the Power of Zend framework 2 - Full day

(Hands on)

Go from n00b to l33t in 6 hours! This tutorial will take you from knowing nothing about Zend Framework 2, to developing a fully blown working application which touches all of the most powerful components in this full stack framework.

You'll learn about the basics like Modules, MVC, Routing, and Service Locator; more advanced topics like the Event Manager, Forms, and Db. Finally we'll deep dive into the most complex topics like internationalisation and command line. Not only will you understand exactly how and why ZF2 works, but security and performance best practices will be included at every step.

Co-host: Marco Pivetta

Close
DDD IRL (Robert Šorn) SOLD OUT D503 intermediate intermediate
Close
Robert Šorn

DDD IRL

(In depth)

Domain Driven Design In Real Life!

So you've read the book from Mr. Evans. Maybe even the one from Mr. Fowler. And now what? Have you applied it? Well we did. And these are my Top 5 design patterns and approaches from Domain Driven Design and rewriting. With real world examples and performance.
- Ubiquitous language OIC - Architecture that follows Ubiquitous language. Getting to it and benefits.
- Entity, Value TLC - How this simple division can make things much easier - backend and frontend example
- Service FTW - little black boxes of happiness
- Specification BFF - Specification where have you been all my life?! Making complicated conditions a breeze.
- Decorator TYVM - How to shrunk 27MB of code to 4. And keep the functionality and speed.
- ...

Close
Getting started with Laravel 4 (Christopher Pitt) D504 beginner beginner
Close
Christopher Pitt

Getting started with Laravel 4

(Hands on)

This workshop is a hearty introduction into the Laravel 4 framework. We begin with the basics, understanding how the fundamental building-blocks of the framework are laid. We tinker a little with Eloquent ORM and Blade templates.
Then we move on to controllers and security, connecting our knowledge of Eloquent and Blade to create secure applications. We also learn how to get 100% test coverage of a real application, and what it means for how we build applications.

This workshop covers a number of prominent community extensions to the Laravel framework, such as Clockwork, Faker and Mockery. We'll learn from the knowledge of prominent community members, such as Taylor Otwell, Jeffery Way and Phil Sturgeon. There's plenty of time to look at common pitfalls and ask questions.

It's a hands-on workshop which will take you from apprentice to artisan.

Close
The ideal REST API for the AngularJS applications (Victor Farazdagi) D507 intermediate intermediate
Close
Victor Farazdagi

The ideal REST API for the AngularJS applications

(In depth)

Recently I have finished designing backend specifications for relatively big AngularJS application (it deals with event management, and is under active development right now, scheduled for beta later on this year).

While REST style has been around for quite some time, it is still considered informal and only vaguely understood, which is probably because not many of us developers have actually spent time reading Fielding's dissertation.

If you look at evolution of APIs provided by big players (such as Amazon or GitHub), you will clearly see that getting it right the first time you do it - is not an easy task. So, there is evidently a need for some roadmap. Hence, this talk/tutorial.

Single Page Apps (SPAs) can be really good alternatives to conventional web-sites, and I believe PHP as a platform has enough to offer for a full-fledged, yet simple, backend implementations. Coupled with the huge leap forward in form of AngularJS, we finally can create web apps that are easy to implement and maintain.

In this talk I want to concentrate on practical side of REST API design. It will NOT be a REST 101, as I will concentrate on specific practical problems (like data validation, traversal/pagination, security/authentication, API versioning and testing, scaling out with caching etc).

Depending on the audience I can make a brief intro to AngularJS though. So that, those who haven't had a chance to play with it, experience why it is amazing, and why we need to tackle the REST API design in order to make that awesomeness do a real work for us.

Examples provided will be built on top of Silex, thus allowing full control on the implementation, without being too opinionated about which frameworks to use. In case it is good to be opinionated (again depending on audience), I can provide the very same examples build on the top of either ZF2 of Symfony2.

To sum up:

The Single Page Applications (SPAs) become a new trend. While the backend layer that powers them up can be coded in many languages, it is the PHP that can become an amazing platform for implementation of such a backend.

In this talk I will summarize the best practices, tips and tricks of trade of a complex REST API required to support relatively big AngularJS application. Additionally, I will look into bottlenecks and pitfalls that await you on your quest for the ideal API.

Close
Modelling with Domain Events - Full day (Mathias Verraes) SOLD OUT E103 advanced advanced
Close
Mathias Verraes

Modelling with Domain Events - Full day

(Hands on)

Most of us have, at one time or another, used events to decouple parts of the application from each other. Usually they’re an afterthought, a side effect of more important operations in our model. But what if we make Domain Events first class citizens? Model the events first, persist them as our single source of truth, and then build the rest of the system around them?

As it turns out, Event Sourcing is an extremely powerful design style. It enables scale and distribution, and, more importantly, it keeps the complexity of your model in check. The catch is that it takes a shift in mindset from traditional modelling.

In this session, you’ll learn guiding principles from Domain-Driven Design. You’ll practice Model Storming to discover Events and Commands. With practical examples drawn from actual projects, you’ll design Value Objects, Aggregates, Projections, and Process Managers. Your models will never be the same.

Close
Build your first Titanium Alloy app - Full day (Fokke Zandbergen) D502 beginner beginner
Close
Fokke Zandbergen

Build your first Titanium Alloy app - Full day

(Hands on)

Titanium is an app development platform allowing you to build apps for iOS, Android, Tizen, BlackBerry and Windows using a single JavaScript codebase. No slow HTML but actual native UI delivering awesome UX!
Alloy is Titanium's MVC framework. Create views in XML, define styles in a CSS-like format and have all that compiled to plain JavaScript. No downsides, only ups!

This tutorial will walk you through building your first Titanium Alloy app. We'll get you set-up and learn the basics of Titanium & Alloy by helping you build an actual app.
You will benefit most from this tutorial if you bring a MacBook with Titanium Studio pre-installed. Get it from: http://appcelerator.com/titanium

Close
HTML5 App Camp: Sencha Touch/Sencha Architect - Full day (Lee Boonstra) D506 beginner beginner
Close
Lee Boonstra

HTML5 App Camp: Sencha Touch/Sencha Architect - Full day

(Hands on)

Learn how to build and deploy powerful mobile apps quickly for iOS, Android, Blackberry 10, and Windows Phone 8 with Sencha Touch and Sencha Architect.

Test and deploy cross-platform mobile apps quickly with Cordova.

Course Objectives
- Quickly develop an app that functions across a variety of mobile devices
- Implement a complex mobile UI that integrates forms, maps, tabs, sorting, and media
- Efficiently handle gestures
- Make background requests for data from an application server or web service
- Store data persistently on the device
- Use Cordova to test and package apps ready for app stores

Close
12:45 - 13:45
Lunch
Close

Lunch

(Overview)

Close
13:45 - 17:00
Getting started with Apigility - Full day (Matthew Weier O'Phinney) D404 beginner beginner
Close
Matthew Weier O'Phinney

Getting started with Apigility - Full day

(Hands on)

Apigility provides tools for crafting web services, and a robust engine for delivering them in production. In this hands-on tutorial, we will use Apigility to both discuss the specifics of what makes a good API, as well as to build a simple RESTful API to consume via a web-based interface. Over the course of the tutorial, we will look at the following:

- managing HTTP method negotiation
- managing content negotiation
- providing error handling
- securing an API via authentication, authorization rules, and input validation
- versioning your API

We will discuss how Apigility will handle each of these details, allowing you to concentrate on your application.

By the end of the session you will be able to create an API within Apigility, and will have the understanding to decide if Apigility should be used to build your next API. (Hint: it should!)

Co-host: Rob Allen

Close
Testing with Codeception (Jeremy Coates) D407 intermediate intermediate
Close
Jeremy Coates

Testing with Codeception

(In depth)

We've probably all heard by now about Unit Testing, we may even have integrated Test Driven Development into our working practice. Less commonly known though are Functional and Integration Testing practices. Until now, at least in the PHP world, these have been quite hard to achieve. In this talk Jeremy Coates (@phpcodemonkey) will introduce these concepts and a tool chain to enable easy adoption.

Close
Improving QA on PHP development projects (Michelangelo van Dam) SOLD OUT D407 intermediate intermediate
Close
Michelangelo van Dam

Improving QA on PHP development projects

(In depth)

Everyone talks about raising the bar on quality of code, but it's always hard to start implementing it when you have no clue where to start. With this talk I'm shooing that there are many levels developers can improve themselves by using the right tools. In this talk I'll go over each tool with examples how to use them against your codebase. A must attend talk for every developer that wants to scale up their quality.

Most PHP developers deploy code that does what the customer requested but they don't have a clue about the quality of the product they deliver. Without this knowledge, maintenance can be a hell and very expensive.

In this workshop I cover unit testing, code measuring, performance testing, debugging and profiling and give tips and tricks how to continue after this workshop.

Close
Unleash the Power of Zend framework 2 - Full day (Gary Hockin) D408 beginner beginner
Close
Gary Hockin

Unleash the Power of Zend framework 2 - Full day

(Hands on)

Go from n00b to l33t in 6 hours! This tutorial will take you from knowing nothing about Zend Framework 2, to developing a fully blown working application which touches all of the most powerful components in this full stack framework.

You'll learn about the basics like Modules, MVC, Routing, and Service Locator; more advanced topics like the Event Manager, Forms, and Db. Finally we'll deep dive into the most complex topics like internationalisation and command line. Not only will you understand exactly how and why ZF2 works, but security and performance best practices will be included at every step.

Co-host: Marco Pivetta

Close
High Quality Symfony Bundles (Matthias Noback) SOLD OUT D503 advanced advanced
Close
Matthias Noback

High Quality Symfony Bundles

(Hands on)

There's library code and there's bundle code. A bundle can be installed in a Symfony application to make the library code readily available inside that application. Be it your own or somebody else's code that you are providing access to, you want bundles to be easy to install, configure and use in any Symfony application - not just the one you are working on right now.

In this tutorial you learn how to set up a bundle, its configuration and service definitions in order to make it fully flexible and adaptable for many use-cases. We take an existing library and write the necessary bundle code to provide useful service definitions for the classes that the library contains. While we're at it we write some tests for the bundle, configuration and extension classes that we create for this bundle.

Close
Introduction to JavaScript Testing (Jordan Kasper) D507 intermediate intermediate
Close
Jordan Kasper

Introduction to JavaScript Testing

(Hands on)

We all know how important testing is - but how many of you test your JavaScript code? This tutorial will introduce attendees to basic strategies for testing JavaScript code as well as how to write code that is testable. We'll cover topics such as:

* Writing testable code;
* Writing tests for asynchronous actions;
* Mocking Ajax requests;
* Automating local and cross-browser (and platform) testing;
* and much more.

Close
Modelling with Domain Events - Full day (Mathias Verraes) SOLD OUT E103 advanced advanced
Close
Mathias Verraes

Modelling with Domain Events - Full day

(Hands on)

Most of us have, at one time or another, used events to decouple parts of the application from each other. Usually they’re an afterthought, a side effect of more important operations in our model. But what if we make Domain Events first class citizens? Model the events first, persist them as our single source of truth, and then build the rest of the system around them?

As it turns out, Event Sourcing is an extremely powerful design style. It enables scale and distribution, and, more importantly, it keeps the complexity of your model in check. The catch is that it takes a shift in mindset from traditional modelling.

In this session, you’ll learn guiding principles from Domain-Driven Design. You’ll practice Model Storming to discover Events and Commands. With practical examples drawn from actual projects, you’ll design Value Objects, Aggregates, Projections, and Process Managers. Your models will never be the same.

Close
Build your first Titanium Alloy app - Full day (Fokke Zandbergen) D502 beginner beginner
Close
Fokke Zandbergen

Build your first Titanium Alloy app - Full day

(Hands on)

Titanium is an app development platform allowing you to build apps for iOS, Android, Tizen, BlackBerry and Windows using a single JavaScript codebase. No slow HTML but actual native UI delivering awesome UX!
Alloy is Titanium's MVC framework. Create views in XML, define styles in a CSS-like format and have all that compiled to plain JavaScript. No downsides, only ups!

This tutorial will walk you through building your first Titanium Alloy app. We'll get you set-up and learn the basics of Titanium & Alloy by helping you build an actual app.
You will benefit most from this tutorial if you bring a MacBook with Titanium Studio pre-installed. Get it from: http://appcelerator.com/titanium

Close
HTML5 App Camp: Sencha Touch/Sencha Architect - Full day (Lee Boonstra) D506 beginner beginner
Close
Lee Boonstra

HTML5 App Camp: Sencha Touch/Sencha Architect - Full day

(Hands on)

Learn how to build and deploy powerful mobile apps quickly for iOS, Android, Blackberry 10, and Windows Phone 8 with Sencha Touch and Sencha Architect.

Test and deploy cross-platform mobile apps quickly with Cordova.

Course Objectives
- Quickly develop an app that functions across a variety of mobile devices
- Implement a complex mobile UI that integrates forms, maps, tabs, sorting, and media
- Efficiently handle gestures
- Make background requests for data from an application server or web service
- Store data persistently on the device
- Use Cordova to test and package apps ready for app stores

Close
Conference day 1
09:30 - 09:40 Conference day 1
OPENING Forum
Close

OPENING

(Overview)

Close
09:40 - 10:30
KEYNOTE: A startup story: Sending a billion text messages (Evan Coury) Forum
Close
Evan Coury

KEYNOTE: A startup story: Sending a billion text messages

(Overview)

How does a high school student turn a laptop, two prepaid cell phones, and a cease and desist from Amazon into one of the largest text messaging gateways in the United States? Join Evan Coury as he shares his eventful journey of starting and scaling his web startup. A story of luck, risks, mistakes, and eventually, success.

Close
10:45 - 11:30
HTML5/JavaScript Communication APIs (Christian Wenz) E102 intermediate intermediate
Close
Christian Wenz

HTML5/JavaScript Communication APIs

(Hands on)

HTML5 and related specifications come with a lot of new JavaScript APIs; communication is one of the most important aspects. It is now possible to send cross-frame, cross-browser tab, even cross-domain requests, receive push messages from the server, use bi-directional full-duplex communication, and more. This session will discuss these and other techniques, show code samples, and list helper libraries for PHP and other server technologies.

Close
Adventures in Advanced Git (Lorna Mitchell) E104 advanced advanced
Close
Lorna Mitchell

Adventures in Advanced Git

(In depth)

Boost your git skills in this session where we pick out some of the most handy but underused features of an excellent tool. If you're confident committing, branching and merging, then come along and collect the next set of skills, to include bisect, rebasing, adding patches rather than files, the rerere command, and some tricks for handling multiple remotes. We'll also look at using configuration files: your own config, the gitignore file and how to teach gitattributes about the different types of file in your project. Anyone using git on a regular basis will learn some new tricks in this session.
Close
Recursive Descent Parsing (Boy Baukema) E107 advanced advanced
Close
Boy Baukema

Recursive Descent Parsing

(In depth)

We are surrounded by text and little languages that we ask the interpreters of others to make sense of every day. But, unless you were academically trained, you probably have no idea have no idea how to go about actually parsing a language with PHP. Even if you were taught Compilers in school, are you sure you can build one?

Come to my talk, a sequel to the highly rated 'Let's build a parser' of DPC12. I'll teach you, by example, how to model a little 'language' in Parsing Expression Grammar. And a useful little technique for your arsenal called Recursive Descent Parsing.

Close
Overcome your fear of implementing offline mode to your apps (Marin Todorov) E103 intermediate intermediate
Close
Marin Todorov

Overcome your fear of implementing offline mode to your apps

(Overview)

When there is a client and a server - there is a problem. Even in present day not everyone is online all the time, so sooner or later you have to face the challenge of making your app useful also when there's no Internet connection. Depending on what your app does and how you decided to code it there can be different approaches, but for what I know they are all gonna cause you pain.

In this session I'm gonna showcase few apps and their approaches to offline mode as well as discuss how each of these approaches could be developed. I'm going to highlight certain gotchas and what I took out of the process of developing a number of apps featuring offline mode and generally fitted to work in conditions of questionable connectivity. We're going to cover how to evaluate which parts of the app should work offline, how to adapt the app UI to working offline, and finally how to store data for use in offline mode. I'm going to highlight a number of libraries that helped me along the way so the session will be also quite practical.

I hope by the end you won't fear offline mode and you won't (figuratively) leave the session empty handed.

Close
Android UX-UI Design for Fun and Profit (Fernando Cejas) E108 beginner beginner
Close
Fernando Cejas

Android UX-UI Design for Fun and Profit

(In depth)

Even though we are developers dealing with source code, it is good to know how to deal with UI/UX when building our user interfaces by applying tips and best practices.

So, in this session, we are gonna talk about android usability patterns, based on real cases and experiences with mobile development.

Close
11:45 - 12:30
Ansible: Orchestrate your Infrastructure (Jeremy Coates) E102 intermediate intermediate
Close
Jeremy Coates

Ansible: Orchestrate your Infrastructure

(Overview)

Software configuration management tools are gaining ground everywhere. We've all probably at least heard of puppet, chef or salt by now, however there's a new rising star: Ansible. In this talk we'll learn about the way ansible approaches configuration management, software deployment, remote execution and other general IT tasks. We'll examine how to get up and running in a moment and how easy it is to manage multiple concurrent servers in parallel without needing additional daemons or bootstrapping! The talk will cover differences to puppet, chef etc and examine how to customise and extend Ansible with our favourite language. Join us for this talk and you'll see why this award winning Python project has relevance for PHP and your work life through getting your servers under control.
Close
Refactoring with Design Patterns (Benjamin Eberlei) E104 intermediate intermediate
Close
Benjamin Eberlei

Refactoring with Design Patterns

(Hands on)

Extensive use of Design Patterns is not something you should overengineer into your applications from the start. Practicing selective refactorings towards design patterns is a much better approach instead. In this session we will take a piece of real-world code and refactor it using three of the most important design patterns. The speaker will discuss the steps and the implications with the audience along the road.

Close
"Orcs 'n' All": A Journey to Mount Doom (via Facebook) (Gary Hockin) E107 beginner beginner
Interapp communication with URL Schemes (Jason Kneen) E103 beginner beginner
Close
Jason Kneen

Interapp communication with URL Schemes

(Overview)

We all use URL Schemes, http://, mailto://, tel:// are common place, but did you know these can also be used in Mobile apps?
Googlemaps://, tweetbot:// are all url schemes that when opened will launch the app. Even better, you can pass arguments between apps to do specific things.

App detection, launching, sending commands between apps, seamless multi-app integration, Single Sign On (SSO) apps are all possible and much more.

 

Close
Techniques to write DSLs in Objective-C (Luis Solano Bonet) E108 beginner beginner
Close
Luis Solano Bonet

Techniques to write DSLs in Objective-C

(Overview)

I don't like bugs but
I introduce bugs because
I fail to tell the computer what to do.

If may job were to tell the computer what I want instead of what to do I wouldn't have that problem. By relying on Domain Specific Languages our code becomes more readable, easy to change and maintain and we introduce fewer bugs, to mention some good things about DSLs.

This talk will cover:
- The main advantages and disadvantages of DSLs.
- When to use them.
- How DSLs raise the level of abstraction and separate implementation details from expected behavior.
- How we can leverage DSLs to introduce fewer bugs.
- What are the main techniques to write DSLs in Objective-C.

Close
12:30 - 13:30
Lunch
Close

Lunch

(Overview)

Close
13:30 - 14:15
HHVM (Alexander Mols) E102 beginner beginner
Close
Alexander Mols

HHVM

(Overview)

Get started with HHVM. Learn about running and debugging your application on HHVM and why HHVM can be so much faster than Zend PHP!
Close
PhpSpec - the only design tool you need (Kacper Gunia) E104 beginner beginner
Close
Kacper Gunia

PhpSpec - the only design tool you need

(Overview)

We are professionals and we are responsible for building well-designed applications on daily basis. So what does design actually mean to us? And how does it relate to quality and maintainability of our app? Are there any tools that can help us to write code that reflects our domain and is painless to refactor?

In this talk we'll dive into TDD and SpecBDD in PHP (and explain the difference between them). Our weapon of choice will be PHPSpec - a modern design tool that helps us write high quality, testable and decoupled software.

Close
Scalable PHP web applications with Apache Cassandra (Andrea De Pirro) E107 intermediate intermediate
Close
Andrea De Pirro

Scalable PHP web applications with Apache Cassandra

(Hands on)

Developing a fast and scalable application for your fancy new startup is hard. Many factors are responsable for the slowness of a website, like network latency, webserver configuration or large assets, but as any developer involved with high volumes knows, the real bottleneck is the database. During the latest years a buch of NoSQL solutions came to the rescue, each one with his pros and cons. Apache Cassandra is one of the most used and mature "Big Data" NoSQL, and is currently deployed on several projects by tech giants like Twitter, eBay and Netflix, due to its extremely high throughput, automatic replication and decentralization. During the session I'll talk about how to leverage Apache Cassandra best features and data modeling best practices for your web application projects to respond to huge peaks of traffic, using open source tools such as Zend Framework and phpcassa, and describing a large e-commerce project currently using Cassandra.
Close
The Age of Context, 6 key learnings for responsive web design (Bart de Waele) E103 beginner beginner
Close
Bart de Waele

The Age of Context, 6 key learnings for responsive web design

(Overview)

If we want to bring our message across, we need to take into account the context of our audience. 
The Internet of Things will bring about massive change in the way we use that context. But for now, the most important context is ‚mobile’. Responsive web design is a good way to deal with this fact.

I will share 6 key learnings from 3 years of making responsive websites at digital agency Wijs. 

 

Close
Titanium & Beyond (Jeff Haynie) E108 beginner beginner
Close
Jeff Haynie

Titanium & Beyond

(Overview)

Titanium is an app development platform that allows you to build apps for iOS, Android, BlackBerry, Tizen and Windows using a single JavaScript codebase. No fluffy HTML, but actual native UIs delivering awesome UX.

Being a developer himself, CEO Jeff Haynie is currently leading the development of the next major version: Ti.Next. Using a cross-platform port of iOS7's JavaScriptCore, Ti.Next will compile JavaScript, which means faster apps, but also paving the way for faster development of the Titanium platform itself. Imagine this: calling any native API right there in JavaScript, even if it is not exposed through the cross-platform Titanium API.

This talk will demonstrate Titanium as the best choice for building native apps for multiple platforms and give you the latest on Ti.Next.

 

Close
14:30 - 15:15
Queue it! What job queues can do for you! (Ole Michaelis) E102 intermediate intermediate
Close
Ole Michaelis

Queue it! What job queues can do for you!

(In depth)

In times of node.js and asynchronous IO, our other beloved languages can sometimes feel like the wrong tool. But looking at it like this would be too narrow-minded - like sending a registration confirmation mail, you can do it in the “register” user request, while the user is waiting for the response. But what if the mail server isn’t reachable? You’ll have to wait for the timeout. This will make your common user pretty angry.
There are tons of different job queues around. I’d like to talk about a few different queues like Gearman and beanstalkd - what’s the differences and what are the perfect match use-cases. I also have some hints on what’s a good implementation detail ready.

Close
Security as part of Quality Assurance (Boy Baukema) E104 intermediate intermediate
Close
Boy Baukema

Security as part of Quality Assurance

(Overview)

How can you be sure your application is 'secure'? Or 'secure enough'? The answer off course, is Security Testing. But which kind of testing? How much? When? By whom? How? And most important to the customer / manager: how much is it going to cost.

In this talk I'll be presenting the 'Application Security Verification Standard 2013' (ASVS) by the OWASP Foundation. A comprehensive framework for determining a security 'level' and steps to take to 'verify' this level. With this tool you'll be able to answer all the questions above.

I'll also talk briefly on how it integrates with a Secure Software Development Lifecycle at Ibuildings.

Close
Abstract Machines (Igor Wiedler) E107 intermediate intermediate
Close
Igor Wiedler

Abstract Machines

(In depth)

As developers, we compute. But what is computation exactly? And why is it so difficult to write correct software? Alan Turing and Alonzo Church discovered some remarkable answers to these questions in 1936. They envisioned abstract machines before real computers even existed. Those abstract machines would model all of the computable things.

In this talk, we will discover the possibilities and limitations of computation. Along the way we will encounter a bunch of virtual machines and interpreters, see similarities between them, and how they relate to things that we use every day, such as regular expressions, parsers, the PHP interpreter itself. You will gain a deeper understanding of what computation is, and what programming is all about.

Close
Managing your HTML mobile development workflow (Matt Gifford) E103 beginner beginner
Close
Matt Gifford

Managing your HTML mobile development workflow

(Overview)

Creating mobile applications using HTML is empowering for the developers and a potentially cost-effective route for management and the clients involved. With a myriad of mobile device operating systems, aspect ratios and screen sizes to cater for getting the layout and functionality 'just right' can prove to be troublesome.

In this session we will explore a number of options available to help manage an effective workflow to debug, inspect and validate your HTML mobile applications, and some really useful tools to potentially use along the way.

Close
People don't give a f**k of JavaScript (Aurelio De Rosa) E108 beginner beginner
Close
Aurelio De Rosa

People don't give a f**k of JavaScript

(Hands on)

People don't give a f**k of JavaScript. You shouldn't either. We are here to do stuffs, whether you call them websites, web applications, web services or hybrid apps. People want to perform tasks, not listen you talking about your favourite programming language. So, use the one you feel more comfortable with and just release the next big thing. But, if your favourite language is JavaScript, let's write better code. What does better means? Better for developers, better for devices, better for users.

In this talk, I'll describe some of the latest HTML5 APIs, many of which still experimental, that can help you develop great code. In a bunch of minutes, you'll see how to use:

  • The High Resolution Time and the User Timing APIs to help yourself testing your code performances
  • The Page Visibility and the Battery APIs to take care of devices' resources
  • The Vibration and the GetUserMedia APIs to create better User Experiences

 

Close
15:15 - 15:45
Coffee & Tea Break
Close

Coffee & Tea Break

(Overview)

Close
15:45 - 16:30
Blazing Data with Redis (Justin Carmony) E102 intermediate intermediate
Close
Justin Carmony

Blazing Data with Redis

(Overview)

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.

Close
Behave! - Behavior Driven Development (Tobias Schlitt) E104 intermediate intermediate
Close
Tobias Schlitt

Behave! - Behavior Driven Development

(Overview)

Unit tests give you a good base to ensure your classes are working technically correct. Integration tests show that they play well with each other. But who takes care that your code actually does what your business owner wants it to do? This session gives you an introduction into Behavior Driven Development on basis of Behat to help you achieve automated testing of specifications.

Close
Patterns of Modern Web Applications (Scato Eggen) E107 advanced advanced
Close
Scato Eggen

Patterns of Modern Web Applications

(Overview)

We use frameworks for our server-side code, making it elegant, maintainable and well organised. For the client-side, we use jQuery and quickly end up with one huge mess. Lately, there's been an increase in client-side frameworks labeled MV*, but there are other options. We will look at client- and server-side as a whole, and figure out which patterns we need to set up our architecture.

Close
Interactive 3D Graphics - In Your Browser! (Victor Sand) E103 intermediate intermediate
Close
Victor Sand

Interactive 3D Graphics - In Your Browser!

(Overview)

The landscape of computer graphics is changing. Demanding applications that used to belong on a heavy desktop machine are moving to the web and to mobile. By the use of open standards like HTML5 and WebGL, development can be completely cross-platform and its result instantly be available online. Goo Technologies provide powerful WebGL-based 3D creating tools that power the next revolution in web and device content. Come listen to the thoughts behind an efficient pipeline for online 3D development and, most importantly, check out some amazing demos and learn how to get started yourself!

Close
Making iOS security super simple (Erik Romijn ) E108 intermediate intermediate
Close
Erik Romijn

Making iOS security super simple

(In depth)

Our apps today store tremendous amounts of potentially sensitive information. As developers, it is our job to ensure this information is well protected. iOS comes with many built-in security features, and several APIs to help secure the user's data. Using these features and applying other good security practices is usually not that difficult, as long as you know about them, use them properly, and avoid their pitfalls. 

In this practical session, we'll dig into the details of built-in iOS features, like filesystem encryption. We'll look at the various APIs you can use to protect data, like Keychain, and how to use them properly. Lastly, we'll take a look at some examples of how not to do iOS security, and what we can learn from those.

Close
16:45 - 17:30
Websockets and Event-driven Programming with PHP (Steve Meyers) E102 intermediate intermediate
Close
Steve Meyers

Websockets and Event-driven Programming with PHP

(In depth)

Modern browsers support a new standard call Websockets, which allow persistent connections between a browser and a server.  We'll discuss how to implement Websockets with your client-side Javascript talking to your server-side PHP.

Close
LEVEL UP! Migrating your ZF1 app to ZF2 (Gary Hockin) E104 intermediate intermediate
Close
Gary Hockin

LEVEL UP! Migrating your ZF1 app to ZF2

(In depth)

“How do I upgrade my application to Zend Framework 2” is one of the most asked questions in the Zend Framework community. While there is no “upgrade” path from Zend Framework 1 to 2, migrating from involves small changes to your model code, and rewriting and refactoring your framework specific classes.

Luckily, refactoring your application to Zend Framework 2 is not as scary or complex as you’d imagine. Getting to know Zend Framework 2 can be fun, and you’ll love the new features and functions available in the newer framework. In this session, we will take a fully fledged demo Zend Framework 1 site, and rewrite it so it runs perfectly in Zend Framework 2.

Close
Design how your objects talk to each other through mocking (Konstantin Kudryashov) E107 beginner beginner
Close
Konstantin Kudryashov

Design how your objects talk to each other through mocking

(In depth)

What should you test with your unit tests? Some people will say that unit behaviour is best tested through it's outcomes. But what if communication between units itself is more important than the results of it? This session will introduce you to two different ways of unit-testing and show you a way to assert your object behaviours through their communications.

Close
PhoneGap: the past, the present and the future (Matt Gifford) E103 beginner beginner
Close
Matt Gifford

PhoneGap: the past, the present and the future

(Overview)

PhoneGap is an open-source mobile development framework that allows you to create cross-platform mobile applications using your existing skill set as a creative web professional; HTML, CSS and JavaScript.

In this overview session Matt will introduce PhoneGap to those not yet already using it, explain where it came from and how it keeps improving on a continual basis and how you can build powerful mobile applications that interact with the native device features and functions. You will also see how PhoneGap is being implemented by other libraries and engines to enhance the developer workflow, and you will be introduced to some tricks and techniques to help optimise your mobile development.

Close
Web optimisation in the age of mobile (Stelian Firez) E108 beginner beginner
Close
Stelian Firez

Web optimisation in the age of mobile

(Overview)

In the beginning of the talk I will try to make some strong arguments, backed by numbers, why Web Performance Optimisation is still extremely relevant and how it helps users and businesses as well.
Afterwards, my focus will shift towards listing the most effective optimisation techniques and explaining how they work. I will also share a number of tools that help automate these techniques. This will be the core of the presentation.
The final part of the session will be dedicated to discussing the new challenges of web optimisation and how to make better use of a device’s capabilities.

 

Close
20:30 - 23:00
Conference Social
Close

Conference Social

(Overview)

Close
Conference day 2
09:45 - 10:30 Conference day 2
Trunk Based Development (Gordon Oheim) E102 intermediate intermediate
Close
Gordon Oheim

Trunk Based Development

(Hands on)

Are you sick of Merge Hell? Do your feature branches go rogue? Do you spend more time fiddling with your Version Control System than doing actual development work? Then Trunk Based Development might be for you. Facebook does it. Google does it. Instead of messing with multiple branches, just use your master branch. Always. In addition to giving you an overview about how Trunk Based Development works, where it shines and where the pitfalls are, this talk will also cover the necessary techniques to succeed with it, such as Branch By abstraction, Feature Toggles and backwards compatible Database Migrations.

Close
Encryption, authentication and data integrity in PHP (Enrico Zimuel) E104 intermediate intermediate
Close
Enrico Zimuel

Encryption, authentication and data integrity in PHP

(Hands on)

Do you need to encrypt sensitive data in PHP? Encryption is not enough for security, you need also authentication and data integrity! In this talk I will explain how to provide encryption using block ciphers (e.g. AES) and authentication plus data integrity using HMAC algorithms. Moreover we will talk about public key cryptography in PHP to provide digial signatures and watermarking techniques. We will show some PHP examples using the Zend\Crypt component of Zend Framework 2 that offers a simple and robust API for cryptographic scopes in PHP.

Close
Easy PR checking 201 (Pascal de Vink) E107 intermediate intermediate
Close
Pascal de Vink

Easy PR checking 201

(Overview)

So your team uses Pull Requests to easily see what goes into the codebase and check the quality of the code. PR’s are also great places to converse over the technical details and implications of a change. But how about the functionality aspect? I’m going to talk about deploying a certain version of your project for easy reviewing. About the challenges this brings and how to overcome them. I’m also going to talk about how to make this more accessible to the less technical members of your team by using ChatOps.

Close
The Secret Life of the Internet (Erik Romijn ) E103 intermediate intermediate
Close
Erik Romijn

The Secret Life of the Internet

(In depth)

The internet is fundamental to most mobile apps. Before and after our apps make their requests and parse the responses, an abundance of processes take place. A series of DNS queries to discover the right IP address to speak to, TCP making sure your app receives the complete response in the right order, a routing infrastructure to guide the packets to and from the servers, and much more. 

As important as all these underlying processes are, they are often not well understood by developers. Sometimes their intricacies can cause issues for your users, and understanding them better can make debugging easier. In this session, you’ll get an understanding of the stack that underlies your apps, how it affects your work, and how to use this to your advantage. 

Close
Creating apps that run on your watch and talk to your cloud (Marin Todorov) E108 intermediate intermediate
Close
Marin Todorov

Creating apps that run on your watch and talk to your cloud

(Hands on)

With smartphones becoming bigger and bigger in size each year, there's a new market opening - a portable device to fit in your hand :))) 

Pebble is by far the best pretender for the position of the original smart watch - with it's long battery life, e-paper screen, and flexible developer SDK for 3rd party apps, Pebble is truly the champion in its category.

In this session I am going to walk the audience trough what Pebble is and does, and more interestingly - what can you make it do for you. Prepare for some Pebble C code coming your way. That topped with some Javascript, which allows your watch-app to connect to your server in the cloud! 

Close
10:45 - 11:30
Practical Event Sourcing (Mathias Verraes) E102 advanced advanced
Close
Mathias Verraes

Practical Event Sourcing

(In depth)

Traditionally, we create structural models for our applications, and store the state of these models in our databases. But there are alternatives: Event Sourcing is the idea that you can store all the domain events that affect an entity, and replay these events to restore the object’s state. This may sound counterintuitive, because of all the years we’ve spent building relational, denormalized database schemas. But it is in fact quite simple, elegant, and powerful. In the past 18 months, I’ve had the pleasure of building and shipping two event sourced systems. In this session, I will show how you can build event sourced models using PHP.
Close
Forget about index.php and build applications around HTTP! (Kacper Gunia) E104 beginner beginner
Close
Kacper Gunia

Forget about index.php and build applications around HTTP!

(Overview)

As developers we are asked to implement really challenging and complicated tasks, so it's easy to forget that in reality we need to solve only one problem - transform a Request into a Response. PHP and HTTP are really well suited to this task because of their statelessness, but how can we leverage it and which practises are the best?

During this talk we will take a look into Symfony2 architecture and see how its components are built around Design Patterns that solve problems and fulfil our specific needs.

Close
Pentesting (for fun and profit) (Clinton Ingrams) E107 beginner beginner
Close
Clinton Ingrams

Pentesting (for fun and profit)

(Overview)

“Hello: helpdesk here”

“Help – my web server's acting funny”

“With a quick look, it appears to have been hacked – did you pentest the application before it went live?”

“No; what's that??”

Pentesting of web applications before they are launched should be a no-brainer, but too many organisations would seem to be happy to take the risk.  “Why is there never time to consider security before an app goes live, but plenty of time (and money) after the first hack” is a comment often made. 
Learning basic pentesting techniques and tools is not difficult and my aim with this talk is to consider the methodologies and techniques required in planning and executing a pentest against a web application.  This will include discussions and demonstrations of the more commonly used software tools.

Close
HTML5 offline mobile apps: Real world insights (Stephan Hochdörfer) E103 intermediate intermediate
Close
Stephan Hochdörfer

HTML5 offline mobile apps: Real world insights

(Overview)

Creating a web application that is useable on a mobile device is a no-brainer if your application relies on an persistent internet connection. What if you users are working on a mobile connection and the signal drops? They are not able to use your application anymore. In the worst case they will see the famous "white screen of death". Does that mean you have to go native? Thanks to HTML5′s support of client-side storage your web application now can run completely offline in today’s browsers. This session will guide you through the journey of developing your first offline HTML5 mobile app and give you some insights why we choose specific implementations for the applications we built for our clients.

Close
Enterprise-grade cross-platform development with BlackBerry WebWorks (Dennis Reumer) E108 intermediate intermediate
Close
Dennis Reumer

Enterprise-grade cross-platform development with BlackBerry WebWorks

(Overview)

Apart from being a super-secure and user friendly smartphone, BlackBerry also enables companies to develop, manage and deploy integrated mobile solutions for Android, iOS, BlackBerry and in the near future Windows Phone. In this session it is shown how the BlackBerry WebWorks platform, based on PhoneGap/Cordova, helps you to create amazing business apps, without the need for complicated SDK’s.

Close
11:45 - 12:30
Creating models (Rob Allen) E102 intermediate intermediate
Close
Rob Allen

Creating models

(Overview)

How are you supposed to organise your models in an MVC application? What goes where? What is a service class, a mapper or an entity? This talk will look at the components of the model layer and the options you have when creating your models. We’ll look at the different schools of thought in this area and compare and contrast their strengths and weaknesses with an eye to flexibility and testability.

We'll discuss the terminology and also take a look at what a service layer is and see how you use service classes to provide the business logic for your application and hide your persistence code from your controllers. By the end of this session you will be equipped to create excellent, maintainable models in your projects.

Close
Elasticsearch (Alexander Mols) E104 beginner beginner
Close
Alexander Mols

Elasticsearch

(Overview)

Find all the things! An introduction to Elasticsearch and what it can do for your applications. Learn all about searching, boosting, percolating and aggregating your data.

Close
Principles of PHP Package Design (Matthias Noback) E107 intermediate intermediate
Close
Matthias Noback

Principles of PHP Package Design

(In depth)

With many great tools available for sharing packages of PHP code, it is now up to you as a developer to design these packages well. You have to decide what to put in a package, when to split a package and on what other packages you can safely depend. 

You will learn how to make good decisions about your package design and release reliable, highly usable and therefore highly esteemed packages of PHP code.

Close
Make Them Click (Roy Tomeij) E103 beginner beginner
Close
Roy Tomeij

Make Them Click

(Overview)

Whether you want it or not, you're the constant victim of neuro-marketing. By tapping into your "reptile brain", you are unconsciously made to click, like and buy. We'll look at scarcity, social validation, reciprocity and much, much more. All web apps have customers of some sort, and it's your job to guide them, either for usability or profit. You'll learn how to see others' influence on you, and maybe to exert some influence of your own.

 

Close
Designing for Cross-Channel User Experience (Chrissy Welsh) E108 intermediate intermediate
Close
Chrissy Welsh

Designing for Cross-Channel User Experience

(Overview)

Users often don’t complete an activity in one sitting or through a single channel. Sometimes users are interrupted, sometimes it is more appropriate to switch device, or they move from the digital world to the physical world—and vice versa—by choice or necessity.

For these reasons, it’s important to offer a seamless experience as users move from channel to channel to complete activities. The continuity of experience will become increasingly important as the line between the digital and physical worlds continues to blur. This talk will give practical advice for  cross device design for users, and the important mobile technology plays in the role of seamless experiences.

Close
12:30 - 13:30
Lunch
Close

Lunch

(Overview)

Close
13:30 - 14:15
Making the Most of your Agile Process (Justin Carmony) E102 intermediate intermediate
Close
Justin Carmony

Making the Most of your Agile Process

(In depth)

Almost everyone in our industry has heard of agile development, scrum, and likely to some degree. Most teams I know follow some sort of scrum-like process: two week sprints, story points, estimation, etc. However, it is very easy to go through the motions of scrum & agile without really improving the process, and that was the struggle our different different development teams faced at DDM. However, over the last two years across our different teams we’ve discovered very key elements of scrum that are rarely talked about that make the biggest difference. 

So in this talk we’ll assume you’ve heard of scrum, sprints, scrummasters, backlogs, and the general idea of scrum. In this talk, we’ll go through the key changes we made in our agile process across our different teams that really made the difference. We’ll show how we were able to change scrum from a set of meetings and to-do lists into an effective system that has double our teams’ output.

Close
Nginx: The need for speed (Evan Coury) E104 beginner beginner
Close
Evan Coury

Nginx: The need for speed

(Overview)

Nginx is a lightweight, high-performance web server which has been steadily rising in popularity and is used by many of the top websites on the internet. In this session, Evan will cover everything you need to know to get the most out of running your PHP site on Nginx, including PHP-FPM tuning, configuration best practices, common mistakes, tips and tricks -- all backed by years of real-world experience running extremely high-traffic web services on Nginx.

Close
Browser Eyeballing! = JavaScript Testing (Jordan Kasper) E107 intermediate intermediate
Close
Jordan Kasper

Browser Eyeballing! = JavaScript Testing

(Overview)

Stop eyeballing your UI in a browser to test your JavaScript code - that doesn't count. While many developers have embraced testing in their server side code using TDD, fewer test their front end JavaScript code in the same way (or in any way), and even fewer of those use any kind of automation. This talk will guide attendees on how to write testable JavaScript code, how to write tests for that code, and some solutions for automating the process.

Participants will come out of this talk ready to implement and automate better tests for their JavaScript code.

Close
Controlling your app's behavior from the server (Luis Solano Bonet) E103 beginner beginner
Close
Luis Solano Bonet

Controlling your app's behavior from the server

(Overview)

Imagine you could say: "I want to add a new user interaction to my app". Image you could do it without submitting a new version to the App Store.
Imagine you could answer questions about your user's behavior without a new release.
In general, imagine you could make anything happen in your app without a new release and without compromising the quality of your code.

This is all possible and we will talk about how to do it.

This talk will cover the four main components of this solution:
- An elegant approach to architect your apps and record events locally in the device.
- A query language to find out what has happened within your app, locally.
- A trigger mechanism that will let you define which actions to execute under which conditions.
- A protocol to dynamically configure the trigger mechanism Over The Air™.
- All this put together will let you change the behavior of the apps dynamically.

No new releases necessary. Wanna find out how?

Close
High Performance Core Data (Matthew Morey) E108 intermediate intermediate
Close
Matthew Morey

High Performance Core Data

(In depth)

Learn how to analyze, debug, and squeeze every last bit of performance out of Core Data. The standard Core Data implementation is very powerful and flexible but lacks performance. This advanced talk covers various performance analysis tools, data model optimization, and various high performance concurrency models.

Close
14:30 - 15:15
Giving up Control: Inversion of Control for Beginners (Matthew Weier O'Phinney) E102 intermediate intermediate
Close
Matthew Weier O'Phinney

Giving up Control: Inversion of Control for Beginners

(In depth)

Over the past few years, the mantra in OOP PHP projects has been "Dependency Injection": get rid of those registries, service locators, and God objects.  Simply put, Dependency Injection (DI) is the act of injecting objects on which a class depends via the constructor or setter methods, instead of instantiating them directly or pulling them from a known location (usually a registry).

The real question, however, is: where do you create those dependency instances?  This is where a concept called "Inversion of Control" (IoC) comes into play.

 

 

Close
Docker: The only thing it can't contain is your excitement (John Le Drew) E104 intermediate intermediate
Close
John Le Drew

Docker: The only thing it can't contain is your excitement

(Overview)

Docker is an exciting new project that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere; like a virtual machine on steroids.

In this talk I will introduce Docker, why you should be excited about it and show you how it will change your universe!

Close
Modern front-end with the eyes of a PHP developer (Aurelio De Rosa) E107 intermediate intermediate
Close
Aurelio De Rosa

Modern front-end with the eyes of a PHP developer

(Overview)

Unless you're lucky (?) enough to work with PHP only, chances there that you deal also with HTML, CSS, and JavaScript. In the wild, PHP developers are supposed to know and be proficient at front-end too. For this reason, we should stay up-to-date and efficient in this field. Front-end is heavily changed in the last 2 years due to the introduction and the growth of tools like Grunt, Bower and Yeoman.

In this talk, you'll discover what they are and how they can help you to enhance your workflow, paying attention to highlight the similarities and the differences with their task-related PHP software.

Close
Behaviour-Driven Development with Calabash (Sam de Freyssinet) E103 beginner beginner
Close
Sam de Freyssinet

Behaviour-Driven Development with Calabash

(Hands on)

Behaviour-Driven Development has become the standard development process for crafting software on the web. In recent years tools such as Cucumber and Bahat have elevated automated acceptance testing into the toolchain of any discerning software engineer. But what about the thriving world of mobile development? Is it possible to practice outside-in test driven development when creating iOS, Android or hybrid applications? This session will examine the relatively new and emerging world of Behaviour-Driven Development for mobile applications.

Using an automated acceptance test framework called Calabash, we will examine how to build applications that are continuously tested against product requirements written in the Gherkin domain-specific language. Using the outside-in development method, a basic mobile application will be constructed during the session, precisely meeting the product owners requirements.

Close
Loosely Coupled - How Android Applications are Stitched Together (Corey Leigh Latislaw) E108 beginner beginner
Close
Corey Leigh Latislaw

Loosely Coupled - How Android Applications are Stitched Together

(Overview)

Android has a number of mechanisms to allow fluid interactions between components and other installed applications. We'll cover the basics of Activities, Fragments, Intents, and Content Providers and how to put these to use through real code examples.

Close
15:15 - 15:45
Coffee & Tea Break
Close

Coffee & Tea Break

(Overview)

Close
15:45 - 16:45
KEYNOTE (Seb Lee-Delisle) Forum
Close
Seb Lee-Delisle

KEYNOTE

(Overview)

Keynote abstract to be announced

Close
16:45 - 17:00
CLOSING Forum
Close

CLOSING

(Overview)

Close
17:00 - 18:00
Drinks
Close

Drinks

(Overview)

Close