web directions code 13 notes

130
See the tries for the trees http://www.flickr.com/photos/zoer/2363020211/ Tuesday, 7 May 13

Upload: jaredau

Post on 14-May-2015

278 views

Category:

Technology


3 download

DESCRIPTION

Given at wdc 13. This is to shut brian up.

TRANSCRIPT

Page 1: Web directions code 13 notes

See the tries for the trees

http://www.flickr.com/photos/zoer/2363020211/

Tuesday, 7 May 13

Page 2: Web directions code 13 notes

3Tuesday, 7 May 13

Page 3: Web directions code 13 notes

Tuesday, 7 May 13

Page 4: Web directions code 13 notes

Add fast moving imagesTuesday, 7 May 13

Page 5: Web directions code 13 notes

Tuesday, 7 May 13

Halo effect

Page 6: Web directions code 13 notes

1861

Tuesday, 7 May 13“A general “law of least effort” applies to cognitive as well as physicalexertion. The law asserts that if there are several ways of achieving thesame goal, people will eventually gravitate to the least demanding courseof action. In the economy of action, effort is a cost, and the acquisition ofskill is driven by the balance of benefits and costs. Laziness is built deep into our nature.”

Page 7: Web directions code 13 notes

Tuesday, 7 May 13

Personal experienceNegative experienceFundamental attribution error

Page 8: Web directions code 13 notes

Tuesday, 7 May 13

Page 9: Web directions code 13 notes

Moore’s lawTuesday, 7 May 13

every 2 years the number of transistors increasesThis has also mapped to hard drives and clock speed.

Page 10: Web directions code 13 notes

2008

Tuesday, 7 May 13

Page 11: Web directions code 13 notes

2008

2011

412 Hz 1 GHzDual-Core

Tuesday, 7 May 13

Page 12: Web directions code 13 notes

Wirth’s lawTuesday, 7 May 13

Page 13: Web directions code 13 notes

Wirth’s lawGate’s law

Tuesday, 7 May 13

Page 14: Web directions code 13 notes

Wirth’s lawGate’s lawMay’s law

Tuesday, 7 May 13

Page 15: Web directions code 13 notes

Wirth’s lawGate’s lawMay’s lawPage’s law

Tuesday, 7 May 13

Page 16: Web directions code 13 notes

Offset Moore’s lawTuesday, 7 May 13 "software is getting slower more rapidly than hardware becomes faster." this was said in 1995 the year java was released.

Page 17: Web directions code 13 notes

JS’s moore law?Tuesday, 7 May 13

As javascript get engines get faster, developers will increase double the size of their libraries every 2 years.This is 2010 to 2013, so it almost lines up.

Page 18: Web directions code 13 notes

More complex?Tuesday, 7 May 13

Page 19: Web directions code 13 notes

http://upload.wikimedia.org/wikipedia/commons/5/52/Pdp7-oslo-2005.jpeg

Tuesday, 7 May 13

Peter Samson

200 kilohertz

16K

Page 20: Web directions code 13 notes

Well, Why?Tuesday, 7 May 13

Page 21: Web directions code 13 notes

Constraints drive creativity

Tuesday, 7 May 13

Page 22: Web directions code 13 notes

The Somebody Else's Problem Field is a field running on the principle that if something is identified to be somebody else's problem, the brain will edit it out of the person's vision. - Adams

Tuesday, 7 May 13

We have invented phrases that our somebody elses problem’

Ship it. premature optimization...

Page 23: Web directions code 13 notes

Back to basicsTuesday, 7 May 13

Page 24: Web directions code 13 notes

$(“#selector”);

Tuesday, 7 May 13

Page 25: Web directions code 13 notes

BigO

Tuesday, 7 May 13

Page 26: Web directions code 13 notes

O(n)Tuesday, 7 May 13

Page 27: Web directions code 13 notes

654321 1110987

Tuesday, 7 May 13

Page 28: Web directions code 13 notes

654321 1110987

Tuesday, 7 May 13

Page 29: Web directions code 13 notes

O(1)Tuesday, 7 May 13

Page 30: Web directions code 13 notes

654321 1110987

Tuesday, 7 May 13

Page 31: Web directions code 13 notes

654321 1110987

Tuesday, 7 May 13

Page 32: Web directions code 13 notes

O(n^2)Tuesday, 7 May 13

Page 33: Web directions code 13 notes

654321 1110987

654321 1110987

Tuesday, 7 May 13

Page 34: Web directions code 13 notes

654321 1110987

654321 1110987

Tuesday, 7 May 13

Page 35: Web directions code 13 notes

O(logn)Tuesday, 7 May 13

Page 36: Web directions code 13 notes

10

Tuesday, 7 May 13

Page 37: Web directions code 13 notes

104

Tuesday, 7 May 13

Page 38: Web directions code 13 notes

104

Tuesday, 7 May 13

Page 39: Web directions code 13 notes

10

4

Tuesday, 7 May 13

Page 40: Web directions code 13 notes

10

4

15

Tuesday, 7 May 13

Page 41: Web directions code 13 notes

10

4

15

Tuesday, 7 May 13

Page 42: Web directions code 13 notes

10

4 15

Tuesday, 7 May 13

Page 43: Web directions code 13 notes

10

4 15

2 5 11 25

Tuesday, 7 May 13

Page 44: Web directions code 13 notes

104

D Y

4O 4N

T A

Tuesday, 7 May 13

o(K) complexity based on lenght of key, not the data. Kind of neat.

Page 45: Web directions code 13 notes

O(n log n)

Tuesday, 7 May 13

similar to o n log n but every time we half the work, we need to iterate through a constant.

Page 46: Web directions code 13 notes

FunctionalTuesday, 7 May 13

Page 47: Web directions code 13 notes

FunctionalTuesday, 7 May 13

Page 48: Web directions code 13 notes

Not function()alTuesday, 7 May 13

Page 49: Web directions code 13 notes

Tuesday, 7 May 13

Page 50: Web directions code 13 notes

Tuesday, 7 May 13

Page 51: Web directions code 13 notes

λx.x

Tuesday, 7 May 13

Page 52: Web directions code 13 notes

(λx.x) y

Tuesday, 7 May 13

Page 53: Web directions code 13 notes

(λx.x) 5

Tuesday, 7 May 13

Page 54: Web directions code 13 notes

(λx.x) 5

Tuesday, 7 May 13

Page 55: Web directions code 13 notes

5

Tuesday, 7 May 13

Page 56: Web directions code 13 notes

Maths is not programming!

Tuesday, 7 May 13

Page 57: Web directions code 13 notes

Lambda { |x| x }x => x

Tuesday, 7 May 13

Page 58: Web directions code 13 notes

λx. λy .( x + y)

Tuesday, 7 May 13

Page 59: Web directions code 13 notes

λy .( 5 + y)

Tuesday, 7 May 13

Page 60: Web directions code 13 notes

First class functions!

Tuesday, 7 May 13

Page 61: Web directions code 13 notes

function(x) { function(y) { return x + y; }}

Tuesday, 7 May 13

Page 62: Web directions code 13 notes

1930

Tuesday, 7 May 13

Page 63: Web directions code 13 notes

1975

Tuesday, 7 May 13

Although it was written in some academic papers earlier.

Page 64: Web directions code 13 notes

(define (add a) (lambda (b) (+ a b)))

Tuesday, 7 May 13

Page 65: Web directions code 13 notes

Side effectsTuesday, 7 May 13

Page 66: Web directions code 13 notes

(λx.x) 5

Tuesday, 7 May 13

Page 67: Web directions code 13 notes

x => 5

Tuesday, 7 May 13

Page 68: Web directions code 13 notes

Referential transparency

Tuesday, 7 May 13

Was actually a term phrased by a philisopher quine.

1960

Page 69: Web directions code 13 notes

Change reference. Same context.

Tuesday, 7 May 13

Page 70: Web directions code 13 notes

I drank some delicious <>

Tuesday, 7 May 13

Page 71: Web directions code 13 notes

I drank some delicious alcohol from scotland.

Tuesday, 7 May 13

Page 72: Web directions code 13 notes

I drank some delicious scotch.

Tuesday, 7 May 13

Page 73: Web directions code 13 notes

function id(x) { return x;}

Tuesday, 7 May 13

Page 74: Web directions code 13 notes

10 + id(5);

Tuesday, 7 May 13

Page 75: Web directions code 13 notes

10 + 5;

Tuesday, 7 May 13

Page 76: Web directions code 13 notes

function id(x) { y = 30; updateDB(y,x); return x;}

Tuesday, 7 May 13

Page 77: Web directions code 13 notes

Sanity

Tuesday, 7 May 13

Page 78: Web directions code 13 notes

Higher order programming

Tuesday, 7 May 13

Page 79: Web directions code 13 notes

Map

Tuesday, 7 May 13

Page 80: Web directions code 13 notes

[-60, -10, -20].map(Math.abs)[-60, -10, -20].map(Math.abs)

[60, 10, 20]

Tuesday, 7 May 13

Page 81: Web directions code 13 notes

Filter

Tuesday, 7 May 13

Page 82: Web directions code 13 notes

[-60, 10, -20].filter(function(x) { return x > 0});

[10]

Tuesday, 7 May 13

Page 83: Web directions code 13 notes

Reduce

Tuesday, 7 May 13

Page 84: Web directions code 13 notes

[10, 20,30] .reduce(function(seed, x) { return seed + x }, 0);

60

Tuesday, 7 May 13

Page 85: Web directions code 13 notes

1 2 3 4

f(0, 1)

0+1

Tuesday, 7 May 13

Page 86: Web directions code 13 notes

1 2 3 4

f(1, 2)

1+2

Tuesday, 7 May 13

Page 87: Web directions code 13 notes

1 2 3 4

f(3, 3)

3+3

Tuesday, 7 May 13

Page 88: Web directions code 13 notes

1 2 3 4

f(6, 4)

6+4

Tuesday, 7 May 13

Page 89: Web directions code 13 notes

Tuesday, 7 May 13December, 2004.

Jeffrey Dean

Jeff Dean puts his pants on one leg at a time, but if he had more legs, you would see that his approach is O(log n).

Page 90: Web directions code 13 notes

interface Func<A, B> {

B apply(A x);}

Tuesday, 7 May 13

Page 91: Web directions code 13 notes

b = 1;

new Func<Integer, Integer>() {public Integer apply(Integer x) { return x + b; }}

Tuesday, 7 May 13

Page 92: Web directions code 13 notes

Syntax mattersTuesday, 7 May 13

Page 93: Web directions code 13 notes

Abstract conceptTuesday, 7 May 13

Page 94: Web directions code 13 notes

Higher higher order programming

Tuesday, 7 May 13

Page 95: Web directions code 13 notes

MonadsTuesday, 7 May 13

Page 96: Web directions code 13 notes

s/Maybe/MaybeMonadTuesday, 7 May 13

Page 97: Web directions code 13 notes

Chain = bind

>>=

Tuesday, 7 May 13

Page 98: Web directions code 13 notes

Of = return

Tuesday, 7 May 13

Page 99: Web directions code 13 notes

3 Laws.

Tuesday, 7 May 13

Page 100: Web directions code 13 notes

Standards +Academia +Javascript =

Tuesday, 7 May 13

Page 101: Web directions code 13 notes

Tuesday, 7 May 13

Page 102: Web directions code 13 notes

Fantasy landTuesday, 7 May 13

It was so named after the infamous bug 94 on the promises spec

Dealing with null.

Page 103: Web directions code 13 notes

Free.Tuesday, 7 May 13

By adhering to these specs we start go get some things for free.For example in my previous maybe example i wrote map. We don’t actually have to do that. It can be implmented for us. Same with a whole host of functions Lift for example which takes a function and runs it in the monadic context.Again we don’t have to worry about writing any of this, we get it for free.

We get assurances to an extent that these operations will run. Regardless of where or what the monad is dealing with.Just freedom. Is this not the idea of the lazy developer and comforms to DRY, LRU etc etc etc

Unfortuantly we can not get 100% assurance if we were to do this, we would need to rely on another concept from the early computer science days...

Page 104: Web directions code 13 notes

Types

Tuesday, 7 May 13

Types can take this concept even further.We don’t have to worry about people doing stupid things with our code as we can remove this ability for them

Page 105: Web directions code 13 notes

Still need tests

Tuesday, 7 May 13

Page 106: Web directions code 13 notes

Tests are slow

Tuesday, 7 May 13

Page 107: Web directions code 13 notes

Just less

Tuesday, 7 May 13

Page 108: Web directions code 13 notes

Javascript is untypedTuesday, 7 May 13

Page 109: Web directions code 13 notes

Sort ofTuesday, 7 May 13

Page 110: Web directions code 13 notes

1 TypeTuesday, 7 May 13

Page 111: Web directions code 13 notes

Value Tuesday, 7 May 13

Page 112: Web directions code 13 notes

A type system is a tractable syntacticmethod for proving the absence of certainprogram behaviors by classifying phrases

according to the kinds of values theycompute.

Tuesday, 7 May 13

Page 113: Web directions code 13 notes

A type system is a tractable syntacticmethod for proving the absence of certainprogram behaviors by classifying phrases

according to the kinds of values theycompute.

Tuesday, 7 May 13

tractable easy to control

Page 114: Web directions code 13 notes

A type system is a tractable syntacticmethod for proving the absence of certainprogram behaviors by classifying phrases

according to the kinds of values theycompute.

Tuesday, 7 May 13

Page 115: Web directions code 13 notes

15 + 5

Tuesday, 7 May 13

Page 116: Web directions code 13 notes

a -> a

Tuesday, 7 May 13

Page 117: Web directions code 13 notes

a -> a -> a

Tuesday, 7 May 13

Page 118: Web directions code 13 notes

string -> string

Tuesday, 7 May 13

Page 119: Web directions code 13 notes

function(string) { return string;}

Tuesday, 7 May 13

Page 120: Web directions code 13 notes

[a] -> a

Tuesday, 7 May 13

Page 121: Web directions code 13 notes

[string] -> string

Tuesday, 7 May 13

Page 122: Web directions code 13 notes

Sanity

Tuesday, 7 May 13

Page 123: Web directions code 13 notes

function add(a,b) { return a + b;}

Tuesday, 7 May 13

Page 124: Web directions code 13 notes

add(1,2)

Tuesday, 7 May 13

Page 125: Web directions code 13 notes

Tuesday, 7 May 13

Page 126: Web directions code 13 notes

add(“1”,2)

Tuesday, 7 May 13

Page 127: Web directions code 13 notes

Tuesday, 7 May 13

Page 128: Web directions code 13 notes

REX.W movq rax,[rbp+0x18] test al,0x1

+JS

Tuesday, 7 May 13

Page 129: Web directions code 13 notes

ASM.JS

Tuesday, 7 May 13

Page 130: Web directions code 13 notes

Tuesday, 7 May 13