Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Extreme Isolation (Lightning talk)
Search
chrismdp
September 15, 2013
Programming
1
150
Extreme Isolation (Lightning talk)
Slides for a lightning talk given at Barcuo 2013.
chrismdp
September 15, 2013
Tweet
Share
More Decks by chrismdp
See All by chrismdp
Why Rails is still relevant for startups in 2021
chrismdp
0
81
5 ways I screwed up Sol Trader's launch
chrismdp
0
160
Pathfinding Peril SPA 2016
chrismdp
0
200
Pathfinding Peril - BCS 2014
chrismdp
0
140
Separating allocation from code - NDC
chrismdp
0
140
Separating Allocation from Code
chrismdp
1
370
Extreme Isolation Workshop
chrismdp
1
120
Who's code is it anyway?
chrismdp
0
92
Leading software teams well
chrismdp
2
1k
Other Decks in Programming
See All in Programming
読まないコードリーディング術
hisaju
1
150
高セキュリティ・高耐障害性・サブシステム化。そして2億円
tasukulab280
2
440
15分で学ぶDuckDBの可愛い使い方 DuckDBの最近の更新
notrogue
3
890
保守性を高める AWS CDK のセオリー・ベストプラクティス
yamanashi_ren01
5
360
Drawing Heighway’s Dragon- Recursive Function Rewrite- From Imperative Style in Pascal 64 To Functional Style in Scala 3
philipschwarz
PRO
0
190
やっと腹落ち「スプリント毎に動くモノをリリースする」〜ゼロから始めるメガバンクグループのアジャイル実践〜
sasakendayo
0
260
良いコードレビューとは
danimal141
10
9.7k
はじめての Go * WASM * OCR
sgash708
1
140
「個人開発マネタイズ大全」が教えてくれたこと
bani24884
1
320
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
160
Django NinjaによるAPI開発の効率化とリプレースの実践
kashewnuts
1
310
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
190
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
11
560
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
The Pragmatic Product Professional
lauravandoore
32
6.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Git: the NoSQL Database
bkeepers
PRO
429
65k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Building Adaptive Systems
keathley
40
2.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Docker and Python
trallard
44
3.3k
Transcript
EXTREME ISOLATION @chrismdp Sunday, 15 September 13
PROBLEM Sunday, 15 September 13
baz bar foo quux eke baz bar foo quux eke
baz bar foo quux eke baz bar foo quu eke baz bar foo quux eke foo quux bar quux eke bar eke bar foo quux baz eke baz bar foo Sunday, 15 September 13
ACTOR MODEL OF CONCURRENCY Separating Arrangement and Work Sunday, 15
September 13
baz bar foo quux eke Sunday, 15 September 13
bar foo POROs baz calling code handles the arrangement objects
handle the work, don’t know about others objects can be called in any order POROs POROs Sunday, 15 September 13
HEXAGONAL RAILS Ports and Adaptors Sunday, 15 September 13
persistence web mailer view controller domain Sunday, 15 September 13
persistence web mailer view controller domain Sunday, 15 September 13
persistence web Plain Ruby representing your domain mailer Sunday, 15
September 13
EXTREME ISOLATION Sunday, 15 September 13
domain persistence Person Sunday, 15 September 13
Person Repository Person PORO Sunday, 15 September 13
Person Repository Person Sunday, 15 September 13
PersonRepository PersonValidator Person Web Handler Mongo web page request Request
Handler InvalidPerson UpdatePerson Sunday, 15 September 13
put “person/:slug” do |slug| updated_person = find(slug). with_description(params[:description]). with_topics([params[:topics]) queue
= PersonValidator.new.validate(updated_person) queue = PersonEditor.new(slug).pipe(queue) PersonMongoRepository.apply(queue) SinatraResponder.apply(queue) end Sunday, 15 September 13
BENEFITS Sunday, 15 September 13
EACH OBJECT IS INDEPENDENT Dealing with value objects on the
edges Sunday, 15 September 13
UpdatePerson Web Handler web page InvalidPerson Sunday, 15 September 13
PersonRepository UpdatePerson Mongo InvalidPerson Sunday, 15 September 13
IMMUTABLE VALUE OBJECTS Freeze is your friend Sunday, 15 September
13
EXAMPLE ON GITHUB http://github.com/thinkcodelearn/discover Sunday, 15 September 13
BLOG SERIES http://chrismdp.com Sunday, 15 September 13
THANKS @chrismdp Sunday, 15 September 13