A quick REX on SymfonyWorld Online 2020
🌍 It’s time to close this first SymfonyWorld Online, and boy, has it been a really good moment!
📣 First of all, shouts out to the Symfony Team, 2020 was definitely a complicated year. Cancelling all the physical events after the tremendous success of the SymfonyCon 2019 in Amsterdam, that was such a sudden stop in the middle of a great momentum… Much love to Fabien, Nicolas, Javier, Titouan, Valentine, Anne-Sophie, and everyone working there. They work hard, and this time, they had to adapt quickly, after cancelling the SymfonyCon in Paris that was supposed to happen to day which, let’s face it, would have a been a fantastic success if COVID-19 wasn’t around.
Well, at least, this time, since I’m not a “moving” person, I get to attend such an event. Hard to say how many we were, but during the first presentation, we peaked over 1.000 people watching and listening to Fabien and Nicolas introducing the event. That looks like what I’d call a success!
First of all things, the format was a little… Exotic, so as to allow people from all over the world to attend, depending on their timezones and availabilities. To sum up: for the last two days, there were two periods of time to watch the conferences: one in the morning (Paris Timezone, CET), and one that started at the end of the afternoon, around 5:00 PM (Paris Timezone, CET), on both days. This, obviously, lead to a very compact timing where questions were answered at most for 5/10 minutes, not more, which is always frustrating.
Second, during those two periods there were three simultaneous tracks. While I like having two at a time, and even though there was one moment (only one) where I didn’t really feel like I was super excited for any conference, it’s always kinda frustrating to miss one of the three. I did one in the morning, one in the afternoon, so I litterally watched conferences from 9:30 AM to 11:00 PM. Wow. I need a sleep.
But don’t worry: I still had the time to:
- Write this quick article :)
- Go shopping to get food back (my fridge was as empty as a NPM package)
- Write my music top 12 blog post (24, actually) for 2020 (to be published soon)
- Almost finish reaching Diamond IV rank in Apex Legends (don’t forget to check out my article regarding Apex Legends UX case study!) after kicking some asses.
Over this time, I watched 20 conferences, catching up on whatever I could. I asked over 80 questions, half of them got answered in the chat, half the the speakers themselves on video. That’s great.
Organizing online events can be hell of a nightmare.
First about the tool itself (Hopin), one great and sad thing at the same time: it relied on YouTube videos being displayed in the app. Which means: prerecorded stuff. So there were always little time differences between the times the speakers, the organizers, the chat guests saw the things happen on their screen. But in general, that was quite an interesting app, and that did the job. The mic levels problems, the webcam quality problems, artifacts, connection problems, etc. Those were pretty absent, which is nice, except with the Australian link, which cut out the Q&A part a little. The good part is that I got to download the YouTube videos to watch them later on this week (my brain was already tired, it’s about to explode now). Don’t ask for them, I will watch them and then delete them, if you ever get those, DO NOT share them, PLEASE.
So, as it’s fresh in memory now, I just want to give a few lines about each talk I saw, or the most of them.
The start: Nicolas’ and Fabien’s talks.
OK. Face the truth. This is the most expected talk, cause it sets up what’s going to happen and there’s always a major announcement here. Especially this time, when celebrating the 15 years of Symfony.
They made a little mashup of some notable stuff regarding that anniversary. I remember my first Symfony training with Hugo Hamon in… 2012! Wow, fells like this was yesterday. Talking about how he trained 50 developers at a very famous “pornsite company” (you already guessed who ^^) to seriously work on a system that has a tremedous amount of daily visits and connections. Those were the days.
Here’s the vidya:
So, about that first talk. Fabien went through all the things that were major breaks in through the evolution of the decoupled frameworks, mostly about notable components that shaped its history.
And then… Ta-daaa! The magic happened and the chat was on fire. A new part of Symfony, named Symfony UX, lead by Titouan Galopin, was out! Basically, this is about the adoption of no particular opinion regarding rich frontend major apps, like SPAs (Angular, React, Svelte, Vue, Ember, etc.), but simply about offering PHP components that could generate those frontend components! As you can see, it’s still the time for Symfony to be about… Components. :)
You get the code here. It uses Stimulus as a core engine as a pedestal, and Webpack (provided through Encore) to glue everything up, a already offer a few components that are super usefeul. Swup is used as a tool for page transition between actions called asynchronously (rewriting browser history like SPAs do). Basically, developers will write specific HTML that will be converted into unicorn magic. For forms, for instance, this doesn’t require much more than a simple add() call with a specific type of element. And all this is totally integrable in any SPA app. The necessary code is given as an example. Bro, I almotst peed my pants.
Flex handles all the necessary pulls, and JS controllers are now a thing. Yes, you read me: Flex uses NPM now. What truly extraordinary times we live in, right?
Then, we got to immediately jump into Titouan’s talk about this number one star of the day feature!
You’ll find Titouan’s slides here.
And by the way, Titouan is now a core team member. You got no idea how satisfying and soothing this feels to me. I remember talking with him in 2011 about that “Symfony” thing, and we agreed we should keep an eye on that. You got the idea, right? It’s such an honour to know you for over ten years, pal, I can’t stop making hearts with my fingers.
I’m not going to cry. I’m not going to cry. I’m not going to cry.
So far, the components already provided (which require the latest version of Symfony 4.4 or a 5.+ install) are:
- UX Chart.js: Chart.js chart library integration for Symfony
- UX Cropper.js: Cropper.js image cropper library integration for Symfony
- UX Dropzone: File input drag-and-drop zones for Symfony Forms
- UX LazyImage: Improve image loading performances through lazy-loading and data-uri thumbnails
- UX Swup: Swup page transition library integration for Symfony
Apart from that, Fabien reminded us that the Symfony the Fast Track book is still available as an online read. I sent a message to my managers to ask them to buy a few copies, for this “coming soon” time when the COVID-19 war is over and we get to move back to our office from time to time. If you really can’t afford buying the book, you can still read it online. Note for self: do this.
Ok, now, let’s talk quickly about other conferences…
Symfony meets Cypress — E2E testing for symfony developers
Presented by Ramona Schwering.
That was a very nice and quick talk about end-to-end testing with a testing suite I didn’t know about: Cypress.
- Ramona makes cool drawings for her slides.
- Cypress is, as expected, much lighter and less annoying than Selenium.
- The pricing looks okay.
- There’s a free version.
- I need to check that tool out.
- I’m happy to see more female speakers at such events. Please, women: raise up. We need to demonstrate how equal our domain is and encourage every woman in the world, together.
Streaming: an alternative to CRUD & batch processing
Presented by Samuel ROZE.
About stream processing, event streaming, and everything linked to that. I already had to take a look at Apache Kafka, cause I can’t keep up with the buzzwords fast enough to run through all of them, I’m already try to digest SPA’s and microservices. I’m not used to eating that.
- Samuel told us about how everything could go wrong, that’s the core of the presentation.
- I already thought about “what could even go right” before it started.
- He mentioned Symfony Lock, which is the topic of another talk this day.
- Don’t include the Bogdanoff brothers in your slides.
- I was conviced 99% of projects don’t need this stuff. Now I’m convinced 99.9% of them don’t.
- That still looks cool, though. I’ll have a look at how to build a succesful event streaming pipeline one day.
Elasticsearch with Symfony, from development to production
Presented by Damien Alexandre.
This is an interesting talk about another buzzword that emerged recently, except this one starts going out of the “buzzword zone” to go into the “relevant zone” much faster than the ones I mentioned above. I’ve used Solr an ElasticSearch (and Algolia) with abstraction layers, mostly. So I’m always interested in what to do with that. In an era where everyone sees this as a solution to pretty much anything, from storing data to plumbing leaks fixing, I’m more than happy to get a little recoil regarding overly trending techs.
- I finally understood what ElasticSearch structures are about.
- Use Elastica.
- Don’t use dynamic mapping.
- Use async data updates.
- Use Symfony Messenger to convey tasks.
- Give semantic meaning to smileys using a conversion tool they made.
- Don’t host ElasticSearch.
- Kibana is still what I thought to be the cool kid around when it comes to visualization.
Modern Security with Symfony’s Shiny new Security Component
Presented by Ryan Weaver.
Ryan presented here the major updates regarding the cleaning of less liked parts of the security component of Symfony.
- I didn’t know this part of the Security component history.
- The modifications don’t imply a lot of changes in our source code.
- For some reason, the system uses what they called Passports now.
- I’m going to have more and more trouble remembering how core components work in 5.0 and 5.X edge versions. This is going to be a nightmare for the Certification.
IS_AUTHENTICATED_ANONYMOUSLYstuff seems to be gone. Cool.
- I need to read that article regarding SPA / SSR and tokens.
- Ryan’s haircut has pending PRs to be accepted. But I wish they won’t, cause it’s cool like that.
- Ryan is standing, which corresponds to his overly hyperactive stance. I like that. People said he was bare feet. I say he had no pants. Start the bets (JK bro, you only wear amazeness).
- This was by far the best logically sequenced talk I’ve seen through this weekend. I didn’t understand everything at first, but it was crystal clear on second thought, and Ryan’s speech made everything naturally connected, which is a rare skill.
What’s new in API Platform?
Presented by Kévin Dunglas.
Ok, I won’t lie: I watched this one really quickly. You know why? Cause I’m already convinced API Platform rocks, and since Kévin is a perpetual speaker attending pretty much all events, as the product he leads is a perfect demonstration of how Symfony can be used as a tool. His slides are here.
- API Platfom 2.6 alpha is out. Next will be version 3, with PHP 8 support only.
- Yes, it uses PHP 8 attributes.
- Kévin’s ecosystem is getting more compatibility (Mercure and Vulcain).
- Next and Nuxt are new supported generators.
- Kévin keeps pushing Caddy web server down our throats. So I guess I’ll have a look, one day.
- Using beach background is cool until you remove it.
- They got new t-shirts.
Lock & Semaphore: The gatekeepers of your resources
Presented by Jérémy DERUSSÉ.
A journey into the mechanics of Lock and Semaphore. A way to ensure resource uniqueness of use. Pretty much like OS do. His slides are here.
- I didn’t think there would be that many stores (“techs”) to use locks.
- I’d have thought the Redis wouldn’t be the only one to allow semaphores.
- Jérémy gave us some common usage examples I didn’t think about before.
- I’m still discovering Symfony components after 10 years.
- I’m still not a huge fan of parallelism in serial processes.
- I finally understood that “lock : acquire” shitstorm encountered while using Drupal cron. I actually never thought this was linked to that mecanism, for a reason I can’t explain.
Keynote: What’s new in PHP 8.0?
Presented by Nikita Popov.
Well, you got the idea. One of the most active maintainters of PHP comes to talk to us about what’s fresh (yo) in PHP 8. When God talks, mortals should listen. We did!
- I didn’t learn anything new, I made a 2-hour long presentation on YouTube this summer regarding PHP 8, one week before the RFC votes closed. But we definitely need those conferences!
- JIT still doesn’t really change real world web apps from PHP 8 alpha to stable.
- I didn’t insist enough on presenting PHP stubs, despite the excessive length of my presentation.
- Nikita reminded everyone who was contributing to PHP, which is always necessary.
- Nikita still explains everything faster than I do.
- Nikita speaks English way better than I do speak Russian.
An introduction to what’s new and to be told about the new version of Composer, and how it changes or can affect your developer lives.
- I was happy to see Jordi and Nils live for the first time. As I now contributed to Composer Website, it’s always cool to see who merged your pull requests.
- Composer 2 rethinks how it selects eligible packages.
- Composer 2 saved 30TB of bandwith a week.
- Update and install are now separated.
- Use “˗˗ignore˗platform˗reqs=php” to try it on PHP 8.
- Composer 2 doesn’t burn your memory modules nor does it fry your CPU anymore.
- Updates to an existing project can still be hazardous.
- Use “˗ ˗ 2” option to make sure you update to the latest version. Only 20% projects use Composer 2 at the moment.
- I was happy to introduce a fact that was such obvious to the chat that many people got blown away: Composer 2 is going to save the planet a lot.
WebAuthn — Technology and integration in a Symfony project
Presented by Stefan Richter.
Stefan introduced us to something I didn’t have the time to check by myself, but I knew about: WebAuthn. A web standard to prevent the use of password and provide a better authentication of users. Including strong authentication, which is going to be a thing in the years to come.
- Strong authentication for the web is cool.
- It’s the developers’ job to offer this as an alternate way of authentication, pretty much like social logins do.
- It works cross-device, and can be used through NFC on Android and iOS.
- There are already two eras of secure use: FIDO and FIDO2.
- It seems I was the only one caring about Stefan’s first name correct syntax. Not cool. :(
Internationalize your Symfony application, the right way
Presented by Mathieu Santostefano.
A journey into internationalization (i18n), the right way, or “the less ugly way” via Symfony, third-party services, standards and processes.
- Process is everything when translating, this goes beyond development.
- Always internationalize your apps. All the time. Word.
- Mathieu confirmed a bad experience I had too: translating an app that never was translated is a nightmare. Kill it with fire.
- Use XLIFF, it’s in Symfony best practices, anyway. So I was aware of that, actually.
- PaaS internationalization is a common thing. I thought I was an alien using Wordbee a few years ago.
- Mathieu gave good advice regarding the building structure of translation keys.
- Oh, use those damn structured keys, by the way. DON’T put plain strings for source.
- Use their php-translation/symfonyt-bundle.
- I’d still use .po files if my team doesn’t use PaaS translation. XML should NEVER be manipulated by people, only automated, IMO.
- LoCo is a good service for translation PaaS.
- I wish we have a talk regarding Twig + Symfony translation one day.
- Kudos for the Pulp Fiction reference.
How Math, Science, and Star Trek Explain the Value of Team Diversity
Presented by Fredric Mitchell.
- I tried not to piss everyone off in the chat when noticing conceptual mistakes about IQ / EQ and intelligence in general and learning. I’m too deep into neurosciences and intelligence to not be sensitive on that topic.
- I love non-technical talks more than the technical ones that deal with topics I’ll never get a use for.
- “Diversity is a fact. Inclusion is a practice. Equity is a goal.”
- Diversity has facets.
- You can explain human interaction through overly long series.
- I still don’t watch series, I won’t change that.
- Emotional intelligence of groups exist. I need to check that out a little more in serious papers online. My knowledge in neursciences and sociology is, of course, insuffience. I want to learn more about those topics.
- Fredric is a really cool guy. Love the way he talks.
- I found someone who talks as much as I do. I’m not alone.
Get Social! Implementing Social Login in your Symfony Project
Presented by Pauline Vos.
Pauline actually introduced one of the most common problems I wanted to face: social logins. And explained everthing really well.
- Most social SSO systems now use OAuth2.
- I don’t like summarizing user drop rate and conversion due to forms filling when registering on a website, especially in the world of ecommerce.
- They’re so generic a bundle handles this for us.
- There are two good bundles to handle this, KNPU and HWI.
- You need to update your firewalls sections of security.yml.
- Pauline made a OAuth test server.
- I think I understood the OAuth mecanics at last.
The absolute beginner’s guide to Domain Driven Design with Symfony
Presented by Neal Brooks.
This talk was another talk about giving an example of DDD through the use of Symfony, which is something we usually miss.
- I still don’t really see the philosophy difference between DDD, Hexagonal architecture, or Clean Architecture.
- I still miss the point of DDD. I got it, but I still see this as an unnecessary layer of abstraction.
- I like the idea of ubiquitous language, though.
- I like the examples given by Neal to explain DDD basics.
- The best part here is clearly about the timeline of thoughts while creating the directories and files tree in the Symfony app.
- You basically tweak the tree with a little more depth of subdirectories.
- That was still too much code on a screen to be read at normal speed.
- I’ll need to check out the results of the app he produced for that demo. It’s on Github.
Keynote: For the Users — tech, ethics and you
Presented by Mark Nottingham.
Last but not the least, I’ve seen this talk twice and this was truly inspiring. One of the few non-technical conferences. Mark went through notable examples of engineering that went wrong for users. And how technology can harm users. He invited us to think a lot about the actions we take every day, how we change and affect the world, and how the world is going to take back on digital technologies.
- Mark showed a lot of failures of engineering that actually negatively impacted people’s lives.
- He showed examples (I already knew some of them) of technology bias harming people in our domain.
- Zuckerberg’s quote “move fast and break things” is starting to show limitations.
- The point is that regulation in software and our technologies is going to come. The era of freeriding is over.
- The key sentence to me was “Deprioritise internal needs”.
- And the final word was: “be a citizen, not an engineer”. Powerful.
- Australia is far, and still we had connection problems and missed half Mark’s answers. Unfortunately.
- Quoting Douglas Adams in H2G2 is cool.
Other notable things I enjoyed during this event:
- Seeing best buddies online! Valentine, Maxime, Simon and many other ones! 🤎
- Seeing the regular Symfony family of amazing people who never fail to join such events: Andreas, Wouter, Oskar, and many others! 🤎
- Testing myself against the SensioLabs live testing tools, filled with questions that could totally be taken from the Symfony Certification, which is absolutely precious, for there’s litterally no way to prepare for this on the web, apart from their online courses. I really appreciated this, I hope this stays publicly accessible for a little time: this is going to be a major hit. Thanks A LOT, SensioLabs.
- I missed half the presentation of Minecraft + PHP, but I’ll catch it later on. Basically it was about generating elements by R/W the save files of Minecraft. Cool.
- The random “Chatroulette-inspired” networking tool. I had the time to meet 3 people I didn’t know before, which is really weird, but exciting at the same time. Why not choose who you stumble upon at some point, right? The only sad part is that there was actually no time to use networking, and no one was really using that tool while a presentation was still active.
- Watching presentations of the tools I already knew, but it was cool to see them again and get a few updates, mostly to:
— See what’s coming in BlackFire, especially the specialized APM part. I really look forward to this. The BlackFire devs said they’d never outperform major players like New Relic, but I don’t think they should try. I think they’ll go in a very specialized and intersting way towards PHP/Python/Go.
And major players will never go back to app profiling like they do. I see a great immediate future for them, and this is good news. If you don’t know what BlackFire is about, check it out. I had a quick talk with Christophe, I’m still consolidating my speech to have our company adopt this amazing tool.
— See all the 30 new improvements in Symfony Insight, a tool that’s really precious regarding the safety of your PHP apps (not only Symfony apps), but also Symfony upgrades, and many other static analysis metrics that could save you a lot of sweating.
— Learn about the improvements of Symfony Cloud, their PaaS service to host Symfony-based structures. That’s the only part of the ecosystem I haven’t tried out, yet, but as a Platform.sh enthusiast, I’ll give it a go as soon as I got some extra time. Watch out a demo on SymfonyCasts on how to deploy on this service in a snap.
🎥 Replays would be available by December 5, on https://live.symfony.com/account/replay/.
In the meantime, I’m counting on my mailbox to contain the hoodie, t-shirt and elePHPants I ordered. The team said they’d start shipping the thousands of elePHPants on saturday. Needless to say: everyone is waiting impatiently.
They got friends awaiting: this will already be my 8th of this kind of weird, plushy, tattooed animal that only lives in offices.
So, any regrets?
Yes, but very few of them, compared to all the satisfactions:
- This is still a lot of cognitive load.
- The pause between conferences is almost inexistent.
- I still want to see Sylius and more than anything OroCommerce at those events. Those projects can justify and give a meaning to many other presentations in the event.
- I still think there should be a Drupal conference somewhere. This is not so far away from Symfony right now.
- I’m a little frustrated over the fact I couldn’t see all the conferences live.
- I had to leave for exactly two conferences to give students of IUT a lesson. And I hate having to choose between the two things I enjoy the most in life: learning and teaching. Those activities (the SymfonyWorld and my lectures -which I invented-) are definitely top events in my year 2020.
- I wish we have a talk regarding Twig + Symfony translation one day.
- I actually wish there was ONE conference about Twig one day. This engine is way more evil and complex than it looks. I might propose myself as a speaker for that, who knows, I’m already submerged by work, I need more. ;)
- I should have slept a little more on wednesday evening. I progressed a lot on Apex Legends, but I clearly missed some sleeping, and that’s definitely not the best idea on those days. Like right now, it’s 4 AM and I’ve been up since 9AM yesterday...
And of course, one last shout to my company, my partner in crime, Néo-Soft, who sponsored my attendance. 💜
I really enjoyed every single conference I attended. Now is the time to check the other ones, so that I’ll know if I was right or wrong putting them in third place. We all make mistakes.
Finally, don’t forget that more events like this are going to happen, with only one planned physical event for 2021, and many others, in non-English languages, which is very interesting and bold, considering the model those events rely on and the split this could generate.
I’d definitely give it a go! I’ll be there in 2021 again!
And I hope I’ll see you there.
See you in space, cowboys.