Global States: Why and How to Avoid ThemGlobal states. These words induce fear and pain in every developer’s heart who had the unfortunate experience to deal with them.Did you already fight against applications behaving unexpectedly, without knowing exactly why, like a poor knight would try to kill an Hydra with too many heads to deal with?Did you end up in the infinite loop of tries and errors, guessing 90% of the time what was happening?This could be the annoying consequences of globals: hidden variables changing their states in unknown places, depending on things you don’t yet understand.
30 Shared Principles for discussing Software ArchitecturesImagine a fly-by architecture review. An architect walks in, looks over, glosses over, seeing though his binoculars. He provides comments that are often too generic or out of context. Comments are often met with deafening silence or winding arguments. They rarely help anybody if ever. Every programmer dreads it; every architect dreads it too.
Mocks aren’t StubsI want to clarify a confusion which has been on my mind lately.There is a lot of new information when you start testing for the first time and to understand how Mocks and Stubs work is really important for testing.
The Definitive 2019 Guide to Cryptographic Key Sizes and Algorithm RecommendationsA lot has been written about cryptography key lengths from academics (e.g. Lenstras equation) and various standard committees (ECRYPT-CSA, Germanys BSI, Americas NIST, etc.) over the years.Despite the abundance of coverage on this material on the Internet, these resources lack the clarity that we look for when drafting recommendations for software developers and system administrators. Additionally, many of them are showing their age and desperately need to be brought up to speed with a modern understanding of real-world cryptography.
10 OOP Design Principles Every Programmer Should KnowThe Object-Oriented Design Principlesare the core of OOP programming, but I have seen most of the Java programmers chasing design patterns like Singleton pattern, Decorator pattern, or Observer pattern, and not putting enough attention on learning Object-oriented analysis and design.
SOLID Principles every Developer Should KnowObject-Oriented type of programming brought a new design to software development.This enables developers to combine data with the same purpose/functionality in one class to deal with the sole purpose there, regardless of the entire application.But, this Object-oriented programming doesn’t prevent confusing or unmaintainable programs.
A Smart Programmer Understands The Problems Worth FixingThis is the story of Peter. Peter is a programmer that can do anything. He can create software as good as any of his other peers. However, theres a difference between a programmer with experience from a programmer without experience, even though both have the same technical skills.
Hand-written service containersDependency injection is very important. Dependency injection containers are too. The trouble is with the tools, that let us define services in a meta-language, and rely on conventions to work well. This extra layer requires the "ambient information" Paul speaks about in his tweet, and easily lets us make mistakes that we wouldnt make if wed just write out the code for instantiating our services.
Serverless case study: PrettyCI and Laravel QueuesThe idea is that anytime you push a commit to your GitHub repository, PrettyCI will analyze that commit using PHP CodeSniffer or PHP-CS-Fixer. Since PrettyCI integrates in GitHubs checks tab you can see the build result directly in your repository without having to leave your work.
Kubernetes: deploy Laravel the easy wayLaravel is an excellent framework for developing PHP applications. Whether you need to prototype a new idea, develop an MVP (Minimum Viable Product) or release a full-fledged enterprise system, Laravel facilitates all of the development tasks and workflows.
Please, stop talking about Repository pattern with EloquentI regularly see articles like "How to use Repository pattern with Eloquent". The usual contents of them: lets create PostRepositoryInterface interface, EloquentPostRepository class, bind them nicely in DI container and use them instead of the standard Eloquent save and find methods.
How to turn Laravel from Static to Dependency Injection in one DayA framework is just a tool. Each teaches you coding habits you need to use them effectively. Like Laravel gives you speed at prototyping with static "facades". But the applications grows, so does the team, so does your skill and you start to prefer constructor injection. What then? Switch framework or rewrite? But what if all you need is to switch single pattern?
PHP type hints: self and parentIn PHP we can type hint function arguments since version 5.0. Over the years and with newer versions of PHP the number of possible type hints have increased. Here’s an overview:
Moving from Go to PHP againWell, after 2 years on Go, our shop applications are powered by PHP again.Why?! You already said it was probably a bad business decision, and then you spend even more time on it?! Well, yeah, several reasons actually.
11 Awesome Laravel Helper Functions (that arent in Laravel)Let’s just jump right in and introduce the helper functions I included in the package and find uber-duber useful.We’ll go in ascending order of awesome-ness, so you’re not overwhelmed with too much ?out of the gate.
Polishing your codeWhile preparing content for my upcoming PHP Package Development video course I discovered that over the last couple of years I spend more and more time polishing my code before shipping it.And I believe that this is something that is just as important as the actual coding itself.Let me talk you through some of the adjustments that I try to make, while working on my codebase and how this can hopefully affect your way of writing good and readable code.