Starting Birch

2022-05-03

I've just started working on a new project called "Birch". You might consider it an iteration of the form app I introduced in Exploring: Forms and Languages

Birch is an editor/repl integrated with a production environment. Its goal is to as much as possible reduce the friction that goes into getting code running in the cloud. Instead of having to configure your editor, set up AWS keys and YAML, and commit & push to git, it'll be just a button to deploy with Birch. Think: direct manipulation of your production environment from your editor. With enough care and immutability, I don't think that's as scary as it sounds.

Here's a snapshot of the current state of Birch:

Picture of Birch's UI

Right now, it's just a draft UI. You can create a function by right-clicking on a 2 dimensional canvas. The idea is to add a button that deploys one of these functions to the cloud, at which point it immediately starts accepting calls as an API: either through HTTP or as an RPC issued by Birch's frontend. One of these functions running remotely will produce a stream of values that will get persisted and can be inspected within Birch itself. I haven't yet decided how to implement it yet, but you can think AWS Lambda operating on Kafka streams.

I expect there will be a lot of configurability and functionality lost this way. You won't be able to get htop on the machine running your code. You won't be able to operate on your existing database. The advantage, though, is that Birch can be completely configuration-free. For people who need a setup tailored to their computing needs, this might not work. But I'm betting that there is a market of people who either don't know how to set up a cloud production environment or don't want to go through the hassle. In particular I'm hoping this could help students or beginners without context of AWS build things on the cloud.

> What about Elderberry, the programming language you've been working on for the last few months?

It's been moved to the backburner. I think the long-term goal would be to extend Birch with first-class support for both Elderberry and Javascript. While hacking on Elderberry, I've been thinking about the concepts behind Birch without being able to get started on them without finishing the compiler. I just now realized that I could give them a shot with just Javascript.

So far, it's been super fun to have that immediate feedback of frontend coding. I can make things appear that never existed before! When implementing a typechecker, it's more like "This should clearly work like so but it just doesn't yet." Writing and designing this UI has felt much more creative!

I'm about to get into a 16 hour flight to Korea so let's see what the state of Birch is by the end of it 🙂