Kerry and Rinat introduce the Actor in the Actor Model of Computation. They wonder if the Actor’s embodiment of communication (via messaging) may simplify the way that they reason about and implement their solutions. They discuss this potential use of the Actor Model in the context of their current usage of Domain-Driven Design (DDD), Application Services, Aggregates, and Event Sourcing.
Download (mp3): Episode 29 – Acting Like We Get The Message – (63 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- The Actor Model (everything you wanted to know, but were afraid to ask)
- The Actor Model (Wikipedia)
- Carl Hewitt’s homepage
- Scala programming language
- Akka toolkit
- Erlang programming language
- Stact – An Actor library and framework for .NET
- Red programming language
- Feedback and Finding Us
What do you think?
Kerry and Rinat dig into the Lokad CQRS project that laid the code foundation for their current projects. This open source sample provides a working slice of a production system’s registration and user management subdomains that were implemented with Aggregates and Event Sourcing. While they get into the details of its multi-Aggregate implementation, they cover the communication and workflow between these aggregates, how data storage and querying is achieved, and even get into some authentication and authorization options.
Download (mp3): Episode 28 – Learning Lokad CQRS – (49 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- Lokad CQRS (codebase version at the moment of recording)
- Stact – An actor library and framework for .NET
- Feedback and Finding Us
What do you think?
Kerry and Rinat review some of the lessons learned from the deployment of Lokad.CQRS. Then, they discuss Rinat’s blog post about those experiences, and some of his ideas for future improvement. This results in a sneak peek of the new event centric hosting infrastructure that will be used in their GTD sample project.
Download (mp3): Episode 27 – Evolving Event Centric Infrastructure – (41 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- Best Infrastructure for Event Sourcing and CQRS
- Event Store
- Lucene.net
- Service Stack
- Feedback and Finding Us
What do you think?
In this episode, there is a lot of new code to dig into. Kerry and Rinat cover the newly added features, discuss how the console relates to future UIs and assists with ongoing maintenance, dabble in Event message design, and get into the CQS pattern that was used to implement some of the Entity classes. They wrap-up with how the current message-based approach can be applied synchronously or asynchronously depending on needs, and explain why there are hints of Redis in the code repository.
Download (mp3): Episode 26 – Rinat Gits Committed – (47 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- btw-gtd Codebase branch for Episode 26
- DDD Community site
- Command–query separation (CQS)
- Community’s Java port of the BTW Expedition 1 (original) Samples
- Redis
- Event Store
- Feedback and Finding Us
What do you think?
Kerry and Rinat discuss changes to the ubiquitous language, the characteristics of lists and projects, and lessons learned from using a similar productivity system. In between, they probably talk too much about some variable names and system implementation details.
Download (mp3): Episode 25 – These Aren’t The Projects You’re Looking For – (62 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Homework:
- Try adding a DefineAction command to the solution, this should include:
- Adding the console “shell” command to enter it in the shell
- Adding a View that allows you to list all Actions currently inside of a Project
Episode References:
- Codebase for Episode 25
- Trusted System: David Allen on twit’s Triangulation show #22
- Trusted Place: David Allen at Google
- Star Wars: These aren’t the droids you’re looking for
- Feedback and Finding Us
What do you think?
Kerry and Rinat dive into the GTD® code and discuss ways to choose words in the ubiquitous language. The new interactive shell allows them to use and shape the domain model as it evolves. In addition, an Event store is introduced to persist messages to disk, and they discuss ways to replay and view these state changes in the console.
Download (mp3): Episode 24 – Grambo’s Got A Shotgun – (39 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Homework:
- Go into the project, run the Shell, and try adding more Commands/Events and Console commands to make it work.
Episode References:
What do you think?
Kerry and Rinat revisit and correct some DDD terminology they used based on new learning and listener feedback. After they readdress Domain, Domain Model, Subdomains, Bounded Contexts, Published Language, Shared Kernel, and Anti-Corruption Layer, they try to relate these terms to real examples and code.
Download (mp3): Episode 23 – Spaghetti-Free Terminology – (36 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- Rinat’s ‘Essence of Domain-Driven Design – Re-Explained’ blog post
- GTD Context Map from E21 that is still valid
- Codebase for Episode 22 we looked back at
- Domain-Driven Design: Tackling Complexity in the Heart of Software
- Feedback and Finding Us
What do you think?
Kerry and Rinat discuss the problem space, Bounded Contexts within it, Subdomains, and the Core Domain of “Getting Things Done”(TM). After the DDD discussion, they dive into the initial approach to structuring the code, exploring the Published Language, and making sense of information flows.
Download (mp3): Episode 22 – Biohazard Blah Blah – (42 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Homework:
- Fork our GTD repository and explore branch for Episode E22
- Add a local branch to your fork of the repo (use YourName_E22 as the name of the branch)
- Try adding more methods, Commands, and Events according to the GTD Methodology.
- Can you think of a better name for “Tenant” as discussed in the episode?
Episode References:
- Codebase for Episode 22
- Getting Things Done
- Domain-Driven Design: Tackling Complexity in the Heart of Software
- Implementing Domain-Driven Design
- Feedback and Finding Us
What do you think?
Kerry and Rinat start the discussion with a Context Map that has several Bounded Contexts. They use their conversation to refine the Context Map and carve out the initial key words of the Core Domain’s Ubiquitous Language.
Download (mp3): Episode 21 – Linguistic Cartographers – (65 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- Context Maps and Initial Ubiquitous Language
- Published Language and Shared Kernel definitions
- We used Twiddla in this episode to collaborate on the updated Context Map diagram
- Feedback and Finding Us
What do you think?
Kerry and Rinat discuss approaches you can use to start the domain modeling process in various situations. This helps them determine the first step to take to start designing their new domain.
Download (mp3): Episode 20 – Staring At A Blank Page – (39 minutes)
Subscribe via RSS | Subscribe for free in iTunes
Episode References:
- Getting Things Done book by David Allen
- OmniFocus, GTD, and You (pdf) – The Omni Group
- Feedback and Finding Us
What do you think?