QCon SF 2011 @dpp - Functional Wednesday, November 16, 2011 @dpp - - PowerPoint PPT Presentation

qcon sf 2011 dpp functional
SMART_READER_LITE
LIVE PREVIEW

QCon SF 2011 @dpp - Functional Wednesday, November 16, 2011 @dpp - - PowerPoint PPT Presentation

QCon SF 2011 @dpp - Functional Wednesday, November 16, 2011 @dpp Wednesday, November 16, 2011 @dpp 20 Years ago, today, invented RT spreadsheet Wednesday, November 16, 2011 @dpp 20 Years ago, today, invented RT spreadsheet 5


slide-1
SLIDE 1

QCon SF 2011 @dpp - Functional

Wednesday, November 16, 2011

slide-2
SLIDE 2

@dpp

Wednesday, November 16, 2011

slide-3
SLIDE 3

@dpp

  • 20

Years ago, today, invented RT spreadsheet

Wednesday, November 16, 2011

slide-4
SLIDE 4

@dpp

  • 20

Years ago, today, invented RT spreadsheet

  • 5

Years ago, Lift & Scala

Wednesday, November 16, 2011

slide-5
SLIDE 5

@dpp

  • 20

Years ago, today, invented RT spreadsheet

  • 5

Years ago, Lift & Scala

  • Pushing boundaries

Wednesday, November 16, 2011

slide-6
SLIDE 6

Lift

Wednesday, November 16, 2011

slide-7
SLIDE 7

Lift

  • Functional Web Framework

Wednesday, November 16, 2011

slide-8
SLIDE 8

Lift

  • Functional Web Framework
  • Abstractions: Task Oriented

Wednesday, November 16, 2011

slide-9
SLIDE 9

Lift

  • Functional Web Framework
  • Abstractions: Task Oriented
  • Secure & Interactive (and Maintainable)

Wednesday, November 16, 2011

slide-10
SLIDE 10

Chat

Wednesday, November 16, 2011

slide-11
SLIDE 11

Chat

  • class Chat extends CometActor with

CometListener { private var msgs: Vector[String] = Vector() def registerWith = ChatServer

  • verride def lowPriority = {

case v: Vector[String] => msgs = v; reRender() } def render = ClearClearable andThen "li *" #> msgs }

Wednesday, November 16, 2011

slide-12
SLIDE 12

Chat Server

Wednesday, November 16, 2011

slide-13
SLIDE 13

Chat Server

  • object ChatServer extends

LiftActor with ListenerManager { private var msgs = Vector("Welcome")

  • verride def createUpdate = msgs
  • verride def lowPriority = {

case s: String => msgs :+= s updateListeners() } }

Wednesday, November 16, 2011

slide-14
SLIDE 14

Chat Input

Wednesday, November 16, 2011

slide-15
SLIDE 15

Chat Input

  • object ChatIn {

def render = SHtml.onSubmit{ s => ChatServer ! s SetValById("chat_in", "") } }

Wednesday, November 16, 2011

slide-16
SLIDE 16

What You Don’t See

Wednesday, November 16, 2011

slide-17
SLIDE 17

What You Don’t See

  • Loops

Wednesday, November 16, 2011

slide-18
SLIDE 18

What You Don’t See

  • Loops
  • Synchronized

Wednesday, November 16, 2011

slide-19
SLIDE 19

What You Don’t See

  • Loops
  • Synchronized
  • HTML Encoding

Wednesday, November 16, 2011

slide-20
SLIDE 20

But that’s not what I came here to talk about...

Wednesday, November 16, 2011

slide-21
SLIDE 21

Used to be...

Wednesday, November 16, 2011

slide-22
SLIDE 22

Used to be...

Wednesday, November 16, 2011

slide-23
SLIDE 23

Used to be...

  • Green screens everywhere

Wednesday, November 16, 2011

slide-24
SLIDE 24

Used to be...

  • Green screens everywhere
  • Enslaved by the mainframe

Wednesday, November 16, 2011

slide-25
SLIDE 25

Used to be...

  • Green screens everywhere
  • Enslaved by the mainframe
  • Changes went through IT

Wednesday, November 16, 2011

slide-26
SLIDE 26

And then...

Wednesday, November 16, 2011

slide-27
SLIDE 27

And then...

Wednesday, November 16, 2011

slide-28
SLIDE 28

And then...

  • VisiCalc

Wednesday, November 16, 2011

slide-29
SLIDE 29

And then...

  • VisiCalc
  • HyperCard

Wednesday, November 16, 2011

slide-30
SLIDE 30

And then...

  • VisiCalc
  • HyperCard
  • PowerBuilder

Wednesday, November 16, 2011

slide-31
SLIDE 31

And then...

  • VisiCalc
  • HyperCard
  • PowerBuilder

Wednesday, November 16, 2011

slide-32
SLIDE 32

Along came the Web

Wednesday, November 16, 2011

slide-33
SLIDE 33

Along came the Web

  • IT reasserts itself

Wednesday, November 16, 2011

slide-34
SLIDE 34

Along came the Web

  • IT reasserts itself
  • Browser = 3270

Wednesday, November 16, 2011

slide-35
SLIDE 35

Along came the Web

  • IT reasserts itself
  • Browser = 3270
  • J/EE & Rails = COBOL

Wednesday, November 16, 2011

slide-36
SLIDE 36

Along came the Web

  • IT reasserts itself
  • Browser = 3270
  • J/EE & Rails = COBOL

Wednesday, November 16, 2011

slide-37
SLIDE 37

Cloud & iPad Vision

Wednesday, November 16, 2011

slide-38
SLIDE 38

Cloud & iPad Vision

Wednesday, November 16, 2011

slide-39
SLIDE 39

Cloud & iPad Vision

  • Empower individuals

Wednesday, November 16, 2011

slide-40
SLIDE 40

Cloud & iPad Vision

  • Empower individuals
  • Anywhere, Anytime

Wednesday, November 16, 2011

slide-41
SLIDE 41

Cloud & iPad Vision

  • Empower individuals
  • Anywhere, Anytime
  • Rich Interaction

Wednesday, November 16, 2011

slide-42
SLIDE 42

Cloud & iPad Vision

  • Empower individuals
  • Anywhere, Anytime
  • Rich Interaction

Wednesday, November 16, 2011

slide-43
SLIDE 43

But...

Wednesday, November 16, 2011

slide-44
SLIDE 44

But...

Wednesday, November 16, 2011

slide-45
SLIDE 45

But...

  • Old tools

Wednesday, November 16, 2011

slide-46
SLIDE 46

But...

  • Old tools
  • IT centric

Wednesday, November 16, 2011

slide-47
SLIDE 47

But...

  • Old tools
  • IT centric
  • Code Constrained

Wednesday, November 16, 2011

slide-48
SLIDE 48

Let's Fix That

Wednesday, November 16, 2011

slide-49
SLIDE 49

Let's Fix That

  • Cloud Computing for The Rest of Us

Wednesday, November 16, 2011

slide-50
SLIDE 50

Let's Fix That

  • Cloud Computing for The Rest of Us
  • Rapid • Interactive • Simple

Wednesday, November 16, 2011

slide-51
SLIDE 51

Let's Fix That

  • Cloud Computing for The Rest of Us
  • Rapid • Interactive • Simple
  • Design on iPad or Mac & Deploy in the Cloud

Wednesday, November 16, 2011

slide-52
SLIDE 52

Empower Business User

Wednesday, November 16, 2011

slide-53
SLIDE 53

Empower Business User

  • Easy & Intuitive like HyperCard and Excel

Wednesday, November 16, 2011

slide-54
SLIDE 54

Empower Business User

  • Easy & Intuitive like HyperCard and Excel
  • Emporium: Data • App • Component

Wednesday, November 16, 2011

slide-55
SLIDE 55

Empower Business User

  • Easy & Intuitive like HyperCard and Excel
  • Emporium: Data • App • Component
  • Instant Success

Wednesday, November 16, 2011

slide-56
SLIDE 56

Environment

Wednesday, November 16, 2011

slide-57
SLIDE 57

Environment

  • Design on iPad or Mac

Wednesday, November 16, 2011

slide-58
SLIDE 58

Environment

  • Design on iPad or Mac
  • Runs on iPads, iPhone & Cloud

Wednesday, November 16, 2011

slide-59
SLIDE 59

Environment

  • Design on iPad or Mac
  • Runs on iPads, iPhone & Cloud
  • Real-time events & Disconnected

Wednesday, November 16, 2011

slide-60
SLIDE 60

Emporium

Wednesday, November 16, 2011

slide-61
SLIDE 61

Emporium

  • Data sources & sinks including SalesForce

Wednesday, November 16, 2011

slide-62
SLIDE 62

Emporium

  • Data sources & sinks including SalesForce
  • Running Apps including Proj Mgt & Chat

Wednesday, November 16, 2011

slide-63
SLIDE 63

Emporium

  • Data sources & sinks including SalesForce
  • Running Apps including Proj Mgt & Chat
  • Components

Wednesday, November 16, 2011

slide-64
SLIDE 64

Age Old Problems

Wednesday, November 16, 2011

slide-65
SLIDE 65

Age Old Problems

  • State management

Wednesday, November 16, 2011

slide-66
SLIDE 66

Age Old Problems

  • State management
  • Marshaling

Wednesday, November 16, 2011

slide-67
SLIDE 67

Age Old Problems

  • State management
  • Marshaling
  • Event flows

Wednesday, November 16, 2011

slide-68
SLIDE 68

State Management

Wednesday, November 16, 2011

slide-69
SLIDE 69

State Management

  • Functional Language, like Excel

Wednesday, November 16, 2011

slide-70
SLIDE 70

State Management

  • Functional Language, like Excel
  • total = subtotal + tax

Wednesday, November 16, 2011

slide-71
SLIDE 71

State Management

  • Functional Language, like Excel
  • total = subtotal + tax
  • Clear I/O and transactional bounds

Wednesday, November 16, 2011

slide-72
SLIDE 72

Marshaling

Wednesday, November 16, 2011

slide-73
SLIDE 73

Marshaling

  • All user-data can be BSON serialized

Wednesday, November 16, 2011

slide-74
SLIDE 74

Marshaling

  • All user-data can be BSON serialized
  • Database as Collections:

kids = filter (#age <= 18) users

Wednesday, November 16, 2011

slide-75
SLIDE 75

Marshaling

  • All user-data can be BSON serialized
  • Database as Collections:

kids = filter (#age <= 18) users

  • UI Auto-generated or IB Style

Wednesday, November 16, 2011

slide-76
SLIDE 76

Event Flows

Wednesday, November 16, 2011

slide-77
SLIDE 77

Event Flows

  • Source & Sink Computation Independent

Wednesday, November 16, 2011

slide-78
SLIDE 78

Event Flows

  • Source & Sink Computation Independent
  • iPad actions logged as events to server

Wednesday, November 16, 2011

slide-79
SLIDE 79

Event Flows

  • Source & Sink Computation Independent
  • iPad actions logged as events to server
  • Migratory Locus of Computation

Wednesday, November 16, 2011

slide-80
SLIDE 80

Status

Wednesday, November 16, 2011

slide-81
SLIDE 81

Status

  • Open Source Pieces: http://visi.io

Wednesday, November 16, 2011

slide-82
SLIDE 82

Status

  • Open Source Pieces: http://visi.io
  • Private Alpha Program

Wednesday, November 16, 2011

slide-83
SLIDE 83

Status

  • Open Source Pieces: http://visi.io
  • Private Alpha Program
  • Beta in 2012

Wednesday, November 16, 2011