Adam is a senior developer at Tighten Co and has worked with PHP for over 12 years. He's passionate about software design, test-driven development and building great products. He is an active open-source contributor and the host of the Full Stack Radio podcast. When he's not writing code, he's winning gold medals at Canadian powerlifting competitions.
You're starting a new project and this time you want to do it right. Everything's going to be test-first, your domain model is going to be perfectly portable, and your framework will be nothing but a mere detail.
But as soon as your fingers hit the keyboard you're paralyzed.
"I think I'm supposed to use a repository here right? Does that work with a command oriented architecture? Maybe I should split this out into a whole separate service?"
Slow down! This talk is about taking a step back and forgetting about the big picture for a minute. There's a beautiful symmetry between architectural thinking and low level design, and by focusing on one small problem at a time, I'll teach you how to stop worrying about getting everything right up front and start writing great code now.
Allison is a technical writer at MongoDB, where she works on MongoDB's core documentation, as well as the docs for MongoDB's management/monitoring service. Previously, she wrote API documentation for the Oracle Marketing Cloud. Allison has a Master of Information in systems design / information architecture from the University of Toronto, so she's wicked good at organizing both things and ideas. When not working on the MongoDB manual, she handles the admin at WonderProxy, knits, and plays video games.
You probably hate writing docs. You're a developer: you want to be coding. Writing documentation takes time out of doing what you like, and it's hard to do well. You may be tempted to throw some HTML up on your site and be done with it, but what happens when you need to update it down the road? What happens when you change a parameter and need to fix it in seven places? Grumpiness. Grumpiness is what happens. There is a better way.
This talk will show you how to figure out what docs you need to write, provide some strategies to improve your technical communication, and think through organizing your content. Then, we'll look at some modern tools you can use to render docs in a sane and maintainable way so that it's easy to keep them up-to-date as you improve and update. It doesn't have to be like pulling teeth, and it doesn't have to make you grumpy.
From humble beginnings as a PHP4 web developer in grade school, Amanda now works as an Associate Product Manager / Developer Evangelist at PagerDuty where she gets to share her passion for technology with others. When she's not speaking, writing, or shooing cats off her keyboard, you'll find her consuming APIs and IPAs.
Everyone wants to create a community and invite their users and prospects to join, but few people understand that communities create themselves. The best communities exist because the users of a product or service banded together to make it happen, not because the company stood up a community site and invited people to start talking.
By the time users leave this talk, they'll understand what they and their companies can do to encourage communities to form around their products. Once the community forms, they'll have an understanding of how to cultivate it to encourage organic growth over forcing it to grow in a particular direction. Finally, attendees will leave this talk with an understanding of how to measure the success of their community efforts.
Building and maintaining an API or microservice doesn't have to suck. We'll use Laravel's new micro-framework Lumen to build an API using all of the Laravel features we love without all of the full stack stuff we don't need. Once our API is set up, we'll look at consuming it via Laravel and delve into some SoA theory.
By the time attendees leave this talk, they'll have an overview of how they can use Lumen to create an API (from configuration to consumption) that they'll love to maintain and users will love to use. They'll also have an overview of API design best practices as well as a sprinkling of service-oriented architecture. The ideas conveyed in the talk will be demonstrated with a Laravel app that talks to a remote Lumen service.
Beau Simensen (beau.io) has been a professional polyglot programmer since 1998. He is Co-Founder and Software Architect for monii.com and is co-host of That Podcast. An active open-sourcer, he created Sculpin and helped create Stack PHP. He is also the Sculpin representative to the PHP Framework Interoperability Group (PHP-FIG). Beau is a proponent of framework agnostic code. Unglue all the things!
Are you curious about the process of creating an open-source application from scratch? Are you asking questions like, "should I contribute to an existing project instead?" or "does the world really need yet another [insert your idea here]?" Maybe you are wrestling with, "am I good enough?" or "what if nobody wants to use it?" Once you decide to go for it, a whole new round of decisions need to be made like "which framework should I use?" , "should I roll everything from scratch?" or "should I use some standalone libraries to help me?" And this is before you've even written any code!
Come see how this scenario played out for Sculpin (sculpin.io). Learn about the motivations for creating yet another static site generator for PHP. Find out about the questions and barriers that almost kept Sculpin from ever being created. Discover the technology decisions that needed to be made and how those have changed over time. Walk away knowing more about what it was like for one open-source application to grow from idea to a full-fledged application with actual users.
Traditionally, managing third-party code in PHP projects has not been a trivial task. Fortunately, the PHP community now has Composer, a top-notch dependency manager. Learn what Composer is and how you can put it to work for fun and profit. You will see how to set up a new project, find packages, as well as how to create and distribute your own packages.
Ben Ramsey is a web craftsman, author, and speaker. He is a software architect at ShootProof, where he builds a platform for professional photographers. He enjoys organizing user groups and contributing to open source software. Ben blogs at benramsey.com
Much focus has been spent discussing the merits of RESTful APIs. Sure, REST is important, but how do we put these concepts into practice and build great APIs? How RESTful do we need to be, and where do we draw the line with a pragmatic approach to ship code and make our users happy? In this talk, I'll show how to build APIs that put into practice the concepts of REST, while showing that it's okay to bend or break the rules. Along the way, we'll cover the Richardson Maturity Model, hypermedia, when and where to use content negotiation, and API versioning pitfalls.
Bernhard - better known as webmozart - is a long-term member of the Symfony core team and lead developer of various Symfony components. He represents Symfony at PHP-FIG and is a passionate proponent of interoperability in the PHP ecosystem. Lately, Bernhard has been developing Puli, a resource management toolkit built on top of Composer.
The development of Composer packages is thriving. But much effort is duplicated, creating "bundles", "modules" or "plugins" for different frameworks. Why not join forces and create universal packages together?
Puli, a new PHP toolkit, is a step to make this possible. With Puli, Composer packages become "intelligent". Enable any package in any project (Plug 'n Play) simply by running "composer install" - independent of your framework. Are you ready for the future of PHP?
Chris is a polyglot developer working in London, Canada, who got his professional start using PHP. He is the author of Ratchet and the co-author of React, both open source PHP libraries. Chris has a special interest in programming real-time anything.
I've been using AngularJS "professionally" for three years now. It's time for me to blow off some steam (kidding)...(sort of). AngularJS recently turned 5 years old and it has pioneered a major shift in the way "web apps" are developed now. After building several large SPA's I've gotten a good feel for the framework. This talk will be me sharing my highs, lows, what's good and bad (IMHO), how I overcame some "Angularisms", and finally we'll have a look into what's coming in Angular2 where I will try to validate my complains. /s
Chris Hartjes has been building web applications of all shapes and sizes since 1998, ranging from catalogs for CD compilations for professional DJ’s to large-scale dating web sites.
A huge consumer of open-source software, Chris tries to give back to the community via his blog, by speaking at conferences, and by co-organizing TrueNorthPHP. He is also a big believer in the power of testing and automation as secret weapons for organizations to deliver high quality applications quickly.
He lives in Milton, Ontario, Canada with his long-suffering wife, two daughters, a furry pig masquerading as a cat, and the reincarnation of the Roman god of the underworld in feline form.
With a BA in Psychology & Communications and a certificate in web development, Christina has nearly a decade of experience in the tech industry as a developer and educator.
She got her start working at digital agencies such as Teehan+Lax and Nurun (now Razorfish) and headed up the front-end development for software company, Field ID. She also taught at Humber College, HackerYou and participates in the initiative to encourage more women to join the technology field with Ladies Learning Code as a mentor, instructor and now as Director of Curriculum.
In his role as Training Manager at Inviqa and Sensio Labs UK, Ciaran helps teams at all levels of ability improve via training and coaching. He has been a PHP professional since the late 90s and is passionate about TDD, BDD and Agile methodologies. He is lead maintainer of PhpSpec.
Is a SpecBDD tool the same as a TDD tool, or something quite different? This talk will answer these questions, and show how PhpSpec can be integrated into your development workflow to drive quality in your Object Oriented design.
Colin is a senior developer for Vehikl, a web application consultancy, based out of Waterloo, Ontario, Canada. While at his $dayJob, he tirelessly refactors, tests and indents with tabs. He has also been a co-organizer of the Guelph PHP Users Group since its inception 4 years ago.
Picard > Kirk, vim > emacs
// => true, true
When venturing into the Cloud there are many choices for delivering your applications to your customers, but did you know that Platform as a Service can greatly reduce the effort for deploying, testing and scaling your applications? Join Cory Fowler as he demonstrates Azure App Service and how you can leverage its features to Deploy, Test and Scale your way to better applications.
Davey Shafik is a full-time developer with over 14 years of experience in PHP and related technologies. He is a Community Engineer at Engine Yard and has written three books, numerous articles, and spoken at conferences the world over. He is best known for his books, the Zend PHP Certification Study Guide and PHP Master: Write Cutting Edge Code, and as the creator of PHP Archive (PHAR) for PHP 5.3.
Davey is passionate about improving the tech community. He co-organizes the Prompt initiative, dedicated to lifting the stigma surrounding mental health discussions, and has worked with PHPWomen since its inception.
Scaling is hard, but it shouldn't be. Using the 12-factor application methodology, micro-services, and containers, you can easily scale your apps horizontally in the cloud, on your own hardware, or anything in between.
Learn the what, why, and how of Docker, and container technology. Learn how to build and deploy your own docker images, and get started using them immediately.
Deis is an open source platform for Docker. Built around the 12-factor app methodology, Deis allows you to create your own Docker container based platform for application deployment, in the cloud, behind the firewall, and everywhere in between.
In this talk we will look at how to build Docker containers, how to setup and deploy using Deis, and the 12 factor methodology for building sites that scale.
Derick Rethans is a PHP internals expert, author of Xdebug and an OpenStreetMap and mapping enthusiast.
He has contributed in a number of ways to the PHP project, including the Xdebug debugging tool, and various extensions and additions. He's a frequent lecturer at conferences, the author of php|architect's Guide to Date and Time Programming, and the co-author of PHP 5 Power Programming. He is now working at MongoDB to work on the PHP driver for MongoDB.
In this talk I will go over all the past, present and future debugging techniques. The talk start by giving an overview on PHP's (ancient) standard features for debugging, additional (userland) libraries and functionality in frameworks.
After the introductions we move on to the meatier stuff and I will talk about live-action debuggers, such as Xdebug and Zend's debugger. They both provide information while a script is being executed, in combination with IDEs.
I am also unveiling a project that allows you to "step back" while debugging as well; introspect what your script's or application's exact execution paths was; and trace variable modifications.
Don Pinto is a Sr. Product Manager at Couchbase and is currently focused on advancing the server capabilities of Couchbase Server including Security. He is extremely passionate about data technology and in the past, has authored several articles on Couchbase Server including technical blogs and whitepapers.
Prior to joining Couchbase, Don spent several years at IBM where he maintained the role of software developer in the DB2 information management group and after that, as a Program Manager on the SQL Server team at Microsoft. Don holds a Masters degree in Computer Science and a Bachelors degree in Computer Engineering from University of Toronto, Canada
Over the last few years, NoSQL database technology as experience explosive growth and accelerating use by large enterprises for mission critical applications. Eight to 10 years ago, when NoSQL pioneers first deployed the technology, its use was limited to Internet-age companies like Google, Amazon, Facebook, and LInkedIn. Today, virtually every enterprise has deployed some NoSQL.
The session will introduce key drivers of NoSQL adoption - technical requirements and business benefits, the challenges with relational databases, and the role of NoSQL in big data deployments before providing a guide to the top 10 enterprise NoSQL use cases we're seeing in the market today. We will also provide a brief overview of Couchbase Server, a NoSQL document database, explain its architecture and drill into 3 specific customer use-cases.
With over 15 years of passionate web development experience and open source advocacy, Ed Finkler loves empowering people through technology. He's excited about creating things and sharing them with the world.
He served as web lead and security researcher at The Center for Education and Research in Information Assurance and Security (CERIAS) at Purdue University for 9 years. More recently, he has been helping startup teams build exciting e-commerce, social sharing, and mapping systems. He's a proud member of the Fictive Kin team, working on Done Not Done, Gimme Bar, and lots of other cool stuff. Along with Chris Hartjes, Ed is co-host of the Development Hell podcast.
Ed spends much of his free time creating and working on open source projects such as Spaz, a long-running, award winning microblogging client. Ed also created the PHP libraries like FUnit, Resty.php, PHPSecInfo, and Inspekt.
Mental disorders are the largest contributor to disease burden in North America, but the developer community and those who employ us are afraid to face the problem head-on. In this talk, we'll examine the state of mental health awareness in the developer workplace, why most developers feel it isn't safe to talk about mental health, and what we can do to change the culture and save lives. Attendees will leave with 5 things they can do to make their workplace safer for those dealing with mental health disorders.
Elizabeth is an author, speaker, mentor, and former PHP developer. She currently works on the Community Team at GitHub, and she's all about looking at new ways to solve old problems. She lives in Cincinnati, Ohio with her husband, their 3 children, and a dog named Raisin.
Healthy open source communities are vital to the success and growth of an open source project. Those with toxic, closed communities will find it more difficult to be innovative, to attract contributors (and in some cases, users), and to keep up with expanding technologies. Because people are complex, diverse creatures, ensuring that your community is healthy, vibrant, and welcoming can be challenging.
The good news is, science can help you understand how people think and why they act the way they do. Knowing the effect your words and actions have on your fellow community members can guide the way you interact with, and shape the communities in which you're a member.
In this talk, we will discuss cognitive biases such as negativity bias, rejection sensitivity, in-group favoritism, illusion of transparency, and impostor syndrome. We will also talk about the neural and chemical affects of feeling misunderstood and disrespected, social bonding, and tribalism.
You'll come away from this talk with a better understanding of yourself and your fellow humans, an increased feeling of empathy, and the knowledge to improve personal interactions and your communities.
Evert is a long time PHP developer, CTO of fruux and has a strong interest in building HTTP-based applications.
Evert is the original developer for sabre/dav. He's also a member of the CalConnect standards consortium and PHP framework interoperability group. Since 2012 he's the CTO for fruux, a web startup in Germany. He does this from his home in Toronto, Canada.
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 that 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.
Ilia Alshanetsky is a CTO at Centah Inc., a company specializing in providing solutions for the retail industry. Over the last 10 years Ilia has been heavily involved in development of PHP, as a Core Developer and Release Master, authoring many extensions and language improvements. Ilia is also interested in security and performance, and frequently is writing or speaking on these and other PHP related topics. In his spare time he pretends to be a pro-photographer and engages in various sports.
Every year the OWASP community releases a Top 10 List of what it considers are the most critical web application security flaws. During this talk we'll do a quick run-through the current top 10 to see how they impact PHP application and what mitigation strategies you can adopt to prevent those issues from affecting your applications and code base. The talk will also cover some of the general best practices when it comes to security, which will aid you in taking a security minded approach to development.
PHP and C# developer living in the Milwaukee area. Organizer of Milwaukee PHP and Milwaukee Functional Programming user groups. Addicted to learning, teaching and growing the developer community. Currently obsessed with functional programming.
Testing is an important part of software development, but how many tests is enough? Should you write a test for every possible value that could be submitted to a function? Property-based testing is a technique that can help you with this conundrum. Instead of writing a specific set of tests, write some generalized tests and let a tool randomly test inputs against your code.
I'll explain in more detail what property-based testing is, how it works, and show some practical examples using Eris, a new PHPUnit extension modeled after Haskell's QuickCheck library.
Enter Elm, a new language with a focus on building safe, reliable, well-architected and performant front-end applications. I will present an introduction to Elm, with a focus on what sets it apart from the myriad of other options available to the front-end developer. This talk will be very heavy on demos and examples, showing you the syntax, features, performance and tooling of the language. Ever see a time-traveling debugger? No? Then you won't want to miss this talk.
Jonathan Reinink is a long time front and back-end web developer with a keen interest in PHP. Jonathan runs a small Canadian based web development company called Code Distillery. In recent years Jonathan has transitioned from being a "lone wolf" developer to being much more active in the PHP community. Most notably, Jonathan has contributed two packages to the The PHP League, including Glide (an image manipulation library) and Plates (a native PHP template system). Jonathan has a strong design sense and is an advocate of using good design to help promote technical projects.
We talk a lot about writing highly decoupled, dependency injectable, single responsibility classes and methods. And this stuff is ALL GOOD. But, are we thinking enough about what defines quality templates? How seriously are you taking security when writing your templates? How tightly are these templates coupled to the objects they use? This talk will show you how to write awesome, modern-day PHP templates. We'll look at new features you should be using, how to decouple templates from your business logic, where to best place your presentation logic and more.
Keith Casey currently serves as Director of Product for Clarify.io working to make APIs easier, more consistent, and help solve real world problems. Previously, as a developer evangelist at Twilio, he worked to get good technology into the hands of good people to do great things. In his spare time, he works to build and support the Austin technology community, blogs occasionally at CaseySoftware.com and is completely fascinated by monkeys. Keith is also a co-author of "A Practical Approach to API Design" from Leanpub.
No matter the situation, Batman always had the perfect tool on hand. It didn't matter how rare, bizarre, or unique the situation was, he was ready to save the day. Unfortunately, in software development, we don't have a utility belt. At best, our tools are scripts we've cobbled together over the years that solve particular problems but leave us stuck more often than not. In this talk, we'll work to change that. I'll introduce you to seven tools that I find vital to my everyday API usage and development.
Most API testing is a joke. We have things that resemble Unit Tests which are really integration tests which really just wrap our personal understanding in just a bit of code. And at the end of the day, we're still not sure it works. Instead, let's flip the entire experience around and look at it from the API consumer's point of view and confirm that we're solving real problems for real users. In this talk, we'll dive into some of the benefits of Behavior Driven Development and build some examples.
Marco "Ocramius" Pivetta is a software consultant at Roave.
With over a decade of experience with PHP, he is part of the Zend Framework CR team, Doctrine core team, and is also active in the community as a mentor and supporter.
When not coding for work, he usually hacks together new concepts and open source libraries, or simply provides Q&A on IRC.
Doctrine ORM is a complex tool that enables development of very advanced applications, but are you actually using it correctly?
What if you have been using the ORM incorrectly or in an inefficient way?
We are going to inspect the advantages and disadvantages of various approaches to application design with this Data mapper, and come up with a set of best practices that will be useful for your projects.
Is that a bug or a feature? It's magic!
Learn how to (mis-)use PHP hacks to build actual magic into the language, and how to get burnt by it!
This talk teaches some of the language features that are in PHP and that nobody should use (unless you are wearing a HEV suit).
As part of the AesopGames team, Margaret writes the code that makes the game work! She takes design documents and translates them into game functions, and then takes those and delivers them to players through the web client and to the AesopGames Unity developer through the API.
From a design document and enough php knowledge to create a contact form to a fully featured web based MMO strategy game, ride along on a tour of my latest adventure! I will unpack how design ideas became game mechanics, talk about the tools that were used (including Symfony and other open source goodies), examine major roadblocks and how they were overcome, give a postmortem on key implementation decisions, and share the highlights of what I learned along the way.
Mariano is the co-founder of Workana, a leading platform for remote work in Latin America, and one of the largest marketplaces of its kind in the world. He is a published author who leads several open source projects, and participates on the development of widely popular open source libraries and frameworks.
This talk is not only about the technology behind payment processing, but most importantly about the do-don'ts that you learn after processing millions of dollars through your webapp.
We will learn how to process payments using a wide variety of payment gateways, including the very popular Paypal, Stripe, Authorize.net, and Worldpay, and several others, but we won't stop there. After learning how to properly process payments, we will leverage this knowledge with a lot of useful tips and techniques, such as:
While they have been around for ages, job queues are often left out of the sweet of tools most web developers utilize. As a result we are worsening the experience of our users by making them wait for things they should not be waiting for.
In this session I will not only introduce the concept of job queues and explain how they come to solve this problem, but also illustrate how their usage will make our code more modularized, stable, testable, and scalable.
We will navigate through the different alternatives for job queues (from Gearman to RabbitMQ, among others), and we will end up focusing on Disque, a recently published in memory queue developed by non other than Salvatore Sanfilippo, the creator of Redis, focusing on its PHP integration by means of disque-php, a library I created.
Developer at FreshBooks and contributor to a number of open source projects including CakePHP, Twig, Xhgui2 and more.
I've been a developer at FreshBooks for almost 6 years. Our technology stack was at one point a monolithic flying spaghetti monster. Today FreshBooks is built out of many small services.
This talk will be about some of the strategies we used to increase test coverage, pay down technical debt and continue to deliver new features to customers. I'll also talk about some of the mistakes we made along the way and how you can hopefully avoid the same mistakes.
Morgan rejoined the MySQL team at Oracle in 2013 as MySQL Community Manager, having previously worked for MySQL and Sun Microsystems. He blogs from tocker.ca, and especially likes the new features in MySQL that make operations life easier.
With the newly added JSON support in MySQL, you can combine the flexibility of NoSQL with the strength of a relational database. In this session, Morgan will explain the new JSON datatype, and the new set of functions for handling JSON documents, available storage and indexing options. In addition, he will present benchmarks showing how much one can expect from the MySQL server in different use case scenarios.
Paul M. Jones is an internationally recognized PHP expert, working in that language since 1999, and programming in general since 1983. He has held roles from junior developer to VP of Engineering in all kinds of organizations (corporate, military, non-profit, educational, medical, and others). He is a regular speaker at technical conferences worldwide.
As the author of Modernizing Legacy Applications in PHP and Solving the N+1 Problem in PHP, Paul takes a special interest in high-quality, high-maintainability coding practices. His leadership on the Aura for PHP project reflects this interest, along with his white paper on the Action-Domain-Responder pattern.
Among his other open-source work, Paul was the architect of the Solar Framework and the creator of the Savant template system. He has authored a series of authoritative benchmarks on dynamic framework performance. He was a founding contributor to the Zend Framework (the DB, DB_Table, and View components).
Paul is a voting member of the PHP Framework Interoperability Group, and was the driving force behind the PSR-1 Coding Standard, PSR-2 Style Guide, and PSR-4 Autoloader recommendations. He was one of the first elected members of the PEAR Project. He was also a member of the Zend PHP 5.3 Certification education advisory board, and wrote some of the questions on that test.
In a previous career, Paul was an operations intelligence specialist for the US Air Force, and enjoys putting .308 holes in targets at 400 yards.
Using Model-View-Controller as a pattern to describe stateless HTTP interactions has always been a bit of a kludge. There simply hasn't been a better pattern web applications -- until now. ADR (Action-Domain-Responder) represents a refinement of generic MVC as an application architecture specifically tuned to the web. In this talk, we will discuss various patterns of overall application architecture, including MVC, MVP, PAC, DCI, RMR, and others. We will find out how the ADR pattern arises from generic MVC, and how it provides a better description of how web applications actually work. Finally, we will go over examples of how to architect an ADR application, as well as how to convert from an MVC architcture to an ADR one.
Samantha Quiñones is a polyglot hacker and systems architecture expert. Over the course of her 17-year career, she has built software and led teams for some of the largest names in technology and is currently a Principal Software Engineer at AOL. Samantha is a frequent speaker at technology conferences and participated in the White House Data Jam on STEM Workforce Quality, Flow, and Diversity. She has been recognized by the Huffington Post as one of the top Latinas in American Media and is a recipient of the DCFT Powerful Female Programmers Award.
What if applications could know they were about to go viral and scale themselves accordingly? What if content could change itself based on the weather? Our capacity to collect data is growing at an astonishing rate, but finding answers in the stream requires entirely new methods. Let's explore the lessons learned at a top web company in their quest to find meaning at 15 MB/s. We'll talk about the techniques and theory that enable the collection and indexing of billions of datapoints each hour, and discover how one group of engineers is approaching this new frontier in data management.