Lava: A Reality Check of Network Coding in Peer-to-Peer Live Streaming
Coding defines reality
-
Upload
varokas-panusuwan -
Category
Technology
-
view
586 -
download
0
Transcript of Coding defines reality
![Page 1: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/1.jpg)
Coding Defines RealityCode Mania #101
@varokas BIGBEARS.
![Page 2: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/2.jpg)
![Page 3: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/3.jpg)
Design
![Page 4: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/4.jpg)
Design
Creating Solutions based on
1. Requirements
2. Desired Properties
![Page 5: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/5.jpg)
• Available
• Reliable
• Performance
• Maintainable
• Reusable
• Usable
![Page 6: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/6.jpg)
![Page 7: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/7.jpg)
![Page 8: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/8.jpg)
Design is very easyKnowing what you want is very hard
![Page 9: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/9.jpg)
Christopher Alexander
![Page 10: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/10.jpg)
Christopher Alexander
![Page 11: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/11.jpg)
Principles of Emergent Design
![Page 12: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/12.jpg)
Contextual Force
![Page 13: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/13.jpg)
Force
Force
Force
Force
Force
Force
Force ForceDesign
![Page 14: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/14.jpg)
Force Force
Force
Force
Force
Force
Force
Force
Design
![Page 15: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/15.jpg)
–Johnny Appleseed
“Type a quote here.” Force Force
Force
Force
Force
Force
Force
Force
Design
![Page 16: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/16.jpg)
![Page 17: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/17.jpg)
![Page 18: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/18.jpg)
![Page 19: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/19.jpg)
![Page 20: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/20.jpg)
Feel the force!Do not put in one that does not exist
![Page 21: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/21.jpg)
Patterns
![Page 22: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/22.jpg)
Design Patterns
![Page 23: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/23.jpg)
Patterns
•
![Page 24: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/24.jpg)
“The Pattern is in the problem”
![Page 25: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/25.jpg)
–Johnny Appleseed
“Type a quote here.”
Pattern
Problem
![Page 26: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/26.jpg)
“Don't Solve the Problem. Discover the Pattern”
![Page 27: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/27.jpg)
Emergent Design
Change from Create Solutions
to Discover Solutions
![Page 28: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/28.jpg)
Discovering Techniques
• Code Properties Analysis
• Commonality Variability Analysis
• Programming by Intention
• Tests (TDD)
![Page 29: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/29.jpg)
CommonalityVariabilityAnalysis
![Page 30: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/30.jpg)
CommonalityVariabilityAnalysis
• What is in Common?
• What Varies?
• Under a certain Context of Use
![Page 31: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/31.jpg)
CVA Example (non-software)
![Page 32: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/32.jpg)
CVA Exercise (Pen-Pencil)
Pen
• write with ink • can't erase
Pencil
• write with lead • can erase
?
• write • cylinder • can put in a box • breakable • ....
![Page 33: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/33.jpg)
CVA Exercise (Pen-Pencil)
Pen
• write with ink• can't erase
Pencil
• write with lead• can erase
WritingTool
• write• cylinder • can put in a box
WritingUser
![Page 34: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/34.jpg)
CVA Exercise (Pen-Pencil)
Pen
write() { //inkImpl}
Pencil
write() { //leadImpl}
WritingTool
write()
WritingUser
![Page 35: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/35.jpg)
CVA Exercise (Pen-Pencil)
Penwrite() { //inkImpl}
Pencil
write() { //leadImpl}
WritingTool
write()
interface WritingTool { def write() }
class Pen extends WritingTool { def write() { //ink impl } }
class Pencil extends WritingTool { def write() { //lead impl } }
![Page 36: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/36.jpg)
CVA Exercise (Pen-Pencil)
Pen
write() { //inkImpl}
Pencil
write() { //leadImpl}
WritingTool
write()
WritingUser
![Page 37: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/37.jpg)
CVA Exercise (2)
• There are two types of shape (Circle, Square)
• There are two types of writer (Pen, Pencil)
• Each shape can print itself on different writers
![Page 38: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/38.jpg)
CVA Exercise (2)
Pen
write() { //inkImpl}
Pencil
write() { //leadImpl}
Writer
write() • There are two types of shape (Circle, Square)
• There are two types of writer (Pen, Pencil)
• Each shape can print itself on different writers
![Page 39: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/39.jpg)
CVA Exercise (2)
Pen
write() { //inkImpl}
Pencil
write() { //leadImpl}
Writer
write()
Square
Shape
• There are two types of shape (Circle, Square)
Circle
![Page 40: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/40.jpg)
CVA Exercise (2)
Pen
write() { //inkImpl}
Pencil
write() { //leadImpl}
Writer
write()
Square
Shape
print()
• Each shape can print itself on different writers
Circle
![Page 41: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/41.jpg)
Programming by Intention
• "So what do we want to do"?
![Page 42: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/42.jpg)
Perspective
• Conceptual
• Specification
• Implementation
![Page 43: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/43.jpg)
Starbucks
• Create a software for cashier and barista
• A program accepts order from user
• Retrieve cost based on the order
• A program shows the barista what to do
![Page 44: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/44.jpg)
Starbucks• A program creates
order from user
• Retrieve cost based on the order
• A program shows the barista what to do
order = user.createOrder()
cost = order.getCost()
inst = order.whatToDo()
![Page 45: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/45.jpg)
Starbucks
• Select Size of cup (S,M,L)
• (S) Cup -> Coffee
• (M) Cup -> Coffee x 2
• (L) Cup -> Coffee x 3
• S = 100, M = 120, L = 150
order = user.createOrder() { selectSize() }
cost = order.getCost() inst = order.whatToDo()
![Page 46: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/46.jpg)
Starbucks
• Select Size of cup (S,M,L)
• (S) Cup -> Coffee
• (M) Cup -> Coffee x 2
• (L) Cup -> Coffee x 3
• S = 100, M = 120, L = 150
M
coffee() { //2}price() { //120}
Cup
coffee()price()
S
coffee() { //1}price() { //100}
L
coffee() { //3}price() { //150}
![Page 47: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/47.jpg)
Starbucks
order = user.createOrder() { selectSize() }
cost = order.getCost() { order.getCup().getPrice() } M
coffee() { //2}price() { //120}
Cup
coffee()price()
S
coffee() { //1}price() { //100}
L
coffee() { //3}price() { //150}
Order
![Page 48: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/48.jpg)
Closing Thoughts
![Page 49: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/49.jpg)
When does design starts?When does it end?
![Page 50: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/50.jpg)
![Page 51: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/51.jpg)
`
http://askmissa.com/wp-content/uploads/2011/10/photo5.jpg
http://en.wikipedia.org/wiki/File:Space_Needle_2011-07-04.jpg
http://sherrlock.files.wordpress.com/2011/06/space-needle-elevationsweb1.jpg?w=500&h=540
![Page 52: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/52.jpg)
![Page 53: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/53.jpg)
Happy Coding! (Designing)
![Page 54: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/54.jpg)
Other slides
![Page 55: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/55.jpg)
Starbucks (v2)• Select Coffee Type (Hot/Cold) [ cold serve with ice ]
• Select Size of cup (S,M,L)
• (S) Cup -> Coffee
• (M) Cup -> Coffee x 2
• (L) Cup -> Coffee x 3
• S = 100, M = 120, L = 150, Hot/Cold = Same price
![Page 56: Coding defines reality](https://reader031.fdocuments.net/reader031/viewer/2022021921/58efbc9d1a28ab470f8b457b/html5/thumbnails/56.jpg)
Starbucks (v3)• Select Coffee Type (Hot/Cold) [ cold serve with ice ]
• Americano [ Coffee + Water ]
• Cappuccino [ Coffee + Milk + Whip the milk ]
• Latte [ Coffee + Milk ]
• Select Size of cup (S,M,L)
• (S) Cup -> Coffee
• (M) Cup -> Coffee x 2
• (L) Cup -> Coffee x 3
• S = 100, M = 120, L = 150, Hot/Cold = Same price, Latte +10, Cappucino + 20