Last Monday, Ellen Chisa and Paul Biggar unveiled Dark, a new web-based programming environment for creating backend web services. In these conversations, first with Ellen and then with Paul, we discuss how they met, conceived of the idea, iterated on the product, and what their long-term vision is for the product.
Dark is a web-based, structured editor with a data store built-in. It's code has a functional programming feel to it, but it also embraces what they call "functional/imperative". For example, their "error rail" allows programmers to defer handling nil-cases, much like a dynamically-typed language, but still keeps track of their existence in a monadic structure, like a statically-typed language, but without users having to learn anything about monads!
Paul often brings the discussion of Dark back to Fred Brook's distinction in _No Silver Bullet_ between essential and accidental complexity. I had fun in this interview diving into the Aristotelian roots of that distinction. We also debated the meaning of the terms "no-code" and "low-code", and whether either could be applied to Dark.
Dark removes accidental complexity around infrastructure and deployment. There is no separate step to deploy code in Dark. It's "deployless". Every single change to a Dark codebase is instantly (in 50ms, the time it takes to get your incremental change to the server) deployed to production servers. Of course this doesn't mean that every change you make is instantly deployed to _users_, but simply put on production servers behind a feature flag _ready_ to be rolled out at your discretion. Deployment, getting code running locally to run in production, is eliminated because all code is running on Dark's platform at all times. What remains is simply choosing when to release that code to users.
One of my favorite parts of Dark is how readable its editor makes functional programming, which I typically find intimidating and difficult to parse. The Dark editor saves all past HTTP requests to all routes, and then uses those values to provide "live data" for every intermediate expression in that route. A dense section of code becomes totally comprehensible by clicking through each expression and seeing actual past values that have inhabited that expression. It combines of the best parts of a debugger and sprinkled console.log statements, but without the downsides of either.
I'm glad that we had the opportunity in this conversation to dwell on some of the trade-offs of using Dark. Paul and Ellen are well aware of the risks customers face by moving their applications onto the Dark platform, and hope to alleviate those risks as much as possible. For example, they are looking into creating a legal structure that will make Dark open-source in the event that Dark shuts down.
Paul Biggar is best-known in the Valley for co-founding CircleCI, a tool for continuous integration and deployment. At heart, he's a compilers nerd: he got a PhD in compilers, worked on the JavaScript compiler at Mozilla, built CircleCI which is a compiler for deployment, and is now building Dark, a programming language, environment, and infrastructure compiler.
Ellen Chisa is passionate about helping people make things. She worked at Microsoft on Office Mobile, at Kickstarter, and started a company that built tools for travel agents, Lola.
The full transcript for this episode was sponsored by repl.it and can be found at: https://futureofcoding.org/episodes/043#full-transcript