Skip to content

Instantly share code, notes, and snippets.

@a2ndrade
Last active September 23, 2015 13:48
Show Gist options
  • Save a2ndrade/d5878a4403d40321ea07 to your computer and use it in GitHub Desktop.
Save a2ndrade/d5878a4403d40321ea07 to your computer and use it in GitHub Desktop.
Fluent Conf 2016: Talk Proposal

##Server-side FRP: Powerful UIs, no added complexity

###Description We’ll present FRP (Functional Reactive Programming) ideas and novel techniques applied to the development of an enterprise application platform that let non-programmers build cross-platform UIs that have complete access to backend services. All with a very simple, purely functional, interpreted language used to declaratively create and persist UIs that are dynamically rendered on web and mobile.

###Abstract We’ll show why a unidirectional data flow architecture makes event-driven systems easier to reason about, how using a single language to describe both business logic and UI views allow us to compose complex UIs out of simpler, independent components. How we use Haskell-inspired ideas to isolate side-effects and perform them under a controlled environment, how we provide the illusion of local state by hiding it behind a globally-managed state tree, how we take advantage of functional purity and use FRP techniques to only recompute the parts of a UI affected by a change, how we compensate for the inherent higher latency when interacting with a UI, why defining UIs as pure data is a step toward building a cross-platform application and/or allowing server-side rendering, and finally, what UX and performance trade-offs we had to make to achieve it.

By the end of the talk we hope to demonstrate how FRP techniques can transcend technologies and languages. We’ll do so by constantly drawing parallels to ideas now popularized by React, Om and Elm and showing how we’ve successfully implemented them and used them in production systems for over 2 years now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment