PHPCon was very inspirational this year. We’ve heard talks on PHP in Machine Learning. We’ve also learned that PHP is currently being used as backend for an online game – and one that has a chance to gain massive traffic. Interested? Good! Read our PHP news, or what we – Espeo’s PHP crew – liked the most at PHPCon.
For me, PHPCon was interesting because of all the topics “around PHP”, and those which show PHP in non-standard use cases.
“Machine Learning – how to start learning a machine in PHP” was the most surprising one for me. I was skeptical after reading the title, but Arkadiusz Kondas was well prepared. Thanks to his library, anyone who wants to hop into ML can do it just by cloning the PHP ML repository from github. Best thing is, unlike with Ruby or Node, there is no performance penalty, and algorithms are the same no matter which language is used. Of course, Java still beats PHP here, but for learning/testing it doesn’t matter at all.
If I had to pick the best prepared and most inspirational speech, then it’d be “The road to continuous deployment: a case study” by Michiel Rook. He’s definitely a good speaker, and the case study helped me to understand how difficult continuous deployment may be in some cases. The best part was the attendees’ reaction when Michiel said “don’t use branches”. After his explanation it started making sense! Branches = conflicts, and conflicts = no continuous deployment! So what about code review? There’s an answer for this as well – pair programming! I’m not sure if my project can be adapted to this approach anytime soon, but a lot of clues apply for continuous delivery as well, and after some backstage talk I definitely feel stronger in CI.
The last thing I want to mention is that thanks to PHPCon, I know that if I install the GWENT card game on any of my devices someday, I’ll know that PHP is behind this. This is thanks to Krzysztof Sobczak from GOG.com and his share about asynchronic communication with PHP backend, where he used the GWENT game as an example. It’s good that someone’s talking about using tools that really get the job done, and showing that PHP, GoLang and Java work well together.
There was a lot more on functional programming or mutation testing, but those were my “top” 3, I think.
I went to the conference for some new ideas that could help in my current project and quench my thirst for knowledge. There were a few programming buzzwords that was especially looking for: microservices, architecture, DDD, CQRS and Event Sourcing. The first talk we attended, “Our road to Single Sign-On” by two developers from DocPlanner, covered two of them. The guys showed that’s possible to plan and implement an authentication microservice involving only two devs, and finish it within two weeks! It’s nice to see a study focused on feature planning, comparing possible solutions, not only recommending the ones the speaker’s company went for. Authentication microservice is on our roadmap, so I would enthusiastically borrow some ideas from DocPlanner. Here are the Slides.
Another good talk was about data transfer and archivization. Alex from BlaBlaCar showed us how they created a system that transfers domain objects between different services and data sources. We’re storing more and more data, using many different tools that suit current business needs. Elastic data management is a big challenge for many projects. Right after that talk, I already had some concepts on how to improve our code and system architecture.
I already knew that Łukasz Szymański gives great talks after his ‘performance’ at PHPers Summit. This time, he told us about how OLX jumped into CQRS and Event Sourcing. My craving for buzzwords has been fulfilled. It was a great combination of case study and introduction into these (relatively new in the PHP world) concepts. Besides the mandatory definitions, Łukasz also talked about architecture. It was great to hear that OLX uses open-source broadway components for their solution. In the end, to give a better overview on how it’s implemented, we got a live debugging session guiding us through all of the layers. Slides
The most interesting talk I attended was about Text Retrieval. Łukasz Szymański from OLX described – from scratch – how Elasticsearch retrieves data. He started with mathematical formulas, went through charts and ended with sample user data. He described how the tokenizers and filters work. What’s more, he paid attention to feedback in a result data context. Users who create search engines based on Elasticsearch or other search engines should be aware of the many possibilities to adjust search results.
Another absorbing presentation was “The power of logs with Monolog ” presented by Krzysztof Skaradziński. His talk was really precise, there were a lot of great examples of catching exceptions, manipulating logs and using them in the right way. It clarified my knowledge about logs and changed my approach to that topic in some areas.
The third presentation I liked the most was “The road to continuous deployment: a case study ” by Michiel Rook. He described a project that – at the beginning – had a really huge technical debt. No one in the project was able to control it. When Michiel started working on that project, he introduced Pair Programming. He also paid attention to almost 100% code coverage and forced the team to make small commits and avoid using feature per branch (just commit the small changes to the master and test them). In my opinion, that approach may lead to great results in some projects. However, the team must be self-organized and well-trained.
One of the top lectures for me was about functional and asynchronous code in PHP7, presented by Witek Adamus. He prepared an interesting talk in which he explained how to write functional code in PHP7. As we know, it’s not fully designed to be a functional language. Furthermore, he mentioned Scala as a good example of writing such code and identified the strongest and the weakest points of PHP in comparison with Scala. PHP still lacks some features 🙂 After the theory, there was a coding part in which the author presented and used an external library to write fully functional code. It really worked! A similar presentation was given by Tomasz Kowalczyk. He talked about a functional attitude in designing software with many examples of good code.
Another talk worth mentioning is about mutation testing in PHP, presented by Arkadiusz Kondas. Mutation testing lets us measure the quality of written tests. The author used padraic/humbug library to test some external libraries and then presented and analysed the results. In each case, the humbug library pointed out that the examined code included good and solid tests. Arkadiusz is a good speaker and I liked the way he talked about the topic. He presented a good tool which helps programmers to increase the quality of tests in a fast way. I really like the solution and I think I’ll use it in my projects soon.
There were many more interesting lectures e.g. on Machine Learning, Docker or Continuous Integration.
Conferences like PHPCon show us that PHP is doing well. We have a great community, mature open-source solutions and support from recognizable companies that want to share their knowledge. The diversity of talks should suit almost all agile developers. We hope that PHPCon 2017 will be even better.