Whither FRP?

hi, I was re-reading an LtU blast from the past about FRP and the discussions there made me think to ask this here community to post some concise updates on how FRP research has been going of late. In case any of you in that field have so much free time.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Falcor+Rx+React = SE for FRP

My biggest issue with FRP, for almost a decade now, has been the SE aspects, not PL. (I'd argue I'm not the only one, evidenced by Elm's scaling back of it.)

One of the most personally exciting things about the stack at our startup isn't the GPU cloud-accelerated visual analytics etc. stuff. Instead, it's how we're going about engineering a visual analytics experience that's some sort of cross between Photoshop, Tableau, and Palantir in terms of development challenges. We'd long been using Rx (glitchy FRP) for taming async, but we struggled to build a sane component model around that. Falcor + React was the big win: Falcor for structured, declarative handling of tiered reactive state (e.g., browser -> server process -> DB), and after months of puzzling how to integrate it, React for putting into a declarative UI pipeline.

There was an experience report by Jeff Heer's group recently about doing FRP in the grammar of graphics. We've been slowly cooking a more generalized approach of doing our ETL pipeline this way (~reactive dataframes), and integrating with the above. It's been a huge satisfaction to being able to scale FRP with abstractions necessary for writing large software!

Which paper?

Is this the Vega-Lite paper, or a different one?

Yep

Paper: http://idl.cs.washington.edu/files/2017-VegaLite-InfoVis.pdf

Video: https://vimeo.com/177767802

It's interesting to generalize this from data vis scripting to application development. Our team, internally, already uses FRP (Rx) to declaratively specify interactive apps that go from raw data to UI and back via Falcor -> React ->D3 (and our custom system). However, we're still building internally to fill the gap for essentially a reactive & more first-class etl / database layer. Vega-Lite bakes in, for a more constrained system, the ability to create new collections (sub-visualizations) and bind to the data.

What is falcor?

What is falcor?

See site

http://netflix.github.io/falcor/starter/why-falcor.html

We're one of the heaviest users and invested in some the upcoming advances, but started at netflix for taming their systems.

FRP in FOAM

At Google we're working on a modeling framework called FOAM, which makes use of FRP. We're very pleased with some of the unexpected results, which are demonstrated in this video.

FOAM looks like an

FOAM core approach looks like an incarnation of Will Cook's concept of Managed Data.

Yes, very Similar

I remember looking at Cook's Enzo project when it came out and thinking that it was the thing most like FOAM. They are the only two systems that I'm aware of that have self describing models/schemas (though I'm sure there others, and I would like to hear about them).

While FOAM has excellent support for modeling Database Access Objects (DAO's) and database queries, we also model other things like parsers, animations, concurrency, interactive documents, etc.

Here's a quick video overview of FOAM, and here's a much longer version.

Here's an explanation of how FOAM is different than other model-based systems.

I've been working on predecessors to FOAM since 1989, and on FOAM itself since 2011.

Your foam web site

Your foam web site errors out on iOS.

Thanks for Letting me Know

I'll have someone on the team with an iPhone look into that.

Functional Reactive

Pure FRP may not be hot right now but the term "Functional Reactive" is on the rise. Following are some of the new books with from Manning with "Reactive" in the title.

    
  • Functional Reactive Programming
  • Functional and Reactive Domain Modeling
  • Grokking Reactive User Interfaces
  • Reactive Design Patterns
  • Reactive Machine Learning Systems
  • Reactive Application Development
  • Reactive Web Applications
  • Functional and Reactive Domain Modeling
  • Grokking Reactive User Interfaces
  • Reactive Extensions in .NET