PHP UK is pleased to announce the 14th Annual PHP UK conference; a 2-day event with 3 great tracks held at at The Brewery, in the heart of the City of London.

Wednesday 20th February 2019

Workshop 1: Kubernetes By Example
Workshop by David McKay in Workshop Track (6 hour)

Kubernetes, the flagship project from the Cloud Native Foundation, has become the de facto standard for running our container workloads. Unfortunately, Kubernetes is a fast moving, ever evolving, sea of complexity. From Pods to Deployments, ConfigMaps to Secrets, and PersistantVolumeClaims to StatefulSets; this workshop will get you on-course. In this workshop, David will walk you through a series of labs that will teach you everything you need to know to take your container based application and deploy it as a self-healing, redundant and resilient application on top of Kubernetes. Let's set sail.

Workshop 2: BDD in Practice
Workshop by Ciaran McNulty in Workshop Track (6 hour)

A tour of BDD best practices, applied in the PHP world. Behaviour Driven Development techniques help us to ensure that the code we're writing is solving real-world problems, and is software that matters. In this hands-on workshop we will build some simple software that fulfills a user's requirement; validate it's functionality using tools such as Behat, PHPUnit and PhpSpec; and learn how our test architecture can support our application's architecture.

Pre-Conference Social
Social Event by PHP UK Conference in Social (6 hour)

Wednesday night kicks off the conference with a night at the pub. We'll be meeting at Finch's pub on Finsbury Square (City Road) from 6pm til close for drinks, snacks, and a chance to meet other delegates before the conference starts. Please rate this session for feedback to the event organisers about the event. There is a separate session to rate the evening's speaker.

Machine Learning and Trend Analysis in PHP
Talk by Michael Cullum in Social (30 minutes)

Machine Learning and Trend Analysis in PHP

Thursday 21st February 2019

Controlling the Variables
Keynote by Thijs Feryn in Main Track (45 minutes)

As a kid, did you have ambitions for the future? "When I grow up I want to become a ...". Maybe you wanted to become a fireman, an astronaut, a nurse, a teacher, a police officer? As you grow up these ideas evolve and get replaced with actual ambitions, actual hopes and dreams. These might be entirely different than your childhood dreams. But how do you reach these goals? How do you accomplish these dreams? By listening to your parents, friends, or teachers? By doing it yourself? Or maybe you have given up and settled for a watered down version of the career and life you envisioned? People often attribute success to luck, and lack of success to incompetence. But what if I told you it's all about controlling the variables? Luck is something that you can control in a way. The more you figure out the context, the key players, the relationships, the values, and the rules of the ecosystem in which you want to succeed, the easier it is to gain from it. The more variables you control, the easier it is to find potential opportunities and to bank on them. Maybe you didn't get lucky, maybe you just saw it coming, and prepared yourself for it. In this keynote talk, Thijs is going to share his experiences, his hopes, his dreams, and how he applies a positive mental attitude to level up in his career, and in life in general. This is not a growth hacking talk, but a simple set of tips and tricks to succeed, even if it seems like the odds are stacked against you.

Massively Scaled High Performance Web Services with PHP
Talk by Demin Yin in Main Track (1 hour)

Over the years, software teams have questioned if PHP is a good choice for building web services. In this talk, I will share how we use PHP on the backend for Glu Mobile’s flagship mobile game Design Home, enabling it to regularly rank amongst the top free mobile games - both in downloads and grossing - since its launch in the Apple App Store and the Google Play Store in Q4 2016. Design Home reaches over 1 million daily active users, serving over 100,000 requests per minute while maintaining a user base of over 30 million players. To date, over 1 billion designs have been made by players. We will deep dive into the thought processes, development, testing and deployment strategy, showcasing what we have achieved with PHP and why we love it and rely on it. My goal is to share with the community that, when done the right way, PHP can be used to build and maintain reliable, massively-scalable and high-performance backends using web services.

Database Encryption in a GDPR World
Talk by Scott Dutton in Mention Me Track (1 hour)

15 years ago, plain text password storing was normal with some using MD5. We look back now and wonder what we were thinking! With GDPR and people thinking more about personal details, its about time we caught up and started storing them securely. There are many uses for personal data and is often sought after by criminals for targeting people. How can you prevent your customers data being used in these attacks ? Encrypting your database is a fantastic way! PHP is the first language to have modern encryption built in to the core, This talk will show you how to use these methods to allow your data to be secure and also not lose the speed which you can currently search for this data in your application. This talk will touch on architecture and will be focused on MySQL although the same techniques can be used for any storage engine.

Best Practices for Crafting High Quality PHP Apps
Talk by James Titcumb in Velocity Track (2 hour)

This prototype works, but it’s not pretty, and now it’s in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it’s imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this tutorial, we’ll take a deep dive into each of these areas, looking at how we can make positive, actionable change in our workflow. This workshop intends to improve your skills in planning, documenting, some aspects of development, testing and delivery of software for both legacy and greenfield projects. The workshop is made up of multiple exercises, allowing dynamic exploration into the various aspects of the software development life cycle. In each practical exercise, we'll brainstorm and investigate solutions, ensuring they are future-proofed, well tested and lead to the ultimate goal of confidence in delivering stable software.

Web Developer's HTTP Toolbox
Talk by Lorna Mitchell in Velocity Track (2 hour)

You say "toolbox", I say "treasure chest". We work on the web building so much more than web pages but these rich, asynchronous applications can suffer from ailments that are difficult for us to see. This session is a tour through some of the best tools around for working with HTTP to observe interaction between components and diagnose problems. By knowing the tools at your disposal and the right job for each, you will be able to quickly and painlessly identify and fix HTTP-related problems - and then get to the pub on time! I mean, get the next thing done ;) Whether you're debugging a backend API, an asynchronous client request or an unexpected timeout, these are the tools you will want to have at hand.

11:30 Running Your PHP Site on AWS Lambda
Talk by Neal Brooks in Main Track (1 hour)

Want to have immediate & easy website scaling, but also get rid of costly servers as they’re sitting idle 80% of the time waiting for visitors? Heard something about PHP and layers on AWS Lambda but have no idea what it means? You're not the only one! In this session we’ll get ourselves up-and-running with a PHP website on Lambda.

Dive Deep into Blockchain
Talk by Tomasz Kowalczyk in Mention Me Track (1 hour)

The blockchain is a hot new topic in the technology due to the rise of various cryptocurrencies, Bitcoin being a most prominent example. How does it work? What advantages does it give? What problems do they solve? What problems can be solved that way? I want you to dive with me into the immutable world of blocks where I will explain everything, from a simple hash, through Merkle trees, up to implementing your own blockchain.

13:30 Your App Lives on a Network - Networking for Web Developers
Talk by Wim Godden in Main Track (1 hour)

Our job might be to build web applications, but we can't build apps that rely on networking if we don't know how these networks and the big network that connects them all (this thing called the Internet) actually work. I'll walk through the basics of networking, then dive a lot deeper (from TCP/UDP to IPv4/6, source/destination ports, sockets, DNS, switching, firewalling and even OSPF, VRRP and BGP). Prepare for an eye-opener when you realize how much a typical app relies on all of these (and many more) working flawlessly... and how you can prepare your app for failure in the chain.

Storing Non-Scalar Data
Talk by Derick Rethans in Mention Me Track (1 hour)

In this presentation we will look at storing complex data in a single field. Many noSQL solutions are created around this (such as Redis’ lists, sets and hashes; MongoDB’s records), and many relational database now also support storing complex data in a single field through specific data types (such as PostGreSQL’s JSONB or hstore). Each of the different database engines support different things, and handle these data types in different ways. In this session we compare the different approaches to storage, indexing and interactions with these data types in different databases

Deploying your first Micro-Service Application to Kubernetes
Talk by Bastian Hofmann in Velocity Track (2 hour)

Kubernetes is a very powerful container orchestration platform that is quickly gaining traction and gives you lots of benefits in deploying, running and scaling your microservice web application. But it has also a steep learning curve. In this workshop you will deploy and scale your first application which consists of multiple Micro-Services to Kubernetes and learn how you can use Persistent Storage. If you want to not just watch, but also program along yourself, have Git, Docker and the Kubernetes CLI kubectl as well as a IDE or Text Editor of your choice installed on your system.

Getting Going with Automated Testing
Talk by Gary Hockin in Design Track (2 hour)

Automated testing is an incredibly useful tool for any developer. From emerging design with unit tests to preventing regression bugs with acceptance tests, getting a computer to run tests instead of testing manually is a huge step forward and saves vast amounts of time. Where do you start with automated testing? It's an intimidating topic and can be confusing to understand what all the techy speak means, let alone how you get going. But writing automated tests shouldn't be difficult, and can and should be part of your daily workflow once you understand exactly what to test, and how to test it. In this workshop, we'll introduce WHY and HOW you can get started with unit and acceptance tests, and touch on integration testing. By the end of the workshop, you'll understand how you can leverage automated testing in new and existing projects, and be ready to save time and energy when developing.

14:45 MySQL 8.0 - Not Only Good, it's GREAT
Talk by Gabriela Davila Ferrara in Main Track (1 hour)

Sick and tired of "X technology is only good for starting out; after you do, move to Y"? Good news - you don’t need to move away, you just need to get in further! In this talk, you'll learn about improvements in the newest version of the most used database in the world. What are Window Functions? How do you use CTEs? How can the new default encoding help me and what should I look for when upgrading versions?

Learning The How's and Why's of Machine Learning
Talk by Liam Wiltshire in Mention Me Track (1 hour)

Since it's founding, Tebex has processed over 18 million payments for games servers around the world. This is a rich data source, and one that we've significantly under-used. We know there should be ways of using this data to improve our product and to make our merchant's lives easier - how and where to start, now that's a totally different question! Join Liam as he shares Tebex's initial experiences in experimenting with machine learning to use past data to prevent fraud in the future - different algorithms we've tried, (many) failed experiments, the situation today and plans for the future.

Everything is Awesome - The LEGOⓇ Approach to Being an Awesome Co-worker
Talk by Paul Verbeek-Mast in Main Track (45 minutes)

?Everything is cool when you’re part of a team!? The Lego Movie came out almost 4 years ago, and it taught children everywhere the importance of teamwork. And what teamwork, and working in harmony, actually is. Let’s just hope that those lessons really stick with these kids. Because let’s be honest, we’re making a mess of it. But it’s not too late for us. We can learn from the Lego Movie as well. I’ll show you how you can help to make sure everyone feels safe and respected in your team and your company. How you can feel better being the unique person you are within your team. And how you can make your, and everyone else’s, life more awesome!

Mid-Conference Social in Social (3 hour)

Thursday evening we'll be hosting our main social event at the conference venue. After talks finish at the end of the day we'll move to the King George for drinks, snacks and chat from 6pm til 9pm. We'll be serving some free drinks and beef burgers, veggie burgers, chips and nibbles.

Friday 22nd February 2019

From Good to SOLID - Becoming a Better PHP Developer
Keynote by Katerina Trajchevska in Main Track (45 minutes)

Working with companies from early-stage startups to Fortune 500, I've experienced both the struggle of continuing someone else's work and the joy of it. The difference is only in their approach towards the design of their code. It's a minor effort if done on time, with a huge impact on the overall development of the software. In this presentation, we'll focus on what distinguishes a good developer from a strong one and learn how to stand out from the crowd. After this presentation, you'd understand how to incorporate the SOLID principles in your daily work and design your code for extendibility. You'd learn how to write code in a way that will make it easy to go back to a feature you developed a year ago and extend it with additional functionality in minutes, not hours.

10:15 Microservices Gone Wrong
Talk by Anthony Ferrara in Main Track (1 hour)

Microservices are the latest architectural trend to take the PHP community by storm. Is it a good pattern? How can you use it effectively? In this talk, we'll explore real world experience building out a large scale application based around microservices - what worked really well, what didn't work at all, and what we learned along the way. Spoiler alert - we got a lot wrong.

Test to Break Principles
Talk by Rob Waller in Mention Me Track (1 hour)

The talk aims to highlight the importance of testing, why developers must spend more of their time testing, how testing generates more robust applications and why testing makes developers' lives easier. The talk is based around a live coding demo. The talk will: Explain the difference between tests that prove an application works and tests which aim to break the application logic - Highlight how test to break principles force developers to introduce logic to handle unexpected behaviour - Show how test to break principles result in more robust applications as developers write code that can only be used in one way - Encourage developers to apply test to break principles to all types of tests, including manual tests

Talk by Mike Lehan in Velocity Track (2 hour)

There are a great many reasons your application can benefit from moving to the cloud, but enough requirements for retraining, uncertainty around cost or complexity and just plain worry about what can go wrong to delay or prevent such a move. When my business moved to the cloud we learned that there are ways around many of these challenges, allowing you to move your application in a way which might not be best practice but which works and gives you a solid platform from which to advance and improve your cloud implementation. In this tutorial we'll look at key building blocks to put a LAMP application onto AWS, what might cause problems for your individual use cases and how to mitigate these. As well as basic plans to get you started we'll look at pathways to modify your application and train your team to take more advantage of cloud native features and adhere to infrastructure and security best practices in a way which allows you to keep running your team and your business.

A Practical Introduction to Strategic Domain Driven Design
Talk by Pim Elshoff in Design Track (2 hour)

Knowing how to do things right is half the battle. Knowing how to do the right thing is the under appreciated but essential other half. In this workshop we'll learn how to discover the language of our clients. We will gracefully evolve our understanding from nothing to something and use various modelling tools to grow our understanding of the problem. If you want to have better conversations, make more useful models, and have the optimal preparation for writing code, then this is the workshop for you. Topics include context mapping, event storming, and value mapping.

11:30 Does Your Code Measure Up?
Talk by Adam Culp in Main Track (1 hour)

After days, weeks, or months of coding many developers don’t know how to gauge the quality of their code. I’ll introduce tools to grade, benchmark, and analyze PHP code in an automated fashion allowing developers to write better quality software. Then I’ll explain key metrics to help understand what may need to be refactored, and use code smells to point out bugs before end-users discover them. Attendees will see how to use these tools, know where to find them, and be able to implement them in their own workflows.

More Secrets of Cryptography
Talk by Christopher Riley in Mention Me Track (1 hour)

Alice and Bob have covered the basics of secure communication but cryptography can offer us more than this. After a brief refresher on the basics, we'll take a look at some of these other aspects of cryptography including hash functions, elliptic curves and quantum cryptography. Then we'll take a look at some practical applications answering questions such as: can I trust a web of trust? or should I use a block chain for this?

13:30 From Dev to Prod with GitLab CI
Talk by Stephan Hochdörfer in Main Track (1 hour)

Continuous Delivery Pipeline as code is key helping you to ensure long term maintainability. Treating your pipeline as code helps you to version it in your SCM of choice, makes changes easily traceable and lets anyone on your team make required changes. In this session I will show you how we build and maintain our Continuous Delivery pipeline using tools like GitLab CI, Docker, Nexus and Traefik. Together we will take a deep dive into the GitLab CI Build Pipelines to build and deploy docker containers to dev, stage and production environments.

Get GOing with a New Language
Talk by Kat Zien in Mention Me Track (1 hour)

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) a few years 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.

Transparent Docker
Talk by Donald Tyler in Velocity Track (2 hour)

Keeping your environments in sync has been a challenge for software development for a long time. Developers tend to install their own versions of languages, databases, services etc. Doing so manually results in not only inconsistencies between dev and prod, but also from developer to developer, resulting in the always wonderful ""It works on my machine"" syndrome. Various tools have strived to solve this problem: MAMP, XAMP, VirtualBox, Vargrant, Puppet, Chef, homestead, etc. These are all steps in the right direction, but they're often heavy and require developers to learn new skills to work with them. In this talk, I'll be showing you how to Dockerize a new or existing project in such a way that the developers that use the project barely even know they are using Docker. Getting a new dev up to speed on a new project with a factory fresh machine is literally just a matter of installing Docker and check out the source code. That's it! Some of the benefits you'll see from using this approach: Onboard new devs in minutes. Have projects with unique (often incompatible) dependencies on a single machine. Dockerized environment that acts like natively installed tools Version locking of the tech stack Updates to dependencies automatically distributed to other developers Easily extended into CI/CD

API Standards 2.0
Talk by Michael Heap in Design Track (1 hour)

We're all familiar with things like HTTP codes and content types, but there's so much more we can do when developing an API to make life easier for consumers. How many times have you used an API only to find out that every endpoint is slightly different – some use `snake_case`, others `camelCase`, sometimes the field is called `id`, sometimes it’s `user_id`. How about pagination? Error responses? What about API documentation? Trying to standardise on all these things can kill an engineering team. There are so many options out there it’s difficult to know where to start. Come along and learn what works for our team! We’ll cover contentious topics (should the version be in the URL or a header?), lesser-known standards that are great (RFC 7807 springs to mind) and a couple of things that aren't an issue right up until they’re a really big issue (like pagination).

Hybrid Databases: How De-normalizing Your Data with JSON Can Boost Query Performance
Talk by Dave Stokes in Main Track (1 hour)

Database joins can be expensive and you can reduce dives into the indexes/data by using JSON columns. By loading data kept in smaller 'stub' tables into main tables it is possible to minimize joins for simple data like address, phone numbers, and the like in schemaless JSON documents. Yes, third normal form or better has advantages at many levels but it is a design that is costly for many-to-many relations! It is very easy to refactor data is is often stagnant or infrequently updated to take advantage of hybrid SQL/NoSQL databases to greatly increase overall query performance plus increase code readability. This approach can completely change your ideas on data architecture and provide easy mutability for future changes. Slides at

Building first-class REST APIs with Symfony
Talk by Michael Cullum in Design Track (1 hour)

Building REST APIs is becoming an ever more common task for PHP developers to do and whilst the task may often sound simple in that it involves reading some input, and getting (or persisting) to a data source and returning some JSON, there are a lot of common pitfalls and complications that you might encounter along the way. In this talk we'll look at how we can build a simple maintainable REST API using the Symfony components that can perform some simple operations in ways that are clean and simple.

Unconference in Design Track (1 hour)

The unconference is an opportunity for anyone attending the conference to present a short lightning talk about any subject related to PHP. There will be a sign up sheet outside the Design Track room from the start of the conference where you can put your name down to do a talk of either 5 minutes or 10 minutes. There will be a mic, projector and screen for you to hook your laptop up to if you'd like to use slides.

16:15 I deploy on Fridays (and maybe you should too)
Keynote by Michiel Rook in Main Track (45 minutes)

Have you ever heard someone say “Don’t deploy on Friday”? I used to say that too! Learn about resilience and operability, deployments, pipelines and continuous testing. Discover trunk based development, pair programming and best practices, and gain the confidence to deploy any day of the week!

Post-Conference Social in Social (3 hour)

Friday night will be our post conference social. We've got some fun plans in the works, so stay tuned for more info coming soon!