THURSDAY 20 FEBRUARY 2014
Codebase & Deploy Track
Affiliate Window Track
FRIDAY 21 FEBRUARY 2014
Codebase & Deploy Track
Affiliate Window Track
There are now more people building apps, or any piece of technology, in their free time, than wooden chairs some hundred years ago. It’s not that we no longer need great chairs, but making one is bloody difficult, and not that easy to get into, but coding something can lead to the world-fame of a new billion dollar startup. Yet more chairs have literally withstood their customers than the current flood of apps manage to even get any attention. And these guys have tried every wood, style and form combination, even so far as telling me that they could solve all of my problems if only I sat on their chair. I mean app. Let’s talk about that.
There exist quite a few misconceptions when it comes to the Dependency Injection (DI) pattern. While the principal pattern is easy to understand, it can be difficult to succeed with DI. In this session I will share some of my real world experience with DI. I will guide you to use DI in "The Right Way™" to get the most out of it and to increase the maintainability of your application.
Here's one to give the PHP bashers a well-deserved black eye! Twitter is one of the world's best know social media sites, handling over 500 million public tweets a day (that's around 6,000 tweets a second). Together, they're delivered to select partners as a 'firehose' of data, who in turn deliver it on to their customers. DataSift is one of Twitter's firehose partners, and when someone presses 'Send' in their Twitter client, we aim to get that tweet into the hands of our customers in about 1 second. And PHP plays several key roles in making that possible. Come along and hear Stuart explain just how.
Software Architecture is hard. And when your business grows, its getting even harder because scaling doesn’t come out the box and it’s not only the software which grows it’s also the team. So you have to find a way how to scale your software in a way that it stays easy maintainable for growing teams and scalable. I’d like to talk about Service Oriented Architecture in general and also share some experience and give some examples where SOA would save you in a tough spot and maybe places where SOA isn’t the best idea to implement.
Data Mappers (like Doctrine2) help us a lot to persist data. Yet many projects are still struggling with tough questions:
- Where to put business logic?
- How to protect our code from abuse?
- Where to put queries, and how test them?
Let’s look beyond the old Gang of Four design patterns, and take some clues from tactical Domain Driven Design. At the heart of our models, we can use Value Objects and Entities, with tightly defined consistency boundaries. Repositories abstract away the persistence. Encapsulated Operations helps us to protect invariants. And if we need to manage a lot of complexity, the Specification pattern helps us express business rules in the language of the business. These patterns help us evolve from structural data models, to rich behavioral models. They capture not just state and relationships, but true meaning. The presentation is a fast paced introduction to some patterns and ideas that will make your Domain Model expressive, unbreakable, and beautiful.
PHP 5.5 is has been unleashed into the world; bringing some great new features including generators and coroutines, a finally construct, simple password hashing and other small changes. Now PHP 5.6 on the horizon bringing even more changes, including variadic functions and the splat operator. This talk is aimed at developers who use PHP every day and are looking to start new projects with the latest and greatest, or want to future-proof legacy code.
Are you getting your feet wet with AngularJS, but looking to boost your skill level? Do you understand the basics, but get lost in the sea of available tools and resources? As a member of the AngularUI team, Nate has his finger on the pulse of the AngularJS community, and the state-of-the-art in tools and app-building practices. Be ready to take notes and ask questions in this resource-heavy talk.
Everyone wants a more organized database with less repetition, right? Quick answer: normalise! Great, but what does this actually mean for the structure of your tables? Which normal form should you use, and what is a normal form? Learn the pros and cons of normalisation techniques and find the right balance for your next project.
Whether you use Memcached or another caching technology, such as APC or Zend Server Cache, having an application level cache is important for performance & scalability. Learn some best practices for making this cache layer the most efficient & easy to use. Techniques such as 'biggest smallest reusable item' & automatic write-through caching will be covered.
The web is a security minefield, with many hazards like cross-site scripting, cross-site request forgery, and SQL injection. In this talk, I will explain how Facebook handles these common problems with good security libraries, automated detection, and lint rules. I'll describe some of the attacks that we have seen, and I will talk about some of the lessons that we have learned.
Application metrics are extremely important but are often hard to gather as our PHP Applications differ significantly. Using StatsD and Graphite we can gather metrics from our applications no matter what their shape or form. In this talk I will discuss how you can use Statsd to send various metrics of your PHP applications to Graphite. StatsD is a simple NodeJS daemon for easy stats aggregation and makes it simple to plot application metrics on a graph in Graphite. Using the metrics that are gathered its possible to get an overview of what is happening with our applications in near realtime which is extremely useful. Graphite additionally allows us to produce easy understandable graphs and dashboards which once analysed can be used to improve our PHP applications. My talk will cover everything from setting up Statsd and Graphite to how you gather the metrics from within your PHP applications. After the talk developers should be confident enough to go away and implement these technologies in their applications.
Lots of people think that using Symfony2 is an overkill for small websites and also that it is too slow for big projects. I will try to demonstrate that it is just not true. The talk will cover all those tips and tricks which are necessary to maximize performance and achieve scalability in big traffic applications using Symfony2. From system configurations (both in PHP/Opcode caches and Symfony2), autoload optimization, some easy quick wins, how to profile properly with xDebug/XHProf, SQL vs NoSQL to even some war stories (and solutions) from Hailo, Privalia, Ulabox, Emagister and SocialPoint which are high traffic environments I've worked for.
When you use a RDBMS, it offers a number of features to protect data integrity and protect against concurrent modification of data. Concepts covered in this session include table/row locks, MVCC, deadlocks & lock waits, transactions and isolation levels. Attendees will also get a better understanding of various database errors, and know how they are expected to be handled by applications. Examples will use MySQL 5.6, but cover theory that is 90% applicable to all databases.
The Standard PHP Library (SPL) might be one of the most powerful, yet the most unused part of PHP, but you are one of those lucky developers who have discovered it! But now what? The lack of documentation about SPL makes it that a lot users don't really harvest the power that SPL brings. During this presentation I will dive into the numerous iterators, data-structures and interfaces that SPL defines and when & how to implement them in your own projects, but we will talk about the edge-cases as well, as in SPL land things don't always are what they seem..
If you want to get involved in open source but keep talking yourself out of it, let me show you how to take that first step. I'll cover the mechanics of contributing, from saying hello and installing the project to selecting a bug, your first pull request and code review. If you're already a contributor, contribute to my talk and share your valuable ideas.
SATURDAY 22 FEBRUARY 2014
Codebase & Deploy Track
Affiliate Window Track
PHP started as a simple scripting language for embedding dynamic data in HTML pages. It’s grown to be a mature, flexible, very powerful language, and yet its roots still lie in the web; PHP powers the bulk of the world’s largest Internet sites. Although the language has matured, the underlying infrastructure has, in large part, remained fairly static. With the growth of cloud computing, however, there’s an opportunity for PHP developers to leverage the power and flexibility of virtualization to build applications that are distributed, scalable, and capable of handling massive amounts of traffic.
This talk reviews some of the key developments in PHP over the last few years and outlines how PHP can keep pace with the explosive growth of the cloud by rapidly prototyping architectural designs, managing infrastructure dynamically, and taking advantage of virtually unlimited storage and compute power.
We’ve all experienced performance issues and we would typically turn to a profiler. Whether that’s something in userland, or a tool like xdebug or xhprof, the reason is the same: to figure out why our code is slow. This talk will take that inspection a step further and look under the hood of PHP, at the C internals, for common performance problems. If you’ve ever wanted to know exactly what your code is doing, and why ++$i is faster than $i++, this talk is for you. Note: This is an advanced talk, you should be extremely familiar with PHP and have some experience with profiling if you are to get the most from this talk.
In this world where we have moved beyond web pages and build ever-more asynchronous applications, often things that go wrong result in errors we can't see. This session will give a very technical overview of HTTP and how to inspect your application's communications, whether on the web or on a mobile device. Using Curl, Wireshark and Charles, we can quickly and painlessly identify where the problem exists, without spending a lot of time making changes to our application to identify a problem. Whether you're debugging a backend API, an ajax request or an unexpected timeout, these are the tools you will want to have at hand.
Zend Framework 2 is a complex beast, and has been wrongly criticised for it's performance in a number of places. There are plenty of ways to eek out extra cycles from Zend Framework 2, some of them are known, some, not so much. Fisrtly you'll be introduced to the ways to benchmark and profile your ZF2 app, then we'll discuss the out-of-the-box improvements such as config caching and compiling, but also cover some bespoke modules designed to help your performance. Finally, we'll cover some coding best practices that can really help to squeeze that little extra out of your entry level VM.
Quick, what's the proper way to show a number as currency for India? 1.2 billion people would like to know. No pressure. These common localization issues come up more and more frequently. Learn to use the improved intl extension to order lists, format numbers, split text into pieces and show calendars just like a local would. It even helps with character sets and time zones - 2 out of 3 things that commonly break the Internet. ¡Muy bueno!
Linux distributions are using very powerful package systems for deployment of software for many years now and it's time that developers start using those systems as well. We talk about how to setup up a private repository, how to create RPM files and how incorporate this in your version control system so everything will work automatically. We also will talk about the pro's and cons of the system, how to work with different package flavors and how we can use the system for other purposes. Both you and your system administrator will become best friends again!
Put on your trench coat and grab your magnifying glass as we walk through investigating a real-life hacked WordPress website. You'll experience first-hand what tools can help you find the vulnerability and the point of entrance. Learn what the hacker might have left behind, how to seal up the most common problem areas, and how to set up notifications to help you spot a hack more quickly in the future. Even though we will be going through a WordPress website, most of the tools discussed are applicable to any website.
This talk will focus on XSS, CSRF, Session Hijacking, SQL Injection, and other security vulnerabilities that need addressed in Website Development. This talk will cover a gambit of these issues, giving specific code examples showing what the vulnerabilities look like and how to identify them. It will then present solutions to close them down and protect yourself.
OPCache is PHP's default OPCode cache mechanism, which has been introduced with PHP5.5. You can use it for 5.3, 5.4 or 5.5. This talk will detail how OPCache works, what it does to PHP and how to set it up so that you can deal with maximum performance and stability. We'll recall how PHP works, how its engine works, and how OPCache interacts with this complex machine to effectively accelerate it. You'll know everything about OPCache at the end of this talk.
In this talk we are going to see how PHP can be used for all kinds of terrestrial and non-terrestrial purposes. That doesn't mean that we will be looking at sending PHP up with the next Mars rover but instead we will (try to) figure out how calculate the positions of bodies in the solar system. This is for example useful for calculating the moon phase, or sunrise/sunset. We will also look at coordinate systems on solar system bodies and do calculations with that. I have a couple of other things up my sleeve too. Expect trigonometry and other maths, and rocket science/explosions.
It's nothing new that speed is important for the success of any web application. Only a few hundred milliseconds may lie between a user leaving your site or staying. Unfortunately performance problems are oftentimes hard to fix and even harder to pinpoint. In this talk I will show you how we at ResearchGate measure web application performance, which means not only timing how long the PHP backend took to deliver a page, but also tracking the speed the users actually perceives in the browser. After that you will see how you can track down and analyze any problems you found through measuring with the help of tools like Xdebug, XHProf and the Symfony Debug Toolbar. And if you still need to get faster after optimizing and fixing all these issues, I'll introduce you to some tricks, techniques and patterns to even further decrease load times.
Let's have a close look into the Red-Green-Refactor cycle and understand the subtleties of each step. When we go down the rabbit hole of Test Driven Design we sometimes take too big steps leading us to many failed tests we just can bring back to green without writing a lot of code. We need to take a step back and take the shrinking potion of baby steps again. This very illustrative talk, full of test and code examples, will dig into each of the steps of TDD to help you understand how to keep a sustainable pace that will lead you in the right track.
Vagrant is one of the most mainstream tools on the devops world nowadays, specially between Open Source developers - now we can finally forget about the environment and focus on the code, without worrying about the “works on my machine” problem. This talk will review Vagrant basics and focus on its main provisioners - Puppet, Chef and Ansible - giving an overview of each one and how we can use them to provision a PHP development server. The talk will include a set of protips to create better and optimized vagrant development boxes for different kinds of projects.
MySQL 5.6 was released in February 2013. It is the largest release of MySQL in history (measured by code size increase) and contains a number of very useful enhancements to replication, performance and security. What I want to talk about however is how it's now much easier to run in production with features like online DDL and performance_schema.
At Google I/O 2013 back in June, we announced the addition of a new PHP language runtime for App Engine. Google App Engine allows you to build web applications on the same scalable systems that power Google applications. In this talk we’ll take a look at building and running highly scalable PHP applications on the App Engine platform. Here’s some of the topics that we’ll cover:
- Deploying and running popular PHP applications and frameworks on App Engine
- Differences between applications running on App Engine and a typical LAMP stack
- Using asynchronous calls for I/O requests
- Utilising App Engine services such as task queues, memcache, mail and servers.
- Composing applications with Google Cloud Storage and Google Cloud SQL
High-level languages and platforms abstract away basic computer science problems so we can code quicker and not re-invent the wheel. That said, algorithms are too much fun to just leave as a black box. We'll learn how to analyse and compare sorting algorithms with live demos and visualisations. With an algorithm from the 1800s, it could even be a history lesson too.
*Schedule is subject to change without notice