~/devreads

Khalil Stemmler

https://khalilstemmler.com/ · 138 posts · history since 2016 · active

4 Jun

7 min read

At the end of a call this week, a developer said something to me that I haven't been able to stop thinking about. We'd been talking for over…

25 Nov 2025

4 min read

Quick question. How often do you see this type of code? composition conditional problem If the answer is "a lot", that's okay - we've all…

14 Nov 2024

25 Oct 2024

16 Aug 2024

15 Aug 2024

12 Aug 2024

26 Mar 2024

24 Mar 2024

5 min read

Before we begin: Doors open for the latest version of The Software Essentialist on March 31st. Join the waitlist for perks, bonuses & 5…

10 Jan 2024

12 min read

"Wait, is that Sean? Hold on a sec," I exclaimed, interrupting a friend mid-conversation. I had just seen him speeding past the famously…

8 Mar 2023

9 min read

I want to tackle a hot take that happens to be one of the biggest ones holding developers back from endless puppy videos becoming truly…

26 Nov 2022

2 min read

What is this? Stateful tests are obviously tests that rely on state What makes these different than other tests? You have to set up the…

3 Nov 2022

8 Sept 2022

7 Sept 2022

5 min read

Why the heck is LEGO still so comforting after all these years? Maybe it's because it feels good to come back to the same baseline elements…

4 Sept 2022

4 Aug 2022

10 May 2022

2 min read

Hashing is a technique used to convert a key into another value (typically for cryptographic or data storage purposes). It works by running…

3 May 2022

10 min read

What’s the difference between software that works and software that works well? Non-functional requirements. Consider the following example…

16 Apr 2022

2 min read

“Understanding responsibilities is key to good object-oriented design” — Martin Fowler Do you struggle with object-oriented programming…

8 Apr 2022

2 min read

Is Domain-Driven Design (DDD) overrated? In my opinion, you can only say DDD is overrated once you've achieved mastery over it. At this…

6 Apr 2022

19 Jan 2022

21 min read

On this site, we're primarily concerned with software design, architecture, and the many problems that occur later on in your developer…

9 Jan 2022

14 min read

If you're just getting started with object-oriented programming, the notion of an class may seem a little foreign. Abstraction is one of…

21 Dec 2021

19 Dec 2021

17 Nov 2021

8 Aug 2021

6 min read

In a layered architecture there are often a number of mutable, shared, external, out-of-process infrastructural dependencies. We can break…

3 min read

Originating from the idea of a stunt double (like in action movies), there are two general categories of testing objects that we use in…

7 Aug 2021

4 Aug 2021

16 min read

If you're not familiar with mocking, it's a pretty controversial topic in testing. Mocking implies the use of some sort of test double…

24 May 2021

8 min read

Originally published in volvox vault's issue on metamorphosis. Someone said I was a writer the other day. When the hell did that happen…

26 Apr 2021

23 Apr 2021

31 Mar 2021

12 Mar 2021

6 min read

In the last post, I mentioned the fact that DTOs (Data Transfer Objects) and GraphQL schemas serve a similar purpose; they create a strict…

24 Feb 2021

22 Feb 2021

9 Feb 2021

5 min read

Entropy Entropy is a fancy word for complexity, randomness, uncertainty or a state of disorder. Entropy It was first recognized in the…

3 min read

ORMs like Sequelize and Prisma use the Active Record pattern which lets you add, remove, delete, and update data from SQL server without…

8 Feb 2021

27 Jun 2020

5 min read

In this article, you will learn how cold start issues occur, what factors contribute to cold starts, and how to manage Lambda cold starts…

24 Jun 2020

10 min read

This is page one of a guide on Client-Side Architecture basics. Why we need a client-side architecture standard Allow me to paint the…

2 min read

This is page four of a guide on Client-Side Architecture basics. Start at page one. The work isn't over I know this article expressed a lot…

3 min read

Welcome When I first learned React and Redux in 2015, I made an enormous mess of the production codebase I was working on. Back then, class…

21 min read

This is page three of a guide on Client-Side Architecture basics. Start at page one. Layers and concerns We're finally ready to decompose…

6 min read

This is page two of a guide on Client-Side Architecture basics. Start at page one. The most influential client-side architecture design…

14 May 2020

29 Apr 2020

8 min read

Ever seen a friend, coworker, or maybe even an accidental stranger- trying to solve a problem using a tool that you feel is completely unfit…

10 Mar 2020

26 Feb 2020

7 min read

Intro Formatting is one of several concerns in the efforts to write clean code. There's a lot of other stuff we should be concerned about as…

23 Feb 2020

22 Feb 2020

17 Feb 2020

2 min read

Today, in the Advanced JavaScript Developers group, someone asked the question: Musing from a Noob: so if you were to write a translator…

2 Feb 2020

3 min read

Intro In "Decoupling Logic with Domain Events [Guide] - Domain-Driven Design w/ TypeScript", we use Sequelize Hooks to decouple business…

31 Jan 2020

20 Jan 2020

18 Jan 2020

8 Jan 2020

1 min read

Every frontend framework has their own opinionated way to solve the same three problems. 1. Data storage Defining the shape, changing, and…

2 Jan 2020

19 min read

At the time of writing this, I've been on Earth for about ~2.4 decades. That means that ten years ago, I was the very tender age of fourteen…

27 Dec 2019

14 Dec 2019

2 Dec 2019

1 min read

If what we ship to our server is a single executable file or script that runs our entire application in one process, we have a monolith on…

22 Nov 2019

21 Nov 2019

19 Nov 2019

4 min read

If you've been writing code for at least 15 minutes, you've probably realized that the ability to learn is one of the most important skills…

18 Nov 2019

5 Nov 2019

7 min read

Readers of khalilstemmler.com either love or hate the design of the site. When I was designing the site, I knew that I wanted to draw a…

25 Oct 2019

13 min read

When Disqus comments stopped being awesome, I was left without comments on my blog for a while. Not too long after, Tania Rascia wrote an…

28 Sept 2019

26 Sept 2019

24 Sept 2019

16 Sept 2019

15 Sept 2019

1 min read

If a component is really stable, it's likely it's going to be serving more purposes for more groups of people, and for different problems…

2 min read

Every system has stable components and volatile components. Stable components are components that aren't expected to change that often…

1 min read

In the header image, component A relies on component B which relies on component C. The problem is that component C also relies on A. That…

11 Sept 2019

29 Aug 2019

21 Aug 2019

14 Aug 2019

30 Jul 2019

5 min read

The Dependency Rule In Uncle Bob's book, he describes the dependency rule. That rule specifies that something declared in an outer circle…

25 Jul 2019

24 Jul 2019

11 Jul 2019

9 Jul 2019

7 Jul 2019

4 Jul 2019

3 Jul 2019

2 min read

Originally published here June 2019, with discussions on Hackernews and Reddit. Melvin Conway is credited with that quote back in 1967. In…

1 Jul 2019

25 Jun 2019

20 Jun 2019

13 Jun 2019

7 Jun 2019

6 Jun 2019

28 May 2019

25 May 2019

1 min read

You know Sequelize, TypeORM, and Mongoose? Those are all ORMs. When you return an instance of a row (or document), being able to make…

1 min read

See this article. 🙂

24 May 2019

18 May 2019

15 May 2019

2 min read

Recycled from the 'When to Use TypeScript' [Guide] article posted April 6th, 2019 The Performant System Problem, the Embedded System Problem…

11 May 2019

3 min read

In this article, we'll look at the pros and cons of TypeScript compared to JavaScript. For an in-depth guide on when to use TypeScript…

30 Apr 2019

26 Apr 2019

1 min read

UML class diagrams can be a useful tool for communicating designs with other developers - or just drawing out your design candidates before…

20 Apr 2019

16 Apr 2019

10 Apr 2019

1 min read

A design principle from Extreme Programming (XP) that states that a programmer shouldn't add any functionality until it's actually necessary…

9 Apr 2019

4 min read

Here's a really silly example. If you don't like it, well- damn. If you do, tell me about it. Pokemon Example w/ TypeScript Let's say you…

5 min read

Wikipedia says an Anemic Domain Model "is the use of a software domain model where the domain objects contain little or no business logic…

1 min read

By data integrity, we mean "what shape is this data allowed to take?”, “what methods can be called and at which point?", “what are the…

7 Apr 2019

6 min read

Also from the Domain-Driven Design with TypeScript article series. In Domain-Driven Design, Value Objects are one of two primitive concepts…

6 Apr 2019

24 Jan 2019

6 min read

The name kinda makes sense. It's called a concrete class because: it can't be extended/subclassed by another class it has complete methods…

4 min read

The enemy of well-designed software is coupling. When large bodies of code are tightly coupled, they become ultimately unchangable and…

30 Jul 2018

8 min read

I mentioned that we have options when writing asynchronous code in JavaScript. For a good explaination on the history of Asynchronous…

17 Jul 2018

8 min read

The problem This morning, I took a look at the current student signup flow that I coded over at Univjobs. When I opened up the dropdown list…

19 Jun 2018

8 min read

Originally published June 18th, 2018. I've re-written the way I do SEO in my blog currently to be a lot more clean in 2019. You can view the…

16 Nov 2017

2 min read

It's not every day that you see a tilde in JavaScript. I was taking a look through the source code for the Twit NPM library when I was…

30 May 2016

29 Jan 2016