SunshinePHP Conference - February 7th-9th, 2019

It's warm and sunny in Florida. Take a break from the cold to enjoy some sunshine, and talk about PHP!

REGISTER!

Below is a full listing of 60-minute talks to be presented at SunshinePHP. Our selection committee did a wonderful job of selecting a nice variety of talk topics by some of the best speakers. We hope there is something for everyone developing with PHP.

NOTE: Attending these 60-minute talks on Friday and Saturday February 8th and 9th requires the purchase of a normal conference ticket on the Registration page.


Accessibility for Everyone

Beth Tucker Long
Session
 
Beg
 
UI/UX


It is important to reach every last customer, but there are a lot of customers out there for whom the web is not an easy quick-stop. Your target audience contains people who need visual or motor assistance whether they have a specific condition that affects them or are just part of the very large and aging Baby Boomer generation. Learn some tips for evaluating the accessibility of your site, and find out how to broaden your site's appeal while making the web a more accessible place for everyone.


Applying SOLID and supercharging your testing suite

Korvin Szanto
Session
 
Beg
 
Development


You've heard of SOLID and maybe have even integrated it into your development process, but how do you leverage those patterns to simplify your testing suite? In this talk I will cover the basic concepts of SOLID and show how they can apply to unit testing.


Call... Text... Video Me Maybe?

Mike Stowe
Session
 
Beg
 
API


Have you ever wondered how you could add voice, telephone, SMS, MMS, messaging, video, meeting, or fax (yes - I said fax) capabilities to your web app? Learn how easy it is to build in all of these with HTTP based APIs and take your application beyond the browser. For this session we'll focus on using the RingCentral APIs (although you can easily use any other vendor as the process is nearly the same).


CI/CD for PHP on AWS

Michael Moussa
Session
 
Beg
 
CI/CD


Working in shorter development cycles has a tendency to result in faster, less-risky delivery of changes to our production applications. Extensive automation is a key part of achieving this, but where do you begin? If you’re currently hosting on AWS, you’ll be happy to know that there’s a full suite of developer tools available to accomplish just that. In this session, we’ll explore using AWS CodePipeline, CodeBuild, and CodeDeploy to set up continuous integration, continuous delivery, and zero-downtime deployment of our PHP applications!


Dependency Injection for Mere Humans

Ian Littman
Session
 
Beg
 
Development


What's the difference between service location and dependency injection? Why is this dependency injection thing such a big deal anyway, and how do you use that tool correctly? I'll answer these questions and more, including real-world examples of refactoring an application toward the more explicit, testable, closer-to-SOLID applications.


Device Independent API design

Amrita Jain
Session
 
Beg
 
API


With the explosion of consumer devices, designing flexible and device-independent optimized APIs has become increasingly challenging. This talk covers API design best practices and core principles for microservice architecture, demonstrates them using a custom PHP framework, and summarizes the lessons learnt. Additionally, the talk covers highly optimized API design using graphQL to address versioning issues and device resource constraints.


Docker Alphabet Soup

Dana Luther
Session
 
Beg
 
DevOps


If you’re new to docker, the lingo can be more than a little daunting. Containers? Stacks? Images? Services? What’s the difference between docker stack ls vm vs docker service ls? What are all those toggles and do I need them? Where did all my logs go, and what the heck is a swarm?? In this presentation we’ll go over the lingo and explain some of the hidden gems in the list of commands that every developer should know.


Driving Innovation with MySQL 8.0 and Docker

Kathy Forte
Session
 
Beg
 
DevOps
 
Database


You as a MySQL architect are wondering about how you might make use of running MySQL in a container. You also are aware that the MySQL team at Oracle has recently released a new version of MySQL 8.0 with many advantages for both developers and DBAs. This talk will cover test driving MySQL 8.0 within a Docker container. We'll go over why a container is perfect for testing MySQL, how to set up your MySQL 8.0 container, some tricks on which features within MySQL 8.0 are perfect for containers, and best practices for incorporating this new technology into your DevOps environment.


Essentials of blockchain technology

Lisa Bock
Session
 
Beg
 
Blockchain


Blockchain technology was originally developed to protect financial data, such as bitcoin mining, to securely send transactions. In addition to using blockchains for financial transactions, we are now starting to see solutions that include using blockchain technology to secure communications between devices. Researchers are finding that we can use blockchains to provide authentication between devices and in any application that requires data integrity as it prevents spoofing. In this presentation, learn the history of blockchain, how blockchains work, along with some practical applications of blockchains.


Get started with Vue.js

Matt Trask
Session
 
Beg
 
Javascript


Vue.js is gaining popularity for its clean api, easy to read docs and solid ecosystem. Let's dive in and build a simple SPA with Vue, Vue-router, Vue-resource and Vuex and look at the different moving parts of a Vue.js SPA. We will also look at some the new ES6 features out in the wild that you can use to write clean JS!


How does PHP static analysis work

Damien Seguy
Session
 
Beg
 
Testing


Static analysis is an emerging field, in particular in the PHP world. Reviewing source code at the speed of a computer requires powerful theoretical tools: control flow diagram, abstract syntactic trees, acyclic dependency graph.

If all this seems far and remote from PHP, come and learn how they apply to your favorite language! They are all useful when it comes to detecting early those errors that end up in production, and sometimes, even before the code may compile. We’ll see how to combine all those aspects to build a useful auditing engine.


Immutability to Save an Ever-Changing World

Andrew Cassell
Session
 
Int
 
Development


Want to build software that is more testable, easier to modify, and has fewer lines of code? Architecting with more immutable objects that are always in a valid state is the most important lesson I have learned in building better software applications. Using immutable value objects will lead to less checking, fewer bugs, more DRY code, and help avoid the “spooky action at a distance” problem in PHP. We will also learn how to use immutable objects and immutable collections to improve design of our mutable entities. Lastly, we’ll see how immutable objects and functional programming can reduce complexity.


Introduction to Serverless PHP

Rob Allen
Session
 
Beg
 
Development
 
API
 
DevOPS


APIs and microservices are how we build modern web applications and serverless technologies make this easy. This session will show you how serverless applications are built and how you can leverage your PHP skills to build APIs of all shapes and sizes. We will cover how to use your current knowledge to build applications in PHP within Apache OpenWhisk, leveraging the API Gateway to build robust APIs quickly and easily. By the end of the session, you'll be well placed to design and build your own microservices that take full advantage of the power of serverless technologies.


Performance optimisation: how do I go about it?

Kat Zień
Session
 
Beg
 
Development


How do I know if my program will perform well in production? What does it mean to “perform well”? How much memory will it need? How much traffic can it serve? Are there any memory leaks or race conditions? What part of processing takes up most of the time? Can I optimise it?

Every developer should be able to answer those questions about their code. But most of us don’t bother. Why? Because analysing performance is hard and as a result it is often skipped in the development process or ignored until things get really slow. Or we may simply not know where to start.

Writing efficient code is a valuable skill that takes time to learn. Being able to analyse performance can not only prove that our code is efficient and safe to run in production, but also teaches us what to avoid next time. It may seem daunting at first, but with the right tools at hand it is a highly rewarding process.

In this talk, we will analyse and optimise the performance of a simple PHP application. By demonstrating how to use some of the excellent open source projects such as xdebug, xhprof or php-meminfo, I hope to give you a good idea of where to start with analysing and optimising your PHP code.


Performance Tuning Your Progressive Web App (PWA)

Josh Holmes
Session
 
Int
 
Development


Your users deserve a fast and responsive web app and PWAs help you step that up a notch through notifications, offline support and more. There’s a lot that goes into that from understanding how the DOM tree works and how that plays with CSS and JavaScript to how to leverage the ServiceWorker for cashing and push notifications.

In this session, we’ll build a PWA that show cases many of the things you need to keep in mind when building a great and fast progressive web app.


PHP + nginx + Redis = Ludicrous Speed

Jason McCreary
Session
 
Beg
 
Development
 
DevOps
 
Scaling


Nearly ever app has an API. The next step is "scale". But what you really mean is speed - Ludicrous Speed. Let's explore a super fast API with native PHP (no frameworks) running atop nginx, and using Redis as our runtime database. We'll take a peak at how underneath this may be a traditional PHP application. Yet, on the surface it's a high-performance, horizontally scalable API.


PHP and the Internet of Things(IOT)

Perside Foster
Session
 
Beg
 
Development


Learn exactly what “The Internet of Things” (IOT) is, and cover a brief history. Then walk through a simple demo of how to use PHP and MySQL in developing a real IOT project. We will use a Raspberry PI, an Arduino board with sensors to manage communication between a Bionic hand kit and its creator. My hope is that this talk will boost your enthusiasm toward IOT programming and join me in the amazing mission of building the “Internet of Things”.


PHP Internals for the Inquisitive Developer

Jeremy Mikola
Session
 
Int
 
Development
 
Core PHP


Even if you have no intention of becoming a PHP core developer or creating a PECL extension, cursory knowledge of PHP's inner workings can prove useful. This session will examine the lifecycle of a PHP request and equip you with essential knowledge and tools that can be used to diagnose the occasional segfault or language bug, decipher what a poorly documented SPL class actually does, and confidently answer why a PHP or C implementation is most warranted for a given problem.


Promises and Queues: Using Unlikely Suspects to Handle Asynchronous Parallel Processing

Jacob Mather
Session
 
Beg
 
Development
 
DevOps
 
Async


My last job was with a distributed manufacturing platform for turning digital ideas into physical products. They enabled customers to upload 3D models, have the models manufactured into physical goods, and delivered into the customer's hands, all within 24 hours. Every time a digital model is uploaded, we processed the file with an array of tools that inspect the model and make determinations about its manufacturability, size, and perhaps most importantly price. One of the very first things I did there was to completely overhaul this process, converting it from a mystical black box to a clear set of discrete processes with copious amounts of highly visible logging. While there are many possible ways to do this, I chose Jenkins, and in supporting this system for over a year, while I may use different tools to do it now, Jenkins bought us a lot of time in the interim, and I left them with quite a bit of runway before any changes would be required.

In this talk I will cover where we started, why I chose Jenkins, why it works so well for this use case, and how to use these same patterns to solve your asynchronous parallel processing problems, regardless of your platform. Our use patterns showed us that managing jobs in Jenkins can be a very similar experience to managing code deployed to server-less solutions such as AWS Lambda. Let me show you how.


PWA for PHP Developers

Ben Marks
Session
 
Beg
 
Development


Progressive Web Apps are an emerging approach to solving the problem of having the Web, everywhere: different mobile devices, IoT devices, and areas with low bandwidth or poor connectivity. For developers accustomed to PHP and server-side rendering, there are several factors to consider.

Drawing on our experiences working with Google to build a PWA development experience for Magento, this talk introduces the elements of PWA, the challenges of providing online+offline functionality, and the limitations of this nascent approach.


Securing Legacy Applications

Chris Cornutt
Session
 
Beg
 
Security


It’s common to hear people preach "plan in security from the start" and in an ideal world, you can. Here in the real world, though, we have legacy code that’s gathered over time and comes with a host of problems – (in)security included. What do you do when you’ve been commissioned with securing an application that’s showing its age? Follow along with me as I step you through a list of tips and tricks you can use to discover security issues in your application and effectively fix them and secure your application.

Topics will include some of the most common vulnerability types, key places to look for potential issues and arm you with the tools and knowledge you’ll need to refactor that legacy application into something secure.


Swoole 4: Introducing the New Coroutine Design Pattern in PHP

Demin Yin
Session
 
Adv
 
Development
 
Async


Swoole is an event-driven asynchronous and concurrent networking communication engine for writing high-performance HTTP and WebSocket services in PHP. It changes the way how we write and build PHP applications like before. With supports of coroutine (like goroutine in Go), non-blocking IO, connection pool, and many more, we can build better scalable and fast web applications. In this talk, I will dig into the latest changes and technical details in Swoole 4 to demonstrate how it breaks the limit of PHP, using a variety of examples.


The MySQL Document Store

Dave Stokes
Session
 
Beg
 
DB


The MySQL Document Store is a JSON based NoSQL database does not require the use of Structured Query Language (SQL) to interact with the database. No more embedding ugly strings of SQL in your beautiful PHP code. The new API calls (via the MySQL X Devapi PECL extension) follow modern programming design for all the CRUD functions of the document store. Each document has a payload of 1GB (compared to MongoDB's 16mb) and runs on proven, reliable MySQL technology. And if you have older relational data, the MySQL Document Store lets you access them plus the new document store data at the same time. This is a through introduction for those wishing to switch over to the MySQL Document Store with plenty of programming examples.


The Recommendation Engine: A case study on an application of a recommender system

Terry Chay
Session
 
Beg
 
Development
 
UI/UX


One of the surest ways to start down that path of making your data science and machine learning work for you is to find low-hanging fruit. Recommender systems have proven to be one of the most useful applications of data science to the consumer-facing web since the earliest days of the internet. This talk covers why and how one was built to recommend colleges to prospective high school students, the application of popularity tables and collaborative filters, as well as other approaches and the reasons for doing them sparkled with some war stories about their success and failures. Hopefully after this you can find how your data can work for your users to transparently improve their interaction with your websites instead of sitting in the back office somewhere helping some executive add graphs to their TPS reports.


The Sodium crypto library of PHP 7.2

Enrico Zimuel
Session
 
Adv
 
Development
 
Security


Have you ever wondered about any of the following security concerns?

- How to store user passwords
- How to encrypt/decrypt sensitive information
- How to authenticate users

The Sodium crypto library, offered as a core extension of PHP since 7.2, is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing, and more, solving each of the above problems. We will demonstrate each during this session, as well as present advanced features such as authenticated encryption, anonymous public-key encryption, and elliptic curve cryptography.


The Ten Commandments of Object-Oriented Code

Brandon Savage
Session
 
Int
 
Development
 
OOP


Writing object-oriented code can be a challenge. Which rules do you follow, and when? Come learn about ten rules that will make your object-oriented code better, more beautiful, and easier to maintain in this talk.


Unlock The Mystery of PHPUnit

Brian Johnson
Session
 
Beg
 
Testing


You know you're supposed to write unit tests, but you're not quite sure where to start. This session is for you. We will start from ground zero and go from zero unit test writing experience to functional test-driven developed code.

Using the current version of PHPUnit we will cover:
* writing basic test cases
* simple assertions and constraints
* mocking and data providers
* testing exceptions and errors
* and more!

You will leave this session fully ready to write tests for your own code.


Working with Webhooks

Lorna Mitchell
Session
 
Int
 
Development
 
API


In an increasingly connected world, APIs are key to great tools and effective workflows. What is better than an API? A webhook of course! Webhooks are a key building block of a modern application, allowing systems to exchange data in response to events.

This session gives examples of webhooks currently in use "in the wild", and examines both when a webhook is useful and the internal design and structuring of webhook payloads. We'll discuss how to work with webhooks in a scalable way regardless of technology stack; how to recieve and process incoming webhooks from an external system and how to design and publish your own for use by partners or consumers.

This session is recommended for anyone interested in teaching their applications to play nicely with others.


Xdebug will forever change the way you debug your PHP code

Tim Bond
Session
 
Beg
 
Development


We've all used echo, printr, and vardump to figure out why our code doesn't work. But did you know there's an easier way? This talk will demonstrate the use of two popular PHP tools: Xdebug and PhpStorm. Instead of littering your code with statements to send variable values to the browser, using these tools it's possible to pause script execution on a specific line, allowing you to view and edit any variable as well as arbitrary code. Never again will you forget to remove test code before sending it to production!


Year with event sourcing and CQRS

Miro Svrtan
Session
 
Adv
 
Development


For the last few years, the PHP community has been buzzing about ES/CQRS, and there was a talk at every conference. So now I will share how it worked out for me in practice.

ES/CQRS is a different approach to building applications from what we've done for years. I'm not going to introduce Event Sourcing and Command Query Responsibility Segregation (ES & CQRS) but instead will speak about my experiences in developing and running it in production.

I implemented it in a few projects: in some I ran it as a part of bigger application, while in others it's the core where everything is event driven. The shift in architecture and mindset is pretty big: while code structures and logic became simple, the amount of code and workflows became complicated to the point of "where did I loose this input?".

We also discovered the need to learn many DDD practices I feel have made me a better developer, and now I use some of the knowledge gathered through this projects in 'everyday' code.


Newsletter