What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's...

87

Transcript of What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's...

Page 1: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 3: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Contains opinions - not just facts. Beware!

Page 4: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

102 presentations

Page 5: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

in 82 slides

Page 6: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

in 30 minutes

Page 7: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"The Web Platform"

Dion Almaer, Ajaxian.comBen Galbraith, Ajaxian.com

Page 8: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 9: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Acceptable delay

Page 10: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Instantaneous / Snappy< 0.1 sec

User stays in flow< 1 sec

Page 11: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Instantaneous / Snappy< 0.1 sec

User stays in flow< 1 sec

Page 12: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Instantaneous / Snappy< 0.1 sec

User stays in flow< 1 sec

Page 13: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

❤Developers must

LOVEthe development tools

Page 14: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

ManagingExpectations

Page 15: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 16: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 17: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 18: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Canvas for everything!

Page 19: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

S P E E D !

[ DOM is slow ]

Page 20: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

IE?

Page 21: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Jef Raskin(March 9, 1943–February 26, 2005)

Page 22: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“As far as the customer is concerned, the interface is the

product.”

Page 23: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“A computer shall not waste your time or

require you to do more work than is strictly

necessary.”

Page 24: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“The system should treat all user input as

sacred.”

Page 25: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“Once the product's task is known, design

the interface first; then implement to the interface design.”

Page 26: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Ask users what they want, but never let the

users design your application.

(not a quote)

Page 27: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Pragmatic Real-World Scala"

Jonas Bonér, Scalable Solutions

Page 28: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Java

Page 29: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Scala

Page 30: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"What happens when David Hasselhoff meets

the cloud"

Chief Executive Monkey Stefan Fountain, Soocial

Page 31: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 32: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Hassle-free

contacts

Page 33: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

elastic ip elastic ip

webserver

webserver

webserver

syncserver

syncserver

haproxy haproxy

pgpool pgpool pgpool pgpool pgpool

postgresqlserver

postgresqlserver

postgresqlserver

Page 34: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Cloud Data Persistence"

Geir Magnusson

Page 35: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

BigTable

Page 36: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

800TB in a TableRead: 18GB/sec

Page 37: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 38: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 39: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 40: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Cassandra[ facebook ]

Page 41: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 42: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 43: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 44: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

distributed, fault-tolerant and schema-free document-oriented database accessible

via a RESTful HTTP/JSON

Page 45: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 46: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Situation normal, everything must

change"

Simon Wardley, Canonical (Ubuntu)

Page 47: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Commoditization

Page 48: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

innovation

Page 49: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

innovation bespoke

Page 50: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

innovation bespoke products

Page 51: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

innovation bespoke products services

Page 52: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

*aas

Page 53: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

data

app

platform

infra[ os, hw, ... ]

Users Users Users

Page 54: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

enterprise saas paas iaas

data

app

platform

infra[ os, hw, ... ]

Page 55: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 56: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

http://www.ubuntu.com/ec2

Page 57: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Groovy and Grails In Depth"

Graeme Rocher, Grails Project Lead

Page 58: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Good ideas from Ruby, Python, Small Talk

Integrates with Java•

Runs on JVM

Page 59: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

GrailsWeb platform - End-to-end from mnv to ORM[ on top of Hibernate, Maven, Web Flow, Quartz, Spring, ... ]

Page 60: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Unbelievable plugin -system

grails create-auth-domainsgrails create-registration

grails create-wiki...

Page 61: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Grails -Weapon of mass

destruction?

Page 62: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Windows Azure"

Beat Schwegler

Page 63: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Service

Your service

LB

LB

Web Role

Worker Role

Tables Blobs

Queue

Users

Page 64: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

64 bit Window Server 2008

1.5-1.7 GHz x64 CPU

100Mps Network

250GB local storage

1.7GB Memory

Page 65: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Systems that never stop (and Erlang)"

Joe Armstrong

Page 66: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Six Laws of reliability

-

How to make a system that runs for ever?

Page 67: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

I

ISOLATION

Page 68: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Are two Java threads running in one VM really isolated?

Page 69: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

II

CONCURRENCY

Page 70: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

You must have at least TWO computers

[ computers might crash ]

Page 71: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“They forgot to put concurrency in programming languages”

Page 72: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

III

MUST DETECT FAILURES

Page 73: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

How to correct them if you do not know about them?

Page 74: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

IV

FAILURE IDENTIFICATION

Page 75: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

V

LIVE CODE UPGRADE

Page 76: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

VI

STABLE STORAGE

Page 77: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

No backups!

Page 78: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”
Page 79: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

"Improving Running Components"

Evan Weaver, Twitter

Page 80: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Rails

C

Scala

Java

MySQL

Page 81: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“Ruby is optimization resistant”

=> Scala

Page 82: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Optimization plan

1. stop working2. share the work

3. work faster

Page 83: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

“Everything runs from memory in Web 2.0”

[ in many cases memcached is the key ]

Page 84: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

API Web

Page cache

Fragment cache

Row cache

Vector cache

DB DB DB

Mem

cach

ed

Page 85: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Obama mania350 tweets / sec

Normally80 tweets / sec

Page 86: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

each is delivered toaround 120 followers

Page 87: What I learned @ QConshare.jole.fi.s3.amazonaws.com/blog/2009/QCON-Recap.pdf“Once the product's task is known, design the interface first; then implement to the interface design.”

Adds up to ~1 billion tweet deliveries / day