We usually think of technology as a tool, something as indifferent as a hammer or a ruler. But in a world where algorithms decide which version of the news you read, pretending our software is detached is naive—or even dangerous. Technology has become an intermediary in nearly every part of our lives, from electronic medical records to online bill-pay systems to apps that remember which craft beers you’ve tasted.
So, when so few technologists (that’s us) are creating software for use by so many (that’s nearly everyone else in the world), how can we do right by them? What responsibility do we have to use our skills for good? And how can we get this right when humans beings insist on being so varied and complicated and, well… human?
10 years ago I was a lonely developer sitting in a small room quietly turning out code between 9am and 5pm, Monday to Friday. Fast-forward to now and you'll see me standing in front of audiences all around the world talking to developers about numerous topics."Why are you bragging like that at me?" I hear you ask. Because it could happen to you too.
The question I always ask myself is "How the hell did that happen?!?!".
The truth is that the only reason I've managed to advance my career so far in a decade is because of the people that make up the communities of open source projects. Not only do open source projects save you time and money, but the friendships and support groups that can be made within these communities is, frankly, staggering.
Join me as I chart my journey from wage monkey to conference speaker, and look at how you can leverage the power of open source to make real friends, real money, and real happiness.
Takeaway for the audience
A large part of Drupal's appeal lies in its flexibility. The fact that a developer can alter, extend, and enhance almost any aspect of Drupal without having to hack core. Knowing what systems are available for doing so, and how to make use of them is critical for anyone developing with Drupal.
Drawing from my experience helping to document and explain these new patterns in various formats I hope to answer these questions:
If you're currently writing modules for Drupal 8, porting modules from Drupal 7, or think that you might have to sometime in the future, or even if you're just curious how the module ecosystem fits together behind the scenes this session contains critical information for you. After attending this session you should have all the background information you need to make informed decisions about how your custom code can, and should, talk to Drupal in order to uphold best practices and write modules that are easy to maintain and play well with others.
With PHP frameworks being more decoupled than ever, and with the help of package and dependency managers, large and heavy PHP frameworks are a thing of the past. Modern PHP developers now have a wealth of libraries available specializing at certain tasks, and microservices are fast becoming a preferred way to architect applications. But many don't know how to start, and get thrown in the deep end.
This talk will briefly introduce what microservices are, and how to create them using middleware. Then show how to build using the Zend Expressive microframework leveraging components of Zend Framework, and other libraries, to quickly create awesome things without requiring a full stack framework. Resources for reference and continued learning will also be shared.
Magento 2 is a fresh take on a modern eCommerce platform rich in features and community. We will go over common best practices and toolsets, and to introduce popular community resources. Then we will take a dive into setting up a Magento 2 site to illustrate the effort required to get a project off the ground, and to find a better understand of what Magento 2 offers.
In this presentation Mathew Beane will briefly discuss the following topics: Best Practices: Keeping core clean, how to modify Magento the right way. Community Resources: How to join the Magento Community Certification: How to get Magento Certified Migrating from Magento 1: A look at the tools and methods. Setting up a Magento site: Covering the basic design and development choices.
Learn why this new framework has been taking the PHP world by storm.
Are you ashamed to admit you're a PHP developer? Have you been using the same old, boring PHP framework for years? Tired of your PHP applications turning into enormous beasts? Maybe you've heard about Laravel but haven't made the effort to dive into it? In this presentation, we'll walk through what makes Laravel an elegant, fun, and exciting framework to make PHP applications that you'll be proud of.
Love it or hate it, WordPress is here to stay. Powering over 25% of the web, it's one of the most commonly used projects out there.
WordPress strive to make life easy for their end users first and foremost, but what if I told you that with less than an hour's work you could make it a joy to work with for developers too?
By following the Twelve Factor App method (http://12factor.net/) we can deploy WordPress in a way that makes it easy to develop for, easy to update and easy to maintain. Come and watch as we take a standard WordPress install and bring it into the future.
One of the biggest complaints from API consumers is that authenticating against third-party services is painful. I'll walk through the OAuth2 protocol as well as a few common ways to authenticate against a service. Then we'll look at how you can integrate these authentication tokens into your application.
DevOps is a large part of a company of any size. In the 9+ years that I have been a professional developer I have always taken an interest in DevOps and have been the "server person" for most of the teams I have been a part of. I would like to teach others how easy it is to implement modern tools to make their everyday development and development processes better. I will cover a range of topics from "Stop using WAMP/MAMP and start using Vagrant", "version control isn't renaming files", "Automate common tasks with shell scripts / command line PHP apps" and "From Vagrant to Production".
Docker, the hottest technology around at the moment. It swept the Ops world by storm in 2014, became mainstream in 2015, and now it's set to dominate the developer world, in 2016.
Docker is a tool that allows you to package your application up into a single-runnable distributable binary - akin to the phar, but in Hulk mode. Docker allows you, a developer, to specify the exact environment your application needs to run, across development; test; staging; and production.
In this session I will cover the creation of this utopian distributable and show you how to can compose your entire production infrastructure locally with only a small YAML file and without installing a single thing.
Lets say hello, to Docker.
All of us have worked with relational DBs like MySQL or PostgreSQL, but for many use cases they aren't the best option. Graph databases have a simpler, more powerful model for handling complex related data. In this talk we'll work with Neo4j to explore the advantages of graph DBs. Attendees will learn the graph model, how graph DBs let you do things that are practically impossible with SQL, and the best options for integrating one into your application -- new or existing.
Although MongoDB is a non-relational database, it is still very important that you store your data in an optimal way. This presentation make you grow up from just starting with MongoDB, to a seasoned user, by teaching you how to design your data schema according to your application's needs. This requires a different mind set than designing for a relational database.
Besides schema design techniques, I will also cover how to pick indexes, different types of indexes, and way to find out why queries are potentially not as fast as they could be.
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 and CouchDB'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, MySQL's JSON).
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.
To craft well-designed websites, you have to know 50 names for "blue" and the difference between a font and a typeface. You probably have a degree in illustration or graphic design, or maybe you attended some hip code school in Oakland and call yourself a User Experience Architects Right?
Nope! In fact, there are numerous small, simple and practical ways to vastly improve the look and usability of a website, no matter how creative you are(n't). In this talk, we'll explore ten of them together, using research and proven solutions to see how the impact as a whole for both clients and users is greater than the sum of its parts. Make your websites more attractive, easier to use and better designed without feeling like you're wasting your time or effort.
Nearly every web developer has been exposed to MVC. Recently, the ADR pattern has been articulated as a potentially better way to organize web applications. In this talk we will explore the background of the MVC pattern, the challenges it faces when used for web applications, and the solutions that ADR proposes to address those challenges. We will also explore a small application written in the ADR pattern using the Equip micro-framework.
When developers are introduced to Object Oriented Programming, one of the first things that happens is that they are taught that nouns turn into objects, verbs into methods, and Dog is a subclass of Animal. OOP is more than just turning things into classes and objects and showing that both Boats and Cars have motors, and that Dogs and Cats both speak(). Let's look at OOP in real world settings and go beyond cars and dogs, and see how to use Object Oriented Programming properly in PHP. Traits, Composition, Inheritance, none of it is off limits!
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 for incorporating 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 work to be helpful 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.
Most developers don't get the luxury of working on a greenfield project using a web framework of their choice. Often times we find ourselves inheriting a legacy codebase written years ago for an end-of-life version of PHP and a now-defunct web framework. The initial temptation might be, "I'll just rewrite all this on x framework". But hold on there my framework friend, a rewrite is costly and is rarely the correct answer.
We'll discuss some common pitfalls when getting a legacy codebase ready for PHP 7 and what we can do to make the upgrade path as painless as possible. These incremental changes will keep the business running while improving security, stability and maintainability of the codebase.
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 Events to make a note of an Event 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:
"I don't know C!", is probably one of the most common excuses that us PHP nerds give for not contributing to PHP source. And top it off with all the overly-publicized drama surrounding the PHP internals mailing list, most user-land PHP developers don't want to touch PHP source with a ten foot pole.
In this talk I tell my story of how a plain-old user-land PHP nerd who, "doesn't know C," found himself drawn to PHP internals like a bug to a light. I was meet with a lovely helpful community of individuals who mentored me the whole way to making PHP better. This talk will encourage and inspire you to join me on an epic journey to the center of PHP.
Many of you have heard of the concept 'Promise'. Some of you may even have used it. The 'Promise' is a useful design pattern when developing applications tha have a strong asynchronous aspect and avoids what's called 'callback hell' or 'callback christmas trees'.
The promise is a bit hard to wrap your head around though. This talk will explain exactly how a promise works and behaves and how you should interact with it.
Next, we'll dig into generators. Generators have been added to PHP 5.5 and Ecmascript 6 and makes creating and consuming iterators a lot easier.
Generators have a unique language property though. They allow us to jump in the middle of any method outside that method. In the third part of the talk we'll show how we can use iterators to improve promise-heavy code and make asynchronous code look and behave as normal code.
If you aim for code that's SOLID, rather than SOID, thank Barbara Liskov and Jeannette Wing. Call yourself a "software engineer"? Thank NASA supercoder Margaret Hamilton, who invented the term that once drew chuckles. Ada Lovelace in the 19th century wrote the first computer algorithm and foresaw the potential of symbol-and-rule-based computation. Yet she's often dismissed as a math klutz, the well-meaning but incompetent muse of inventor Charles Babbage.
These aren't the only women who shaped today's tech-centric world. Throughout the history of computing, women have played pivotal roles. Meet some of the women who shaped the world of tech, and learn their stories. Find out what the landscape looks like today for women in tech, and learn how you can contribute to a brighter future for all.
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.
The proliferation of testing strategies outside of a broadly agreed set of definitions has caused confusion and a waste of effort by not fully understanding how to apply the fundamentals of unit testing. Let's change that.
In this session, we will cover the five types of test doubles: dummy, fake, stub, spy, and mock, showing code examples of how to use each with PHPUnit and Prophecy. Layered on top of this we will observe the difference between sociable and solitary tests, as coined by Jeffrey Fields. Lastly, we will look at how test smells naturally surface and what strategies can be used to mitigate them, such as Arrange-Act-Assert, object mothers and data builders.
The key takeaway from this session will be a deep knowledge of unit testing: when to apply one double versus another, when to use solitary vs sociable, and how to mitigate test smells.
So, you've been through and changed all your double quotes to single quotes but your application still isn't running at the speed of light. What's going on?
Making an application scale is generally seen as something that only the most magical of developers can do, but it's easy once you have the correct tools. Fortunately for us, these tools are freely available online!
In this talk, we'll take a look at a few options that we have available to work out what our application is actually doing, help identify bottlenecks and fix them so that we can move on to the more important part of the project: delivering features.
"The Mythical Man-month" is one of the seminal books in the field of software project management. It was written in 1975, based on experience from the 1960s. Is it even still relevant?
Turns out, it is. Technology may have changed dramatically but people have not. Managing software projects is about managing people, not bits, and creative people engaged in intellectual endeavors are notoriously hard to predict and manage. (Just ask my project manager.)
Fortunately, many of the lessons-learned Brooks' presents are still relevant today. Some are directly applicable ("adding people to a late project makes it later") while others are valid with a little interpretation. Still others fly in the face of conventional wisdom. What can we learn from that?
This session will present a modern overview of the ideas presented by Brooks and a look at what we can still learn from them even today. Along the way we'll keep an eye on Open Source, and what lessons we may have forgotten.
As a developer, you spend your entire life learning. But what happens when the tables are turned and you become the teacher? Do you want to become a conference speaker or a mentor, talk to your local user group, give presentations at work, or become a technical trainer? As a previous classroom teacher with a Master's Degree in Curriculum Development, I will take you on a journey to understand the various learning styles and how to effectively reach everyone. We will look at how to present your information, best ways to structure it, and learn ways to reach all students no matter their level. We will also cover a number of best practices for crafting your presentation decks themselves. Join me for this exploration into the inner workings of the human mind.
Being a developer, programmer, analyst, tester, designer, etc is hard. We work in an industry that champions the 12+ hour work day; continued learning and open source contributions, but not on the company's dollar. We're continually berated with the idea of the 10x developer and so we must work harder, read more blogs, write more code and buy more books but when will it ever end? Will technology ever stand still long enough to let us all catch up? No. You'll always be busy, busy playing catch up in a race you didn't sign up for.
Fortunately, there's another way. Instead of being busy, I can help you be more productive. I will walk you through some of the tools and techniques that I use on a daily basis to, not only, maintain and upgrade my skills in the world of ever changing technology, but, and more importantly, to protect my sanity, be more present and remove stress and fear from my life.