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 Years ago, Lift & Scala Wednesday, November 16, 2011
@dpp • 20 Years ago, today, invented RT spreadsheet • 5 Years ago, Lift & Scala • Pushing boundaries Wednesday, November 16, 2011
Lift Wednesday, November 16, 2011
Lift • Functional Web Framework Wednesday, November 16, 2011
Lift • Functional Web Framework • Abstractions: Task Oriented Wednesday, November 16, 2011
Lift • Functional Web Framework • Abstractions: Task Oriented • Secure & Interactive (and Maintainable) Wednesday, November 16, 2011
Chat Wednesday, November 16, 2011
Chat • class Chat extends CometActor with CometListener { private var msgs: Vector[String] = Vector() def registerWith = ChatServer override def lowPriority = { case v: Vector[String] => msgs = v; reRender() } def render = ClearClearable andThen "li *" #> msgs } Wednesday, November 16, 2011
Chat Server Wednesday, November 16, 2011
Chat Server • object ChatServer extends LiftActor with ListenerManager { private var msgs = Vector("Welcome") override def createUpdate = msgs override def lowPriority = { case s: String => msgs :+= s updateListeners() } } Wednesday, November 16, 2011
Chat Input Wednesday, November 16, 2011
Chat Input • object ChatIn { def render = SHtml.onSubmit{ s => ChatServer ! s SetValById("chat_in", "") } } Wednesday, November 16, 2011
What You Don’t See Wednesday, November 16, 2011
What You Don’t See • Loops Wednesday, November 16, 2011
What You Don’t See • Loops • Synchronized Wednesday, November 16, 2011
What You Don’t See • Loops • Synchronized • HTML Encoding Wednesday, November 16, 2011
But that’s not what I came here to talk about... Wednesday, November 16, 2011
Used to be... Wednesday, November 16, 2011
Used to be... Wednesday, November 16, 2011
Used to be... • Green screens everywhere Wednesday, November 16, 2011
Used to be... • Green screens everywhere • Enslaved by the mainframe Wednesday, November 16, 2011
Used to be... • Green screens everywhere • Enslaved by the mainframe • Changes went through IT Wednesday, November 16, 2011
And then... Wednesday, November 16, 2011
And then... Wednesday, November 16, 2011
And then... • VisiCalc Wednesday, November 16, 2011
And then... • VisiCalc • HyperCard Wednesday, November 16, 2011
And then... • VisiCalc • HyperCard • PowerBuilder Wednesday, November 16, 2011
And then... • VisiCalc • HyperCard • PowerBuilder Wednesday, November 16, 2011
Along came the Web Wednesday, November 16, 2011
Along came the Web • IT reasserts itself Wednesday, November 16, 2011
Along came the Web • IT reasserts itself • Browser = 3270 Wednesday, November 16, 2011
Along came the Web • IT reasserts itself • Browser = 3270 • J/EE & Rails = COBOL Wednesday, November 16, 2011
Along came the Web • IT reasserts itself • Browser = 3270 • J/EE & Rails = COBOL Wednesday, November 16, 2011
Cloud & iPad Vision Wednesday, November 16, 2011
Cloud & iPad Vision Wednesday, November 16, 2011
Cloud & iPad Vision • Empower individuals Wednesday, November 16, 2011
Cloud & iPad Vision • Empower individuals • Anywhere, Anytime Wednesday, November 16, 2011
Cloud & iPad Vision • Empower individuals • Anywhere, Anytime • Rich Interaction Wednesday, November 16, 2011
Cloud & iPad Vision • Empower individuals • Anywhere, Anytime • Rich Interaction Wednesday, November 16, 2011
But... Wednesday, November 16, 2011
But... Wednesday, November 16, 2011
But... • Old tools Wednesday, November 16, 2011
But... • Old tools • IT centric Wednesday, November 16, 2011
But... • Old tools • IT centric • Code Constrained Wednesday, November 16, 2011
Let's Fix That Wednesday, November 16, 2011
Let's Fix That • Cloud Computing for The Rest of Us Wednesday, November 16, 2011
Let's Fix That • Cloud Computing for The Rest of Us • Rapid • Interactive • Simple Wednesday, November 16, 2011
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
Empower Business User Wednesday, November 16, 2011
Empower Business User • Easy & Intuitive like HyperCard and Excel Wednesday, November 16, 2011
Empower Business User • Easy & Intuitive like HyperCard and Excel • Emporium: Data • App • Component Wednesday, November 16, 2011
Empower Business User • Easy & Intuitive like HyperCard and Excel • Emporium: Data • App • Component • Instant Success Wednesday, November 16, 2011
Environment Wednesday, November 16, 2011
Environment • Design on iPad or Mac Wednesday, November 16, 2011
Environment • Design on iPad or Mac • Runs on iPads, iPhone & Cloud Wednesday, November 16, 2011
Environment • Design on iPad or Mac • Runs on iPads, iPhone & Cloud • Real-time events & Disconnected Wednesday, November 16, 2011
Emporium Wednesday, November 16, 2011
Emporium • Data sources & sinks including SalesForce Wednesday, November 16, 2011
Emporium • Data sources & sinks including SalesForce • Running Apps including Proj Mgt & Chat Wednesday, November 16, 2011
Emporium • Data sources & sinks including SalesForce • Running Apps including Proj Mgt & Chat • Components Wednesday, November 16, 2011
Age Old Problems Wednesday, November 16, 2011
Age Old Problems • State management Wednesday, November 16, 2011
Age Old Problems • State management • Marshaling Wednesday, November 16, 2011
Age Old Problems • State management • Marshaling • Event flows Wednesday, November 16, 2011
State Management Wednesday, November 16, 2011
State Management • Functional Language, like Excel Wednesday, November 16, 2011
State Management • Functional Language, like Excel • total = subtotal + tax Wednesday, November 16, 2011
State Management • Functional Language, like Excel • total = subtotal + tax • Clear I/O and transactional bounds Wednesday, November 16, 2011
Marshaling Wednesday, November 16, 2011
Marshaling • All user-data can be BSON serialized Wednesday, November 16, 2011
Marshaling • All user-data can be BSON serialized • Database as Collections: kids = filter (#age <= 18) users Wednesday, November 16, 2011
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
Event Flows Wednesday, November 16, 2011
Event Flows • Source & Sink Computation Independent Wednesday, November 16, 2011
Event Flows • Source & Sink Computation Independent • iPad actions logged as events to server Wednesday, November 16, 2011
Event Flows • Source & Sink Computation Independent • iPad actions logged as events to server • Migratory Locus of Computation Wednesday, November 16, 2011
Status Wednesday, November 16, 2011
Status • Open Source Pieces: http://visi.io Wednesday, November 16, 2011
Status • Open Source Pieces: http://visi.io • Private Alpha Program Wednesday, November 16, 2011
Status • Open Source Pieces: http://visi.io • Private Alpha Program • Beta in 2012 Wednesday, November 16, 2011
Recommend
More recommend