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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
chrismdp
September 15, 2013
Programming
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Extreme Isolation (Lightning talk)
Slides for a lightning talk given at Barcuo 2013.
chrismdp
September 15, 2013
More Decks by chrismdp
See All by chrismdp
Why Rails is still relevant for startups in 2021
chrismdp
0
140
5 ways I screwed up Sol Trader's launch
chrismdp
0
220
Pathfinding Peril SPA 2016
chrismdp
0
230
Pathfinding Peril - BCS 2014
chrismdp
0
210
Separating allocation from code - NDC
chrismdp
0
170
Separating Allocation from Code
chrismdp
1
580
Extreme Isolation Workshop
chrismdp
1
160
Who's code is it anyway?
chrismdp
0
120
Leading software teams well
chrismdp
2
1.1k
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.7k
symfony/aiとlaravel/boost
77web
0
120
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.3k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
660
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
360
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
110
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
400
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
500
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
7
3k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
250
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Designing Powerful Visuals for Engaging Learning
tmiket
1
440
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
220
エンジニアに許された特別な時間の終わり
watany
107
250k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
What's in a price? How to price your products and services
michaelherold
247
13k
Making the Leap to Tech Lead
cromwellryan
135
10k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Unsuck your backbone
ammeep
672
58k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
270
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
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