Notion Labs, Inc
March 2019 - Present
16 employees → 500+ employees
3 engineers → 100+ engineers
Blog posts:
-
The data model behind Notion’s flexibility, our first engineering blog post, in which I describe the fundamentals of Notion’s data model, and how this both makes Notion flexible, but also our challenges to wrangle all that flexible data.
Features, abbreviated:
-
Select and edit text across multiple blocks. Before, you could only select text inside a single block (eg, paragraph) at a time. This took a surprisingly large amount of work. Learned too much about ContentEditable.
-
Initial implementation of Mermaid rendering for code blocks.
-
Data model design for simple tables. I shared more about this design in the context of convergent editing in this Peritext discussion.
-
Helped make pages load a bit faster by lazy-loading more code, replacing the Memcached client, improving caching algorithms, etc.
-
Technical heavy lifting – build, deploy, type-checking, routing, hooks, API, etc – for the NextJS-powered marketing site. I wrote a note about observing NextJS in production.
-
The current iteration of the @-mention menu and the linking menu, link preview tooltips, as well as features like “Turn into page in...”.
-
The underline button.
-
Compound filters for databases. This thing:
I’m still proud of the arrow-key navigation for this menu.
-
Helped rewrite the Android app from React Native to Kotlin/Native. Redesigned our mobile native persistence model and built a migration system for SQLite.
-
Substantial improvements to client-side data durability. Learned too much about IndexedDB.
-
Built the current recursive HTML and PDF export systems during my first week.