In recent years, performance has evolved from a non-functional requirement to a business critical aspect of modern applications – but did your monitoring solution keep up with this change? Are you still learning about issues by your users’ calling in, and fighting production problems by digging through log files? In this session we show how a modern approach to Application Performance Management helps with building and operating today’s web applications.
When you continuously develop new features and deploy new code to production frequently, quality must not be an afterthought. This keynote will elucidate how agility and quality are connected and what this should mean for the architecture of your software.
Numbers may seem too innocuous to lend themselves to any task that is outside the realm of logic, let alone succumb to wizardry. But, in the world of PHP numerics and magic may intersect, especially if one is aiming for numerical precision, at times a seemingly daunting task. And, then there are the unexpected things that you may have lacked the foresight to anticipate which undermine your best efforts. Let’s inspect The PHP Way of handling numbers by focusing on three areas that can be challenging even for experienced developers, namely hexadecimals, octals and really big numbers.
There is no mobile Web, there is no desktop Web, and there is no tablet Web. We view the same Web just in different ways. So how do we do it? By getting rid of our fixed-width, device-specific approaches and use Responsive Web Design techniques. This session will focus on what is Responsive Web Design and how you can use his 3-pronged approach on your current apps today which will also adapt to new devices in the future.
As the industry of mobility is exploding right now, and the support for new technology is now available on all the principal platforms, we must stop thinking about mobile phones as secondary devices. The mobile first philosophy forces us to think, design, and create for mobile phones first. Using this technique forces us to focus on what is really important for our users, and our customers without neglecting others devices, like PCs.
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.
The performance of your application affects your business more than you might think. Top engineering organizations think of performance not as a nice-to-have, but as a crucial feature of their product. Those organizations understand that performance has a direct impact on user experience and, ultimately, their bottom line. Unfortunately, most engineering teams do not regularly test the performance and scalability of their infrastructure. Join this session to find out about the latest performance testing tools and why your team should add performance testing to your agile development process. We will dive in to how to evaluate performance and scalability with MultiMechanize, Bees with Machine Guns, and Google PageSpeed. In addition, we’ll look at how to track the impact of every release with AppDynamics. You will leave this session with an understanding of how to automate performance testing and evaluate the impact it has on performance and your business.
People are no longer satisfied with flat, single output websites that do nothing to personalize themselves to the needs and differences of each viewer. With the wealth of data and interaction mining techniques being employed in everything from online sites to brick and mortar stores, we are truly seeing a major industry shift towards automatic personalization.
The future of user identification and personalization will not be in the act of logging in, it will be in mining the interaction of users with those sites, creating personality graphs and tracking the emotional state of each person based on their actions. Through these techniques you can deliver customized content, recommendations, and a fully personalized user experience that changes right along with each person.
How does a high school student turn a laptop, two prepaid cell phones, and a cease and desist from Amazon into one of the largest text messaging gateways in the United States? Join Evan Coury as he shares his eventful journey of starting and scaling his web startup. A story of luck, risks, mistakes, and eventually, success.
Zend Framework 2 provides a lot of great tools and resources to help developers build quality applications. However, a lot of important architectural decisions are still left to the developer. What belongs in the controllers? What’s a service layer and why should you have one? What the %*$# is a model, really? In this session, Evan will lift the fog on all of these concepts, showing you how to use them to create a more maintainable and well architectured ZF2 application, while keeping the technical debt to a minimum.
One of the best ways to help improve the quality of your code and help your developers improve through learning from each other is to implement a formal code review process. Teams that do code review at all often do it in an adhoc manner. This can involve over-the-shoulder code review, emailing diffs, group reviews with a projector, etc.
There are several code review products that are designed to make a more structured and useful code review process a reality. Products like Review Board, Crucible, Fogbugz Kiln and others allow for a much more elegant, efficient and flexible code review process. The allow for feedback on code to be recorded and for reviews to be done when other developers won't need to interrupt work on their own work.
Code review helps to ensure consistent coding standards, catch bugs before they become part of the codebase, and helps improve the skills of your entire team as they can learn from each other as part of the review process.
A little over a year ago, I left the world of PHP application development and joined 10gen to work on their PHP driver for MongoDB (http://pecl.php.net/package/mongo). The experience of being thrust from PHP userland into the dark depths of Zend's C API was unsettling and eye-opening, to say the least. For all the thoroughness of PHP.net's documentation, an aspiring extension developer has little more than a handful of blog posts to guide them through PHP's internals. I somehow managed to pick up a few things by grepping PHP's source code and picking the brains of my colleagues. Admittedly, my C contributions to our driver have been modest, but the whole experience has certainly changed the way I work with PHP for the better.
There are no "best practices" without "worst practices". When it comes to databases, this may include any number of things ranging between blindly trusting an ORM to never devising a backup/restore strategy; MongoDB is no exception. In this presentation, we'll walk through various use cases for MongoDB and cover topics such as schema design, querying, operations and methods of data aggregation. Tips and caveats will be sprinkled throughout the session as we look at DOs and DON'Ts realized over three years of using MongoDB on several projects.
People may consider API and Web application security the same, but are often surprised to find that API security involves many additional, some much more complex issues, that must be addressed. During this presentation I will cover some of the more common issues such as authentication and authorization, privacy, as well as payload and other API related attacks and security vulnerabilities.
For almost ten years already, the Open Web Application Security Project (OWASP) is maintaining a list of the ten most critical web application security risks. In this highly interactive workshop we will discuss these common problems as described in the 2013 edition and based on practical code examples. We will analyse the implications of the issues discovered and implement solutions that work.
Response time is crucial - not only for online stores. But what if the performance is lacking? Buy more powerful servers? Migrate into the cloud? Add yet another layer of caching or blame the under powered database? All possible options, but before you make your hardware vendor happy you should reconsider your software architecture! This session will acquaint you with ideas for a high performance software architecture which let you scale from single server to cloud.
Design patterns are proven solutions to common coding problems. You probably even know some design patterns, but can you really apply them in praticse? In this workshop, we will solve some interesting, web-related coding problems using design patterns like Command, State, or Strategy. And while we are at it, we discuss best practices, for example composition over inheritances, single responsibility, and separation of concerns. No slides will be shown. All code will be written and explained live instead, taking audience questions and feedback into account.
Frameworks solve common problems, and thus allow rapid application development. Agile and incremental software development, however, does not magically create architectures as you go. We will prove the point that your favourite framework does not provide you with an application architecture, and analyze what implications this has.
Users hate delays! Researchers have found that the reaction speed of websites is an important success factor besides visibility, usability, design and feature richness. Google even added website speed as a ranking factor for their search engine. Fast loading sites achieve significantly better rankings and are therefore better found than slow loading ones.
Sadly, most web developers optimize at the wrong place. 90% of the loading time of a site concerns the client and not the server side.
You can significantly shorten the loading time of your website with a few surprisingly simple measures. This talk will introduce you to the discipline of Web Performance Optimization (WPO) and present you a selection of basic and advanced patterns and techniques.
Git is a free, distributed version control system that is fast, easy to learn, and has great features like cheap local branching and convenient staging areas. It has also taken the open source world by storm, especially with the help of online services like GitHub. Learn 20 essential commands that will help you work with your next project, as well as some common conventions and workflows.
All your tests are green and you are ready to deploy the latest version of your software into production. Again. If only you had an automated way of doing that to avoid the manual hassle! In this hands-on session you will learn how to make Jenkins and friends push your deployment into the next level, easily maintaining any set of servers.
Software is never perfect. Failures of software make the news, damage the reputation of companies, and cost money in lost revenue. Testing software early and in a small scope is good, a high degree of test automation is even better.
If only it were that simple. In reality, not all code is easy (enough) to test.
Sebastian Bergmann, creator of PHPUnit, will open his bag of tricks and demonstrate how you can test code that is hard to test. Stefan Priebsch, a proven expert on software architecture and design, will show how you can avoid these tricks by making untestable code testable. Together they will show how to write clean and testable code, including unit tests, in a live pair programming session.
This Code Retreat is not your usual workshop - it is a full day event special event that allows you to really hone your skills in software-development and software-design. You will get the chance to try out new ideas and learn from the experience of other participants. Code Retreats were invented about four years ago and have become quite popular in software craftsmanship communities. It is a programmers learning event in a proven and established format.
Every participant finds herself/himself a partner and tries to solve a specific problem – TDD/BDD style! The goal is not to code a complete solution, but to write the best code you can – and learn from it. Every 45 minutes, you find yourself a new pairing partner, and the fun starts again. At the end of the day you have coded several versions and paired with different people.
And there is more: Each session will have specific constrains or requirements to keep you amazed. Ever tried to code without if-statements, anyone?
You will need to bring you own notebook with an installed development and testing environment (jUnit, PHPUnit, Jasmine, etc.). All programming languages and frameworks are allowed. See coderetreat.org for more information.
You're a git user, and you love what it does for you. Learn how to take it to the next level, straight from the experts at GitHub.
Among the topics that will be covered are rewriting history with rebase and filter-branch, finding bugs with bisect, and making your experience easier with terminal and GUI client tweaks.
By the end of the session, you'll have a great sense of the strengths and weaknesses of Bootstrap, as well as the positives and negatives of using a framework like Bootstrap for building your next responsive design project.
With PHP 5.4 / 5.5 out and many production environments still running 5.2 (or older), it's time to paint a clear picture on why everyone should move to 5.3, 5.4 and now 5.5 and how to get code ready for the latest version of PHP. In this talk, we'll migrate an old piece of code using some standard and some very non-standard tools and techniques.
Caching has been a 'hot' topic for a few years. But caching takes more than merely taking data and putting it in a cache : the right caching techniques can improve performance and reduce load significantly. But we'll also look at some major pitfalls, showing that caching the wrong way can bring down your site. If you're looking for a clear explanation about various caching techniques and tools like Memcached, Nginx and Varnish, as well as ways to deploy them in an efficient way, this talk is for you.
What does it mean to be agile, and how can we incorporate Scrum or Agile practices in the workplace? This session will provide a broad overview of Agile, as well as cover best practices and not-so-good practices to watch out for in both the workplace and in development.
In this talk, we'll look at four technologies we are seeing as key to driving a whole new class of web applications; OpenGraph, Shadow DOM, Websockets, and Webhooks.
Many of us complain about how "pointy hair bosses", ridiculous IT policies, and a culture of complacency make it difficult if not impossible to function successfully as a developer. But how can the person on the low end of the organizational hierarchy make a difference for the better ( without being fired ) ?
In this talk, I'll give you some ideas of what I've done in the past to help be a positive agent of change in organizations I've been a part of, and what lessons I've learned from it. We'll look at implementing development tools incognito, engaging with higher-ups, and dealing with the failures that go along the way.
Amazon Web Services and the AWS SDK for PHP continue to put more power into the hands of PHP developers to build robust and scalable applications in the cloud. With version 2 of the SDK, PHP developers now have a more powerful and modern library built on top of existing open source software like the Guzzle HTTP framework and the Symfony 2 Event Dispatcher. In this session you will learn how to use the new AWS SDK for PHP and examine code samples showing how to work with services like Amazon S3 and Amazon DynamoDB. You will also learn about deployment solutions like AWS Elastic Beanstalk and AWS OpsWorks.
HTTPS, SSL, SSH, PGP are terms most people know that they are somehow related to encryption. But how does it work? During this talk you will find out why even the most complex encryption algorithms used today are based on very simple concepts. We will dive into the basics of public key encryption, how it works and together with some (simple) examples, give you some insight on encryption in general.
And who the heck are Alice and Bob anyway?
The Standard PHP Library (SPL) might be one of the most powerful, yet the most unused part of PHP, but you are one of those lucky developers who have discovered it! But now what? The lack of documentation about SPL makes it that a lot users don't really harvest the power that SPL brings. During this presentation I will dive into the numerous iterators, data-structures and interfaces that SPL defines and when & how to implement them in your own projects, but we will talk about the edge-cases as well, as in SPL land things don't always are what they seem..
Nothing is showing up in the logs, everythings works fine on your development and acceptance environment, your unit-tests are all green and yet you've got major issues on your production server. What to do? Restart apache? Reboot the system? Maybe we even add more machines? Hell no! We debug it Chuck Norris style! I will show you how you can use advanced (linux) tools like strace, iostat, gdb and even dtrace to figure out the bottlenecks in your system. Is it even your code that is buggy or can we easily identify other things that can go wrong? A free tip for those who don't attend this talk: never ever reboot or restart your system without knowing what caused the issue in the first place!