Javazone 2011: Goal Directed Web Applications
-
Upload
timothy-perrett -
Category
Technology
-
view
919 -
download
1
Transcript of Javazone 2011: Goal Directed Web Applications
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/