Not to take anything away from the work which is indeed useful but I found the article bizarre because of what references were used and what were omitted.
The author talks about Intermediate Representation and then goes on about biology without mentioning even once compilers. Things like LLVM IR and ML IR literally have the term IR in them and what the author is trying to do seems closer in spirit to those than anything else.
Then the actual modeling in the IR was done with the concept of Blocks. Which seems very similar to the concept of Blocks as used in Notion. And yet no reference to it either.
Author here. I chose the biology references for two reasons. 1) I love nature 2) It seemed to provide the most distant examples of IR from what most of us are familiar with.
Of course compilers are probably the most obvious example of Intermediate Representation and form the basis for much of the computer science we draw on any time we compose an IR in code. That, to me, made it less compelling for a feature in this brief essay. I like that my example of an IR in Swift was designed, while the biology examples of IR are not deliberately designed but rather landed upon during extremely chaotic evolution. That contrast compelled me to reference biology, instead of the more immediately adjacent body of work around compilers. Of course I’m not the best author… maybe I chose poorly.
Regarding Notion and blocks — I suspect Notion chose the block architecture because it is maximally agnostic (it is kind of an IR in its own right), allowing for rapid development of anything upstream or downstream of those blocks. Maybe one of their early team members was inspired in some way by the field of IR, or otherwise intuited this design.
5 comments
[ 3.0 ms ] story [ 17.3 ms ] threadThe author talks about Intermediate Representation and then goes on about biology without mentioning even once compilers. Things like LLVM IR and ML IR literally have the term IR in them and what the author is trying to do seems closer in spirit to those than anything else.
Then the actual modeling in the IR was done with the concept of Blocks. Which seems very similar to the concept of Blocks as used in Notion. And yet no reference to it either.
Of course compilers are probably the most obvious example of Intermediate Representation and form the basis for much of the computer science we draw on any time we compose an IR in code. That, to me, made it less compelling for a feature in this brief essay. I like that my example of an IR in Swift was designed, while the biology examples of IR are not deliberately designed but rather landed upon during extremely chaotic evolution. That contrast compelled me to reference biology, instead of the more immediately adjacent body of work around compilers. Of course I’m not the best author… maybe I chose poorly.
Regarding Notion and blocks — I suspect Notion chose the block architecture because it is maximally agnostic (it is kind of an IR in its own right), allowing for rapid development of anything upstream or downstream of those blocks. Maybe one of their early team members was inspired in some way by the field of IR, or otherwise intuited this design.