I will share the most interesting from different conferences, what I liked and what I disliked, what happened new in the community and language development, and what I learned.
Bulgaria PHP Conference
Let's talk about organization, preparation and venue first. From my point of view, organizers did a lot to make this conference great, at least they tried to do the best they can. The conference, same as workshop took a place at the very center of the city, in the biggest public hall. It was quite easy to find it and to get there, either with public transport or by foot if you are living in the city center. One day in advance I got an email with quite descriptive instruction about everything I should know there: how to get there, recommended places to stay, what they prepared for attendees and etc.
Unfortunately, it was some small confuse for me, because I did not figure out how to buy a ticket for the Workshop day if you already bought a conference ticket, when a workshop stream was not announced. Directly at the entrance to the workshop, there was an ability to buy it, but I decided that it does not worth it and a bit expensive. Anyway, I am not sad about this fact, as conference organizers prepared a free of charge tour in the city and it was a good alternative.
At the conference day, everything started by registration, grabbing my personal badge, general community talk and breakfast. I felt pretty comfortable there as organizers always tried to take care of us: there was a lot of drinks and snacks there, lunch was served by special catering company and afternoon they did homemade cakes for us.
And now more about the conference: it had 3 streams in the parallel and afternoon one of this stream becomes unConf, where anyone could share something with everyone. The biggest stream had a lot of seats for all attendees, but not every talk assemble so many listeners.
You have to know about me, that I do not believe I can learn something from any talk, because most of the things are already known in the programming paradigms, web development and PHP in general. Usually, talks at conferences are just a shared experience, exploring new unknown stuff or repeating something like SOLID, caching and other. Everything you want to learn could be easily and faster found at the web, and if you missed some talks you could watch it later at YouTube, moreover, for free. Personally for me, all these conferences are just community spirit, free baubles and lunch. But this conference managed to absolutely surprise me!
The biggest discovery for me was a talk about modern SQL from Markus Winnand. How much I did not know about SQL in general. Knowing modern relational databases, such as MySQL, PostgreSQL, Oracle DB or SQLite, does not mean you know modern SQL. The most SQL standards and features were introduced since SQL-1999 (recursion), SQL-2003 (schemaless and analytical, like median), SQL-2011 (system versioning, aka time-travelling), SQL-2016 (
JSON_TABLE), etc. A lot has happened since SQL-92, SQL has evolved beyond the relational idea. If you use SQL for CRUD operations only, you are doing it wrong.
Do not use self-joins in the SQL anymore! Also, avoid
OFFSETs from your statements, it is a performance leak!
The saddest conclusion I made: the most popular RDBMS made themselves compliant with modern SQL only since recently, and still there are some features not ready in some RDBMS. But what about modern ORM? When they will be compliant with all the features we have in modern SQL? Or it is the best solution for now, avoid ORMs and write custom code?
By the way, he has a book about SQL performance explained, it is highly suggested to read it. You can find more info at his website or buy his book with stickers and mug.
The conference was worth visiting at least for the sake of this talk, and I was very pleased with the fact that I learned so many new things I can use in my applications to boost the performance. Anyway, there were also a few talks worth to listen:
Encoding and charset talk presented by Andreas Heigl. Worth to know that encoding is not a character set and what is what? How to properly work with UTF-8 in PHP and MySQL. Be aware, that
utf8in the MySQL is not a real UTF-8, you have to use
utf8mb4instead as a proper UTF-8.
Static analysis tools for PHP presented by someone at unConf. He shared a collection of all known tools and showed how they could be implemented together.
Hexagonal Architecture by Nicolas Carlo. It was not too much for me personally as DDD is based on this architecture, but anyway it was very good structured talk with good examples and real-life cases.
PHP-FIG Panel to describe a stack of standards they have. Be aware, that PSR-2 is deprecated right now and PSR-12 should be used instead.
Barcelona PHP Conference
Comparing to Bulgaria conference, it was poorly prepared, less welcome, only one stream in the pretty small concert hall, with no breakfast and absolutely no lunch (so it isn't a real conference from my point of view), but as a counterbalance (opposite), speakers were more well-known and popular, so some talks were better prepared (but not all of them).
The organization of the conference was terrible, but there was one interesting feature that encouraged participants to attend affiliate stands. One of this affiliate had interesting challenge attendees have to complete to grab merch. It was absolutely no matter what you get for completing a task, it was much more interesting to complete it. Sometimes it seemed to me that it was stupid, poorly structured, and even mistakenly working, but some inner thirst to finish what I started helped me to complete it, and as a result, I can say that it was quite interesting.
On the account of talks, I can say the following: it was clearly the best side of this event, most of them were well prepared and well represented. Of the most famous speakers were:
- Rasmus Lerdorf (PHP author) with the opening keynote and a short history of the PHP development,
- Nikita Popov (PHP core developer) with "PHP Performance Trivia" talk and short notes about PHP7.4 release and warning do not overuse property types, as PHP isn't compiled language and all type checks happen in the runtime,
- and Derick Rethans (xDebug author) with his talk under the hood about
In addition, I noticed that special attention was focused on the following:
- asynchronous PHP becomes more popular with old-known
ReactPHPand newly built-in extension
- microservices are not so great if you are using them wrong or in the wrong context;
- PHP could be run as a serverless application;
- testing approach by creating bugs using mutators;
- PHP community is open to learning other languages, such as Go, Lua or any other.
Here are a list of some useful slides for you:
- More Than a Query Language: SQL in the 21st Century
- How to tame a 🦄: encoding stuff
- Mutation Testing - Better code by making bugs
- Get Go-ing with a new language
- Develop Microservices in PHP using swoole extension
- Developing cacheable PHP applications using Varnish cache
- Microservices Gone Wrong - PHP Barcelona 2019
- SOLID design principles for better team performance