A community conference by the sea, with two days of talks.

Friday 9th June 2017

09:00
1
Opening announcements in Spectrum IT Track (10 minutes)

Opening announcements from the PHP South Coast team

09:10
25
The New Revolution
Keynote by Samantha Quiñones in Spectrum IT Track (40 minutes)

In 1969, researchers at Stanford and UCLA collaborated to transmit the first message over what would become the Internet. In just five decades, the repercussions of that moment have echoed through every atom of society. The world is evolving at a pace unprecedented in human history as we use technology to change how we think, learn, communicate, and even how we understand ourselves. Let’s take an inside look at how the fusion of media and technology is reinventing human interaction and the role that we, as engineers and technologists, must play in this important process.

10:00
12
Introduction to functional programming with Phunkie
Talk by Marcello Duarte in Spectrum IT Track (50 minutes)

Been meaning to get to grips with the whole Functional Programming fuss? This gentle introduction, packed with real-world code examples, will explore enough Functional Programming basics to whet your appetite and get you up to speed. We’ll create live coding magic using the beautiful Phunkie REPL, and will cover everything from function composition and pure functions, to high order functions, currying, pattern matching, and the power of lists – all in PHP, thanks to Phunkie!

8
Ten practical ways to improve front-end performance
Talk by Andrew Rota in Jetbrains Track (50 minutes)

The process of improving a site’s front-end performance can be a daunting task, and it’s disappointing when those optimizations don’t have much effect on the metrics that actually matter. The most pragmatic (and rewarding) approach to web performance is one that takes advantage of all the quick, high-impact tactics that are available, while remaining focused on a robust, long-term performance-oriented strategy. This talk will present ten concrete ways you can improve web performance, split between quick tactical wins and longer-term overarching strategies. With these practical tips you’ll be able to start making the changes that will meaningfully improve the performance, and overall user experience, of your web application.

11:15
11
Static Optimization of PHP Bytecode
Talk by Nikita Popov in Spectrum IT Track (50 minutes)

The PHP compiler turns PHP code into “opcodes”, which are then executed on the Zend Virtual Machine. To improve performance, it is possible to optimize these opcodes prior to execution. PHP 7.1 introduces a sophisticated opcode optimization infrastructure, which uses static single assignment (SSA) form and type inference to enable more advanced optimizations. An example: Normally, an “add $a, $b” instruction first has to check the types of $a and $b, to determine whether to perform an integer addition, or a floating point addition, or maybe even an array or GMP addition. However, if we can statically determine that $a and $b are integers, we can use a special “add_int $a, $b” instruction, which does not perform these type checks and thus improves performance. Because PHP is very dynamic, doing this is harder than it may sound… This talk introduces the new optimization infrastructure, the optimizations based on it, and discusses which parts of the PHP language are particularly hostile to this form of optimization. This is an advanced talk, but I will try to present the topic in a way that does not require a strong compiler construction background.

Long running PHP processes
Talk by Giorgio Sironi in Jetbrains Track (20 minutes)

PHP has outgrown being a simple Apache module, being used on the command line not just for development tools but also in production. Long-running PHP processes may live for hours or days consuming messages from queues or background jobs to execute; this talk will guide you through several years of tweaks to make them reliable and performant. There are many things that can go wrong when leaving a PHP process around on your servers, but it is possible to solve the problems of crashing, memory leaks, interruptions, lost logs, or monitoring. The goal of having smooth operations has to be kept in mind - scaling your servers and traffic without scaling the people needed to look after them.

11:45 From Hamfist to Hamcrest: more expressive tests in PHP
Talk by Gareth Ellis in Jetbrains Track (20 minutes)

Have you ever struggled to write expressive, easy-to-read test assertions in PHP? Ever written tests where you have to write way more lines than the actual code you’re testing? If so, then Hamcrest PHP could be the answer. In this talk, I’ll show you how to use Hamcrest to make your tests read more like English sentences, and how to leverage the power of custom matchers to make sure that you’re truly asserting against what you want to.

13:10 Managing dependencies is more than running "composer update"
Talk by Nils Adermann in Spectrum IT Track (50 minutes)

You’ve used Composer so many times now, but how deep is your understanding of your dependencies? Can you get yourself out of every tricky situation? This talk will cover a broad range of dependency management subjects: From assessing the risk, e.g. through BC breaks, introduced into your business critical code by third party software, all the way to hand-on tips for working with composer in the real world, e.g. what to do if composer.lock conflicts during a merge, when your colleagues and you modified dependencies in different ways.

Get GOing with a new language
Talk by Kat Zien in Jetbrains Track (50 minutes)

Learning more than one programming language is key to becoming a better developer. It is like adding a new tool to your toolbox. The more tools you have, the easier and quicker you’ll be able to tackle whatever job you need to do. You’ll also be able to use the right tool for the job, and who doesn’t like that?! I picked up Go (golang) about a year ago as it was becoming more popular among developers. Coming from a PHP background, I had no idea what channels or goroutines were or how is concurrency different from parallelism. I’ve got to say, it was a whole new world. Very different, but very cool. I was hooked! By happy coincidence, my company was looking to rewrite a legacy PHP app in Go. It was over 2000 lines of procedural and messy PHP4 with more downtime than I’m willing to admit to. I took on this project, and soon enough we had a much faster, more maintainable and much more reliable app for our customers. Go gave us options we would not have in PHP. The goal of this talk is to give you a good idea of what Go is and how it compares with PHP. We’ll look at the language itself as well as the tooling and communities around it. Even if you’re not sold on Go by the end of it, I hope you’ll leave inspired to go out there and learn whatever language you wanted to look into next.

14:10
8
Driving Design through Examples
Talk by Ciaran McNulty in Spectrum IT Track (50 minutes)

Modelling by Example is a set of practices that combine BDD (Behaviour Driven Development) and DDD (Domain Driven Design) techniques to create a workflow that directly drives code from a starting point of user requirements. We will see how a simple feature can be defined via conversation with stakeholders, captured as automatable requirements, and expressed directly in the object model using tools such as Behat and PhpSpec.

Knit 1, Perl 1
Talk by Katy Ereira in Jetbrains Track (20 minutes)

Knitting and programming; a creative hobby with sticks and string, and writing complex logic in computer languages - could they be any more different? Actually, they’re not so dissimilar. Let me show you where knitting and programming intertwine!

14:40
4
What's New in Xdebug?
Talk by Derick Rethans in Jetbrains Track (20 minutes)

In this talk I will cover the latest additions to Xdebug. Although it is 15 years old now, many features have been added in the last few months and years. In this talk, I will introduce and explain these new features, and some more notable features added in the last few years.

15:25 Don't work for PHPCS, make PHPCS work for you
Talk by Juliette Reinders Folmer in Spectrum IT Track (50 minutes)

Congratulations! Your team has chosen a coding standard to use and you’re well on your way to a consistent code style for all your projects. But… there are some extra things you’d like to check for, some rules you really can’t be bothered with and some which sort of fit your needs, but not completely. Now what? Come and learn how to make the PHP Codesniffer work for you and how to streamline the PHPCS related work-flow along the way.

Content Security Policies: Let's Break Stuff
Talk by Matt Brunt in Jetbrains Track (50 minutes)

Content Security Policies are another tool we should have in our security toolbelt to help protect users of our sites. In this session I’ll cover what they are, why they’re needed, how they work and the limitations on what they can & cannot do to protect users. I’ll demo attacks a CSP will block, break things, show what the different CSP directives & options will do and introduce some of the tools available to help with implementing a CSP on your sites!

16:25
3
Test-driven Laravel
Talk by Amo Chohan in Spectrum IT Track (50 minutes)

How many times have you overheard, (or possibly said yourself) - My boss would never allow more time for testing - It takes too long to write tests - It’s too difficult to learn how to test, I wouldn’t know where to begin! I’ll hold my hand up - I’ve said most of these at one point or another. Testing can be overwhelming. In this talk I’ll break down the concept of TDD into a an easy-to-follow set of steps and demonstrate the process of building an entire feature using Laravel in a test-driven approach. You’ll learn how the implementation of your application should be shaped by the tests that are written up front. You’ll implement the right thing more often, and improve your code - in less time than you needed without tests.

13
Don’t believe everything you learn
Talk by Michael Heap in Jetbrains Track (20 minutes)

A minute always has 60 seconds, right? Wrong! Ok, but a country always has a capital city, right? Wrong again! Come and join us for a lighthearted talk about some of the common falsehoods that developers believe which cause issues in real, production systems. We’ll cover the classics like timezones and names, as well as some new contenders such as geography and software versions.

16:55
11
My Favourite PhpStorm Surprises
Talk by Gary Hockin in Jetbrains Track (20 minutes)

PhpStorm is the industry’s leading IDE, but it has so many features that some of the coolest stuff can just sit there unexplored forever. Only since I started working at JetBrains have I discovered some of my now most used tools. Let’s have a quickfire run through what I think are my favourite features of the latest version of PhpStorm.

17:30
4
Food, bar and social in Jetbrains Track (5 hours, 30 minutes)

- Laser Quest sponsored by Roave - Board & card games from A Fistful of Dice - Token bar including craft beer and selection of rum (as well as wine, cider, etc.) will be located in Jetbrains track

Saturday 10th June 2017

10:00 5 Features of a Good API
Talk by Rob Allen in Spectrum IT Track (50 minutes)

Everyone is writing APIs from micro-services through to full applications, but what makes a good one? In this session we’ll look at five of the more important features that you should think about when creating an API. These are the features that ensure that your API plays well with HTTP and, more importantly, make your API a delight to maintain and work with. I want you to ensure that your API is a good HTTP citizen, while also providing developer-friendly features like thoughtful error handling and documentation. Give your API a competitive edge by making it sane so developers will want to work with it.

1
Hands on space
Workshop by Rowan Collins in Jetbrains Track (6 hour)

For the second day of the conference, the second track will be transformed into a Hands On Space - somewhere for you to put into practice the skills and technologies from your favourite talks, collaborate with other attendees, and have some in-depth discussions from the experts. Check the whiteboard to see who you can expect to work with during each hour of the day - and maybe add your own name to the list. Perhaps you'd like to give a face-to-face tutorial on your favourite framework, or show people how easy it is to contribute to your team's open source project? The space will be open to all throughout the day, so grab a seat, plug in your laptop, and get involved!

11:00
14
Status Change: Now Using Event Sourcing
Talk by Emily Stamey in Spectrum IT Track (50 minutes)

Being flexible to changes in business process makes our jobs easier, and it helps our applications adapt to those changes with minimal code changes. One of the biggest adaptions in our applications has been the addition of Event Sourcing to make a note of an Event that happened in the system. With these Events, we can affect change immediately, or even later. This is most helpful in our reporting interfaces. We can build, change, and throw away our reports very easily. This is much easier than our older reports being generated by large SQL queries. Attendees will learn: - idealogical differences between status flags and events - triggering events in your application - handling events to reflect the state of your application data - building reports from events that are easy to change

13:00 How to handle ?
Talk by Andreas Heigl in Spectrum IT Track (50 minutes)

You’ve got strange characters like “�” or “ö” display in your application? Yes, handling non-English characters in application code, files and databases can be a challenge, to say the least. Whether that’s German Umlauts, Cyrillic letters, Asian Glyphs or Emojis: It’s always a mess in an international application. In this session you will see why that is and how handling characters evolved in computing. You will also see how handling characters in applications and databases can be done less painfully. And don’t worry when EBCDIC, BOM or ISO-8859-7 are Greek to you and your Unicode is a bit rusty: we’ll have a look at them too!

14:00 RegEx Is Your Friend
Talk by Liam Wiltshire in Spectrum IT Track (50 minutes)

RegEx is scary. At least, if you ask Google, that’s what you might think (257,000). And slow (441,000). In fact, regular expressions are neither of these, and indeed are a powerful tool in your utility belt. In “RegEx Is Your Friend”, Liam aims to provide some real-world usable examples of how RegEx can be used in a way that’s fast, explaining how the different parts of regular expressions work and execute to make it understandable for all. No matter if you don’t know your ‘$’ from your ‘^’, you are not sure when to use RegEx (and when not to), or you just need to find a way to make your RegEx run faster, there will be useful help and tips for everyone.

15:15 Connecting people - Identity in your platform
Talk by Rowan Merewood in Spectrum IT Track (50 minutes)

Passwords are bad. We all know it, but we also know you’re not going to build a service that doesn’t use them - not if you like paying the rent. However, we can do a lot better. We’ll take a whirlwind tour through the aspects of connecting people to your service, from generating passwords, not using passwords at all, creating users with one tap, identity providers, automatic cross-device sign-in, and password managers. Sign-in should be simple.

16:15
4
Closing speech & prize draw in Spectrum IT Track (20 minutes)

From the PHP South Coast team and Spectrum IT.

16:35
16
Ethical Engineering
Talk by Christopher Hoult in Spectrum IT Track (50 minutes)

Our increasingly connected world, along with the promises of Big Data and Cloud Computing, offers us multitudes of opportunities to model the world and build powerful technology to improve not only the companies we work for but the lives of many. Yet far too often we, as engineers, focus on providing a solution to the problem at hand and overlook the problems that the solution itself might cause. In this talk, I examine some of the issues our world throws up, and asks what it takes to engineer ethically.