Javazone 2011: Goal Directed Web Applications

55
software. done right. Goal-directed Web Applications (with Scala) Timothy Perrett JavaZone 2011

Transcript of Javazone 2011: Goal Directed Web Applications

Page 1: Javazone 2011: Goal Directed Web Applications

software. done right.

Goal-directedWeb Applications

(with Scala)

Timothy PerrettJavaZone 2011

Page 2: Javazone 2011: Goal Directed Web Applications

software. done right.

Agenda The Problem

Users

Existing drawbacks

The Theory Modeling

The Detail Task and functions

Asynchronous web

Leveraging Lift and Akka

Page 3: Javazone 2011: Goal Directed Web Applications

software. done right.

About Me

Author of Lift in Action Coding Scala since 2007

(its awesome)

Background in both dynamic and statically typed languages

Manufacturing and marketing automation is my day job http://manning.com/perrett/

Page 4: Javazone 2011: Goal Directed Web Applications

software. done right.

> what does this…

Page 5: Javazone 2011: Goal Directed Web Applications

software. done right.…have to do with this?

Page 6: Javazone 2011: Goal Directed Web Applications

software. done right.

RepresentativeModels.

Page 7: Javazone 2011: Goal Directed Web Applications

software. done right.

“…For the majority of customers, each feature or procedure is a frustrating, unwanted puzzle...”

Microsoft Research

Page 8: Javazone 2011: Goal Directed Web Applications

software. done right.

Oh Noes!

Page 9: Javazone 2011: Goal Directed Web Applications

software. done right.

…butseriously...

Page 10: Javazone 2011: Goal Directed Web Applications

software. done right.

Oh Noes!

Page 11: Javazone 2011: Goal Directed Web Applications

software. done right.

Square peg.

Round hole.

Page 12: Javazone 2011: Goal Directed Web Applications

software. done right.

MissedOpportunities

Page 13: Javazone 2011: Goal Directed Web Applications

software. done right.

There must bea better way

Page 14: Javazone 2011: Goal Directed Web Applications

software. done right.

Better?

Page 15: Javazone 2011: Goal Directed Web Applications

software. done right.

TalkingTheory

Page 16: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 17: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 18: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 19: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 20: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 21: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 22: Javazone 2011: Goal Directed Web Applications

software. done right.

But why?

Page 23: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 24: Javazone 2011: Goal Directed Web Applications

software. done right.

Talking Theory

Page 25: Javazone 2011: Goal Directed Web Applications

software. done right.

TheDetail.

Page 26: Javazone 2011: Goal Directed Web Applications

software. done right.

λfunctions

Page 27: Javazone 2011: Goal Directed Web Applications

software. done right.

public Thing do(what: String) {

...

}

Page 28: Javazone 2011: Goal Directed Web Applications

software. done right.

public Thing do(what: String) {

...

}

Page 29: Javazone 2011: Goal Directed Web Applications

software. done right.

public <A> Thing do(what: A) {

...

}

Page 30: Javazone 2011: Goal Directed Web Applications

software. done right.

def do[A](what: A): Thing = ...

Page 31: Javazone 2011: Goal Directed Web Applications

software. done right.

A => Thing

Page 32: Javazone 2011: Goal Directed Web Applications

software. done right.

A => B

Page 33: Javazone 2011: Goal Directed Web Applications

software. done right.

(A => B) => C

Page 34: Javazone 2011: Goal Directed Web Applications

software. done right.

“We find that work […] does not consist of independent, separate acts, but of a series of inter-related processes.”

Christine Frederick,

The Labor-Saving Kitchen. 1919.

Page 35: Javazone 2011: Goal Directed Web Applications

software. done right.

Tasks

Page 36: Javazone 2011: Goal Directed Web Applications

software. done right.

Tasks

A => B

Tasks are functions

Page 37: Javazone 2011: Goal Directed Web Applications

software. done right.

Tasks

A => B => C => n

Tasks are made-up of composable operations

Page 38: Javazone 2011: Goal Directed Web Applications

software. done right.

“…User interface design needs to become more engineering rather than a pure creative or artistic process…”

Martijn van Welie

Page 39: Javazone 2011: Goal Directed Web Applications

software. done right.

AddingLift

Page 40: Javazone 2011: Goal Directed Web Applications

software. done right.

Tough ProblemsSimple Functions

Page 41: Javazone 2011: Goal Directed Web Applications

software. done right.

Binding

NodeSeq => NodeSeq

Page 42: Javazone 2011: Goal Directed Web Applications

software. done right.

Binding

def list =

"li" #> prods.map { p =>

"h2 *" #> p.name &

"a [href]" #> p.link

}

Page 43: Javazone 2011: Goal Directed Web Applications

software. done right.

Binding

<ul lift="list_products">

<li>

<h2>Product Name</h2>

<a href="#">More...</a>

</li>

</ul>

Page 44: Javazone 2011: Goal Directed Web Applications

software. done right.

AJAX

T => JsCmd

Page 45: Javazone 2011: Goal Directed Web Applications

software. done right.

AJAX

SHtml.ajaxButton(“click me”, () => Alert(now.toString))

Page 46: Javazone 2011: Goal Directed Web Applications

software. done right.

BeAsynchronous

Page 47: Javazone 2011: Goal Directed Web Applications

software. done right.

Be Asynchronous

Page 48: Javazone 2011: Goal Directed Web Applications

software. done right.

Be Asynchronous

Page 49: Javazone 2011: Goal Directed Web Applications

software. done right.

Demo

Not a chat application in sight!

Page 50: Javazone 2011: Goal Directed Web Applications

software. done right.

Demo

Page 51: Javazone 2011: Goal Directed Web Applications

software. done right.

Demo

Page 52: Javazone 2011: Goal Directed Web Applications

software. done right.

Summary

“Smart UI’s” are a complete fail Task-based analysis provides an abstract for

the entire task world Functions neatly represent tasks Capture UI interaction with true user intent Comet is useful for more than chat

applications! Scalable and efficient backends using Akka End-to-end event based systems

Page 53: Javazone 2011: Goal Directed Web Applications

software. done right.

Further Reading Task-Based User Interface Design (PhD Thesis)

Martijn van Welie

About Face 3Cooper et al

Human-Centered Design Considered HarmfulDonald Norman

Context and Consciousness: Activity Theory and H.C.I Bonie Nardi

Inductive User InterfacesMicrosoft Reasearch

Moments of SignificanceDix, Chisalita, van der Veer

The Inmates are Running the AsylumAlan Cooper

Twitter Bootstrap: http://twitter.github.com/bootstrap/

Page 54: Javazone 2011: Goal Directed Web Applications

software. done right.

“Significant change must be significantly better”

Cooper et al.

Page 55: Javazone 2011: Goal Directed Web Applications

software. done right.

Questions?

twitter.com/timperrett

github.com/timperrett

blog.getintheloop.eu

Lift in Action

manning.com/perrett/