10. Color Television
Three Colors: Red, Green, Blue
Each Color needs 3Mhz
You only have 6Mhz
and you need 9Mhz!
Technical Debt FTW
Tuesday 13 August 2013
11. You can't Break the
old Black+White TVs
Tuesday 13 August 2013
12. We must send the old brightness signal
White Light =
30% Red
59% Green
11% Blue
Send White, Red and Blue
Tuesday 13 August 2013
13. You need to embed the
color signals inside
the brightness signal
Tuesday 13 August 2013
14. Color TV circuits are
more complicated
than they should be.
Tuesday 13 August 2013
15. How do you Reduce
Technical Debt?
Tuesday 13 August 2013
23. 1. Normalize: XXIV → XXIIII
2. Eliminate: XXIIII - XV → XIIII - V
3. Expand: XIIII - V → VIIIIIIIII - V
4. Repeat 2 and 3 until no moves left
5. Reduce: IIIIIIIII → IX
XXIV - XV = ?
Tuesday 13 August 2013
55. Easy to Learn
Easy to Scale (humans)
Easy to Scale (machines)
Easy to Implement
Easy to build a Mental Model
Does not have to achieve
Very Large Scale
Tuesday 13 August 2013
64. If a card has a vowel on one side, it
must have an odd number on the
other.
Which cards should you turn over to
verify that the rule is followed?
Tuesday 13 August 2013
65. If you're drinking beer, you must be
21 or over.
Which patrons should you ask for
ID?
Tuesday 13 August 2013
77. "Send Tweet"
Acted on by Tweet Service
Example
{
command:"tweet"
author:"@rjrodger"
status:"Distill Rocks!"
}
Tuesday 13 August 2013
78. Tweet Service
If I see a message with this property:
Match the Pattern!
command:"tweet"
It's Mine!
I don't care how you get it to me.
And I'll ignore anything else.
Tuesday 13 August 2013
79. The Tweet Service can
be written in
Any Language
Tuesday 13 August 2013
80. Keep it Small
Die and restart on Errors
Report your status
Tuesday 13 August 2013
93. the actions are
Blog
cmd:draft, post:content
cmd:publish, post:id
cmd:redact, post:id
cmd:homepage
cmd:comment, post:id,
comment:comment
Tuesday 13 August 2013
94. action, not abstraction
easy to learn
easy to modify
easy to maintain
self-documenting
Win
Tuesday 13 August 2013
95. the actions are
Data Layer
cmd:save, name:entity
cmd:load, name:entity
cmd:list, name:entity
cmd:remove, name:entity
Tuesday 13 August 2013
96. save some data
cmd: save,
name: product,
data: { name: Apple,
price: 1.99 }
Tuesday 13 August 2013
97. load some data
cmd: load,
name: product,
query: { name:Apple }
Tuesday 13 August 2013
99. add caching
cmd:save
call prior action
write into cache data
cmd:load
read data from cache
if found, return data, else call prior action
Tuesday 13 August 2013
100. layers
cmd:save
call prior action
write into cache data
cmd:load
read data from cache
if found, return data, else call prior action
insert into table name values data
select * from name where query
Tuesday 13 August 2013
106. controller actions
dash:install, app:details
submit cmd:install, app:details
to message bus (deployer picks up)
dash:start, app:id
submit cmd:start, app:id
to message bus (dispatcher picks up)
dash:stop, app:id
submit cmd:stop, app:id
to message bus (dispatcher picks up)
Tuesday 13 August 2013
107. deployer actions
cmd:install, app:details
download app code to server
get route from app details
submit cmd:route, route:path, server:server
to message bus (dispatcher picks up)
Tuesday 13 August 2013
108. dispatcher actions
cmd:route
add route and server to local routing table
cmd:start, app:id
start routing requests to app
cmd:stop, app:id
stop routing requests to app
Tuesday 13 August 2013
110. controller, dispatcher, deployer
are separate processes
communicate via direct HTTP
apps live on VMs
but ... no design changes!
Minimum Viable
Product
Tuesday 13 August 2013
111. controller, dispatcher, deployer
are many processes
communicate via a message bus
apps live anywhere
but ... no design changes!
Scale It
Tuesday 13 August 2013
112. build now, scale later!
easy refactoring
language independence
easily observe and manage
Win
Tuesday 13 August 2013
113. How do You Build
Big Apps?
Tuesday 13 August 2013