About code quality, automation and git hooks
Imagine you are in the middle of writing some awesome code for a new project of yours. You know, that code on its own isn't all, because it has to be maintainable. And what is better to ensure correct and maintainable code than to have tests and a coding style and some static analysis and whatnot. So in addition to your awesome code you have decided to use a certain coding style. And you are writing tests for your features. And in addition to your tests you also run static analysis to find possible pitfalls even faster.
Besides being big fans of Mark Shust's Docker Configuration for Magento project as I already blogged about, we also love Traefik, the Cloud Native Edge Router. I discovered Traefik years ago and try to use it wherever we can. Depending on the project's goals we either use the open-source version or the enterprise edition. Disclaimer: I am Traefik Ambassador, so I might be a bit biased :)
For a few projects we make use of the Event Engine by prooph software which is a biased - in a good way(tm) - way of quickly building event sourced applications. While building a user registration context, I was stuck a bit how and where to properly hash the password for the user. I could have done it in the init() method of the command, that way I would have made sure that the cleartext password is not "visible" anywhere in the application code. In the end, I decided to make use of a provider class. The return value of the provider will be passed to the specified aggregate method and allows me to pass it to the respective event.
We are big fans of Mark Shust's Docker Configuration for Magento project. We use a lot of our projects, the ones we start from scratch as well for ones that we have taken over and have some weird setup in place that we simply cannot get to work.
In a recent project, we make use of the Event Engine which is an Event Sourcing framework for PHP helping you to rapidly develop event sourced applications. Since parts of the exposed API by the Event Engine should be access proteced, we decided to use OAuth2 for access delegation. That way each route exposed by the Event engine application can be marked as "protected" if needed.
A few days ago Jordi announced the first dev build of Composer 2.0. I immediately went and downloaded it. Since version 2.x should be a lot faster, I thought it is a good idea to test it against a current Magento 2 project I am working on. I was a bit disappointed first because Composer failed with quite a few errors like that:
On the 24th and the 25th of January 2020 I was able to go to the PHPBenelux Conference in Antwerpen. It is a community-driven technology conference. As the name implies it is mostly about PHP and related topics. It was the first conference I visited besides our very own unconference at bitExpert. Therefore I was very excited and did not know at all what to expect.
Back at #mageuc19 I gave a talk about various PHP tools that help you to manage the quality of your (Magento) project. One of the tools I mentioned is CaptainHook, a tool written in PHP to manage your git hooks. Whilst this is not a QA tool per se, it still made sense to showcase it as most QA tools do run via CaptainHook in our projects. That means tools like PHPUnit, Codesniffer, Security Checker or tools like PHPStan or Psalm.
On the 6th of December, I was given the opportunity to attend my first React Day in Berlin. It is one of the largest React focussed conferences in the world, with ~500 attendees this year.
Since it started all the way back in 2015 the MageUnconference has been high on my priority when it comes to Magento events. This year I was super excited not just to be back but also to bring along one of my new colleagues for his first MageUnconf experience.