Adam Culp, organizer of the SunshinePHP Developer Conference and South Florida PHP Users Group (SoFloPHP) where he speaks regularly, is a Zend Certified PHP 5.3 Engineer. Adam is passionate about developing with PHP and enjoys helping others write good code, implement standards, refactor efficiently, and incorporate unit and functional tests into their projects. When he is not coding or contributing to various developer communities, and he can be found hiking around the United States National Parks, teaching judo, or participating in long distance running.
No matter what level of development we are at in our careers we all face a daily battle to write good code for ourselves and others, deliver finished applications fast to satisfy business, and ensure everything is properly tested to prevent end-user fails. In this session we will discuss what clean application development is, and how it can help us win those battles. The talk will provide practical and usable examples to take with you, integrate into your workflow, and continue to grow into good habits. (Topics: Version control, refactoring, coding standards, frameworks, architecture, automation, time management, and more.)
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 refactor. How a refactor can help us write better code in the future. A common methodology and steps to follow while refactoring, and resources to help us all on our refactor journey.
Adam is a full-stack developer at Vehikl in Waterloo, ON 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 co-organizes the Laravel KW user group. When he's not writing code, he's winning gold medals at Canadian powerlifting competitions.
Test-driven development can be hard, and a lot of the “rules” can often become a distraction from the real reasons you're writing tests in the first place. In this talk, you’ll find out what the real benefits of TDD are, what really makes code “good”, and why testability shouldn’t be your only yardstick for measuring code quality. I’ll also show you some of the pitfalls of a “purist” testing approach, and give you strategies you can use to test-first without sacrificing simplicity or expressiveness in your code.
If you’ve ever given up on testing because it seemed so hard to do everything “by the book”, this talk will feel like a breath of fresh air and give you the tools you need to start writing tests that really matter.
It's really fun to build a package that adds some awesome functionality to your favourite framework. If you're not careful however, you can end up releasing something that nobody could use outside of Framework-X no matter how hard they try.
In this talk, I'll walkthrough building a framework agnostic package. You'll learn about important OO design principles like dependency injection, interfaces, and encapsulation, and see how we can integrate our package with a modern framework like Laravel, or the messiest legacy codebase you've ever seen.
Ben Ramsey is a web craftsman, author, and speaker. He builds a platform for professional photographers at ShootProof, organizes user groups, and lives in Nashville, TN with his wife, son, and dog named Echo. Ben blogs at benramsey.com and is @ramsey on Twitter.
A few years ago, I had a simple idea to add a new function to the PHP core: array_column(). Starting out on this journey to contribute to the core can be daunting to user-land developers unfamiliar with the landscape of the PHP internals. It can be tough to navigate these seemingly uncharted waters, but the recent move of the PHP source to Git has removed many of the old barriers. Nevertheless, there is a protocol involved, and I'd like to demystify the process in this talk, explaining how to go about setting up your environment, creating an RFC, communicating on the proper mailing lists, and sending your pull request. I hope this talk will encourage you to scratch your own itch and contribute to the PHP core. I tend to think of this talk as being aimed at mid-level developers, encouraging them to dive into a more advanced topic: contributing to the core of PHP.
I've been developing PHP and JS at ExperiencePoint for over two years. We've gone through hefty migrations and team changes in this time period where just before I started it was a "two-developer-shop" to now a full development team with dedicated QA and sysops roles. We've moved products from Ruby, Cold Fusion, and Symfony1.0, and even some Zend to a Symfony2.5 Service oriented architecture. We've gone from terrible prototype.js hodge-podge scripts into using full blown client-side apps in Angular using Websockets and node.
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.
Daniel is a Senior Engineer for Croscon living in New York City. In his laughably short free time, he co-organizes the QueensJS user group, continues to assist co-orgaizing the Lone Star PHP conference, speaks at conferences, eats way too much souvlaki at the cart down the street. He is Yolo Certified, a cat lover, and despite his last name not Canadian.
Often times we hit a wall and get stuck on a problem, only to realize much later and after lengthy and unnecessary pain the solution was simple if we just reframed the problem as something else. Thinking like a Computer Scientist involves being able to take a step back, abstracting what we know about a problem space, and realizing relations to other, solved, problems that were not immediately apparent. Together we'll tackle a problem, learn how to think, and come away with that "aha!" moment that we all know and love as developers. Originally a 10 minute lightning talk (with no code) that used up every second of that 10 minutes.
David works at Heroku, a cloud platform as a service headquartered in San Francisco. He was already building applications for the Web when the dot-com bubble burst, and went on to co-own a software consultancy before exploring the e-commerce and Berlin startup scene. Based in Munich, Germany, he is a regular speaker at technology conferences around the world and an avid fan of all things fast or exciting.
One of the first cloud platforms around, Heroku helped shaped the form of modern PaaS. Long beyond its Ruby roots, it now supports a multitude of languages, including, most recently PHP.
This workshop explores the benefits, characteristics, pitfalls and approaches of the platform, and walks the audience through the preparation and creation of applications, their configuration, and all the best practices and methodologies that will allow them to get the most out of Heroku upon their first deploy, from dependency management over development/production parity to scaling up (and down again).
For the brave ones, we'll sprinkle in some advanced Web server configuration, performance tuning and even a round of HHVM and Hack. I'm expecting people to be familiar with Composer and Git already. Should be no problem for me to bring some platform credit vouchers for everyone, but the platform is free for hobby users anyway.
Horizontal scalability has always been at the core of PHP application design. But to fully leverage the power and convenience of PaaS offerings such as Heroku, it's worth following certain best practices and methodologies when developing applications. This presentation covers all the steps from code and dependency management over configuration to maintaining dev/prod environment parity, and will demonstrate, live on stage, just how easy it can be to deploy and scale a PHP application to the cloud.
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.
In the spirit of open source, I'd like to shine a spotlight on mental illness. Not because it's easy, but because it's important. One in five of us will experience a diagnosable mental illness in the next year, but the stigma attached to it dissuades many from seeking help. These conditions will continue to take our siblings, parents, children, friends, and colleagues until we learn to talk about it without shame.
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. We'll discuss how to help those who cope with mental illness as empathetic, supportive colleagues. Together, we'll change lives for the better. I gave this last year, but this has new content: more statistics, more impact on the workplace, and more "what can I do" info.
As developers, we usually focus on technical know-how as the measure of our ability. The best of us come up with solutions more quickly; solve harder and more complex problems; knows their language and platform intimately. That stuff is all useful, but I think we're measuring the wrong criteria. Technical competence is important, but at least as important is our ability to empathize, communicate, and reason beyond popular opinion. If we want to be great developers, we must value those skills just as highly as coding chops, because we need them to anticipate and solve our user's problems. In this talk, we'll examine why these non-technical skills have such an impact on us as developers, and how to apply them to our work.
Elizabeth has been using PHP since time immemorial (PHP 4 beta), but has used PHP 5.4 for so long now that she's forgotten how she ever got by without traits and namespaces. She also plays far too much with C based languages and has the superpower of breaking things, like valgrind and gdb, on the same day. She went to college for dance which quickly became an English major after the first baby. If you see her in person, ask how she wound up with a career in computers.
Adobe, Target, New York Times - what do they have in common? Massive security breaches. In the age of fast and cheap choices when programming how do you avoid becoming one of the hacked? Security isn't a checkbox on a list, it's a way of programming that makes you do things the right way, the first time. And every project will have it's own needs for paranoia. Integrating a mental checklist and instilling some healthy "users are evil" paranoia can go a long way to keeping your site from becoming a victim. Learn about how to make the right decisions for the project that will keep your data safe without breaking the bank or the calendar, and how to add habits to your brain that will security consciousness part of your everyday programming habits.
Even with the language settling into its old age, gaining a language spec, and multiple implementations PHP popping up, most people still run the good old C based PHP. And you should know the basics of how PHP works. But why should it matter what is under the covers? As with any implementation of a language, knowing some of the basics of the underlying code will allow you to deal with quirks, weirdnesses, and generally help you understand how you are communicating with the machine. Learn about "Why are php's strings really byte arrays", "What are opcodes and caching", and Why what sapi am I using is very important", along with lots of other interesting things that impact you as a programmer (without having to actually having to dig into PHP's C code)
You've dabbled a little in version control using Git. You know about commits and pulls and branches. You may have even tried Git to rebase something once (and remember getting kinda freaked out by the headless thing). You can follow along with the various tutorials you've found online. But now you've been asked to implement a work flow strategy for your company's next project and you're not really sure how (or where) to start.
In this session you will work closely with long-time version control lover Emma Jane Westby to create the perfect work flow strategy for each of your projects. This is a process workshop designed to help you sort through the pros and cons of different types of work flows. It is not a tutorial on how to run Git from the command line, it's a 10,000ft view of how your team works.
In this half-day workshop you will complete activities to help you determine the best permission and branching strategies for your team. We will also discuss how you can enforce your new workflow once you return back to your project. This workshop is appropriate for managers, and technical leads. This workshop was well received at OSCON in 2014, and php[tek] in 2013.
Eric started developing professionally 10 years ago. He learned PHP in 2005 and have been using it as his main language since then.
He has a passion for best practices, especially for testing. And he sometimes writes about those things on on his blog http://erichogue.ca/
TDD (Test Driven Development) is getting more and more popular. But what can you do to take it to the next level?
What if you could know if your tests are passing every time you save a file without taking your hands off the keyboard. This is what continuous testing gives you.
In this session, we will cover how you can continuously test your PHP application. We will cover
The nightmare is at your doorstep! You’ve been tasked with extending a legacy PHP web application, a mash of raw SQL and HTML and PHP all inside out and backwards and spread over a several dozen (or hundred!) files. You know getting the system under test will push the project forward, but where do you start?
Come learn a slow, careful approach to incorporating automated unit tests into untestable code. See how your tests can slip in unobtrusively to take over your codebase from the inside, eating away at the spaghetti and creating a solid platform for future development.
Get to the know the ins and outs of virtPHP. virtPHP is a shell tool that allows you to create multiple virtual environments for PHP applications on one system, each with unique PHP configurations, global Composer packages, PEAR packages, and PECL extensions, along with the ability to connect environments to other PHP builds located on your system. Think Python’s virtualenv for PHP.
In this talk, co-creator Jacques Woodcock will introduce virtPHP and explain how it can benefit any PHP developer’s workflow. We'll also dive into the internals of virtPHP to see how it creates self-contained virtual environments. Finally, we'll discuss the project roadmap and how you can help. Talk can be reworked to be a tutorial as well.
Jeff Carouth is a web application developer honing his programming and skiing skills at Liftopia. He is an active member of the PHP community, speaker, co-organizer of BCSPHP, and co-host of the Loosely Coupled podcast. He believes quality code, testing, and automation are necessary ingredients in a recipe for a successful software project. When not hacking away at code he is a father and husband, beer and Scotch enthusiast, and an amateur photographer. Follow Jeff on Twitter as jcarouth or read his blog at http://carouth.com
Poor application design can be an incredibly frustrating experience. Often we can attribute frustration in software projects to tight coupling and high interdependence between modules within the design. As developers, the Dependency Inversion Principle helps us design maintainable software by showing us the direction dependencies should flow. In this session we will look at the ideas of dependency injection and dependency inversion and how they can make your applications easier to work with for yourself and your colleagues. At the end of this session you will have a grasp on DI and even a taste of using modern PHP dependency injection containers correctly in your applications.
Jeremy is an ex-pat Englishman and former professional musician, now living in Guelph, Ontario. He's been a web developer for the last 5 years, spending most of that time working with PHP and related open source technologies. Jeremy is a senior software engineer for NetSuite and is also the organiser of the Guelph PHP User Group. He spends his free time with his family as well as trying to come to terms with his recent status as a dog owner.
MVC presents a great way to divide responsibilities in your application but it offers no help in building the most critical part: the model or domain. This talk will introduce ways that can help you to encapsulate the richness of your domain. We'll look at Action Domain Response as a new way of thinking about the concepts presented in MVC before examining Hexagonal Architecture, allowing you to easily reuse your domain across multiple delivery mechanisms. We'll then finish with an introduction to Domain Driven Design, a technique that allows you to closely align your domain with the business problems it is solving while helping keep things well designed and easily maintainable. By the end of this talk you should have the knowledge needed to begin modelling your domains more powerfully while keeping them aligned to the real world problems they solve.
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.
In March, Facebook released a new language called Hack. It adds static typing, generics and lambda expressions on top of the rest of the familiar PHP syntax. In addition, it allows for gradual adoption of these features and continued interoperability with existing PHP code. But why should you care? Do you need to work in a massive environment like Facebook to reap the rewards of learning a new language? I'll make a strong case that Hack (and HHVM) are worth your time, give you a good demo of the language and show you how to get started. I don't work for Facebook, but I dove into Hack the day it was announced and I've continued to follow its development with great interest. I have applications in production running on Hack and I'm eager to show PHP developers of all skill levels why it's worth their time to give Hack a look.
Jonathan Reinink is a long time (late 90's) front and back-end web developer with a keen interest in PHP. Jonathan currently serves as the Director of Web Development at Compass Creative, a Canadian based marketing company that provides branding and websites to trades businesses. Jonathan spearheads their SaaS product, Worksites.net, a do-it-yourself website builder for contractors. After hours, Jonathan runs a second SaaS product, Church Social, a niche web-based management product for churches. In recent years Jonathan has transition from being a "lone wolf" developer to being much more active in the PHP community. Most notably, Jonathan has contributed Plates, a native PHP template system that's part of The PHP League. Jonathan has a strong design sense and is an advocate of using good design to help promote technical projects.
It's one thing to write a quick library that you and maybe a few coworkers will only ever use. It's an entirely different thing to put your work out there for the entire PHP community to analyze, test, poke, benchmark and critique. While there is potential for this process to be incredibly rewarding it can also be quite intimidating. Wouldn't it be nice to see what this looks like before you jump in? Come see how Plates (platesphp.com) became a thing last year while at the same time learning how to make your first open-source PHP package a success.
This talk comes from the perspective of a developer who has just gone through the process of releasing an open-source PHP project. As I share my personal story I plan to teach other developers what I learned along the way, and give practical advise on how they can successfully open-source their own PHP package. This talk includes a nice mix of soft skills and technical information, touching on many key areas of modern PHP development.
The main talking points are:
Composer has grown into the de-facto standard PHP dependency manager. While we struggle to make it easy to use, mastering dependency management and packaging in general remains tricky.
In this session you will learn how to leverage Composer version constraints, grasp stabilities and semantic versioning along with a few more tips on being a good OSS citizen. You should already be comfortable with Composer basics and eager to learn about it some more.
Joseph Glover has spent the last three years working with the Halton Regional Police Service building their Police Analytics unit. Prior to that he worked as a climate physicist, engineer and intelligence analyst. The common factor in his career has been PHP as Joseph has used the language as his secret weapon in work environments unaccustomed to the utility of web development. He has over a decade of PHP development experience.
The Halton Regional Police Service (HRPS) has created a new unit known as the Police Analytics Unit that is responsible for leveraging HRPS data sources in order to make the organization more effective and efficient. The unit embodies a start-up culture within the Service and applies modern development practices to rapidly prototype and push out solutions to users. Joseph Glover, the supervisor of the Police Analytics unit, has been a PHP developer for over a decade and he will share how his unit uses PHP to interface with enterprise police software, to repackage police data into modern web and mobile formats and deliver on-demand analytics to all members of the police service. Joseph will also discuss the challenges of utilizing modern web technologies in non-traditional work environments and the opportunities that these markets represent.
How does Facebook or tumblr survive using PHP? Huge amount of new startups and projects start of by writing everything in PHP. But sooner or later there comes a time to do some background processing or the amount of users just kill the app.
There are many ways to solve these problems. I want talk about when, how and most importantly why PHP sometimes is not the best tool for the job. And how to deal with problems when that tool starts to struggle.
There is always new frameworks, toolkits and libraries available. But what do you choose and how do you go about taking an idea and having a working implementation or just a prototype in a matter of hours? With the world moving at a faster and faster pace the need to react to changing conditions faster keeps increasing. So let’s look at ways to build software in rapid iterations and change how you think about the role of software. "Let's build this tool for our staff to be able to manage internal ads campaign". Month later the tool gets build... Too late, the spark for the idea is gone.
Happens all the time and causes developers to be called as "slow". In reality, most projects tend to do take way too much time. Especially if you have a perfectionist in your team.
I want to talk about MVPs (Minimum Viable Product) and how to achieve that.
The Code Manifesto is a set of values, created in hopes of guiding our community towards a place that is welcoming, safe, and empowering to all.
Currently, our communities are greatly lacking in diversity, and sometimes outright hostile towards the minority members that we do have. In this talk I try to illustrate that problem, and also cover WHY it matters, and finally what we can do to help fix it.
I talk about what the Code Manifesto is, why it came to be, and why each of the values were selected.
The Code Manifesto itself is here:
The first job I picked for myself as a very little kid was multi-generational space ship design for colonizing distant worlds. I am still happy to pursue this line of work should anyone have any job openings for it. Growing up and realizing this was a bit out of my reach due to my location in space-time, I started obsessing on what role I could fill in the getting-humanity-into-space mission. The angle on the problem which called to me most was child rearing and education. On examination it has always seemed to me that we would all have a whole lot more time, energy, and creativity with which to advance the species if we didn't spend so much time overcoming our rather slap dash upbringings and educations - so my goal in life became raising and educating children at a massive scale. Then my spine was crushed and my ability to effect the universe became limited to what I can do through a laptop. My interest in technology went from "everyone should learn technology so we can all go into space" to "the only effect I can have on the universe is through technology" and so for the last few years I've been learning a lot about programming and making games that expand the mind as well as amusing the spirit.
Using a framework can be a great way to keep from having to recreate the same components for every project, for facilitating the use of existing code created by others and designed to slot in to your shared framework, and for keeping your code reasonably structured as your project expands. That said, if you're unfamiliar with a framework it can seem like all those benefits are on the other side of an obstacle course of unknown breadth and difficulty. How long will it take you to get up to speed if you try to pick up a new Framework? As long as that answer is an unknown quantity possibly equaling infinite, you're unlikely to take that leap.
This talk will include the basics of setting up a new project, understanding the file structure, getting a handle on the Routing->Controller->Template relationship, adding existing bundles to a project, and the basics of implementing Commands and Services. Aimed at beginners who may have never used a framework before, this talk's goal is to equip you with all the information and understanding you need to skip the confusion and jump into developing with the Symfony2 framework.
Developer at FreshBooks and contributor to a number of open source projects including CakePHP, Twig, Xhgui2 and more.
CakePHP is part of the old guard in the framework space. Throughout its life many things have been added/removed and changed. I’ll be taking a look at some of the mistakes we made, how things went wrong, and how we’ve tried to resolve those problems.
In addition to the framework code itself, I’ll be discussing some of the tooling around the project that people may not have considered, but are vitally important for a successful project like CakePHP.
mfrost503 on Freenode
There are so many opportunities to connect and integrate popular services to our projects, but with all of the security concerns, can we really trust that our credentials are being handled with care? Do we really want the burden of maintaining credentials for other services for our users? Of course we don't! When a service provides an API for us to create and consume content, we want to trust that we can identify ourselves in the least intrusive way possible. OAuth allows us to make such requests securely, but it has a bad reputation for being difficult to implement and use. Never fear, this talk will break the protocol down into easy-to-understand steps, empowering you to provide your service, and use other services, with ease.
Michelangelo van Dam is a professional PHP consultant and Zend Framework expert working mainly for governments and larger enterprises. Michelangelo is also president of PHPBenelux, a PHP user group operating in Belgium, Netherlands and Luxembourg, and speaks at several PHP conferences around the world.
So you have spent the last few years building ZF1 applications but now the business requirements have changed and you need to provide a full featured REST API. You could invest time, money and energy building it yourself, but have a look at Apigility. This is a full REST management application build on ZF2 allows you to tap into your existing ZF1 application and provide 100% REST endpoints to the outside world.
In this talk I go over the challenges we had to deal with creating our own REST implementation, throwing it all away because we only had 20% of the features of Apigility and setting up and managing Apigiltiy using our existing ZF1 application.
After this talk you will get a good understanding how to use Apigility to manage your REST APIâ€™s, while using your non-ZF2 application (Zend Framework, Symfony, Aura, â€¦). So you can invest time in building more features instead of trying to make your application REST compliant. I needed to architect APIâ€™s for customers who already had ZF1 applications and had already invested 4 months in developing a REST API, when Apigility was announced. We dropped all development and started investigating how we could integrate Apigility into our ZF1 applications. These findings are covered in this talk, I even blogged about it at dragonbe.com (http://www.dragonbe.com/2014/03/bootstrapping-zf1-application-in.html).
For MySQL 5.7, one of the engineering goals is to continue to clean up and simplify code, and improve the architecture of the MySQL Server.
As part of this spring cleaning process, some features in MySQL 5.7 have a change in behaviour; for example the EXPLAIN PARTITIONS and EXPLAIN EXTENDED syntax will be enabled by default. Other features will be deprecated and may be removed; for example the InnoDB Monitor tables.
This session aims to describe the motivations behind each of these changes and how they will affect you.
Yesterday WonderProxy routed 6.5TB of traffic for it's customers. The proxies run squid, but: sign up, sever selection, authentication management, administration, and cancellation are all managed in PHP or bash scripts.
This talk will present how the technology has changed over time, what's worked, what's failed. Come to poke holes in our database design, and to hear about the times we updated the users table without a `where` clause.
Rafael Dohms is an experienced PHP Developer, Evangelist, Speaker, and Contributor. During his years of experience, he has become an active member of the community and founded three user groups. He moved to the Netherlands in search of new challenges and to share his passion for code quality and innovation. In his spare time, he also helps manage the AmsterdamPHP User Group, amongst other projects.
As developers we write code everyday, only to frown at it a week after that. Why do we have such a hard time with code written by others and ourselves, this raging desire to rewrite everything we see? Writing code that survives the test of time and self judgment is a matter of clarity and simplicity.
Let's talk about growing, learning and improving our code with calisthenics, readability and good design. This talk aims to inspire people to write code that will go the distance.
Sean Coates is a partner at Fictive Kin where he says he does ops and development, but really spends most of his time unbreaking things that past-Sean broke. He's been doing this Web thing professionally since 1999, and has been contributing to PHP in some form or another since 2001.
So you've heard that all the cool kids are using Amazon Web Services (AWS) for their hosting, but you haven't really got the time to learn all about nodes and clouds and elastics? This introductory session will give you a baseline for getting started on AWS.
At Fictive Kin, we spend an embarrassingly large amount of money on AWS every month, and we use many of their services, so I've become pretty good at pretending I know what's going on over there.
In this talk, we'll cover file hosting (S3), server hosting (EC2, VPC), DNS hosting (Route53), database hosting (RDS), and some additional things like Cloudwatch, CloudFront, and ElasticCache, but we'll focus on the moving parts of EC2.