This is the zettelgarten of Spencer Saar Cavanaugh, an experimental knowledge graph blending the zettelkasten method with the spirit of digital gardening. The primary purpose of this zettelgarten is to cultivate knowledge in a public manner, and to provide an auditable intellectual substrate for published discourse (see Writing).
Content
Reading Notes
-
Common Sense by Thomas Paine
-
The Prince by Niccolo Machiavelli
-
Discourses on Livy by Niccolo Machiavelli
-
The Art of War by Niccolo Machiavelli
-
The Road to Serfdom by Friedrich Hayek
-
The Constitution of Liberty by Friedrich Hayek
-
The Use of Knowledge in Society by Friedrich Hayek
-
Progress and Poverty by Henry George
-
On the Nature of Things by Lucretius
-
The General Theory of Employment, Interest and Money by John Maynard Keynes
-
Discourse on the Origin and Basis of Inequality Among Men by Jean-Jacques Rousseau
-
The Federalist Papers by Publius
Canvassing
The following content is a discursive “canvassing” exercise intended to: process ideas and prime them for more formal publication; foreground thought processes in the spirit of auto-discourse (see A Primer on Auto-Discourse); garner feedback from peers; establish conceptual provenance for ideonomic archiving purposes.
- Notes on Active Discursive Efforts
- Notes on the Distinction between Theoretical and Applied Governance
- Notes on Extitutional Theory and Progressive Protocolization
- Notes on Keynes, Hayek, and Fiscal Protocols
- Notes on Experimental Zettelkasten Methodology
- Notes on Methodology for Communities of Practice
- Notes on an Ethical Hermeneutics of Machiavelli
- Notes on Experimental Zettelkasten Methodology, Part 2
- Intimations of a Post-Machiavellian Moral-Tactical Calculus
- Considerations on Delegate Agents
- Intimations of a Post-Machiavellian Moral-Tactical Calculus, Part 2
- Progress on the Development of Runique
Psychocartography Notes
The following notes were taken by hand in 2019 as an inquiry into how ideas and values can be mapped. For more information about the nature of this inquiry, see A Rhapsody on Neurodiversity. In 2024, they were scanned and uploaded to Arweave, and PDF links are listed below.
Scoping Documents
These documents are generated programmatically via AI, according to frameworks and directives I provide (see Scoping Document Framework). They serve as preliminary structural outlines for projects, as points of departure for more intentional refinement.
Methodology
File Naming
Reference Note Format
“r-AuthorInitials-TitleInitials-1” or “r-JK-GT-1”
For example, the first note made primarily in reference to John Maynard Keynes’ General Theory would be r-JK-GT-1, the second would be r-JK-GT-2, etc. See this Reddit post for more information.
This method permits the interstitial inclusion of recursive reference notes, along the lines of folgezettel. For example, note r-JK-GT-1a could be made in reference to r-JK-GT-1, perhaps as a correction or an elaboration.
File Storage
Arweave is the primary storage solution for this zettelkasten. Arweave hashes function as the primary URIs for inline images, videos, and other media.
MALjimE4g6_dO_DOWwbA_LOPOCNQkjI2v2aL3oYuG3w
For example, the following markdown code renders the subsequent image in the browser:

Arweave hashes are also used as URIs in frontmatter for page metadata. For example, page banners are expressed as:
bannerURI: https://arweave.net/1OCpB8IN7kO8LiEOoutCLSSyGbHLHfhoJSQoloN_Y5g
Frontmatter
Below is the full annotated frontmatter for the pages on this site. Not all pages will use all of the fields, and many of the fields are not required. Additionally, some of the fields are specific to this particular Quartz site(such as the ‘quartzShowGraph’ field). Some field are still in development.
Arweave is the preferred permanent storage solution for this site’s static assets, with content accessible via Arweave-based URIs.
## Page Metadata
abstract: # Abstract of the page or publication
aiContribution: # Details about AI assistance in creating the content
aiModel: # The AI model used (e.g., Claude 3.5 Sonnet, GPT-4)
aiRole: # The role the AI played (e.g., Primary content generator, Research assistant)
aiScope: # Description of what the AI contributed
author: # Author of the page (visualized by 'AuthorName.tsx', 'LicenseInfo.tsx', and 'CitationGenerator.tsx')
authorURL: # URL of the author (visualized by 'LicenseInfo.tsx')
bannerURI: # URI of the banner image (Arweave is preferred; visualized by 'Banner.tsx'; converted into HTML 'og:image' tag and 'twitter:image' tag by 'Head.tsx')
date: # Date of the page (visualized by 'Date.tsx', 'LicenseInfo.tsx', and 'CitationGenerator.tsx')
degree: # Degree associated with the publication
department: # Department associated with the publication
doi: # DOI of the publication (visualized by 'CitationGenerator.tsx')
edition: # Edition of the publication
headDescription: # Description of the page (Converted into HTML meta description tag by 'Head.tsx')
headIcon: # URI of the icon image (Arweave is preferred; converted into HTML icon tag by 'Head.tsx')
hideComments: # Whether comments should be hidden on the page (true or false)
institution: # Institution associated with the publication
issue: # Issue number of the publication (visualized by 'CitationGenerator.tsx')
journal: # Journal of the publication (visualized by 'CitationGenerator.tsx')
keywords: # Keywords for the page or publication
language: en # Language of the publication
license: # License of the publication (visualized by 'LicenseInfo.tsx')
ogSiteName: # Open Graph site name for social media sharing
ogType: # Open Graph type for social media sharing
pages: # Page numbers of the publication (visualized by 'CitationGenerator.tsx')
publish: true # Whether the page is published (true or false)
publisher: # Publisher of the publication (visualized by 'CitationGenerator.tsx')
publisherLocation: # Publisher location of the publication (visualized by 'CitationGenerator.tsx')
quartzShowBacklinks: true # Whether the 'Backlinks.tsx' component is shown (true or false)
quartzShowBanner: # Whether the banner image is shown (true or false)
quartzShowCitation: true # Whether the 'CitationGenerator.tsx' component is shown (true or false)
quartzShowExplorer: true # Whether the 'Explorer.tsx' component is shown (true or false)
quartzShowFlex: true # Whether the 'FlexContainer.tsx' component is shown (true or false)
quartzShowGraph: true # Whether the 'Graph.tsx' component is shown (true or false)
quartzSearch: true # Whether the contents of the pages are indexed to be searchable by the 'Search.tsx' component (true or false)
quartzShowSubtitle: true # Whether the 'ArticleSubtitle.tsx' component is shown (true or false)
quartzShowTitle: true # Whether the 'ArticleTitle.tsx' component is shown (true or false)
quartzShowTOC: true # Whether the 'TableOfContents.tsx' component is shown (true or false)
sponsor: # Sponsor information if applicable
structuredData: # Structured data for SEO and machine readability
subtitle: # Subtitle of the page (visualized by 'ArticleSubtitle.tsx')
tags: # An array of tags for the page (visualized by 'TagList.tsx'; supports sub-tags)
title: # Title of the page (visualized by 'ArticleTitle.tsx', 'LicenseInfo.tsx', and 'CitationGenerator.tsx'; converted into HTML 'title' tag by 'Head.tsx')
twitterCard: # Twitter card type for social media sharing
twitterCreator: # Twitter handle of the content creator
type: # Content type (e.g., Article, Writing, Scope)
url: # URL of the page (visualized by 'CitationGenerator.tsx')
uuid: # Unique identifier for the page
volume: # Volume number of the publication (visualized by 'CitationGenerator.tsx')
Frontmatter (Clean)
Feel free to copy and paste the following template into your new page.
abstract:
aiContribution:
aiModel:
aiRole:
aiScope:
author:
authorURL:
bannerURI:
date:
degree:
department:
doi:
edition:
headDescription:
headIcon:
hideComments:
institution:
issue:
journal:
keywords:
language:
license:
ogSiteName:
ogType:
pages:
publish: true
publisher:
publisherLocation:
quartzShowBacklinks: true
quartzShowBanner:
quartzShowCitation: true
quartzShowExplorer: true
quartzShowFlex: true
quartzShowGraph: true
quartzSearch: true
quartzShowSubtitle: true
quartzShowTitle: true
quartzShowTOC: true
sponsor:
structuredData:
subtitle:
tags:
title:
twitterCard:
twitterCreator:
type:
url:
uuid:
volume:
Customizations
- Add AuthorName.ts component.
- Add PublishDate.ts component.
- Add LicenseInfo.ts component.
- Add ArticleSubtitle component
- Configure Arweave sync functionality via Github workflows using protocol.land (docs).
- Add CitationGenerator component
- Support MLA, APA, IEEE, Harvard, Chicago citation styles
- Add FlexContainer component to hold LicenseInfo and CitationGenerator components
- Configure
- Configure custom frontmatter → HTML meta tag functionality
- Icon path
- OG image
- Description
- Canonical URL
- SEO keyword
- Configure limitations around search indexing, such that only pages with ‘quartzSearch: true’ in their frontmatter appear in inline search results.
- Configure custom global graph layout
- Tags in a fixed ring around the border of the rest of the graph.
- Monogram logo on background
- Add ImageModal component (This is a component that allows for the display of images in a modal window, with a caption and a link to the source.)
- [ ]
- [ ]