PHP UK Conference 2012 schedule

Friday 24th February 2012

Rasmus Lerdorf, best known for having gotten the PHP project off the ground in 1995, will give an update on PHP as he sees it in 2012. From PHP humble beginnings as the Personal Homepage project up to what is new in PHP 5.4 and beyond.

The role of data science is becoming more prominent as the big data web emerges. This talk introduces the role of the data scientist and how data mining techniques are being applied, some using PHP. We are not talking application data but about creating new “... value from the data itself, … it’s a data product.” to quote the, O'Reilly Radar Report: What is Data Science?

Data touches everything. Understanding it all is the biggest problem out there to solve. Data crosses all industries, all parts of a business and all that makes up life. The future web is about finding answers, discoveries, stitching together sources, busting data silos to release the next level of collective wisdom for society.

This talk will set the scene of the big data web, share Data Scientist case studies and take a hands on look at text data mining code.

We live in a very fast world, and we want to know everything as soon as possible. We want real-time data! With XMPP you can power your website with realtime data.

I will demonstrate a full setup with an Openfire XMPP server exchanging data with a PHP application. I will also explain the required JavaScript functions in order to send/receive messages through XMPP over BOSH.

Over the past three years we’ve been pushing to improve our automated testing practices within Plusnet and to win full support for it within the company across the spectrum of fellow developers, project managers and upper management. It took a while to agree on software we want to use, and standards we want to follow, but now all new code is being continuously built and tested and the results of that are visible business-wide. We use PHP_CodeSniffer to verify that we follow our coding standards, DocBlox to generate automated API documentation, PHPUnit to run test suites and Jenkins to run all these tools regularly, at least once a day and to generate aggregated reports. On top of that we run acceptance and regression tests using selenium and Behat. Finally, Sonar allows us to create and publish reports visible to everybody and more importantly reports that everybody can understand.

Setting it all up can be a tough exercise, but if you prepare to it upfront you might actually find it quite exciting! So, you strongly believe this is the way you should be developing your code, but you don’t really know where to start? Let me show you how our journey began. You don’t know how to convince your fellow developers to follow you? I’ll tell you how to establish a strong team that will follow you. Your managers seem to be more interested in delivering your project on time and don’t really see a point in spending additional time on unit testing and documenting your code? Maybe you haven’t shown them the benefits of continuous integration in a way they can understand.

The principles of abstraction are drilled into us repeatedly, and we work hard to abstract the layers of our applications. Abstraction between layers is excellent, but what about abstraction within layers, especially the data layer? Many developers still build database-centric applications, and then struggle the day they need an additional or new data source. Learn the reasons why this is a poor design choice, and the best ways to avoid it.

Most developers choose a single cloud solution when choosing a production platform. Nowadays The Hybrid Cloud is the best way to go: combining a stable hosting solution with distributed and burstable unmanaged Cloud platforms.

This talk will combine standard server hosting with cloud platforms such as Azure and AWS for computing, storage & CDN. Besides the technical aspect, there will be a strong focus on best practices from an infrastructure point of view.

As programmers we create the most fantastic systems and constructions out of nothing, and there are endless possibilities in achieving this. Yet we are still confided by the structure and rules of the language we use, which makes programming an exciting profession to be in: in the cross fire of creativeness and boundaries. Our most important tool, no, not Vim, but the brain, can handle this perfectly well. Unfortunately, and much like the rest of the world, there is a clear focus on logic, rationality, and knowledge of the parts. An expert coder is also intuitive, creative, and remembers to include the whole picture.

This talk covers the creative process, our dual CPU-brain and the cognitive skills needed for successful programming. As an added bonus we will also investigate why doing nothing does not mean you are not working.

More often than not, web applications start off as a bright idea, which is then brought into realization at a fast and furious pace, with little eye for anything but result. Once all envisioned functionality is incorporated in the design and the project is launched, developers will be assigned to the next project.

Notwithstanding a few bug fixes, the final - yet essential - step of software development is more often than not, omitted: the security audit. Despite the fact that these checks are regarded as tedious and superfluous, practice shows that it is time well spent: numerous, often severe vulnerabilities come to light.

In his presentation, Sijmen Ruwhof will detail how to incorporate security checks into the software development process. He will also step through the implementation, and caveats of a security audit.

Many services / applications now a day are ill equipped with handling a sudden rush of popularity, as is often the case on the internet now a days, to a point where the services either become unavailable or unbearably slow.

By taking a chapter from the ant colonies in the wild, where their strength lies in their numbers and the fact that everyone works together towards the same goal, we can apply the same principle to our service by using systems such as

load balancers

message queues

gearman

memcache

daemons

and a few others, you can achieve greater performance, more redundancy, higher availability and have the ability to scale your services up and down as required easily.

During this talk attendees will be lead through the world of distributed systems and scalability, and shown the how, where and what, of how to take the average application and splitting it into smaller more manageable pieces.

The web is full of advice focused on improving performance. Before you can optimise however, you need to find out if your code is actually slow; then you need to understand the code; and then you need to find out what you can optimise.

This talk introduces various tools and concepts to find issues with your applications, and tools and concepts that help you optimise the your PHP applications.

At Etsy, we continuously deploy code. New features and bug fixes can go from development to production in 20 minutes. We have maintained this low barrier to deployment over the past year despite nearly doubling the number of people that can deploy.

Communication has a huge impact on the velocity of development and moving forward. We explicitly communicate over IRC, but we also evolve communication patterns through several other vectors, and one of those vectors is our Continuous Integration environment.

In this talk I will not only discuss how communication patterns at Etsy have evolved with our growing development team, but I will also elaborate on how team size, role composition, motivation, culture, and available tools sets can impact communication patterns and subsequently throughput.

Building and deploying an application can be tedious and error-prone. Using Phing's rich set of tasks, easy extension points and simple XML build files to handle the building, packaging, deploying and testing of your application can help you save time and increase quality.

During this talk you will be introduced to the workings of Phing, and how to tailor the tool to your specific situation. A number of demonstrations will help illustrate file transformation, database migration, packaging, application deployment and other real-world use cases.

When dealing with money online, fraud is an ongoing problem for both consumers and sellers. Researchers have been developing statistical and machine learning techniques to detect shady sellers on auction sites, spot fraudulent payments on e-commerce systems and catch click fraud on adverts. While there is no silver bullet, you will learn to flag suspicious activity and help protect your site from scammers using PHP and a little help from some other technologies.

How your application handles unexpected or erroneous events is fundamental to its success or failure, and how it handles them is also fundamental to your sanity when you need to debug it.

This talk will start with the basics Exceptions: what are exceptions, exceptions vs errors and the idea of whether an application requires 'robustness' or 'correctness'. We'll look at the pitfalls of using Exceptions and possible alternative strategies (such as status codes, the null object pattern and an overview of Defensive Programming) and when they might be useful. PHP-specific implementation of Exceptions and PHP's quirks will be covered along with a look the Exception classes provided to us by SPL. We'll also look at how some of the popular frameworks implement Exception Handling and what they get right and what they get wrong. Finally (hah!), we'll delve into PHP's Exception classes more deeply and and look at some of the interesting things you can do with them.

Saturday 25th February 2012

Hugh Williams, the vice president of experience, search and platforms at eBay will us on a tour of key platforms used at eBay. From their Hadoop platform and data stores, to how PHP is used at eBay. Finally giving us some exciting insight to what's coming up that is cool at eBay in 2012.

We all have certainly learned data structures at school: arrays, lists, sets, stacks, queues (LIFO/FIFO), heaps, associative arrays, trees, ... and what do we mostly use in PHP? The "array"! In most cases, we do everything and anything with it but we stumble upon it when profiling code.

During this session, we'll learn again to use the structures appropriately, leaning closer on the way to employ arrays, the SPL and other structures from PHP extensions as well.

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

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

More often than not, web applications start off as a bright idea, which is then brought into realization at a fast and furious pace, with little eye for anything but result. Once all envisioned functionality is incorporated in the design and the project is launched, developers will be assigned to the next project.

Notwithstanding a few bug fixes, the final - yet essential - step of software development is more often than not, omitted: the security audit. Despite the fact that these checks are regarded as tedious and superfluous, practice shows that it is time well spent: numerous, often severe vulnerabilities come to light.

In his presentation, Sijmen Ruwhof will detail how to incorporate security checks into the software development process. He will also step through the implementation, and caveats of a security audit.

At the BBC we are preparing for the some big events in the coming year (the Olympics amongst them), as we don't have to cash to splash on new hardware in the current economic climate and our frozen license fee.

The BBC runs approximate 300 websites all contained with bbc.co.uk and running on the same hardware. This means that a spike in traffic on /weather affects /iplayer and all other sites hosted on our platform.

This talk will show some of the things we've been doing to benchmark our platform (the PHP, ZF portion anyway) and highlight poor performing sections of our site and address them.

I will explain some of the tools we've written and technologies we've used to achieve this on a relatively short timescale with limited budget.

This will cover our experience of using XHProf for the first time and augmenting Zend Framework to generate HAR (Http Archive) format files to expose the service calls our platform makes and how we’ve approached optimising them.

I will then cover, briefly, how we’ve modified our platform to make it as cacheable as possible and the use of Varnish to offset the hits directly on the platform by adding device detection and GeoIP look ups into the caching layer.

Search is fast becoming the foundation for most modern web sites; users need to be able to find the product or information they want fast, accurately and have the capability to refine their search in variety of ways. This talk looks at a number of different Open Source search engines and provides an analysis on their ease of implementation, response times and capability to handle a variety of different data together with an overall feature comparison through a series of worked examples.

WordPress.com is an Alexa Top 20 web website, we get more than 100 million page views per day and 99% of the backend is PHP.

The service has seen tremendous growth in the past couple of years. The presentation will explain how the system and copes with the load. This includes explanation of the software stack, scaling techniques and sharing lots of experience and real-life stats.

Here are some of the topics covered:

Load balancers

PHP-FPM

Page-level caching

Object caching at the application level

Fail-safe and inexpensive serving of terabytes of user-uploaded files per day

When we have an idea, it's tempting to dive headfirst into coding it and making it real. This is a great skill set that we have, but it can potentially harm our dream of building a great web site or a cool app; it is very easy to solve the wrong problem. Worse still, you might not find out that you've built an impractical solution until after you have invested a lot of time and passion into an idea doomed to fail.

In this session, we will explore how we can get closer to the problem we ought to solve, and get a better idea who our potential customers might be. or users We will look at some user experience design (UX) tools and activities that help us refine objectives, pave the way for making decisions, and determine the shape of a minimum viable product—before we need to write a single line of code.

Oracle has been putting a great deal of manpower and money into MySQL product line. This session covers the new features such as NoSQL access to MySQL Cluster or InnoDB data, plug-in authentication, thread pooling, the PHP mysqlnd native driver, and other items that will make your life easier.

The way the code of an application is organized greatly influences its maintainability, extendability and testability. Finding flaws in your object-oriented design as early as possible can therefore make the difference between an awesome application and a not so good one. Luckily there are a lot of indicators to look out for while you are coding, telling you that you should probably consider refactoring - often without even looking at your actual code!

This session is an introduction to the most common code smells and some of the related anti-patterns in OO PHP projects. You will learn how to recognize indicators of deeper underlying problems in your application, and how to prevent these problems from happening in the first place.

Many services / applications now a day are ill equipped with handling a sudden rush of popularity, as is often the case on the internet now a days, to a point where the services either become unavailable or unbearably slow.

By taking a chapter from the ant colonies in the wild, where their strength lies in their numbers and the fact that everyone works together towards the same goal, we can apply the same principle to our service by using systems such as

load balancers

message queues

gearman

memcache

daemons

and a few others, you can achieve greater performance, more redundancy, higher availability and have the ability to scale your services up and down as required easily.

During this talk attendees will be lead through the world of distributed systems and scalability, and shown the how, where and what, of how to take the average application and splitting it into smaller more manageable pieces.

In a world of single page applications, touchable and swipable interfaces, canvas, browser-based storage and geolocation APIs, the humble PHP developer might be forgiven for thinking that their JavaScript colleagues are stealing all the glory. And, er, you'd be right. But getting the most from the browser means being smarter about what you do server-side, too.

This talk explores a number of different approaches to designing your web application's back end to make it easier to build awesome browser based applications.

An introduction to using MongoDB with PHP. Introducing MongoDB and why it’s a good match for PHP and instructing on basic schema design in MongoDB. Demonstrating how to connect to the database, perform CRUD operations and perform queries. Finally, summarize the community tools and libraries available in PHP and why one would use them.

The beauty of PHP is that everybody can read the code and see the inner workings of software. But understanding concepts from reading code isn't often helpful, especially if you are not proficient in that language.

This presentation will take apart many parts of the PHP runtime, describe the concepts behind so attendees understand the inner workings without actually reading C code. Concepts covered include HashTables, the foundation for PHP arrays and many other internal data structures, the reference counting mechanism, which is important for writing efficient code as well as the overall executor.