Hi! On 13-15th November 2015, I had the pleasure to attend to the biggest polish conference for PHP programmers together with Łukasz from LB blog. It was my first time with those people despite the fact, that I’m involved in PHP for some years now. That congress showed me that community is a must-be for every programmer. Without community we won’t be progressing in our technical solutions. In this article you’ll read what is PHPCon and what are 10 reasons to go there.
Reason no. 1: Conference and history
PHPCon is a conference dedicated to PHP programmers organised under care of Polish Linux Users Group (PLUG). PLUG takes care of many other polish events like PyCON or dbConf. They are also popularising open source in Poland (even fighting for its good name with media).
History of congress reaches back to 2010. It was much smaller back then (about 100 people in comparison to this years almost 1000). What doesn’t change is that time is packed full with many interesting lectures about PHP and programming, you can meet there so many interesting people and discuss future of PHP.
As it was my first time on PHPCon i was surprised by one thing – beer everywhere. As I heard, it’s kind of tradition that all PHPCon’ers have as much beer as they want. Everytime, everywhere. So on almost every lecture and workshop somebody was holding a cup of beer. Pretty surprising.
Reason no. 2: Place
In previous year 2014 there were about 550 attendees of PHPCon, and that was maximum that hotel can held (also there were about 100 people on awaiting list). This year organisers decided to get much more space, so the choice was Ossa Hotel. It’s so huge that limit was set up to 1000 people (and I believe that it can hold more than that). Getting there is quite simple as it’s only 70 km from Warsaw (so you have all means of transport available).
Everything in- and out-side is beautiful. Four stars **** aren’t there for nothing :) Personally I was enchanted by surrounding landscape. Despite that Ossa is located near arterial route, it’s a very quiet village and wherever you’ll look there’s forest everywhere.
Great location for programmers gathering. Isolated, yet with Wi-Fi.
Reasons no. 3-8: Lectures
I won’t write you full briefs of lectures that I attended. Instead I’ll show you best thoughts that I’ve noted from some of speeches. You can find full list of presentations on joind.in
Practical Introduction to Test Driven Development
- three phases of development:
- write test,
- pass test in most naive way,
- do somebody have Windows here? Ok… We’ll worry about it later.
- in first steps TDD looks like copy-paste driven development,
CQRS and Event Sourcing with PHP
My favorite presentation from PHPCon. Matthieu Moquet from BlaBlaCar talked about CQRS and Event Sourcing.
- Events are the heart of the system
- You can always calculate current state from event history
- When you have too many events on aggregate – do a snapshot!
- Use Elasticsearch for the reports
- Most important: PHP frameworks for CQRS and Event Sourcing: broadway, predaddy, prooph;
- Great resource for beginners: CQRS.nu
- Read slides here: moquet.net/talks/phpcon-2015
How to Become Better Programmer?
Jerzy Zawadzki from Polcode showed tips to become not only better programmer, but also to become programmer that is easy to communicate with. Packed with great quotes and lots of laugh :)
- Professional writes for others, amateur for himself
- You must choose: efficient or adaptive
- Real life use case: paper cup was designed for cold drinks. Now, project owner wants it for hot coffee. First thought would be – completetly redesign it to be made of porcelain. Instead, they just added cardboard addon. Much faster, cheaper and easier to implement. Do the same with your coding.
- Empathy. And that’s not the name of new framework.
Tomasz Skręt from G2A lecture was about 12 factor app. Methodology which describes modern software-as-a-service. Here you have those twelve factors (alltogether with example tools). Read more about this on http://12factor.net/
- Codebase – tracked in revision control (GIT)
- Dependencies – declare and isolate dependencies (Composer)
- Config – store config in environment (.env)
- Backing services – treat as attached resources (MySQL)
- Build, realease, run – separate build and run stages
- Processes – stateless
- Port binding – export ervices via port binding
- Concurrency – scale by creating new processes
- Disposability – fast startup, graceful shutdown
- Dev/prod parity – keep dev and prod environments as similar as possible
- Logs – treat as event streams
- Admin processes – run tasks as one-off processes
Driving Design through Examples
Ciaran McNulty after experiencing some technical issues gives great talk about combining BDD with TDD.
- No mac, no signal :)
- Nobody talks about examples and system behaviour, but what color button should be
- BDD+DDD=modelling by example
Large-scale Websites Performance Optimisation Tricks
Georgiana Gligor opened last day of PHPCon with her case study at Allegiant Air (american low-cost airline). The case was to implement new reservation platform which can handle website and call center reservations.
- App should be robust to load peeks
- She designed silo approach, where each silo was standalone server with fully configured application
- Frontend was written using Drupal with JS Single Page App approach – Symfony as a backend
- F5 load balancer to complement solution
- Pro tip: HTTP 204 status (means no content body) – when UI sends request to log user action, return 204 immediately, and later on process this request on your backend
Reason no. 9: Corridors
As on every conference, most interesting parts are talks in corridors. I’ve met many people, some “standalone” programmers, some coders from sponsor companies. Lots of inspiration and lots of fun. Especially I want to salute eSky guys – Natalia, Mateusz and Tymoteusz. I’ve learned so much about their company and they looked so passionate. Keep it up!
Another sponsor – BlaBlaCar – well, there were lots of them everywhere! Great people with great sense of humour (do you like jokes about jazz musicians?) ;)
About 10pm we came across team from Transfer Multisort Elektronik. They invited us to their place for about two hours of sharing experience and talking about methodologies, agile development and where to put business logic in standard MVC frameworks. Thanks!
I think that world gets it wrong about programmers being non-social. When we was going back home at midnight, there were people almost everywhere. In corridors, bar, lobby, restaurant and outside. Next year I’m going to stay with you until dawn! :)
Reason no. 10: Back home
How to summarize this congress? It was similar to other conferences I attended, but yet it was something different. I don’t know if PHP programmers are somehow different from others? The difference was in openness and such “feeling at home” atmosphere. Thank you all for this great experience, many connections and lots of gifts.
What I’ll remember as a core topic: Event Sourcing is one thing that in next few year will play far prominent role than today. Second thing will be business logic in standard MVC. Where do you code behaviour? In Controller? In Model? We’re going towards MBVC, where business logic is in separate layer. This way it’ll be separate from your data source.
Thank you for reaching this far, if you want to stay in touch with me – subscribe to my newsletter, so you’ll be the very first one to get notification about new article. Also, please share this article so I can reach other attendees of PHPCon. That would be great help!
PS: if you liked this article’s style check out one of my favorites about Turkey Test.
As a final thing I want to mention Ula Nasiłowska from Polcode. On the last day, she invited me to took part in their contest to become #polcodeMeme (see here). Also, they gave me opportunity to check out Oculus Rift – on my Twitter account you can watch movie how I wiggle around. It’s hard to describe this feeling, but Oculus made me to think that I’m a plane – incredible but dizzy :)
© Photo by Olaf Gałązka