What I ended up building took me six days from idea to production.
To understand how, let’s go back to Johnson’s Where Good Ideas Come From.
Chapter 2, The Adjacent Possible, explains that good ideas rarely occur out of the blue. In fact, when they do, they rarely tend to be successful in the market, and are considered either to be wrong, or “ahead of their time”. Instead, good ideas are are often just one step away from what was previously possible — or a combination of established ideas that together form something new: an innovation.
Foam is very much an innovation borne out of The Adjacent Possible: It’s the ideas behind How to Take Smart Notes as interpreted by Roam Research, combined with my own personal experiences using Visual Studio Code and GitHub. So in the end, I didn’t need to invent much.
The Slow Hunch
Chapter 3, The Slow Hunch makes the case that good ideas are rarely a lightbulb moment, but a slowly evolving hunch, or a series of ideas that build on top of each other until reaching their final, innovative form.
In 2018, I wrote and published a serialised novel in a fashion that, in retrospect, is much like Foam. It was only after falling in and out of love with Roam that I realised the true power of these tools, when transposed outside of the software development context. So, Foam didn’t just come to me: it’s a natural conclusion (or at least a milestone) of a path I’ve been on for a while.
(In a mind-bending coincidence, this chapter also discusses the need for good note-taking in order to cultivate the slow hunch, and describes the tradition of Foam-like journals from the Commonplaces of English enlightenment and thinkers like John Locke, all the way to Tim Berners-Lee’s World Wide Web!)
🐢 Foam Stack
GitHub allows us to store, version and collaborate on information stored as text.
GitHub Pages allows us to publish that information (if you choose) by converting that text to HTML (Tim Berners-Lee’s turtle)
Visual Studio Code, besides being a world-class text editor, is also an amazing extensibility platform with its own extension ecosystem, further extended by NPM, world’s largest open source package repository.
Markdown is an authoring-friendly text format supported by all of the above tools, and besides its warts (no real specification! competing flavours! fuzzy semantics!), a commonly accepted interoperability surface for tools to read, write, and transform.
🖼 Software As Curation
Earlier this week, Geoffrey Litt wrote a piece, Foam: Software as Curation, where he asks a question:
We tend to think of software in terms of monolithic “apps.” But what if we thought about software design as a process of curating existing parts into a holistic user experience?
He also explains, in layman’s terms, Foam’s “mostly air” philosophy:
While Foam does install its own extension, most of the value comes from installing other existing extensions and choosing good default settings. For example, it installs a few extensions that provide a nicer Markdown writing experience, and that tweak lots of things about how Markdown docs link to each other. And it picks a color theme well suited to writing Markdown. I would have never come across this whole configuration on my own, but I’m glad that someone else figured it out for me.
The piece is very good (and not too rosy-eyed about Foam’s approach, either, which I appreciated), but it ascribes to me, the curator, too much prescience: I didn’t build Foam out of existing extensions because I have faith in Software as a Curation. I did so because it was the easiest way to get it done.
Hard things are hard. I, personally, have always been a big fan of the easy road, especially when the payoff of the work is uncertain, as it is with ideas. Building Foam by combining existing extensions was an act of prototyping, not a philosophy.