AllDomain-Driven DesignEnterprise Node + TypeScriptNetworking & OpsSoftware DesignSoftware ProfessionalismWeb Development
The 6 Most Common Types of Logic in Large Applications [with Examples]Software Design
Sep 16th, 2019 / 12 min read
In this article, you'll learn about the Clean Architecture, why we should separate the concerns of large applications into layers,...
Why I Don't Use a DI Container | Node.js w/ TypeScriptSoftware Design
Sep 16th, 2019 / 11 min read
Instead of a DI Container, I just package features by component and use logical naming conventions.
Dependency Injection & Inversion Explained | Node.js w/ TypeScriptSoftware Design
Sep 11th, 2019 / 10 min read
Dependency Injection and Depedency Inversion are two related but commonly misused terms in software development. In this article, ...
Command Query Segregation | Object-Oriented Design Principles w/ TypeScriptSoftware Design
Aug 29th, 2019 / 11 min read
CQS (Command-Query Segregation) is a design principle that states that a method is either a COMMAND that performs an action OR a Q...
Functional Error Handling with Express.js and DDD | Enterprise Node.js + TypeScriptEnterprise Node + TypeScript
Aug 14th, 2019 / 16 min read
How to expressively represent (database, validation and unexpected) errors as domain concepts using functional programming concept...
An Introduction to Domain-Driven Design - DDD w/ TypeScriptDomain-Driven Design
Jul 30th, 2019 / 12 min read
Domain-Driven Design is the approach to software development which enables us to translate complex problem domains into rich, expr...
Handling Collections in Aggregates (0-to-Many, Many-to-Many) - Domain-Driven Design w/ TypeScriptDomain-Driven Design
Jul 25th, 2019 / 10 min read
In this article, we discuss how we can use a few CQS principles to handle unbounded 0-to-many or many-to-many collections in aggre...
Challenges in Aggregate Design #1 - Domain-Driven Design w/ TypeScriptDomain-Driven Design
Jul 25th, 2019 / 5 min read
In this series, we answer common questions in aggregate design. Here's an article orignating from the question, "How can a domain ...
How to Design & Persist Aggregates - Domain-Driven Design w/ TypeScriptDomain-Driven Design
Jul 24th, 2019 / 28 min read
In this article, you'll learn how identify the aggregate root and encapsulate a boundary around related entities. You'll also lear...
There Is No Dominant Paradigm | Software ProfessionalismSoftware Professionalism
Jul 11th, 2019 / 9 min read
Functional programming is not the end to all of our problems. Quality software is all three paradigms.
Intention Revealing Interfaces [w/ Examples] - Domain-Driven Design w/ TypeScriptDomain-Driven Design
Jul 9th, 2019 / 10 min read
An intention revealing interface is a standard for writing code that is expressive enough to adequately explain it's purpose witho...
Where Do Domain Events Get Created? | Domain Driven Design w/ TypeScriptDomain-Driven Design
Jul 4th, 2019 / 5 min read
In this post, I explain how good ol' fashioned encapsulation + TypeScript getters and setters enable us to effectively create Doma...
Better Software Design with Application Layer Use Cases | Enterprise Node.js + TypeScriptEnterprise Node + TypeScript
Jun 25th, 2019 / 16 min read
In this article, we explore how organizing application logic as Use Cases in the application layer helps to make large typescript ...
Implementing DTOs, Mappers & the Repository Pattern using the Sequelize ORM [with Examples] - DDD w/ TypeScriptDomain-Driven Design
Jun 20th, 2019 / 14 min read
There are several patterns that we can utilize in order to handle data access concerns in Domain-Driven Design. In this article, w...
Name, Construct & Structure | Organizing Readable Code - Part 1Software Design
Jun 15th, 2019 / 6 min read
Naming files & folders well, using well-understood technical constructs and strategically organizing files well are three ways to ...
Domain Knowledge & Interpretation of the Single Responsibility Principle | SOLID Node.js + TypeScriptSoftware Design
Jun 13th, 2019 / 9 min read
The Single Responsibility Principle specifies that a class or function should only have one reason to change. Admittedly, that's n...
Jun 7th, 2019 / 10 min read
Clean Node.js Architecture | Enterprise Node.js + TypeScriptEnterprise Node + TypeScript
Jun 6th, 2019 / 7 min read
In this article, we'll look at the various different versions of the "clean architecture", simplify it, and understand how we can ...
Understanding Domain Entities [with Examples] - DDD w/ TypeScriptDomain-Driven Design
May 28th, 2019 / 12 min read
Entities are the first natural place we should aim to place business logic in domain-driven applications. In this article, we talk...
Knowing When CRUD & MVC Isn't Enough | Enterprise Node.js + TypeScriptEnterprise Node + TypeScript
May 24th, 2019 / 13 min read
MVC the granddaddy of application architectures. In this article, we explore common MVC patterns, the responsibilities of the "M"-...
SOLID Principles: The Software Developer's Framework to Robust & Maintainable Code [with Examples]Software Design
May 18th, 2019 / 15 min read
The SOLID principles are a set of software design principles that teach us how we can structure our functions and classes to be as...
REST-first design is Imperative, DDD is Declarative [Comparison] - DDD w/ TypeScriptDomain-Driven Design
May 15th, 2019 / 11 min read
A comparison between designing Node.js applications using REST-first design and Domain-Driven Design.
Flexible Error Handling w/ the Result Class | Enterprise Node.js + TypeScriptEnterprise Node + TypeScript
May 15th, 2019 / 9 min read
Purposefully throwing errors can have several negative side effects to the readability and traceability of your code. In this arti...
Clean & Consistent Express.js Controllers | Enterprise Node.js + TypeScriptEnterprise Node + TypeScript
May 11th, 2019 / 8 min read
In this article, we explore how to structure a clean and consistent Express.js controller by using abstraction and encapsulation w...
How to Build a Related Posts Component with Gatsby.jsWeb Development
Apr 16th, 2019 / 7 min read
Here's how to build a "Related Posts" component for your Gatsby.js site.
When To Use TypeScript - A Detailed Guide Through Common ScenariosWeb Development
Apr 6th, 2019 / 15 min read
Strap yourself in. In this guide, we compare when it's absolutely vital to be using TypeScript, the strictly-typed programming lan...
Hacking the Asterisk AMI to Send Missed Call Notifications with NodeJSNetworking & Ops
Jan 29th, 2016 / 11 min read
This is actually a little bit of an oldie but a goodie. I figured out how to get my IP phone to send me a notification when I miss...