π™†π™ƒπ˜Όπ™‡π™„π™‡ π™Žπ™π™€π™ˆπ™ˆπ™‡π™€π™ Profile picture
⚑I help coders become Software Essentialists. Smash imposter syndrome. Master software design and architecture. Become a confident crafter | Prev @apollographql
Feb 15, 2023 β€’ 8 tweets β€’ 2 min read
Temporal Decoupling:

One of the timeless 11 Essentials of Software Design, Architecture & Testing

If you don't, you're going to make a mess, guaranteed.

(explained) Context (in The Metaphysical realm)
- all problems are stateful
- you are in state A (sad)
- but you want to be in state B (happy)
- the cost to transition from state A to B is time
- temporal means "in relation to time"
- we solve problems "temporally" in reality
Jun 22, 2021 β€’ 6 tweets β€’ 2 min read
It's a lot easier to write a book called "100 Facts About Sharks" than it is to write a book called "How to Escape a Shark Attack".

One is certainly more valuable than the other. But which one? The answer has to do with two approaches to wisdom.

Sophia and phronesis. In Aristotle's Nichomachean Ethics, he distinguished two different kinds of wisdom:

- Sophia (a general, more abstract wisdom)
- and Phronesis (practical wisdom)

Sophia means philo-sophy and is based on facts and knowledge. Phronesis is only acquired through practical action.
Jun 9, 2020 β€’ 25 tweets β€’ 7 min read
Every client app uses some form of the MVP (model-view-presenter) pattern.

The challenge is that the M is responsible for way too much.

As a result, developers don't know *which tools* are responsible for which tasks. Tasks of the model:

- Providing reactivity to state changes
- Holding onto state
- Updating remote data and providing async states (loading, success, error)
- Expressing model behavior. Also known as domain (interaction) logic.
May 29, 2020 β€’ 12 tweets β€’ 4 min read
What's wrong with this controller?
How would you improve the design? Separation of concerns.
This controller is responsible for way too much.

Controllers are a part of the infrastructure layer.
Infrastructure doesn't hold application or domain logic.
May 24, 2020 β€’ 19 tweets β€’ 5 min read
Clean code is only in part about the cleanliness of code.

To me, it's actually about:

🧠 Developer mindset (empathy, craftsmanship)
βš™οΈ Coding conventions (formatting, style, naming)
🀹🏻 Skill & knowledge (refactoring, testing, patterns, best practices) 🧠 Mindset.

Developers with an empathy mindset seek to write code so clear and clean that it empowers their peers, themselves, and their future maintainers to continue to contribute in meaningful ways.
May 13, 2020 β€’ 12 tweets β€’ 3 min read
πŸ’‘Why I Use Apollo Client as a Replacement for Redux and React Context [thread] As you may know, I've been writing about software design and architecture for the better part of a year now, and starting at Apollo last year, I realized that there was something special about Apollo Client but couldn't quite put my finger on it.
Dec 27, 2019 β€’ 6 tweets β€’ 2 min read
⏱️Why Event-Based systems Rock 🀘 [in 5 tweets].

Designing systems from domain events instead of columns in a database, endpoints on an API, or components in a view, has so many benefits.

#ddd #eventstorming [Communcation] Thinking in terms of domain events is the closest we can get to expressing what happens in the real world. Features can be communicated by non-technical folk as a series of domain events.

UserRegistered -> EmailVerificationSent -> EmailVerified