Getting Continuous Integration right

I’ve participated in a good number of projects in my short life as a developer. Luckily, when I started in this business, git was a thing already and was one of the first tools I learned to use. I often wonder how anyone was able to build software in the past without it. The best value that git brought to software development was not so much related to keeping a versioning history of a codebase (which is already pretty big value!
Read more →

Going back to the Monolith well

We were extremely warned about the dangers of microservices, but we implement them anyway. Now, we are slowly realizing that we should have never, ever, abandoned the monolith. Our multiple failures at microservices probably speak of two things, (1) we probably lack the workforce and proper Ops team to carry this effort onward and (2) we probably could have solved our problem without them anyway. Note that I’m saying that microservices are fine.
Read more →

Repository Pattern Done Right

The repository pattern is one of the most well established patterns in Domain Driven Design. It’s origins can be traced as early as when Object Oriented Programing was born. Of course, like it happens with almost every pattern or tool, you can really use it terribly the first time (or even the second, or the third one). The only way to improve upon that is good literature and seeing other, more appropriate, uses of the pattern/tool.
Read more →

Unit-testing the filesystem in PHP

I used to be a big fan of filesystem abstractions, not only for the abstraction benefit, but also for the testing benefit as well. It is trivial to unit test classes depending in filesystem abstractions like Flysystem or Gaufrette: just a simple mock of the interface and we are done. However, from time to time I was kinda annoyed with some limitations of the abstractions, specially in regards to stream handling.
Read more →

Efficient Reports in PHP

When it comes to reporting, I have a predefined set of rules that I follow sacredly and that will ensure that my report writing experience will be nice and problem-free.

Read more →