Hello friends,

We've had a productive month, creating prototypes, getting feedback, and iterating. TL;DR - Compose is working really nicely as a React hook, so we're continuing to build in that direction.


Prototype 1: Figma mockup of Haskell IDE

Feedback 1: Haskell syntax is confusing

Prototype 2: Toy implementation in Typescript & Turbine

Feedback 2: Turbine is confusing

Prototype 3: Toy implementation in React (photo below)

Feedback 3: Makes sense but how does it...?

Compose, the React Hook & Backend-as-a-Service

That's some real progress: from an obscure programming language & new IDE to the world's most popular programming language & framework that can be used with any IDE! It's so obvious in retrospect that it begs the question: why we didn't simply start with a React hook?

Screenshot from 2021-09-20 13-49-28.png

Well, we did consider it many months ago (credit to Dave Fontenot for initially suggesting it), but rejected it because we couldn't see how to do it in a way that respected our distributed FRP semantics. And it seemed like Firebase (& its increasing number of friends) successfully serve that niche. However, after building the first couple of toy prototypes, we finally saw how the essence of Compose could fit snugly into React in a way that is differentiated from those other offerings. (Thanks to Aidan Cunniffe and Chet Corcos for pushing me in this direction.)

Beyond that super simple chat app, Steve also rebuilt the Rails demo blog app in Compose/React. In both cases 90% of the code is regular old React, and the remaining 10% is Compose. And the Compose code doesn't feel so magical, because it looks a lot like the useReducer hook. The Compose version is just useRealtimeReducer.

But does it...?

People seem intrigued with these demos but are distracted by a number of practical questions:

  1. How do you make this fast when the data gets big?