A talk for my first ever visit to Spain and PHP Barcelona 2011. Abstract as follows:
It’s fun to architect your application to handle millions of pageviews, but in reality that’s time where you could be adding features. We’ll examine some practical solutions for designing your platform to deal with increasing traffic and how to add those features on an incremental basis. This will take us through options for scaling the code and additional methods for scaling the infrastructure.
You can use the slideshare view below or download the original PDF: Sensible Scaling
Clients need to know how much a project will cost. Waterfall development is always late and over-budget. Agile development is done when it's done. You're left with estimates that you know are too low and then you squeeze them anyway. It shouldn't be this way. We'll look at how this happens, early warning signs, ways out and ways of avoiding it in the first place.
You can use the slideshare view below or download the original PDF: Estimation or, "How to Dig your own Grave"
Another talk for the PHPNW user group meeting. This time an introduction to dependency injection and the associated benefits.
You can use the slideshare view below or download the original PDF: A Dependency Injection Primer
Test-driven development is generally regarded as a good move. However, just getting unit tests in on a real, commercial project is hard - switching to TDD is even harder. Defining concrete answers to a problem is hard and can be difficult to integrate into project. Often you can start a project with good intentions and coverage, then the deadline looms and the tests go out then the hacks come in. So, instead of beating ourselves up about not being perfect let's look at an iterative approach to adopting TDD principles. We'll look at tactics for selling TDD to your client, boss and colleagues. This talk will also cover methods for making TDD easier for you by showing you what tools you can use to integrate it into your development environment. In the project itself, we'll examine how we can make small but permanent steps towards full TDD, without losing that progress when deadlines hit. We'll also cover a few methods for learning on your own time and how the whole process can actually be made quite enjoyable.
You can use the slideshare view below or download the original PDF: TDD and Getting Paid
This talk saw me going back to PHPNW10 to deliver it. Abstract as follows:
Access Control Lists are a tool that allows us to map permissions to objects - within Zend_Acl this maps to a hierarchical arrangement of roles and resources.
This talk will follow through the basic use of Zend_Acl and steadily build a series of practical examples to illustrate the different methods of creating and enforcing an ACL for an application. This will include how to implement some of the more complicated hierarchical relationships and advanced conditions through the use of assertions. We will also cover the design considerations of where to attach the ACL, with the differences between applying it to controllers or models. With a functioning ACL in place, we will examine some of the methods for persisting the list and whether that list should be static or dynamic.
Alongside the straight functionality of our code, we will also examine how to effectively unit test it, improving its performance and analysing the level of security that has been created.
You can use the slideshare view below or download the original PDF: Practical Applications of Zend_Acl
A lightning talk for the PHPNW user group meeting in the summer of 2010. A quick review of some common sorting algorithms with basic PHP implementations included.
You can use the slideshare view below or download the original PDF: Algorith, Review, Sorting
Legacy code is a burden that few developers are lucky enough to avoid in their professional lives. We'll look at how legacy code develops and some of the early warning signs to watch out for. Where it's already a problem, we'll explore the strategies that can be used to replace, isolate or integrate that code and some practical methods for achieving it. This talk will weigh up these ideas up in terms of time and cost to help you take a pragmatic approach to taming or slaying your monster.
You can use the slideshare view below or download the original PDF: Living with Legacy Code
My second conference talk from PHPNW 2009. Abstract as follows:
A development environment is a pretty personal choice, but when youve got over twenty developers all working on the same codebase, you need to start deciding on some standards. You need to find the options that aid your productivity, rather than restrict you with unnecessary overhead. Plusnet has been running its business on PHP for over a decade now, and over that time weve used a mixture of home-grown tools and off-the-shelf solutions. Some of these have stuck, some have had teething troubles, and others just havent caught on at all. Well look at the choices weve made for the tools that support us throughout the development process, including version control, unit testing, debugging, quality metrics, bug tracking and, of course actually writing code. Alongside the obvious technical merits of choosing a particular tool there are other factors to consider such as licensing, community support, industry standards, performance, security and so on.
However, you cant just throw all these tools at your developers and hope that bullet-proof code comes out the other end. You need to look at how you can trial your new choice, prove that it works, and then integrate it into your development process and this needs to happen without just stopping your business at the same time. This might involve creating new processes to take advantage of the tools youve chosen, or alternatively you might be migrating from an existing tool to an improved option.
All of this is purely theory without someone to champion the cause, forcing a tool from the top-down is never as effective as having your developers wanting to adopt it themselves. You need some evangelists in your organisation who can play the role of salesman, mentor, and technical expert. Well use a few case studies to see the experiences our developers have been through in finding a tool they wanted to use, convincing the rest of us of its value, and then how they went about getting it adopted. Through this well pull together the theory and the practice to give you a solid plan for successfully incorporating a new tool into your development process.
You can use the slideshare view below or download the original PDF: Tools and Talent
My first conference talk which I delivered back at PHP UK 2009. Abstract as follows:
Web applications are everywhere now, but many of them misuse the basic concepts laid down by the HTTP protocol, miss the benefits of making the application and the API the same thing, and don't set themselves up to grow if things take off.
This talk will look at the design decisions you need to make to ensure that your application really is ReST-ful, how we fit that cleanly into MVC, and how state machines can help us manage clean state changes in a stateless protocol. The talk will go into some of the available design patterns with class diagrams and code snippets showing how and where to implement them.
You can use the slideshare view below or download the original PDF: State Machines to State of the Art.
I am pleased, and not a little bit excited, to confirm that I will be giving the talk "Living with Legacy Code" at this year's PHPBenelux conference. It's over in Antwerp on the 30th January so will also be a chance to visit Belgium again - something I haven't done in almost 15 years.
Legacy code is not the sexiest topic out there, but it's definitely something that a lot of us have to deal with on a 9 'til 5 basis. One day, I might be in a position to do nothing but play with shiny new technologies and never care about supporting them but until then the rent still needs paying - so it's worth finding ways to make that as enjoyable as possible.
Of course, I can't give too much away - you'll just have to come along and see! You can have a tiny sneak preview via my profile on the site though. Turns out speaking off the cuff in an interview is really quite hard. Still, maybe someone will suggest somewhere to get good waffles.
Perhaps the only down side to the whole thing is that I'm opposite Fabien Potencier giving a talk on "Dependency Injection in PHP 5.2 and 5.3" which I'd really like to see!