Phing All The Things
Phing is a build system that lets you do all sorts of neat things quickly and easily. If you find yourself manually running complicated processes or frequently having to look up command line parameters for your tools, Phing can help make you more efficient. If your deployments have many error-prone steps or you find yourself dealing with fragile procedures, Phing can help keep your sanity.
An introduction to the Secure Software Development Lifecycle
This presentation will cover the Secure Software Development Lifecycle, including requirements and design, development, testing, and acceptance. We will touch on topics such as implementing 'Least Privilege', 'Policies and Standards', and 'Defensive Coding Practices'. There will also be discussion on operational aspects and risk mitigation.
Introducing Tests in Legacy PHP Applications
You know testing is beneficial to your project. You are familiar with merits and caveats of test-driven development. But the project you’re hacking on right now is what most would call a legacy application. How do you apply your test knowledge to an application that doesn’t lend itself to traditional unit testing? The answer most will give is, “you don’t,” but we’re going to look at ways to write tests now that will allow you to improve and refactor your application to evolve the code to a more manageable state. The traditional “easy” route to dealing with legacy code is to rewrite but a little patience and skill applied to writing tests will yeild better results.
On the edge of Hypermedia
Stateless.. Nouns & Verbs.. Idempotent.. HTTP Auth.. Tokens.. We’ve all heard those phrases thrown around when we talk about REST. We’ve been told our systems have to include these characteristics or they’re not RESTful. We’ve talked over and over again on how to implement them. Unfortunately, somewhere along the way, we lost the answer to “why?” What’s the point? What value do we gain by doing things the “right” way?
Turbo Charge Your Logs
The log files our applications produce contain a wealth of information about how things are performing at any moment, yet for many of us the only time we look at them is when our we're trying to diagnose problems during an outage. Wouldn't it be great if our log files could be mined in real time and even alert us before things get to a critical state? This talk will show you exactly how to do that using open source tools. We'll look at using software such as Monolog and Rsyslog to collect information from individual servers as well as Graylog2 to aggregate, store and make quickly searchable millions of log records from multiple sources. By the end of this talk you'll have the knowledge required to mine your log data in real time, helping you to avoid major problems.
Adam Culp will talk about refactoring code. (The practice of altering code to make it cleaner, simpler, and sometimes faster, while not sacrificing functionality.) We all hate to do it, but it is a necessary evil. So lets talk about how to do it better. Adam will discuss: When to refactor. How to refactor. Why to refactor. How a refactor can help us write better code in the future. A common methodology and steps to follow while refactoring. Resources to help us all on our refactor journey.
Essential Git for developers
You have been wanting to use the "new shiny", but there are too many "Git how-tos" out there and you don't kow where to start. This is not another one of those. Instead Adam Culp will give a practical walk through the development cycle and how to use Git as the source control. From initialization of a repository, to forking, cloning, and checkout, we will walk through a sample project and how most developers actually use Git to manage the workflow. Adam will also touch on how to use Git repository hosting providers, and how to use them with PAAS (Platform as a service) providers.
It's been scientifically proven that more diverse communities and workplaces create better products and the solutions to difficult problems are more complete and diverse themselves. Companies are struggling to find adequate talent. So why do we see so few women, people of color, and LGBTQ people at our events and on the about pages of our websites? Even more curiously, why do 60% of women leave the tech industry within 10 years? Why are fewer women choosing to pursue computer science and related degrees than ever before? Why have stories of active discouragement, dismissal, harassment, or worse become regular news?
In this talk we’ll examine the causes behind the lack of diversity in our communities, events, and workplaces. We’ll discuss what we can do as community members, event organizers, and co-workers to not only combat this problem, but to encourage positive change by contributing to an atmosphere of inclusivity.
-Educate about the lack of diversity and why it is a problem
-Examine what is contributing to both the pipeline issue as well as attrition
-Isolate what is and isn't working
-Inspire direct action by examining our own behavior and learning more about the people around us so we can empathize better
More Code, More Problems
Some people will tell you that you need a large, full-stack framework to do web development The Right Way. These people are wrong.
A year ago I wrote The MicroPHP Manifesto, a response to the increasing complexity and interdependence of PHP frameworks. The four principles were:
1. I am a PHP developer
2. I like building small things
3. I want less code, not more
4. I like simple, readable code
The thing is, this stuff really isn't specific to PHP. In this talk I'll extend the concepts to other languages we work with in web development, establishing these core principles:
- Learn languages, not frameworks
- Build small things
- Less code is better than more
- Create and use simple, readable code
We'll cover how following these principles makes you a better developer, and makes the job of maintaining and verifying your code much easier.
Open Sourcing Mental Illness
In the spirit of open source, I’d like to shine a spotlight on depression. Not because it’s easy, but because it’s important. Mental illness affects many of us, but the stigma attached to it dissuades most people from talking about it openly. That’s not how we make progress. With this talk, I want to do my part.
I was diagnosed with depression and anxiety when I was thirteen, and I’ve been struggling with it my whole life. In this talk, I’ll discuss how it has impacted my work as a developer, husband, and father.
By speaking openly about my own challenges and successes, I hope those struggling with mental illness will learn how to be happier and more productive, and others can better understand how to be helpful and supportive.
Mocking Dependencies in PHPUnit
Writing good unit tests is nearly impossible with out being able to mock your dependencies. This talk will cover why you should mock, when you should mock and a practical approach on how to mock. Learning to mock will add value to your tests as well as your application.
Aphorisms of API Design
Code that talks only to itself is not useful to anyone. Code that enables other code magnifies its power 10-fold.
But how do we enable other code, and those who write it? What makes a module extensible? What is that vague extra something that turns merely extensible code into an API, a library, and a cornerstone of other systems? How do we harness that power for ourselves?
Let us examine the Aphorisms of Good API design, and the 8-Fold Path of API Nirvana.
This session goes beyond how to write code well to cover the question of how to write libraries that spawn other libraries and innovation by Coding for the Future.
Building web apps from a new angle
Declare Independence from your IT department: sysadmin skills for PHP developers
A PHP/web developer is not complete without knowing server administration. When looking for a job, it is quite likely that you will be required to know about installing and configuring a LAMP (Linux, Apache, MySQL and PHP). Your prospects of getting that job are much higher when you know these. In this session we will cover: - Introduction to LAMP servers - Frequently used Unix commands - Linux distro Differences - Prepare your LAMP server before going live - Overall LAMP Security - Performance tips to improve your website speed - Compiling PHP from source. Adding PHP extensions. - Basic description of web hosting options for PHP.
Exploiting your File System to Build Robust & Efficient Workflows
If your software writes to disk, you can never know too much about your file system! File systems offer a feature set often replicated, usually with lesser performance and reliability. In this talk, we will cover the file system notification infrastructure, locking and movement guarantees, and performance tuning. We will also cover how the primitive mechanisms available through file systems can be used to develop robust complex workflows.
You can't optimize, what you can't measure
Applications are complicated structures, usually consisting of a lot of moving parts and thus it's not so easy to tell if an app is not functioning properly. Luckily nowadays there are tools to monitor applications in production to both detect code level problems and most importantly also business-logic level problems. Let's look at various different tools to record and analyze metrics and how this could be useful to make sure an application is running correctly and a recent commit hasn't decreased it's performance.
Setting up a LAMP environment might be the first thing you learn, but I'm going to argue that setting up LAMP on your laptop is hardly the best way to work. Using virtualization and automation tools you can simplify the process and also have better control of what your colleagues are using and even what's running in production. Plus a ton more awesome features you get for free. This is going to open your eyes a bit, I hope.
Frisby.js: BDD for your REST API
Frisby.js is a REST API testing framework built on node.js and Jasmine that makes testing API endpoints easy, fast, and fun. Use Frisby to step in the shoes of your developer community and ensure consistency in API response structures, keys, and types. Great for ensuring your APIs don’t change or break across versions, and remain reliable and consistent so your developer community can thrive.
This talk will focus on the benefits of API endpoint testing with Frisby, its syntax and methods, live usage demonstration, recommended project setup and folder structure, and usage with GitHub so users can help identify and report issues with your API.
Ebb and Flow - Event driven applications in PHP
Taking a step back from traditional application structures like MVC, this talk will cover the ins and outs of how a system built on events (or signals) is structured, built, and executed. We will analyze what exactly all programs must do to to be able to serve a response to a request and how building an event oriented system is more or less playing Feng Shui with code. In addition this talk will glance the topics of namespaces and autoloading and how we can leverage modern PHP features to achieve our goal
Profiling PHP Applications
The web is full of advice focussed on improving performance. Before you can
optimise however, you need to find out if your code is actually slow; then you
need to understand the code; and then you need to find out what you can
This talk introduces tools and concepts to find performance issues with your
web application, and stack.
Advanced Date/Time Handling with PHP
PHP has powerful date/time handling functionality. It allows you to deal with
many issues that arise when you are developing applications. This talk will
cover advanced functionality and is not an introduction except for where
this is necessary. I will cover dealing with timezones, calculations with
DateTime objects and tips and tricks for dealing with storing date/time
Introduction to Databases
This talk will cover the basics necessary to help you decide what data to store, where, and how.
We will cover PDO — PHP’s Data Object extension, which allows you to talk to a variety of databases, including MySQL.
You will learn how to CRUD — Create, Retrieve, Update and Delete data, database schema, and when to use indexes.
Additionally, we will look at other data storage systems such as memcache, and nosql databases.
Modern HTTP Architecture
HTTP is no longer simply powering browsers talking to servers sending static pages of HTML. HTTP is carrying HTML to dumb browsers, JSON back to single-page apps or mobile apps, and is now pushing data to clients of all stripes. This talk introduces you to architect your infrastructure in a way to make sure that you can meet the needs of tomorrow.
I Can't Believe You Still Do it That Way
For the last twelve years I've been giving conference talks and writing books about how to develop for the web in PHP. Over that time I’ve made a bunch of recommendations: some still hold true, and some things have changed quite a bit since 2000.
In this session we’ll run through an overview of today’s best practices compared to those from the past. We’ll cover:
- Using frameworks: We used to avoid them like the plague. Is that still true?
- Scaling principles: In the good old days it was all master-slave replication and memcache. Will that still work? What else can we do?
- Security: Is it still good enough to use magic quotes? (Hint: No.) What should you be doing instead?
- Application architectures: Can you still just store everything in MySQL? When is a NoSQL data store a best practice? What about queues?
- Language changes: In 2000 namespaces weren’t even on the radar. Do we really need all this new stuff that’s in PHP 5.3 and 5.4? What is it good for?
- I heard PHP is dead and we should all just switch to Python or Ruby. Is that true?
Usability for Developers
Not everyone has access to a user interface designer, but that doesnâ??t mean that usability is out of your reach. This talk will cover user experience basics along with simple, easy-to-implement tricks to improve usability. This talk will also cover ways to test if your site or application is making the grade.
Foundations of PHP
A building works better with a solid foundation beneath it. The same is true for PHP. Whether you are new to programming or are just looking for a refresher, this session will take you through the basics. Beth Tucker Long will cover strings and arrays, conditions and loops, sessions and cookies, form validation and security, and writing your own functions. Best of all, Beth won't just talk about these concepts, she'll go through actual code, so you can see them in action. Bring your laptop, follow along, and you'll have a working application when you leave. Questions are welcomed!
The OOP in PHP
While the object-oriented programming paradigm dates back to the beginning of the likes of Simula and Smalltalk, it's present in some form or another in most mainstream programming languages used for web development today. Among these is that of PHP, which saw an overhaul of its object system in version 5 and a number of additions in the more recent releases of 5.3 and 5.4. This presentation covers both general concepts related to object-oriented programming as well as the ins and outs of PHP's OOP implementation. The four main principles of OOP - abstraction, inheritance, encapsulation, and polymorphism - are reviewed as well defining and instantiating classes, abstract classes, interfaces, magic methods, autoloading classes, and more.
Web Security and You
This talk will focus on XSS, CSRF, Session Hijacking, SQL Injection, and other security vulnerabilities that need addressed in Website Development. This talk will cover a gambit of these issues, giving specific code examples showing what the vulnerabilities look like and how to identify them. It will then present solutions to close them down and protect yourself.
Scaling PHP in the real world!
PHP is used by the likes of Facebook, Yahoo!, Zynga, Tumblr, Etsy, and Wikipedia. How do the largest internet companies scale PHP to meet their demand? Join this session and find out how to use the latest tools in PHP for developing high performance applications. We’ll take a look at common techniques for scaling PHP applications and best practices for profiling and optimizing performance. After this session, you’ll leave prepared to tackle your next enterprise PHP project.
- Why performance matters?
- The problems with PHP
- Best practice designs
- Doing work in the background with queues
- Fronting with http caching and a reverse proxy cache
- Distributed data caches with redis and memcached
- Using the right tool for the job
- Tools of the trade
- Opcode Caches
- Varnish/Squid and reverse proxy caches
- Xdebug + Valgrind + WebGrind
- Architecture not applications