Cluj 2017 NOVEMBER 16-17

Schedule

Thursday, November 16th

  Track Advanced Track Beginner Track PHP
08:00
09:00
Badge pickup and light breakfast
09:00
09:15
Opening / Welcome
09:15
09:55
Keynote
Fabien Potencier
09:55
10:25
Break
10:25
11:05
Decoupling an application with message queues
David Buchmann
Keep calm and update your Symfony app!
Caliman Alin Adrian
Optimizing for PHP 7 - the example of Symfony
julien pauli
11:15
11:55
Workflow in real life
Artem Dekhtyar
From Legacy to Symfony
Sebastian Grodzicki
Event Sourcing: The good, the bad and the complicated
Marco Pivetta
12:00
13:30
Lunch
13:30
14:10
What we learned by merging two big Symfony based applications
Ivo Lukač
Building your translation process
Tobias Nyholm
Neo4j + PHP = <3
Michelle Sanver
14:20
15:00
A Journey from Hexagonal Architecture to Event Sourcing
Carlos Buenosvinos
Building a cloud-friendly application
Larry Garfield
Trend analysis and machine learning in PHP
Michael Cullum
15:10
15:50
A GraphQL API: from hype to production
Aurélien David
Making the most out of Symfony Forms
Mihai Nica
Discovering and solving performance issues
Denis Brumann
15:50
16:20
Break
16:20
16:50
Community talks
16:55
17:35
Lessons learned building the Composer internals
Jordi Boggiano

Friday, November 17th

  Track Advanced Track Beginner Track PHP
08:00
09:00
Breakfast
09:00
09:40
PHP 7 and beyond: 7.2+
Sara Golemon
09:40
10:10
Break
10:10
10:50
Mastering regex incantations
Tomasz Kowalczyk
Webpack Encore - Pro JavaScript and CSS for Everyone
Ryan Weaver
Unconference
11:05
11:45
Auditing Symfony apps
Palko Lenard
API Platform and Symfony
Kévin Dunglas
11:45
13:30
Lunch
13:30
14:10
Dependency Injection Component v4.0
Nicolas Grekas
Building an Open-Source Campaign Platform for the new President of France
Hugo Hamon
Unconference
14:20
15:00
Doctrine Performance Optimization
Anna Filina
Symfony at OpenSky
Pablo Godel
15:00
15:30
Break
15:30
16:10
A year of Symfony
Sarah Khalil
16:15
16:45
Symfony Community Awards Ceremony
16:45
17:00
Closing session

Keynote

Fabien Potencier - English - Keynote - Thursday, 09:15

-

Decoupling an application with message queues

David Buchmann - English - Track Advanced - Thursday, 10:25

Quick response times are crucial. Time consuming tasks triggered in web requests should be executed asynchronously, if at all possible. In this talk I will give a short overview of what message queues are and then show a case study how we split up an application into smaller services and how we use message queues to coordinate the services.

Keep calm and update your Symfony app!

Caliman Alin Adrian - English - Track Beginner - Thursday, 10:25

The talk will present a real life case study of how we upgraded an enterprise application from Symfony 2.7 running PHP 5.6 to Symfony 3.4 and PHP 7.1. We will go through what was the conceived plan and what were the biggest challenges. It will be separated in 3 chapters: upgrading PHP, upgrading Symfony and achieved benefits. In the first chapter we will take a look in upgrading the PHP version and related packages, how we fixed common backward incompatible changes and what parts of our code we updated to take advantage of the new features. Also, a glimpse into what helpful tools can be used ( php7cc, phan, PhpStorm PHP 7 Compatibility Inspection). In the second chapter we discuss about upgrading from Symfony 2 and related bundles to Symfony 3, updating to the new directory structure and making code deprecation free. As in the first chapter, we will also talk about helpful tools for this step. We will wrap it up with a look on the end result and what are the achieved improvements.

Optimizing for PHP 7 - the example of Symfony

julien pauli - English - Track PHP - Thursday, 10:25

Symfony keeps evolving adding new features, fixing bugs and reorganizing its structure to support more and more projects. But Symfony also evolves in term of performances. This talks will detail how the PHP 7 engine works, how memory and CPU are used in the heart of PHP, how classes, objects, variables and arrays work. Then we'll see how Symfony got patched to take care of the latest optimizations brought to the PHP engine. We'll dive into OPCache, into the memory manager and the internals of PHP 7 to notice why Symfony's code has been patched in such ways that it now performs better.

Workflow in real life

Artem Dekhtyar - English - Track Advanced - Thursday, 11:15

In this report, I would like to talk about the integration of Symfony Workflow component, its practical use, problems and advantages of its use by the example of a corporate trouble ticket system for telecom operators.

The report highlights such topics as:

  1. Security - using Expression Language to control transitions.
  2. Data validation - switching the entities by places is not interesting without entering additional data it validation and handling.
  3. Coupling Workflow component with Tactician (by PHP League) to separate transition handling and postprocessing in small reusable classes.
  4. Developing abstract factory which is elegant way to create symfony forms and command for Tactian depending on the requested transition.
  5. Examples of real cases.

From Legacy to Symfony

Sebastian Grodzicki - English - Track Beginner - Thursday, 11:15

How can one use Symfony 4.0 and PHP 7.2 while working with a legacy application? Starting new projects on latest technology is a no-brainer but how often are you in this position? Most of the time it feels like you're stuck with what you have.

In this talk I'll share my experience migrating a legacy monolith from 2007 (powering a high traffic social network) and an API-centric web application (running an e-commerce marketplace) to Symfony.

Although the talk will be largely technical I'll also share some insights on ROI, non-technical benefits and pitching the idea to your boss.

Event Sourcing: The good, the bad and the complicated

Marco Pivetta - English - Track PHP - Thursday, 11:15

Event Sourcing is a more frequently heard buzzword, but is it solving all our development problems, or is it introducing new ones? Let's see it in practice! Event Sourcing can look like an attractive solution for any of your applications, but does it actually pay off? What if it is all just buzzwords and no gain? We’ll look at how we implemented event sourcing in our own app, code-reviews.io: what made us fast; what made us super slow; what made us cry. This talk will give you a good idea of what kind of challenges you will encounter when approaching event sourcing for the first time.

What we learned by merging two big Symfony based applications

Ivo Lukač - English - Track Advanced - Thursday, 13:30

Due to complex web projects we work on, there was a need for deeper integration between content management system and eCommerce solution. As eZ Platform is based on Symfony we searched for a Symfony based ecommerce solution and found Sylius as the best choice. We combined the two systems in one Symfony instance so we can integrate on much deeper level. Learn about our experience with merging and maintaining such a solution.

Building your translation process

Tobias Nyholm - English - Track Beginner - Thursday, 13:30

The Translator component is the one you learned how to use in 5 minutes and you have not thought much about it since. It just sits there in almost every project and just works. That is great, that is what a great component should do.

The tricky part is how you build your development processes to work together with the translation process. You will start to notice problems when you have 4 or more languages. What other tools and services should you use? And how do you teach external translators to edit xliff files? Of course your should not force XML on non-developers.

Taking the experiences learned from JMSTranslationBundle, Happyr’s translation bundles and the PHP-Translation organization; I will give you example of a few very concrete processes working with translations in a Symfony environment.

Neo4j + PHP = <3

Michelle Sanver - English - Track PHP - Thursday, 13:30

Traditional relational databases — ironically — are not that good at the complex relationships some modern applications need.

Multiple joins and complex sub-queries can gradually take a toll on performance.

Graph Databases, on the other hand, are all about relationships. In this talk we will look at using the popular Neo4j graph database with PHP to build efficient relational data for OmNomHub: not your average recipe site.

A Journey from Hexagonal Architecture to Event Sourcing

Carlos Buenosvinos - English - Track Advanced - Thursday, 14:20

Event-based architectures such as Event Sourcing provide multiple benefits: scalability, complexity management, auditing, etc. However, let’s face it, getting there is quite hard. We lack skills, expertise and courage.

In this talk, I’m going to show you some tips and tricks to painless evolve your current architecture towards Event Sourcing, one small step at a time. We’ll start from an Hexagonal Architecture application and we’ll end up in the Event Sourcing doors. The path that we’ll follow is:

  • Hexagonal Architecture
  • Hexagonal Architecture with Domain Events
  • Stepping Stone Architecture (CQRS without Event Sourcing)
  • Event Sourcing

Talk level: Intermediate to Expert

Requirements: Basic concepts of Hexagonal Architecture (Entities, Repositories, Application Services, etc.)

Building a cloud-friendly application

Larry Garfield - English - Track Beginner - Thursday, 14:20

The days of hand-crafted artisanal servers are long over. Modern web applications need to be able to run on many different servers without code changes. Not just different hosting providers, but different environments on the same hosting provider. Whether you're using a legacy dev/stage/prod setup or a modern branch-is-environment host, modern hosting imposes some requirements on your application design but also offers a huge potential for new and powerful tools.

In this session, we'll explore some key guidelines for building a cloud-friendly application, as well as look at some architectural options that a modern hosting platform like SensioCloud enables.

Trend analysis and machine learning in PHP

Michael Cullum - English - Track PHP - Thursday, 14:20

The world we live in is one where data is one of the most valuable assets. There are many different pieces of data we can analyse on all kind of data from analytics of user behaviour of your platform, user generated content, monitoring of exception rates, or when your core business model is to provide some kind of analytics platform. This talk will talk about how you can, in your Symfony applications, perform some simple trend analysis techniques to build models, analyse data to get useful information and spot anomalies.

A GraphQL API: from hype to production

Aurélien David - English - Track Advanced - Thursday, 15:10

This talk will not offer you the ever-lasting debate between REST and GraphQL but intends to show you some real stuff. Increasingly used by web giants like Facebook, GitHub, Pinterest, or Shopify, GraphQL has attracted my curiosity, up to the point to make me use it in production. This conference aims to detail the different problems that I encountered while implementing GraphQL, and give you a description of what it is possible to obtain (we speak of schema). We’ll also discuss the new queries paradigm : giving the client the ability to ask for exactly what one needs, including sorting, pagination without puting aside security. Eventually, we’ll explore the new way of writing data using mutations, while maintaining good performance with application cache.

Making the most out of Symfony Forms

Mihai Nica - English - Track Beginner - Thursday, 15:10

All web applications have forms, either simple or complex. This talk will address some of the complex scenarios with forms that change depending on the data entered and have dynamically generated fields (server and client side). Using form events and taking advantage of the form rendering flexibility can create some impressive results. The examples are based on real-life scenarios I have encountered in the five years of using the Symfony Framework.

Discovering and solving performance issues

Denis Brumann - English - Track PHP - Thursday, 15:10

Over the last few years I mostly worked with legacy PHP applications and one thing that comes up in each project is performance. Unfortunately more often than not discussion around performance issues are purely hypothetical or around micro-optimizations or the collected data is misinterpreted. In my talk I want to lay out how to effectively anticipate, identify and mitigate performance issues in a Symfony application. I want to discuss how to approach performance optimizations including micro-optimizations, some tools available to a developer for investigating and monitoring performance issues as well as some ways to improve performance, including a quick introduction to both application and HTTP-caching.

Lessons learned building the Composer internals

Jordi Boggiano - English - Keynote - Thursday, 16:55

This session will dive into Composer's guts to see which choices we made worked and which ones did not.

After six years and a few hundred thousand users, the Composer code has been through many iterations, problems and successes. Let's have a retrospective to see what we can learn from it.

PHP 7 and beyond: 7.2+

Sara Golemon - English - Keynote - Friday, 09:00

Still desperately clinging to your PHP 5 installation? We'll take a look into the latest offerings of PHP 7 from raw performance, to exciting new language features bringing developer efficiency to a higher level. With the next release of PHP a mere two weeks away, now is the time to take the plunge and never look back.

Mastering regex incantations

Tomasz Kowalczyk - English - Track Advanced - Friday, 10:10

Regular Expressions are one of the most powerful tools for every engineer in the IT industry. Though their reputation suffers from being misused or misunderstood, they still provide vast amounts of power coming from the theory behind them. In this talk, I will provide not only the necessary knowledge to understand how they work and what powers they bring to the table but I'll also explain some of the "arcane incantations", ie. some of the very powerful but hardly known RegEx constructs.

Webpack Encore - Pro JavaScript and CSS for Everyone

Ryan Weaver - English - Track Beginner - Friday, 10:10

Ready to write an amazing front-end for your app? There are so many great tools, like React, Vue.js, module loaders, Sass, LESS, PostCSS and more. But, they all have one thing in common: you need to configure a build system before you write a single line of code!

Thankfully, there's Webpack: the leading tool for processing & bundling your JavaScript and CSS. There's just one problem: configuring Webpack is tough and requires a lot of Webpack-specific knowledge.

Say hello to Webpack Encore: a library built by Symfony to quickly bootstrap a sophisticated asset setup, complete with minification, SASS processing, automatic versioning, Babel support and everything you need to start writing great JavaScript quickly. In this talk, we'll also learn about using JavaScript modules, how to bootstrap a framework (like React) and other important modern practices. Give your assets a huge boost with Webpack Encore!

Auditing Symfony apps

Palko Lenard - English - Track Advanced - Friday, 11:05

Often clients already have a working product that they want to improve. In these cases starting to work on the project right away may turn into a development nightmare. Therefore assessing the technical status of the product is very important. Depending on the needs of the client this can be done from several points of view : technical standards, maintainability, performance, security, etc.

This talk is going to cover how can you prepare an audit of a Symfony application, what should you look out for and how can the result of the audit impact further development on the project. I will talk also about what I found to be the best tools for the job and how can you get clients to see the benefits of it.

API Platform and Symfony

Kévin Dunglas - English - Track Beginner - Friday, 11:05

We'll start by creating a fully-featured API in just a few minutes with API Platform, Symfony and Doctrine. The API will support pagination, data validation, access control, relation embedding, filters and error handling. It will expose many formats (JSON-LD, Hydra, JSONAPI, HAL, JSON, XML, YAML and CSV), will be documented with Swagger/OpenAPI and will have a nice UI done in React. Last but not least, the API will respond in a just few milliseconds thanks to its builtin invalidation based cache mechanism.

Then, we will use the ReactJS tools provided by the API Platform to consume the exposed Hydra documentation. In a few more minutes, we will get a Material Design administration interface (a la Sonata / EasyAdmin - but 100% client-side) built with React. Finally, we'll discover 2 nice code generators to bootstrap a SPA (React, Redux and React Router) and iOS and Android mobile apps (React Native).

Dependency Injection Component v4.0

Nicolas Grekas - English - Track Advanced - Friday, 13:30

The Dependency Injection component is one of the central pieces of any Symfony applications since version 2.0. Starting this winter, it has gained many new features that were needed to build the new Symfony 4 experience around Flex.

While used extensively in core, can you leverage them in your own apps? Can you create a lazy iterator in Yaml? A scoped service locator? Configure auto-configuration? During this talk, I'll tell you about the new tags, interfaces or annotations that allow building powerful services. The goal: making your apps always more expressive, thus maintainable.

Building an Open-Source Campaign Platform for the new President of France

Hugo Hamon - English - Track Beginner - Friday, 13:30

This case study will take you to the technical backdrop of Emmanuel Macron's victorious campaign in the French presidential elections of 2017. We will reveal how the En-Marche and SensioLabs teams worked closely together to develop a collaborative, Open-Source and citizen platform with PHP 7 and Symfony to structure the movement. In addition to the technical and political issues involved in this project, we'll present solutions such as continuous deployment with Docker under Kubernetes, continuous integration with Circle CI, SCRUM and Kanban project management, use of Rabbitmq, Symfony 3 new features, and more. We'll demonstrate the importance of choosing these solutions to meet the agility and scalability needs of the highlights of the campaign.

Doctrine Performance Optimization

Anna Filina - English - Track Advanced - Friday, 14:20

Is your Doctrine too slow or using too many resources on the server? In this presentation, you will learn the memory, I/O and CPU usage of different approaches. You will also see learn how to create proofs of concept and benchmarks to make a decision based on science instead of your gut feeling. I will even show you how to automate your performance testing.

Symfony at OpenSky

Pablo Godel - English - Track Beginner - Friday, 14:20

OpenSky is one of the first large ecommerce platforms to use Symfony2. The whole marketplace has been running on Symfony for many years. Over this talk we will share:

  • how we use the framework and other PHP components
  • our deployment process
  • using Doctrine with MySQL and MongoDB
  • things we learned to avoid
  • running a large PHPUnit test suite
  • And more interesting tips on how our team operates with a large code base with a fully remote operation with teams across multiple continents.

A year of Symfony

Sarah Khalil - English - Keynote - Friday, 15:30

A lot happened! 52 blog posts to help you keep up with all new things, a looooot of pull requests, 2 new versions out… Well I'm sure you missed something. Let's review what happened during last year: basically we'll see and/or discover nice new features that appeared since the last year.

SensioLabs

92-98, Boulevard Victor Hugo
92115 Clichy Cedex - France
+33 1 40 99 82 89
support [at] sensiolabs.com

© 2017 SensioLabs - About