Blog
We Love Writing About Software Development
Sharing knowledge is what we do best. From frontend to backend, we dive deep into best practices, tools, and frameworks to help developers build efficient, scalable, and modern applications.

What Is Code Rot?
Code rot is a form of Technical debt, which builds up over time. It is the process where the quality of the code deteriorates.

Uncle Bob
Recommended informative free YouTube videos from Uncle Bob.

Composition Over Inheritance
Inheritance isn’t all bad, but in some instances it doesn’t make sense to use it.

SOLID Principles Explained
Attempting to write code which satisfies the current requirements and future requirements should be the goal.

SQL Optimisation
More often than not the initial database design works fine at the beginning, however as time goes on, changes are made and the data grows. Bottlenecks...

Writing Readable PHP - general tips and advice
Tips and hints around writing readable PHP

Writing Readable PHP - being expressive
Being expressive when writing code makes it easier for people to understand your code and shows you care about the next developer who comes along.

Lambda Functions
A lambda function is an anonymous PHP function that can be stored in a variable and passed as an argument to other functions or methods. A closure is...

Eloquent Performance
Some hints and tips to help improve performance of your Laravel application

Eloquent - Calculating totals using conditional aggregates
How to correctly calculate totals in Eloquent using conditional aggregates

Chain Of Responsibility Pattern
To build a chain of objects to handle a call in sequential order. If one object cannot handle a call, it delegates the call to the next in the chain a...

Command Pattern
To encapsulate invocation and decoupling.

Interpreter Pattern
For a given language, it defines the representation of its grammar as "No Terminal Expression" and "Terminal Expression", as well as an interpreter fo...

Iterator Pattern
To make an object iterable and to make it appear like a collection of objects.

Mediator Pattern
This pattern provides an easy way to decouple many components working together. It is a good alternative to Observer IF you have a "central intelligen...

Memento Pattern
It provides the ability to restore an object to it's previous state (undo via rollback) or to gain access to state of the object, without revealing it...

Null Object Pattern
NullObject is not a GoF design pattern but a schema which appears frequently enough to be considered a pattern

Observer Pattern
Usage of this pattern allows class functionality to be dynamically extended in runtime, helping to prevent code rot and ensuring functionality is deco...

Specification Pattern
Builds a clear specification of business rules, where objects can be checked against.

State Pattern
Encapsulate varying behaviour for the same routine based on an object's state. This can be a cleaner way for an object to change its behaviour at runt...

Strategy Pattern
To separate strategies and to enable fast switching between them. Also this pattern is a good alternative to inheritance (instead of having an abstrac...

Visitor Pattern
The Visitor Pattern lets you outsource operations on objects to other objects. The main reason to do this is to keep a separation of concerns. But cla...

Abstract Factory Pattern
To create series of related or dependent objects without specifying their concrete classes

Builder Pattern
Builder is an interface that build parts of a complex object.

Factory Method Pattern
Factory method allows subclassing to implement different ways to create objects. It depends on abstractions, not concrete classes.

Pool Pattern
The object pool pattern is a software creational design pattern that uses a set of initialised objects kept ready to use – a "pool" – rather than allo...

Prototype Pattern
To avoid the cost of creating objects the standard way (new Foo()) and instead create a prototype and clone it.

Simple Factory Pattern
SimpleFactory is a simple factory pattern. It differs from the static factory because it is not static

Singleton Pattern
To have only one instance of this object in the application that will handle all calls.

Static Factory Pattern
Similar to the AbstractFactory, this pattern is used to create series of related or dependent objects.

Adapter Pattern
To translate one interface for a class into a compatible interface. An adapter allows classes to work together that normally could not because of inco...

Bridge Pattern
Decouple an abstraction from its implementation so that the two can vary independently.

Composite Pattern
To treat a group of objects the same way as a single instance of the object.

Data Mapper Pattern
A Data Access Layer that performs bidirectional transfer of data between a persistent data store (often a relational database) and an in memory data r...

Decorator Pattern
To dynamically add new functionality to class instances.

Dependency Injection
To implement a loosely coupled architecture in order to get better testable, maintainable and extendable code.

Facade Pattern
Grouping code together to reduce complexity; making it simple and easier to understand.

Fluent Interfaces
To write code that is easy readable just like sentences in a natural language (like English).

Flyweight Pattern
To minimise memory usage, a Flyweight shares as much as possible memory with similar objects. It is needed when a large amount of objects is used that...

Proxy Pattern
Create an interface to anything that is expensive or impossible to duplicate.

Registry Pattern
To implement a central storage for objects often used throughout the application, is typically implemented using an abstract class with only static me...

Design Patterns - Overview
A design pattern is a general, reusable solution to common occurring problems within a given context in software engineering.

Hexagonal Architecture
Also known as the Ports and Adapters architecture. This architecture clearly separates core logic from the input and output infrastructure, dividing t...

Encapsulate What Varies
Identify aspects of your application that vary and separate from what stays the same.
Ready to bring your vision to life?
We believe in excellence, empathy, integrity, and transparency throughout the process. Our goal is to build fast, responsive websites that not only perform but also reflect your values and vision.