A collection of links to the excellent "Composing Software" series of medium stories by Eric Elliott.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| specification oattern, #ddd, #typescript | |
| interface Specification<T> { | |
| isSatisfiedBy(candidate: T): boolean; | |
| and(other: Specification<T>): Specification<T>; | |
| or(other: Specification<T>): Specification<T>; | |
| not(): Specification<T>; | |
| } | |
| abstract class CompositeSpecification<T> implements Specification<T> { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var elastic = require('elasticsearch'); | |
| var client = new elastic.Client({ host: 'localhost:9200' }); | |
| var index = 'myindex'; | |
| var type = 'document'; | |
| (function init() { | |
| Promise.resolve() | |
| .then(deleteIndex, handleError) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var elastic = require('elasticsearch'); | |
| var client = new elastic.Client({ host: 'localhost:9200' }); | |
| var index = 'myindex'; | |
| var type = 'document'; | |
| (function init() { | |
| Promise.resolve() | |
| .then(deleteIndex, handleError) |
Once upon a time…
I once took notes (almost sentence by sentence with not much editing) about the architectural design concepts - Command and Query Responsibility Segregation (CQRS) and Event Sourcing (ES) - from a presentation of Greg Young and published it as a gist (with the times when a given sentence was heard).
I then found other summaries of the talk and the gist has since been growing up. See the revisions to know the changes and where they came from (aka the sources).
It seems inevitable to throw Domain Driven Design (DDD) in to the mix.