Seems like only yesterday we were packing up and heading home from a successful second year of ScotlandPHP, it was great to see you there and we hope that you took a lot from the day!

Friday 5th October 2018

09:30 Best practices for Crafting High Quality PHP Apps
Workshop by James Titcumb in Workshop 1 (3 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 softw

1
Introduction to PHP on Kubernetes
Workshop by Phil Weir in Workshop 2 (3 hour)

Microservice architectures and containerization are regularly talked about, but how do we put this all together in a container-focused infrastructure? PHP systems need to stay up, running and be smoothly linked from developer to deployment. Kubernetes has risen to be the industry-leader in container orchestration, providing a consistent means of deploying, scaling, updating and interrogating your web-based systems. Being container-driven from the ground-up, it helps realize the gains containerization offers right through your lifecycle: reproducibility, cloud-independence, immutable environments, managed self-service access. This tutorial will be framed as a stepped deployment using open source profiles for deploying a Laravel system, termed Buckram. This will involve: - setting up a generic Kubernetes system - deploying Laravel onto it using Helm charts (versionable infrastructure description), with Postgres, Redis and workers - employing a Gitlab repository for CI/CD for building container images - managing per-deployment configuration and environment variables - process health, logging and scaling - using the artisan CLI tool for scheduled and one-off jobs on the cluster (as time permits)

12:45
2
Learn To Test Like A Grumpy Programmer
Workshop by Chris Hartjes in Workshop 1 (3 hour)

What if you could learn how to write tests from someone who has been using them for a long time and also knows how to explain it in a way that cuts down on the fear and anxiety while teaching you what you need to go to get started immediately? In this tutorial, Chris will teach the basics of writing tests using PHPUnit. Topics covered include: - high-level discussion of the role of testing - assertions - the Arrange-Act-Assert pattern - what a PHPUnit test file looks like and where to locate them - test doubles and when to use them - strategies for building test scenarios

2
Efficient Domain-driven Design: Event Storming Workshop
Workshop by Arne Blankerts in Workshop 2 (3 hour)

Event Storming is an emerging group modeling technique using sticky notes and verbal communication that is not only extremely efficient, but also easy to learn, and fun to do. This workshop introduces you to Event Storming with a strong focus on process design. Rather than talking a lot of theory, we will quickly dive into a group exercise and start modeling a real-life business problem. We will not stop there, however, but also turn the model into working PHP code using Domain-driven Design techniques and patterns.

Saturday 6th October 2018

08:30
16
Starting your Serverless journey with OpenFaaS
Keynote by John McCabe in Track 1 (50 minutes)

OpenFaaS is Serverless Functions Made Simple for Docker & Kubernetes. Avoid vendor lock-in by running functions in your datacenter or the cloud with your existing CI/CD and container ecosystem. Freeing you to run your functions on your own terms - anywhere, and in any language. This talk introduces OpenFaaS, demonstrates how to build functions with PHP and then explores real-world examples of how and why people are leveraging a serverless architecture. You'll also see OpenFaaS Cloud in action which brings a stream-lined "git push" CI/CD workflow and a multi-user experience to your functions. You can deploy OpenFaaS in 60 seconds anywhere with Docker or Kubernetes. The project focuses on ease of use through its UI and CLI which can be used to test and monitor functions in tandem with Prometheus integration enabling auto-scaling as demand increases. OpenFaaS has won Best Cloud Computing Software 2018 from InfoWorld and has a thriving community with over 130 contributors, 3k commits and over 13k stars. https://www.openfaas.com/

10:25 Dungeons, Dragons & Developers
Talk by Matt Brunt in Track 1 (50 minutes)

You enter the dungeon, as the echoes of your footsteps sound around you, something catches your eye - is that… oh, oh no. You grab your trusty sword and with your fellow adventurers, you seek to overcome the mighty challenge that lays ahead of you: building software. This talk is a look at some of the parallels between Dungeons and Dragons, and software development. We’ll see how lessons learned through delving into dungeons and fighting monsters with a party of adventurers can help teams of developers when building software in the real world. Are you ready to join me in a mighty quest for better software?

We need a bigger boat - Introduction to application scaling
Talk by Liam Wiltshire in Track 2 (50 minutes)

At one time or another, every developer comes across the same problem - their application starts getting slower, then starts falling over, then isn't available at all. Often, this comes down to too many users, too much stored data - in other words a scaling problem. Looking at a range of options, from horizontal and vertical scaling, to caching, sharding and optimisation, Liam will discuss approaches to scaling that can be used on new applications, and also some that can be retro-fitted to existing applications.

11:30 Climbing the Abstract Syntax Tree
Talk by James Titcumb in Track 1 (50 minutes)

The new Abstract Syntax Tree (AST) in PHP 7 means the way our PHP code is being executed has changed. Understanding this new fundamental compilation step is key to understanding how our code is being run. To demonstrate, James will show how a basic compiler works and how introducing an AST simplifies this process. We’ll look into how these magical time-warp techniques* can also be used in your code to introspect, analyse and modify code in a way that was never possible before. After seeing this talk, you'll have a great insight as to the wonders of an AST, and how it can be applied to both compilers and userland code. (*actual magic or time-warp not guaranteed)

10
Get GOing with a new language
Talk by Kat Zien in Track 2 (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) over 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. It was a whole new world, with concepts and ideas I did not come across before. I was hooked! The goal of this talk is to give you a good idea of what Go is like 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!

12:25
6
Open Source for Closed Source Companies
Talk by Amanda Folson in Track 1 (50 minutes)

Just because you’re selling SaaS doesn’t mean you can’t adopt open source principles in your organization. We'll talk about how individuals and companies can open source their documentation, libraries, and ideas for the greater good of the community in a way that doesn’t mean giving it all away for free. Open source goes beyond software; it’s also an approach to the non-software aspects of your business. No matter what you’re shipping for profit, there are several aspects of your company that you can make public to increase transparency within your organization as well as outside of it.

8
Looking after your Mental Health, a guide for software developers
Talk by Mark Railton in Track 2 (50 minutes)

Mental health issues are something that affects a staggeringly high number of people in the software community yet are a topic rarely spoken about due to the stigmas associated with them. In this talk we will hear some of the things to look out for in others as well as in ourselves, and how it could be affecting us and those around us. Mark draws on his personal experiences of imposter syndrome, depression and anxiety to highlight how these have had a profound impact on his development career. Mark will also be highlighting some of the amazing resources available through Open Sourcing Mental Illness (OSMI) and showing how they can help with your own mental health as well as making your workplace somewhere that nurtures and supports mental wellness. Finally, we'll also be equipped with some resources on where you can go to get help should you be suffering from mental health issues yourself.

14:15
3
Composer Best Practices 2018
Talk by Nils Adermann in Track 1 (50 minutes)

Not certain you're making full use of Composer's capabilities? Overwhelmed by the number of commands, options and configuration choices? Composer has become the standard tool for Dependency Management in PHP. This session will cover details on version constraints, stabilities, semantic versioning, correct use of the lock file, helpful tips for everyday interaction with Composer, such as the right options to use during development, testing and deployment, or commands useful for debugging problems.

12
Git Legit
Talk by Pauline Vos in Track 2 (50 minutes)

Many Git users tend to use Git as a save point, like in a video game; chronologically making checkpoint commits as they go. This spreads out changes to the same areas in the code over several commits, necessitates merging and resolving conflicts, and generally just making an incomprehensible jumble of your history. This talk makes a case for atomic commits and how to use them while only minimally affecting your workflow. You’ll learn how to properly interactively rebase, fix up, reset, bisect, and more. By the end of the talk, you’ll have seen how this Git flow will make your life easier and how it will affect your ability to cherry pick, drop unwanted commits, and most importantly: not spend hours resolving conflicts in rebase hell. A little change in habits can go a very long way!

15:10 Don't Wait, Generate!
Talk by Ian Littman in Track 1 (50 minutes)

Generators, which have been around since PHP 5.5 and got a lot better with PHP 7, take a lot of the angst out of asynchronous programming in PHP. In this talk I'll explain the basic concepts that you'll need to grok generators, then apply our new-found knowledge to turn an I/O-bottlenecked web app into a concurrent, performant one via the AMPHP family of libraries.

Application Metrics (with Prometheus examples)
Talk by Rafael Dohms in Track 2 (50 minutes)

We all know not to poke at alien life forms in another planet, right? But what about metrics, do you know how to pick, measure and draw conclusions from them? In this talk we will cover various Site Reliability Engineering topics, such as SLIs and SLOs while we explore real life examples of defining and implementing metrics in a system with examples using Prometheus, an open-source system monitoring and alert platform, to demonstrate implementation. Let's get back to some real science.

16:15
9
Optimizing PHP-FPM for Production
Talk by Arne Blankerts, Sebastian Heuer in Track 1 (50 minutes)

PHP-FPM, the FastCGI process manager, evolved from being a 3rd party patch to the de-facto standard for running web applications with PHP. By default though, the configuration shipping with most distributions is designed for minimal resource usage. And while production servers can run with these settings even under relatively high load without problems for a while, getting the most out of FPM will require some tuning. Preparing the PHP stack for high load situations and monitoring the performance, optimizing the runtime for specific types of requests or hardening the security of your environment – there is much to consider.

Improve your team synergy w/The Attitude Model
Talk by Joop Lammerts in Track 2 (50 minutes)

Most of the time you’ll work in teams, but sometimes teammates don’t understand each other. Working on a piece of software becomes a drag. So why does this happen? Can you prevent this from happening? During this talk we’ll introduce The Attitude Model. This model helps us to improve teamwork. It explains and predicts how teams argue, cooperate and excel. It helps us to understand what individuals need from their team and what they bring to the table. The Attitude Model allows us to move from storming to performing. With The Attitude Model by your side you and your team will have fewer conflicts, work together more smoothly and have better meetings. You will have tools to divide your software design approach. So come join me in my journey on how I became the world champion with my team (and clients).

17:10 Developing for privacy and user protection
Keynote by Heather Burns in Track 1 (50 minutes)

The most important thing you will ever do as a developer is protect the people in your data. But beyond headlines, scaremongering, and scandals, what is privacy, and how do we develop for it? Before we can protect people from the harms that can result from the misuses of their data, we need to understand our own differing cultural and legal approaches to privacy, and then establish a common methodology to evaluate our work. This talk will provide a overview of different views and approaches to privacy which exist within our globalised industry and even within our own projects. Then, it will provide attendees with a practical development toolkit which draws on best practice privacy standards, current and upcoming legal regulations, and robust development frameworks. Attendees will be inspired to integrate a healthy, proactive, and accountable approach to privacy into everything they do.