javazone 2011: goal directed web applications

Post on 15-May-2015

917 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

software. done right.

Goal-directedWeb Applications

(with Scala)

Timothy PerrettJavaZone 2011

software. done right.

Agenda The Problem

Users

Existing drawbacks

The Theory Modeling

The Detail Task and functions

Asynchronous web

Leveraging Lift and Akka

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/

software. done right.

> what does this…

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

software. done right.

RepresentativeModels.

software. done right.

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

Microsoft Research

software. done right.

Oh Noes!

software. done right.

…butseriously...

software. done right.

Oh Noes!

software. done right.

Square peg.

Round hole.

software. done right.

MissedOpportunities

software. done right.

There must bea better way

software. done right.

Better?

software. done right.

TalkingTheory

software. done right.

Talking Theory

software. done right.

Talking Theory

software. done right.

Talking Theory

software. done right.

Talking Theory

software. done right.

Talking Theory

software. done right.

Talking Theory

software. done right.

But why?

software. done right.

Talking Theory

software. done right.

Talking Theory

software. done right.

TheDetail.

software. done right.

λfunctions

software. done right.

public Thing do(what: String) {

...

}

software. done right.

public Thing do(what: String) {

...

}

software. done right.

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

...

}

software. done right.

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

software. done right.

A => Thing

software. done right.

A => B

software. done right.

(A => B) => C

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.

software. done right.

Tasks

software. done right.

Tasks

A => B

Tasks are functions

software. done right.

Tasks

A => B => C => n

Tasks are made-up of composable operations

software. done right.

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

Martijn van Welie

software. done right.

AddingLift

software. done right.

Tough ProblemsSimple Functions

software. done right.

Binding

NodeSeq => NodeSeq

software. done right.

Binding

def list =

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

"h2 *" #> p.name &

"a [href]" #> p.link

}

software. done right.

Binding

<ul lift="list_products">

<li>

<h2>Product Name</h2>

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

</li>

</ul>

software. done right.

AJAX

T => JsCmd

software. done right.

AJAX

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

software. done right.

BeAsynchronous

software. done right.

Be Asynchronous

software. done right.

Be Asynchronous

software. done right.

Demo

Not a chat application in sight!

software. done right.

Demo

software. done right.

Demo

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

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/

software. done right.

“Significant change must be significantly better”

Cooper et al.

software. done right.

Questions?

twitter.com/timperrett

github.com/timperrett

blog.getintheloop.eu

Lift in Action

manning.com/perrett/

top related