In addition to my colleague Tim’s review of his favourite talks, I also want to write a bit about my experience of the Dutch PHP Conference here.
So last week I was at the Dutch PHP Conference 2013 on June 6th to June 8th. Let me tell you about what I’ve seen, heard, learned and how I got inspired by this great event.
On the first day of the conference I had the chance to attend two workshops. The first of them was about pair-programming led by Sebastian Schürmann, and how you can practice this in your team.
Sebastian started with explaining why pair programming is a good way to solve not only complex, but only simple problems: Because the different perspective of two developers on the same problem, leads to a better and more durable solution. And given we had to pair up immediately, and solve some katas, we practiced and experienced this during the workshop. A kata is a small exercise that you can repetitively do to practice a technique. By practising this we learned that just sharing a monitor it not enough to do efficient pair-programming. But the designation of the driver (code writer) and navigator (code reviewer, overseer) is an important formality that should be applied when pairing. Sebastian taught us that it is important to switch these roles at a set interval.
The workshop concluded with a demonstration of how a coding dojo is great for sharing knowledge. Something I definitely want to do on a regular basis with my colleagues here at Enrise.
The afternoon workshop was called “Code review for security” and was given by Anthony Ferrara. He started the workshop with a software security quiz. With which I ended up with a lower score than I hoped; 6 wrong answers.
Like the pair-programming workshop this session was aimed to practice on the subject, rather than just theory. So after we collectively checked the answers of the quiz, Anthony briefly showed us some techniques on how reviewing code for security is done. Effectively, it all came down to these 4 rules I wrote down at the time:
- Analyse how input is treated
- Analyse how output is treated
- Check the exit points of the code
- Review if you have vulnerable entry points (between libraries/layers)
After discussing these rules Anthony gave us assignments to team up and review the code of several open source projects that he had prepared for us. Somewhat fortunately, no big issues were found, but we found some minor issues.
As I review quite a lot of code during a normal week, I learned a lot from this workshop that I can put into practice right away.
Sessions – Day one and two
Throughout the two following days there were lots of planned presentations, but also last-minute scheduled presentations in the unconference (hosted by fellow Enriser Jeroen van Dijk).
Many sessions I attended were at least inspirational to either start working on new habits or keep doing and improving on them. A good example of this is the session by Mathias Verraes who was talking about “Unbreakable Domain Models”. A presentation in which he emphasised that models and code should be readable and actually make sense to the business, rather than make sense from a pure programming perspective.
So in short, illustrated by some code examples (code is from Mathias’ slide deck).
$order = new Order; $order->setCustomer($customer); $order->setProducts($products); $order->setStatus(Order::UNPAID); // ... $order->setPaidAmount(500); $order->setPaidCurrency(‘EUR’); $order->setStatus(Order::PAID);
But be more elaborate:
$order = new Order($customer, $products); $order->pay( new Money(500, new Currency(‘EUR’)) ); // set PaymentStatus in Order#pay()
A good and inspiring presentation on a topic that is not new to me, but very good to see repeated every now and then to serve as a reminder.
Some other presentations were insightful, and give me as a developer mainly focusing on PHP a broader view on the topic of (web) development. An example was the “Introduction to Django” talk by Travis Swicegood. Which was obviously an introduction to the Python web framework Django. A technology I didn’t check out before. And to be honest, am still a bit sceptical about if it is really worth looking into or not. I do not find the syntax of Python particularly charming. But actually, fact is that both Python and Django are out of my comfort zone, and so they are worth looking into over the coming weeks.
This year there were some really interesting sessions in E002, the unconference room. If you’ve never been to one, the idea of an unconference is to have a parallel track to the conference, with speaker slots that will be filled during the conference. And everyone can sign up for a slot.
Some interesting sessions that I attended at the unconf were the talk about static code analysis by Anthony Ferrara, the Codeception talk by Jeremy Coates, the Event Driven Design talk by Chris Saylor, and the PHPStorm Q&A session by JetBrains developer Alexey Gopachenko.
Also, as a good conference should have, there were a lot of different social events around the conference. One of which involved laser tag, another a spontanuous hackathon, open bar at the Escape lounge, and more.
All in all I very much enjoyed this years edition of the Dutch PHP Conference 2013. I learned a lot, met a lot of new and old friends, got inspired, had some good conversations and I am already looking forward to next year!