My TypeScript Software Design & Architecture book just prelaunched! Check out



The 6 Most Common Types of Logic in Large Applications [with Examples]
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/ TypeScript
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/ TypeScript
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/ TypeScript
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...
How to Setup a TypeScript + Node.js Project
Aug 29th, 2019 / 10 min read
In this guide, we walk through the process of creating a TypeScript project from scratch with cold-reloading, and scripts for buil...
Functional Error Handling with Express.js and DDD | Enterprise Node.js + 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/ TypeScript
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/ TypeScript
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/ TypeScript
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/ TypeScript
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 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/ TypeScript
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/ TypeScript
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 + 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/ TypeScript
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 1
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 + TypeScript
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...
Over $85 billion spent on fixing bad code [bootcamps, junior devs, JavaScript, and software design principles]
Jun 7th, 2019 / 10 min read
More and more money is being spent by companies on maintaining bad JavaScript code. Here's where I think our industry needs to cha...
Clean Node.js Architecture | Enterprise Node.js + 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/ TypeScript
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 + 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]
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/ TypeScript
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 + 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 + 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...
TypeScript vs. JavaScript [Pros / cons]
May 11th, 2019 / 4 min read
TypeScript is arguably one of the best things to come to the JavaScript world helping developers comfortably create complex enterp...
Junction Model Pattern: Many-to-Many - Sequelize
Apr 30th, 2019 / 4 min read
Many-to-many is a common modeling relationship between two entities. Here's one way to handle it with the Sequelize ORM.
UML Cheatsheet | Resource
Apr 26th, 2019 / 1 min read
Here's a handy-dandy UML cheatsheet.
Migrate Primary Keys to UUIDs - Sequelize/Node
Apr 20th, 2019 / 9 min read
This is how and why I took upon myself the hellish task of migrating an existing Sequelize + TypeScript application to use UUIDs i...
How to Build a Related Posts Component with Gatsby.js
Apr 16th, 2019 / 7 min read
Here's how to build a "Related Posts" component for your Gatsby.js site.
Value Objects - DDD w/ TypeScript
Apr 7th, 2019 / 6 min read
Value Objects are one of the primary components of Domain-Driven Design. Here's a simple Value Object class in TypeScript.
When To Use TypeScript - A Detailed Guide Through Common Scenarios
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...
Cleaner Code with Async / Await Tutorial
Jul 30th, 2018 / 7 min read
Asynchronous programming in JavaScript used to be difficult to write clean code with. Today we have options. You can write asynchr...
Fixing Sequelize Models with Migrations
Jul 17th, 2018 / 8 min read
Sequelize is a great ORM for NodeJS applications that are built on relational backends. Inevitably, you'll need to update your mod...
How To Optimize Your Gatsby Blog For SEO
Jun 19th, 2018 / 6 min read
Gatsby is a great tool for creating static websites, landing pages, and blogs. This post will show you how you can optimize your b...
What Does A Tilde Do In JavaScript?
Nov 16th, 2017 / 3 min read
The tilde in JavaScript is actually surprisingly useful for shorthand determining the truthiness of a value.
How To Easily Understand Callbacks In JavaScript
May 30th, 2016 / 7 min read
Understanding callbacks in JavaScript is one of the very first things that anyone starting to program with JavaScript should know....
Hacking the Asterisk AMI to Send Missed Call Notifications with NodeJS
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...