Principles for personal publishing

web frameworks


Decoupling user experience from data storage and data storage from CMS
why Notion comments are great (and better than Twitter comments)
save to arweave each time?
Give things for others to use
Principles for a CMS: has to be offchain (easy to add ideas and anything)
Check out arweave sites
Ben Franklin inspo
Tending to a garden
  • 1 wk, 1 mo, 1 yr projections
  • - incremental correctness. I don’t want to have to code to make that small adjustment. I don’t even want to have to log into Ghost or Wordpress and fiddle with layout. That friction means one less improvement and it adds up over time.
  • Design is how it works. Most people make the mistake of thinking design is what it looks like.
  • A goal here is for you to be able to copy my design and have faith that it’ll work wayyy down the road
  • Notion defaults to completely private (not just a draft), unlike Framer (and similar to Urbit). This is the right way forward. Let me add content uninhibited
Questions to shipping Notion and Super

My Goals

Important to treat these as distinct concepts

This blog is a forcing function to:


Make decisions


Learn new technologies

  • Elixir, Phoenix LiveView
  • Urbit
  • zk programming

Learn about new problems

Core tenets

  1. Discoverability: can people find my content easily and in different content networks? how open is the ecosystem?
  2. Ease of entry: can I add items easily and change format easily?
  3. Durability: will this break? Is the data portable in case it does? is the stack simple?

How it’s made should be obscured. And yet, how it looks should be familiar.

Nothing does this today. We need a decentralized data network. Assume I will get the framework wrong to begin with. What will the lowest opportunity cost be, with the fewest decisions to make? Notion and Super.

this means we need an unbundling of solutions. CMS different from web framework.

Forcing functions

Current stack and cost

After spending several days comparing different stacks, I reduced the number of tools I use to five:

1. CMS 2. Comment system
Free (if paired with Super, else $4/mo)
1. Web framework (Notion → web) 2. Content host
Subscriber form
1. Privacy-focused analytics 2. Uptime monitoring
$14/mo (100k pageviews)

If I hadn’t…

Pluggable data sources

  • Tumblr, Medium, Wordpress, Ghost, mirror… notion and super… there’s always another one (or one that breaks and goes obsolete
  • Super is breakable: no dates on these posts, etc

Extensibility and portability

Separation of data from platform. Freedom to exit. Low refactor cost.

  • Push-based consumption (RSS, Subscriber list)
  • No data lock-in for posts
  • No data lock-in for subscriber list
  • Features like comments and subscribe are isolated and upgradeable
  • Built on a developer community that will inevitably grow

Custom site

A custom site build with Phoenix provides lots of customizability, including email subscriptions via the built-in Swoosh mailer, so I can freely design new ways to consume content. I own my posts and my list of subscribers. All features can be isolated as mix dependences.

When combined with data on the permaweb, like Mirror’s external posts on Arweave, the data becomes composable as well - developers can build on top of it and customize their own means of consumption. Two fast-communities of developers fast-growing Elixir community


It makes sense to talk about Notion in three different ways here: as a drafting tool, as a CMS, and as a frontend.

As a frontend, we start running into problems. Custom domains are not supported, so you don’t benefit from the SEO and if you decide to switch to something else down the road, you lose it all. URLs don’t look great and are tied to Notion’s internal ids.

Simplicity of Stack

  • Few technologies used. Brian lovins site anti example
  • No new database
  • Draft stage stack should be united with production stack


No new database is used here. I need to use something to create, edit, and sync drafts that also allows people to comment on them.

A huge benefit is having everything searchable in one place - drafts, published content, and more. Links to my published content are intermixed with links to private content. While I usually don’t need to search my public content, having my public and private brains in the same place feels like a step towards breaking down the barrier between them. And that goes back to the top goal: more clarity of mind.

Simplicity of Design

  • Easy to parse UX
  • Fewest visual changes possible between mobile and desktop
  • Design during comments should be the same as production

Discoverability and navigability

  • Can see the list of articles while reading one
  • Can navigate seamlessly and quickly between sites, if there are many
  • Good SEO
  • Maybe: taps into a network of content?

Super does a decent job at converting Notion documents into performant websites, using Vercel and SWR under the hood:



  • Allow public to work with me on an idea before it hits twitter
  • Allow friends to give me feedback on a draft before it hits internet

Ultimately, what matters most to me is reducing the friction to write, both for myself and for others to give me feedback. Notion gave me enough conviction to draft this blog post there, and the next steps become easier and less error-prone if they’re tied to Notion as well. Zero friction creation and transformation is hard to get right - the Notion team deserves a lot of credit here.



  1. Clarity: forces me to explain my thinking clearly
  2. **Life Philosophy:** forces me to think about my first principles, esp on work, products, introspection, relationships.
  3. Goals: document my goals and ask for help
  4. **Questions:** forces me to ask questions about the world (and receive answers)
  5. Life assessment: give me a birds eye view of my progress and time left to achieve goals
  6. **Integrates:** links to twitter, mirror, etc


  1. Radical simplicity or familiarity?
  2. Low cognitive overhead: easy to navigate, familiar UI
  3. Few centralized dependencies: should not be a litany of technologies, where each can become obsolete. Anti example


  1. It should be built simply, but the compilation from simple to functional doesn’t need to be?
  2. It doesn’t have to appear simple; it should just appear familiar if it isn’t
  3. Feedback enabled?: it could skip accepting user feedback and just link to twitter/medium for public comments. Private comments - not sure
  4. **Gimmicky?:** Gimmicks get old and make me want to switch eventually
  5. Easy to find collaborators e.g. comments and pull requests. Can use gdocs etc


  1. Easy to get revisions from others in draft mode
  2. **Incremental correctness-** should allow me to play with new ideas
  3. Easy to navigate: table of contents, maybe a sidebar
  4. Great SEO
  5. Fast page load
  6. Defensive - bad actors shouldn’t be able to spam or run up bill too high
  7. Easy to comment on
    1. Easy to comment on privately too
  8. **Composable?**: people should be able to build on top of it or program around it (e.g. the philosophies)
  9. **Subscribe-able:** anyone should be able to get email updates
  10. Categorization - e.g. entrepreneurship, principles
  11. **Simple build:** few dependencies and lines of code
  12. **Easy or unnecessary to upgrade:** should be easy to fix bugs in 5 years, or managed or permaweb
    1. Open source: other people can improve it
  13. **Easy to visit:** can use alexatallah.com or an eth site
  14. Easy import: should accept easy new entries pulled from my Day One, and should be easy to edit overall
  15. **Portability:** posts should be written in markdown and portable to other platforms
    1. Feedback doesn’t need to be portable

Gimmick Ideas

  1. Real-time updates (Phoenix LiveView)
  2. ENS names of users on page
  3. NFTs I own
  4. Decentralized database

Distinction from twitter

  1. Open source
  2. Bad actor resistant
  3. Easy export
  4. Simple look
  5. Resilience (in case company fails)
  6. Gimmicky

Distinction from Mirror

  1. Feedback
  2. Resilience
  3. Open source
  4. Gimmicky