Version control is a must for development. With the popularity of services like GitHub, Git has become the top choice for version control. However, not everyone is as familiar with Git as they might want. In this talk, we'll explore everything from 'git init' to 'git bisect.' Through live demos we'll apply what we've learned to tackle everyday scenarios using Git. So whether you're just starting out with Git or a Git pro I guarantee you'll learn something.
PSR-7 is ushering in a new era of interoperability in PHP. This also means that there are a lot of complicated choices to make when deciding how to build a "PSR-7 application." Which framework should you use? Do you need to write your own PSR-7 implementation? Should you choose a microframework, a full-stack framework, or roll something of your own?
To help answer some of those questions you'll be introduced to a light PSR-7 framework named Nimble. More than just a sales pitch, explore the reasons for rolling your own framework, how the third-party components that make up the core of Nimble were selected, and how the pieces all fit together. Walk away knowing that PSR-7 frameworks aren't as scary as they look and that creating one yourself may be the best idea of all!
Laravel 5 has established itself as one of the best PHP Rapid Application Development Frameworks. Come learn about all the tools in the Laravel ecosystem designed to save you time and prevent you from writing the boring cruft you have to write for every application. We'll cover getting started with local development, building a basic application, and deploying to production. We'll cover how Laravel easily handles vagrant, testing, oauth login services, billing and subscriptions services through Laravel Spark, and deploying your application with services such as Laravel Envoyer and Forge to manage your servers.
by Josh Butts
Lets face it, Docker is hot right now. If you’re itching to get started but aren’t sure how, you’ve come to the right place. In this tutorial, we’ll spend some time going over basic Docker concepts like Dockerfiles, containers, images and registries. Then we’ll look at some sample applications including Wordpress, Drupal and some framework-based examples and talk about strategies for building Docker images for these various different scenarios. We’ll also cover how to handle external dependencies such as file storage, databases, caches in both development and production environments.
When having the critical information available in an instant, businesses look to develop real-time dashboards and data streams. You’ve heard of websockets and everyone knows there is Socket.io and Node.js but what if you could do it all in PHP? In Real-Time Dashboards With Async PHP we demonstrate how to write an event loop and then create non-blocking code which can communicate bi-directionally with one or more connections. We will write up a responsive web interface that can provide real-time stats as a reactive dashboard. While an advanced topic, we will build up from the entry-level sparing no details or introducing any magic along the way. At the end we refactor utilizing a few abstractions which make our maintained codebase smaller and finally replace the plain-vanilla JS dashboard with a frontend view framework (Vue.js) to help with the client-side heavy-lifting. The result is a synchronous and asynchronous bridge that makes frontend and backend communicate as a seamless evented application.
by ᴠᴀɴᴄᴇ ʟᴜᴄᴀꜱ
Graph databases are all the rage these days, but the ideas they’re built upon are hundreds of years old. After a brief look at the history of graph theory and its practical applications in Computer Science, we’ll dive right into Neo4j - the world’s most popular graph database! Learn the differences between a graph database like Neo4j and your traditional RDBMS. See how to model your application’s domain using the new concepts available to you and how to query your graphs using Neo4j’s intuitive query language, Cypher. After this talk, you’ll agree that (Neo4j)-[:IS]->(Awesome) and be excited to use it in your next web application!
by Emily Stamey
Your mission, should you choose to accept it, is to support an application built on an older framework. Refactoring isn't an easy option. The code is untested and nowhere near best practices or standards. In this session, we'll talk about strategies to incorporate modern PHP coding practices to add features and functionality and retiring the older code in pieces. We'll review specific examples and code from a real project where we bootstrapped a legacy application that needed a lot of help to become useful to its users and simpler for developers to maintain. We'll talk about strategies to leave the existing code in place until the new code is ready to replace it in whole or in pieces.
So what does a database do with a query? How do you avoid the N+1 problem, SQL injection, or just poor database performance? If you are new to programming and want to learn how to efficiently learn how to use a database then you need to be in this session, You will understand how a database server processes a query, why you need to think in sets, why the common problems occur, how to filter user data, and get a very good overview of writing efficient database queries. This tutorial is designed to get novice developers started on the right path to working with a relational database.
Computers have one job: to read and process data. One job, and sometimes they still need help!
Structured data puts you in control, ensuring that search engines and other parsers aren't misreading your information. Get your events recognized as events, your business address as a location, and those product reviews working to attract customers!
Implementing good, structured data is also the first step into the Google Knowledge Graph, the Holy Grail for content marketers. Better yet, with modern standards, it's easier than ever before to get started!
Today’s society is filled with devices, apps, and software that make communication easier and faster. But are we communicating with others in the most appropriate and effective way? Are we causing more problems and headaches for ourselves by only communicating in 140 characters at a time? In this talk, we will discuss the elements of interpersonal communication, the pitfalls of various methods of communication, and learn tools and strategies to put into immediate action. Attendees will leave with six action items to immediately use and improve their communication.
Arrays are beautiful in PHP. One can map them, reduce them, filter them, foreach them, and use them in generators. Strings, on the other hand, are mere shadows to the Array. One can, uh, input and output Strings, and, when brave, manipulate them. What makes Arrays so awesome and Strings so dull? Iterators.
In this talk, we’ll look at the modest origins of the String and the basics of the Iterator. Then, we’ll look at how we can make the String as awesome as the Array through the use of iterator interfaces.
By the end of this talk, you will know the origins of the PHP String and you will be able to extend your knowledge of iterating through a String to be able to iterate through customized objects.
Ever kill a bug only to have it resurface later? How about that last intermittent bug you had to trace down? Looking forward to fixing it again when it pops back up?
If you hate reanimated bugs then this session is for you. In this session, we will discuss the why and the how of building regression testing into your tests using the Codeception testing framework.
Join me, let's hunt some zombie bugs. (Weapons not required)
by Ben Edmunds
Do you hate the Facebook API? We all do as well. So stop writing your API in their footsteps. In this talk we will walk through how to construct a RESTful API, what makes an API your users/developers will love, and why you should eat your own dog food with API Driven Development.
There are various access control models, each with a specific intent and purpose. Determining the ideal model for an application can help ensure proper authorization to application resources. Each of the primary models will be covered, including the MAC, DAC, RBAC, and ABAC Access Control models. Examples, challenges, and benefits of each will be discussed to provide a further insight into which solution may best serve an application. Application sensitivity, regulations, and privacy may drive which model is selected.
It used to be that crawling social media required some creative coding, a deep understanding of links and relationships, and a finely tuned BS detector. With machine learning becoming common place, it turns out you only need the first two.
Considering information in isolation never gives us a complete picture. As we supplement what we know with what we discover with what inferences and patterns our models can detect, what we know and what we KNOW becomes starkly different.
In this session, we'll dive into a multi-year project that has used social media and other public data sources to uncover hiring patterns, stealth startups, and even pending legal action.
We've all been to the talks about the tools for test driven development. But TDD is not just about writing tests, it's about driving development through testing. There's a very specific process of TDD with red, green, and blue phases. There's also different patterns, like outside-in or inside-out. In this talk, we will focus on these practices by TDDing a common data structure from start to finish. Attendees will gain experience and leave with tips to help them practice TDD in the real world.
by Adam Wathan
Trying to understand a complex function full of nested loops and conditionals is like trying to read a "choose your own adventure" book from front to back.
In this whirlwind tour of programming with collection pipelines, you'll learn how to use functional programming ideas to break down complex code and abstract hidden duplication behind expressive higher order functions.
Together we'll refactor ugly, complicated spaghetti into a series of simple, elegant transformations; free of loops, complex conditionals, and temporary variables.
Never write another loop again.
Your customer calls, your project manager assigns you an issue, your open source project gets a pull request, or your boss emails you – “There’s a problem…” As computer genius and wiz kid you are expected to solve all of these problems because that’s what you are – a problem solver. Well, sort of. Kind of. Not really. Software engineer, sure. Frontend developer, yep. But when was the last time someone gave you a complete, perfectly described problem and you solved it completely? Do you even remember being taught how to recognize, describe, and solve problems? How do you even know if it is really solved?
In the talk Problem Solved-ish we learn again or perhaps for the first time how problem solvers think, how our skills our empowered by our knowledge and understanding of the problem itself, and how solutions finally reveal themselves and the problems really do get solved. We take a look at the five C’s of debugging. We show the five Q’s of the Problem Solving Method. We demonstrate how testing can improve your confidence, your problem describing skills, and even your solution making skills. We will explore the business angle of problem solving and optimization by constraint based decision making and problem solving. Finally you will have a framework for making sure that it’s “problem solved.”
Come see a fast-paced introduction to Elm. We'll walk through some of Elm's most notable features, what the Elm Architecture entails, and learn how to model and implement a simple application with using static types and a functional mindset.
You've heard about dependency injection and inversion of control. Everything seems easy at first and you've found a container or two to help make your life easier. Until it isn't anymore. Suddenly you've found yourself managing complicated YAML, XML, or PHP container configurations. Making any change to your classes dependencies seems like a chore and any time you add a new class to the system you dread the inevitable configuration container configuration wiring blues.
Life doesn't have to be this way! In fact, life isn't this way for anyone who uses an autowiring container like Laravel's. Far from the most publicly marketed component, Illuminate\Container handles a lot of the magic that makes Laravel so much fun to use. Find out how you can use Laravel's container in almost any project! See how autowiring can free your mind from having to manually configure ever little dependency. Learn how you, too, can learn to stop wiring your dependency injection container and love Laravel's container!
by Joel Lord
From chatbots to your home thermostat, it seems like machine learning algorithms are everywhere nowadays. How about understanding how this works now? In this talk, you will learn about the basics of machine learning through various basic examples, without the need for a PhD or deep knowledge of assembly. At the end of this talk, you will know what the Naive Bayes classifiers, sentiment analysis and basic genetic algorithms are and how they work. You will also see how to create your own implementations in PHP.
by Adam Culp
Humans learn most effectively through pain, like being shocked by a power outlet or touching a hot iron. The same reaction can be found in technology, but how can we attribute this to programming while minimizing the most painful mistakes? Adam Culp will share his experiences of the ongoing journey to become a professional developer, and highlight techniques used to reduce the pain and still reap the benefits. And for those times when the pain is inevitable, how can we fast-forward to enlightenment.
by Ed Finkler
In June of 2012, podcaster and veteran web dev Ed Finkler spoke openly about his lifelong struggles with mental illness with co-host Chris Hartjes. Four years later, a non-profit corporation with a dozen volunteers is working to change the tech and open source community. In this talk, Finkler tells the story of how the episode happened, the incredible response they received, and how it grew into a charity dedicated to changing and saving lives -- all by using the principles of open source culture.
You've written an application and now the worst thing that can happen to you has come about - People are using it! You now have load spikes to deal with. You can scale up to deal with the excess traffic, but what do you do when your load is variable? How do you do that, and stay on budget?
This session is a case study on getting an App Engine app to scale to serve 30,000,000 requests an hour. It will take you through the architecture, the code changes and the technology trade offs to get to that level of traffic.
by Emily Stamey
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 chang
by ᴠᴀɴᴄᴇ ʟᴜᴄᴀꜱ
This talk gives a brief introduction to Node.js and the event loop model (don’t block the event loop!), and covers common pitfalls when using Node.js with simple and practical solutions.
It takes a special kind of person to enjoy writing documentation; not only do I have to write [ideally] working code, but now I have to write words that a human being can understand? What is this madness?!
Luckily, good documentation lives on outside your codebase. By following common documentation standards, we can generate comprehensive manuals that instruct others how to integrate with our software. After all, to code is human, but to document is divine.
by Adam Culp
Developers would love to "automate all the things", but where do we start? What tools exist for automating? And what can actually be automated? If we don't have unit tests can we still benefit from deployment automation? Adam Culp will show how a PHP application pulled from git, complete with unit tests, Composer dependency management, and package creation, can be deployed flawlessly using Jenkins. Then see how "Dev" and "Ops" are supported by a system if the application breaks through automated rollbacks.
20th–22nd April 2017