Contract Tests
There is more to the contract of an interface than just the methods it provides. All implementation of this interface actually need to behave consistently in the same situations. This post shows a way how we can test for this.
There is more to the contract of an interface than just the methods it provides. All implementation of this interface actually need to behave consistently in the same situations. This post shows a way how we can test for this.
May 12, 2021
Back the func off, this is my abstraction!
Integrating services over API's exposes your application to a range of possible failures. At scale, any network interaction can and will fail. Implementing a retry mechanism is a common approach to increase fault tolerance. Taking into account how systems fail when designing software can greatly improve the quality of your code. In this blogpost I'd like to show how I approach these kinds of problems.
Integrating services over API's exposes your application to a range of possible failures. At scale, any network interaction can and will fail. Implementing a retry mechanism is a common approach to increase fault tolerance. Taking into account how systems fail when designing software can greatly improve the quality of your code. In this blogpost I'd like to show how I approach these kinds of problems.
May 21, 2021
Object Oriented Done Right
Alan Kay, the inventor of the term βobject-oriented programmingβ, told a story once during a talk more than 20 years ago. You can build a dog house using only a hammer, nails, planks, and just a little bit of skill. I figure even I would be able to build it given enough time. Once you've built it you've earned the skills and know-how, and could apply it to other projects. Next, you want to build a cathedral, using the same approach with your hammer, nails, and planks. It's a 100 times larger, but you've done this before β right? It'll only take a little longer.
Alan Kay, the inventor of the term βobject-oriented programmingβ, told a story once during a talk more than 20 years ago. You can build a dog house using only a hammer, nails, planks, and just a little bit of skill. I figure even I would be able to build it given enough time. Once you've built it you've earned the skills and know-how, and could apply it to other projects. Next, you want to build a cathedral, using the same approach with your hammer, nails, and planks. It's a 100 times larger, but you've done this before β right? It'll only take a little longer.
May 22, 2021
Roadmap to learn Software Design
I have been planning to learn Software Design for a quite a while now but I always ended up finding some other fancy topic. You can be a software engineer with years of experience and still do fine without delving into the meat of Software design but the perks of understanding this complex process are unfathomable.
I have been planning to learn Software Design for a quite a while now but I always ended up finding some other fancy topic. You can be a software engineer with years of experience and still do fine without delving into the meat of Software design but the perks of understanding this complex process are unfathomable.
May 24, 2021
Fiendish Functions - Filtering Fact From Fiction
Functional programming is a paradigm that has gained in popularity recently with the rise of several new functional programming languages and integration of new features in existing languages. All the same, there are many concerns about functional programming in the developer community. Is functional programming useful for the PHP developer? Will it add complexity to my codebase? This article will respond to some of these misconceptions.
Functional programming is a paradigm that has gained in popularity recently with the rise of several new functional programming languages and integration of new features in existing languages. All the same, there are many concerns about functional programming in the developer community. Is functional programming useful for the PHP developer? Will it add complexity to my codebase? This article will respond to some of these misconceptions.
May 25, 2021
13 Best Practices for Building RESTful APIs
Facebook, GitHub, Google, and many other giants need a way to serve and consume data. A RESTful API is still one of the best choices in todayβs dev landscape to serve and consume data.
But have you ever considered learning about industry standards? What are the best practices for designing a RESTful API? In theory, anyone can quickly spin up a data API in less than five minutes β whether it be Node.js, Golang, or Python.
Facebook, GitHub, Google, and many other giants need a way to serve and consume data. A RESTful API is still one of the best choices in todayβs dev landscape to serve and consume data.
But have you ever considered learning about industry standards? What are the best practices for designing a RESTful API? In theory, anyone can quickly spin up a data API in less than five minutes β whether it be Node.js, Golang, or Python.
May 26, 2021
ββHow to connect with gRPC service in PHP application? gRPC PHP tutorial
More and more developers and companies are discovering the benefits of microservices. And while PHP is usually not the first choice for this architecture, it is now more than viable to create efficient web apps based on microservices with PHP. To that end, Googleβs gRPC and Protobuf solutions are a big help. Today, Iβm going to show you how to use gRPC with PHP.
More and more developers and companies are discovering the benefits of microservices. And while PHP is usually not the first choice for this architecture, it is now more than viable to create efficient web apps based on microservices with PHP. To that end, Googleβs gRPC and Protobuf solutions are a big help. Today, Iβm going to show you how to use gRPC with PHP.
May 28, 2021
The Domain Layer - Clean Architecture & Domain-Driven Design on PHP
The fundamental part of Clean Architecture and Domain-Driven Design is the Domain layer. There all the business and applications rules are laid down and will be controlling the processing of information independently from the infrastructure and frameworks.
The fundamental part of Clean Architecture and Domain-Driven Design is the Domain layer. There all the business and applications rules are laid down and will be controlling the processing of information independently from the infrastructure and frameworks.
May 29, 2021
ββWriting Clean Code In PHP
In this article, let's learn how to write clean code in PHP. These tips help you to write readable, reusable & refactorable code in PHP.
In this article, let's learn how to write clean code in PHP. These tips help you to write readable, reusable & refactorable code in PHP.
May 30, 2021
Double Dispatch
The computation of a method call is only dependent on the object receiving the method call. Most of the time that's enough. However, sometimes we need the computation to also depend on the argument being passed to the method call.
Think you have two hierarchies of objects interacting with each other and the computation of these interactions depends on both objects, not only in one of them. Maybe some examples will make this clearer.
The computation of a method call is only dependent on the object receiving the method call. Most of the time that's enough. However, sometimes we need the computation to also depend on the argument being passed to the method call.
Think you have two hierarchies of objects interacting with each other and the computation of these interactions depends on both objects, not only in one of them. Maybe some examples will make this clearer.
May 31, 2021
ββWhat is Software Architecture?
When it comes to the definition of Software architecture is the process of transforming software features such as flexibility, scale, viability, reusability, and security into a structured solution that meets technological and business aspirations. This definition refers to the features of the software that can affect software architecture. In addition to technical requirements, a long list of features primarily represents a business or operational needs.
When it comes to the definition of Software architecture is the process of transforming software features such as flexibility, scale, viability, reusability, and security into a structured solution that meets technological and business aspirations. This definition refers to the features of the software that can affect software architecture. In addition to technical requirements, a long list of features primarily represents a business or operational needs.
June 2, 2021
ββWriting better Regular Expressions in PHP
Regular Expressions are powerful, PHP but they are not known to be readable, and more often than not, maintaining a regular expression is not a straight-forward task.
Regular Expressions are powerful, PHP but they are not known to be readable, and more often than not, maintaining a regular expression is not a straight-forward task.
June 3, 2021
PHP 8.1 is comingβββand it already promises to be one of the best releases
The coming version of PHP, scheduled for November 2021, is already packed with a lot of super exciting features.
The coming version of PHP, scheduled for November 2021, is already packed with a lot of super exciting features.
June 10, 2021
Design PatternsβββThe Observer Pattern
This is part 2 of my design patterns articles. A lot of credit to Christopher Okhravi. Iβm trying to cover all his videos about design patterns from the book "Head First: Design Patterns".
This is part 2 of my design patterns articles. A lot of credit to Christopher Okhravi. Iβm trying to cover all his videos about design patterns from the book "Head First: Design Patterns".
June 24, 2021
ββWhy our code tends to become big ball of mud over time
Our codebases seem to corrode over time. Overall quality tends to decrease. Each new change is harder to introduce. We all use OOP good practices, control our dependencies, adjust to SOLID principles and use patterns. And even so, our systems head toward becoming a big ball of mud inevitably. It turns out it is not enough to keep systems viable in an environment of relentless change.
Our codebases seem to corrode over time. Overall quality tends to decrease. Each new change is harder to introduce. We all use OOP good practices, control our dependencies, adjust to SOLID principles and use patterns. And even so, our systems head toward becoming a big ball of mud inevitably. It turns out it is not enough to keep systems viable in an environment of relentless change.
June 29, 2021
ββBest practices for writing code comments
While there are many resources to help programmers write better codeβsuch as books and static analyzersβthere are few for writing better comments. While it's easy to measure the quantity of comments in a program, it's hard to measure the quality, and the two are not necessarily correlated. A bad comment is worse than no comment at all. Here are some rules to help you achieve a happy medium.
While there are many resources to help programmers write better codeβsuch as books and static analyzersβthere are few for writing better comments. While it's easy to measure the quantity of comments in a program, it's hard to measure the quality, and the two are not necessarily correlated. A bad comment is worse than no comment at all. Here are some rules to help you achieve a happy medium.
July 20, 2021
Enums in PHP 8.1
They are finally coming β built-in support for enums will be added in PHP 8.1! Some might consider them long overdue, but you don't hear me complain; I'm glad they made it! This post is dedicated to looking at the newly added feature in-depth.
They are finally coming β built-in support for enums will be added in PHP 8.1! Some might consider them long overdue, but you don't hear me complain; I'm glad they made it! This post is dedicated to looking at the newly added feature in-depth.
August 2, 2021
PHP 8: The JIT
The pros and cons of adding a JIT compiler to PHP. Dmitry Stogov recently opened an RFC to add a JIT compiler to PHP. So, what is that about? Does "JIT" mean "instantly better PHP", or is this a more nuanced topic? Today we'll briefly look at what the "JIT" actually does, and more importantly: the difficulties and opportunities it brings to the PHP world.
The pros and cons of adding a JIT compiler to PHP. Dmitry Stogov recently opened an RFC to add a JIT compiler to PHP. So, what is that about? Does "JIT" mean "instantly better PHP", or is this a more nuanced topic? Today we'll briefly look at what the "JIT" actually does, and more importantly: the difficulties and opportunities it brings to the PHP world.
August 9, 2021
PHP: Named arguments are your friends
I stumbled upon an article in Stitcher.io that, in a few words, declares that developers should be aware that Named Arguments will break things. Thatβs quite weird when you consider they fix more than what they "break".
I stumbled upon an article in Stitcher.io that, in a few words, declares that developers should be aware that Named Arguments will break things. Thatβs quite weird when you consider they fix more than what they "break".
August 27, 2021
ββModern PHP data Encryption/Decryption with Sodium extension
Throughout the years PHP has added support for several extensions, libraries, and algorithms to encrypt and decrypt data. With several libraries and extensions with various levels of maintenance, several algorithms each potentially carrying pros and cons, some even inherently being insecure, it is very difficult to select the appropriate PHP extension, library, encryption constructs, and balance the security and performance.
Throughout the years PHP has added support for several extensions, libraries, and algorithms to encrypt and decrypt data. With several libraries and extensions with various levels of maintenance, several algorithms each potentially carrying pros and cons, some even inherently being insecure, it is very difficult to select the appropriate PHP extension, library, encryption constructs, and balance the security and performance.
November 20, 2021
Starting with Microservices in PHP
In this article, we will take theory and apply it in practice using PHP.
We will use Ecotone Framework and RabbitMQ, to integrate two Services together.
In this article, we will take theory and apply it in practice using PHP.
We will use Ecotone Framework and RabbitMQ, to integrate two Services together.
January 26, 2022