Why domain modeling?
We explore why focusing on the domain model can improve your software quality.
We explore why focusing on the domain model can improve your software quality.
We talk about how you can evaluate the two parts of a domain model.
In this episode, I talk about the three-part model of domain modeling and what it means about how they are used.
In a domain model, when should we refer to things by name, and when should we nest a subcomponent?
When do we use collections in domain models, and how do we think about the states they represent?
In this episode, I talk about the three parts of my book, which mirror the three levels of domain modeling.
I talk about the advantages of writing a spec directly in your production language.
In this episode, I continue the exploration of the definition of domain model to serve as a base layer of understanding to write my next book.
We've all heard the term _high-level language_. Initially, it referred to the step from assembly languages to compiled languages. But it has another definition, which has to do with how well the language lets you think.
How is Smalltalk so small? Four rewrites.
I explore a new perspective about what abstraction means and how it can cause problems.
Why does some design advice work for some people, but not for others? And why do some agile practices work for some people, but not for others? I call that The Christopher Alexander Effect and explain how it works.
Can't we all just get along?
In this episode, I excerpt from and comment on Allen Newell's and Herbert Simon's 1975 ACM Turing Award Lecture.
Technical debt is a metaphor used to explain the tradeoff we all face when we have a deadline. How much is it worth to rush the code out the door? It's a good metaphor, but the term is often used these days to mean 'code I don't like'. In this episode, I examine the parts of the metaphor and ways in which technical debt differs from financial debt.
I explore why clean code is a lagging indicator and how the domain model is a leading indicator of maintenance cost.
I begin exploring the process of domain modeling with a definition.
I read from the 1974 Turing Award Lecture by Don Knuth.
We read and discuss the 1973 ACM Turing Award Lecture by Charles W. Bachman.
We read from and comment on Edsger Dijkstra's 1972 Turing Award Lecture called The Humble Programmer. Is the problem with programming that we don't recognize our own limitations? We'll explore that and more.
Do abstract and general mean the same thing? I don't think so. I've actually stopped using the term 'abstraction' because it's so laden with semantic baggage. We explore what they do mean in different contexts, and why abstract is not a relative term.
In this episode, we explore why Clojure's stance of not wrapping data much is so powerful in the world we live in.
In this episode, I read from and discuss a comment thread between Rich Hickey and Alan Kay.
In this episode, I read from David Parnas's important paper on modularity.
In this episode, I explore the notion of fit and how it is missing from the Stratified Design paper.
In this episode, I read and comment on excerpts from John McCarthy's 1971 Turing Award Lecture.
In this episode, I read and comment on an excerpt from the 1970 Turing Award Lecture by James Wilkinson.
When using the onion architecture, you need to consider the dependencies (actions depend on calculations), but also you need to consider the semantic dependencies (the domain should not know about the database).
Functional programming is a mindset that distinguishes actions, calculations, and data. That's where it derives its power. Simply applying the discipline of 'only pure functions' lets you programming using a procedural mindset and still think you're doing functional programming.
Force is an important concept in Newtonian mechanics. But do forces really exist? In fact, it is an abstraction invented by Newton. The insight revolutionized physics and universalized his model. What can we learn from it?