Skip to content

Changelog

June 2, 2026

fix: link 1 file updated

Updated

  • Motivation When Studying
    Show diff
    diff --git a/src/content/docs/writing/motivation_when_studying.md b/src/content/docs/writing/motivation_when_studying.md
    index 3b1823c..959a16b 100644
    --- a/src/content/docs/writing/motivation_when_studying.md
    +++ b/src/content/docs/writing/motivation_when_studying.md
    @@ -1,17 +1,17 @@
     ---
     title: Motivation when Studying
     ---
     
     - Students fail when they are not motivated
       - When they don't see the meaning in their work[^1]
       - When they can't connect it to their goals[^2]
    -  - When they lack [freedom](/writing/autonomy-in-work)
    +  - When they lack [freedom](/writing/autonomy_in_work)
     
     - Motivation comes best from enjoying your work
       - Turn the writing everything and thinking about process in to a hobby
         - The book says artists and scientists are essentially information hobbyists.
         - Think Rivers Cuomo
     
     [^1]: Balduf, Megan. “Underachievement Among College Students.” Journal of Advanced Academics 20, no. 2 (February 2009): 274–94. <https://doi.org/10.1177/1932202X0902000204>.
     
     [^2]: Glynn, Shawn M., Gita Taasoobshirazi, and Peggy Brickman. “Science Motivation Questionnaire: Construct Validation with Nonscience Majors.” *Journal of Research in Science Teaching* 46, no. 2 (February 2009): 127–46. <https://doi.org/10.1002/tea.20267>.
docs: what we resist persists 1 file added · 2 files updated

Added

Updated

  • Levenshtein Distance
    Show diff
    diff --git a/src/content/docs/programming/algorithms/levenshtein-distance.md b/src/content/docs/programming/algorithms/levenshtein-distance.md
    index 2df5023..d421e1d 100644
    --- a/src/content/docs/programming/algorithms/levenshtein-distance.md
    +++ b/src/content/docs/programming/algorithms/levenshtein-distance.md
    @@ -24,54 +24,55 @@ Distance: `3`
     ## Dynamic Programming
     
     Let `d[i][j]` be the edit distance between:
     
     - the first `i` characters of string `a`
     - the first `j` characters of string `b`
     
     Base cases:
     
     ```text
     d[0][j] = j
     d[i][0] = i
     ```
     
     Those mean an empty string needs `j` insertions to become a prefix of length
    -`j`, and a prefix of length `i` needs `i` deletions to become empty.[^1][^2]
    +`j`, and a prefix of length `i` needs `i` deletions to become empty.[^1]
     
    -Recurrence:
    +Recurrence[^2]:
     
     ```py
     cost = 0 if a[i - 1] == b[j - 1] else 1
     
     d[i][j] = min(
         d[i - 1][j] + 1,        # delete
         d[i][j - 1] + 1,        # insert
         d[i - 1][j - 1] + cost  # substitute or match
     )
     ```
     
     The answer is `d[len(a)][len(b)]`.
     
     ## Complexity
     
     For strings of length `m` and `n`:
     
     - time: `O(mn)`
     - memory: `O(mn)` with the full table
     - memory: `O(min(m, n))` if only the previous row is kept
     
     Use the full table when you need the edit script. Use row compression when you
     only need the distance.
     
     ## Use Case
     
     Levenshtein distance is useful for:
     
     - spell correction
     - fuzzy search
     - typo tolerance
     - approximate matching
     - comparing biological or symbolic sequences
     
     [^1]: V. I. Levenshtein, "Binary Codes Capable of Correcting Deletions, Insertions, and Reversals", 1966 English translation of the 1965 Russian paper. <https://nymity.ch/sybilhunting/pdf/Levenshtein1966a.pdf>
    +
     [^2]: Robert A. Wagner and Michael J. Fischer, "The String-to-String Correction Problem", Journal of the ACM, 1974.
  • Motivation When Studying
    Show diff
    diff --git a/src/content/docs/writing/motivation_when_studying.md b/src/content/docs/writing/motivation_when_studying.md
    index 74b4a14..3b1823c 100644
    --- a/src/content/docs/writing/motivation_when_studying.md
    +++ b/src/content/docs/writing/motivation_when_studying.md
    @@ -1,16 +1,17 @@
     ---
     title: Motivation when Studying
     ---
     
     - Students fail when they are not motivated
    -    - When they don't see the meaning in their work[^1]
    -    - When they can't connect it to their goals[^2]
    -    - When they lack [[Autonomy in Work|freedom]]
    +  - When they don't see the meaning in their work[^1]
    +  - When they can't connect it to their goals[^2]
    +  - When they lack [freedom](/writing/autonomy-in-work)
     
     - Motivation comes best from enjoying your work
    -    - Turn the writing everything and thinking about process in to a hobby
    -        - The book says artists and scientists are essentially information hobbyists.
    -        - Think Rivers Cuomo
    +  - Turn the writing everything and thinking about process in to a hobby
    +    - The book says artists and scientists are essentially information hobbyists.
    +    - Think Rivers Cuomo
     
     [^1]: Balduf, Megan. “Underachievement Among College Students.” Journal of Advanced Academics 20, no. 2 (February 2009): 274–94. <https://doi.org/10.1177/1932202X0902000204>.
    -[^2]: Glynn, Shawn M., Gita Taasoobshirazi, and Peggy Brickman. “Science Motivation Questionnaire: Construct Validation with Nonscience Majors.” _Journal of Research in Science Teaching_ 46, no. 2 (February 2009): 127–46. <https://doi.org/10.1002/tea.20267>.
    +
    +[^2]: Glynn, Shawn M., Gita Taasoobshirazi, and Peggy Brickman. “Science Motivation Questionnaire: Construct Validation with Nonscience Majors.” *Journal of Research in Science Teaching* 46, no. 2 (February 2009): 127–46. <https://doi.org/10.1002/tea.20267>.

June 1, 2026

docs: direnv note 1 file added · 3 files updated

Added

Updated

  • Engineering
    Show diff
    diff --git a/src/content/docs/engineering/index.md b/src/content/docs/engineering/index.md
    index b528bd5..797ea1c 100644
    --- a/src/content/docs/engineering/index.md
    +++ b/src/content/docs/engineering/index.md
    @@ -1,10 +1,6 @@
     ---
     title: Engineering
    -sidebar:
    -    badge:
    -        text: Start
    -        variant: note
     ---
     
     Notes on Software Engineering as an industry and various tools and practices
     that are used.
  • Home
    Show diff
    diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx
    index e885f8c..ba37340 100644
    --- a/src/content/docs/index.mdx
    +++ b/src/content/docs/index.mdx
    @@ -1,17 +1,17 @@
     ---
    -title: Owais' Places
    +title: Welcome
     description: desertthunder's digital garden homepage
     ---
     
     Hi! My name is Owais and this is my digital garden. It's a collection of notes
     I've taken on topics that interest me. This includes a lot of engineering and
     programming notes that I've taken (and continue to take) throughout my career
     and while working on personal projects. My hope is that someone learns something
     new or finds some wisdom that resonates with them.
     
     Digital gardens fascinated me for a long time. I miss the days of stumbling upon
     the [odd personal site](https://tilde.town/~dozens/sofa/) and want to be a part of
     bringing that back. I've tried keeping gardens in various iterations with tools
     like notion and even google drive, but nothing has been quite as consistent as a
     combination of [Obsidian](https://obsidian.md/) on my phone, [Neovim](https://neovim.io/)
     on my computer, and [Astro](https://astro.build/) for publishing.
  • Programming
    Show diff
    diff --git a/src/content/docs/programming/index.md b/src/content/docs/programming/index.md
    index 4720e5f..e093a0d 100644
    --- a/src/content/docs/programming/index.md
    +++ b/src/content/docs/programming/index.md
    @@ -1,30 +1,23 @@
     ---
     title: On Programming
    -sidebar:
    -    badge:
    -        text: Start
    -        variant: note
    -
     ---
     
     This will contain notes related to programming languages I've
     "learned" or am learning. Can you ever really know a
     programming language top to bottom unless you wrote it?
     
     ## Proficiencies
     
    +Updated June 2026
    +
     - TypeScript
     - Python
     - Java
     - Ruby
     - Go
    -
    -## Languages to Learn
    -
    -As of May 2024, these are languages that are on my radar to learn:
    -
    -- C++
    +- Dart
     - Elixir
    +- Gleam
     - Rust
    -- Elm
    -  - or Gleam
    +- F#
    +- OCaml

May 31, 2026

docs: BEAM me up 2 files added

May 29, 2026

docs: add Levenshtein distance algorithm notes 1 file added

May 26, 2026

docs: atproto oauth spec notes 6 files added · 1 file updated

Updated

  • Atproto
    Show diff
    diff --git a/src/content/docs/engineering/atproto/index.md b/src/content/docs/engineering/atproto/index.md
    index 1311215..41487f0 100644
    --- a/src/content/docs/engineering/atproto/index.md
    +++ b/src/content/docs/engineering/atproto/index.md
    @@ -28,83 +28,84 @@ The AT Protocol uses a layered architecture:
     └─────────────────────────────────────────────────┘
     ```
     
     ### Identity
     
     - **DIDs (Decentralized Identifiers)**: Persistent identifiers (e.g., `did:plc:abc123`) that remain stable across server migrations.
     - **Handles**: Human-readable names (e.g., `@alice.bsky.social`) that resolve to DIDs via DNS or HTTP.
     
     ### Personal Data Servers (PDS)
     
     Every user's data lives in a **Personal Data Server**.
     
     A PDS:
     
     - Stores the user's repository (a signed, Merkle-tree-based data structure).
    -- Handles authentication and authorization.
    +- Handles [OAuth authentication and authorization](/engineering/atproto/oauth).
     - Syncs data to relays and indexers.
     
     ### Relay (BGS)
     
     Relays aggregate data from many PDSs into a unified firehose, enabling:
     
     - Efficient indexing for search and discovery.
     - Feed generators to access content across the network.
     
     ### App View
     
     An **App View** consumes the firehose and provides application-specific APIs. For example, the Bluesky app view provides the social networking experience.
     
     ## Data Model
     
     ### Repositories
     
     A **repository** is a user's complete data store, structured as a [Merkle Search Tree (MST)](/engineering/atproto/mst).
     
     - **Records**: Individual data items (posts, likes, follows) stored as [DAG-CBOR](/engineering/atproto/cbor).
     - **Collections**: Namespaced groups of records (e.g., `app.bsky.feed.post`).
     - **Commits**: Signed snapshots of the repository state.
     
     ### Lexicons
     
     **Lexicons** are JSON schemas that define:
     
     - Record types and their fields.
     - XRPC methods (HTTP-like RPC calls).
     - Subscriptions for real-time data.
     
     Example Lexicon ID: `app.bsky.feed.post`
     
     ### AT-URIs
     
     Records are addressed using **AT-URIs**:
     
     ```sh
     at://did:plc:abc123/app.bsky.feed.post/3jqw2f7
     ```
     
     Format: `at://<authority>/<collection>/<rkey>`
     
     ## Key Technologies
     
    -| Component                                    | Purpose                                         |
    -| -------------------------------------------- | ----------------------------------------------- |
    +| Component                             | Purpose                                         |
    +| ------------------------------------- | ----------------------------------------------- |
     | [DAG-CBOR](/engineering/atproto/cbor) | Canonical binary serialization format           |
     | [MST](/engineering/atproto/mst)       | Content-addressed, verifiable key-value storage |
     | [CAR](/engineering/atproto/car)       | Archive format for repository export/sync       |
    -| CIDs                                         | Content identifiers linking to any data block   |
    -| XRPC                                         | HTTP-based RPC protocol for API calls           |
    +| CIDs                                  | Content identifiers linking to any data block   |
    +| XRPC                                  | HTTP-based RPC protocol for API calls           |
    +| [OAuth](/engineering/atproto/oauth)   | Client authorization and account authentication |
     
     ## Sync & Federation
     
     ### Repo Sync
     
     Repositories are synchronized using:
     
     1. **`com.atproto.sync.getRepo`**: Full repository export as a [CAR file](/engineering/atproto/car).
     2. **`com.atproto.sync.subscribeRepos`**: Real-time firehose of commits across the network.
     
     ### Event Stream
     
     The firehose emits events:
     
     - **Commit**: New or updated records.

May 25, 2026

refactor: migrate remaining mkdocs material directives to Asides from starlight 2 files added · 3 files moved · 2 files removed

Moved / renamed

Removed

  • Done
  • Submodality

May 20, 2026

docs: strategy pattern 1 file added

Added

May 17, 2026

feat: update description 1 file updated

Updated

  • Home
    Show diff
    diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx
    index 0d2eae4..e885f8c 100644
    --- a/src/content/docs/index.mdx
    +++ b/src/content/docs/index.mdx
    @@ -1,40 +1,26 @@
     ---
    -title: Desert Thunder's Digital Garden
    +title: Owais' Places
     description: desertthunder's digital garden homepage
     ---
     
    -import { Aside } from '@astrojs/starlight/components';
    -
    -<Aside type="caution" title="Currently Remodeling 🚧">
    -    I've very recently migrated this site from `mkdocs` to `astro/starlight`
    -    and am in the process of updating all of my notes. Please bear with me as
    -    some admonitions/callouts will be broken. You'll see a lot of `!!! info`,
    -    `!!! quote`, or `::: info`, `::: quote` etc. They'll be changed to be more
    -    like this block.
    -
    -    Some links will also be broken.
    -</Aside>
    -
     Hi! My name is Owais and this is my digital garden. It's a collection of notes
     I've taken on topics that interest me. This includes a lot of engineering and
    -programming notes that I've taken throughout my career and while working on
    -personal projects. My hope is that someone learns something new or finds some
    -wisdom that resonates with them.
    +programming notes that I've taken (and continue to take) throughout my career
    +and while working on personal projects. My hope is that someone learns something
    +new or finds some wisdom that resonates with them.
     
    -Digital gardens have been fascinating for me for a long time. I miss the days
    -of stumbling upon [information on an odd personal site](https://tilde.town/~dozens/sofa/)
    -on the internet and want to be a part of bringing that back. I've tried keeping
    -gardens in various iterations with tools like notion and even google drive, but
    -nothing has been quite as consistent as a combination of some plaintext editor
    -(VSCode & now Neovim) or
    -"[Knowledge IDE](https://dev.to/envoy_/obsidian-an-ide-for-your-brain-1bn7)"
    -like Obsidian.
    +Digital gardens fascinated me for a long time. I miss the days of stumbling upon
    +the [odd personal site](https://tilde.town/~dozens/sofa/) and want to be a part of
    +bringing that back. I've tried keeping gardens in various iterations with tools
    +like notion and even google drive, but nothing has been quite as consistent as a
    +combination of [Obsidian](https://obsidian.md/) on my phone, [Neovim](https://neovim.io/)
    +on my computer, and [Astro](https://astro.build/) for publishing.
     
     ## Inspiration
     
    -Top of the list is definitely the [Blue Book](https://lyz-code.github.io/blue-book/).
    -After starting a new python project and activating my virtual environment, I
    -pretty much always install mkdocs with the material theme. That site, while also
    -having some fantastic information, reminded me that I can just use mkdocs.
    +Top of the list is definitely the [Blue Book](https://lyz-code.github.io/blue-book/)
    +and the writing of [Maggie Appleton](https://maggieappleton.com/). She wrote a
    +phenomenal [essay](https://maggieappleton.com/garden-history) on the history & ethos
    +of digital gardens.
     
     Also, take a look at my notes on [cultivating](/writing/cultivation) a garden.
docs: structuring css 1 file added

Added

May 16, 2026

May 11, 2026

docs: golden tests 1 file added

Added

May 7, 2026

docs: di 3 files added
docs: flutter 3 files added

Added

docs: add constellation notes 1 file added
chore: adjust base url 14 files updated

Updated

  • Books
    Show diff
    diff --git a/src/content/docs/books.md b/src/content/docs/books.md
    index 85fadc0..39758a6 100644
    --- a/src/content/docs/books.md
    +++ b/src/content/docs/books.md
    @@ -1,12 +1,12 @@
     ---
     title: Books
     sidebar:
         badge:
             text: Start Here
             variant: success
     ---
     
     Links to notes I've taken on books.
     
    -1. [How to Take Smart Notes](/garden/writing/book-ahrens-2017)
    -2. [How to Be Perfect](/garden/philosophy/book-schur-2023)
    +1. [How to Take Smart Notes](/writing/book-ahrens-2017)
    +2. [How to Be Perfect](/philosophy/book-schur-2023)
  • Atproto
    Show diff
    diff --git a/src/content/docs/engineering/atproto/index.md b/src/content/docs/engineering/atproto/index.md
    index 7e1e465..1311215 100644
    --- a/src/content/docs/engineering/atproto/index.md
    +++ b/src/content/docs/engineering/atproto/index.md
    @@ -46,73 +46,73 @@ A PDS:
     ### Relay (BGS)
     
     Relays aggregate data from many PDSs into a unified firehose, enabling:
     
     - Efficient indexing for search and discovery.
     - Feed generators to access content across the network.
     
     ### App View
     
     An **App View** consumes the firehose and provides application-specific APIs. For example, the Bluesky app view provides the social networking experience.
     
     ## Data Model
     
     ### Repositories
     
    -A **repository** is a user's complete data store, structured as a [Merkle Search Tree (MST)](/garden/engineering/atproto/mst).
    +A **repository** is a user's complete data store, structured as a [Merkle Search Tree (MST)](/engineering/atproto/mst).
     
    -- **Records**: Individual data items (posts, likes, follows) stored as [DAG-CBOR](/garden/engineering/atproto/cbor).
    +- **Records**: Individual data items (posts, likes, follows) stored as [DAG-CBOR](/engineering/atproto/cbor).
     - **Collections**: Namespaced groups of records (e.g., `app.bsky.feed.post`).
     - **Commits**: Signed snapshots of the repository state.
     
     ### Lexicons
     
     **Lexicons** are JSON schemas that define:
     
     - Record types and their fields.
     - XRPC methods (HTTP-like RPC calls).
     - Subscriptions for real-time data.
     
     Example Lexicon ID: `app.bsky.feed.post`
     
     ### AT-URIs
     
     Records are addressed using **AT-URIs**:
     
     ```sh
     at://did:plc:abc123/app.bsky.feed.post/3jqw2f7
     ```
     
     Format: `at://<authority>/<collection>/<rkey>`
     
     ## Key Technologies
     
     | Component                                    | Purpose                                         |
     | -------------------------------------------- | ----------------------------------------------- |
    -| [DAG-CBOR](/garden/engineering/atproto/cbor) | Canonical binary serialization format           |
    -| [MST](/garden/engineering/atproto/mst)       | Content-addressed, verifiable key-value storage |
    -| [CAR](/garden/engineering/atproto/car)       | Archive format for repository export/sync       |
    +| [DAG-CBOR](/engineering/atproto/cbor) | Canonical binary serialization format           |
    +| [MST](/engineering/atproto/mst)       | Content-addressed, verifiable key-value storage |
    +| [CAR](/engineering/atproto/car)       | Archive format for repository export/sync       |
     | CIDs                                         | Content identifiers linking to any data block   |
     | XRPC                                         | HTTP-based RPC protocol for API calls           |
     
     ## Sync & Federation
     
     ### Repo Sync
     
     Repositories are synchronized using:
     
    -1. **`com.atproto.sync.getRepo`**: Full repository export as a [CAR file](/garden/engineering/atproto/car).
    +1. **`com.atproto.sync.getRepo`**: Full repository export as a [CAR file](/engineering/atproto/car).
     2. **`com.atproto.sync.subscribeRepos`**: Real-time firehose of commits across the network.
     
     ### Event Stream
     
     The firehose emits events:
     
     - **Commit**: New or updated records.
     - **Handle**: Handle changes.
     - **Identity**: DID document updates.
     - **Tombstone**: Account deletions.
     
     ## References
     
     - Official protocol specifications covering identity, data, and networking layers.
       [AT Protocol Specification](https://atproto.com/specs)
  • Home
    Show diff
    diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx
    index 4e65215..0d2eae4 100644
    --- a/src/content/docs/index.mdx
    +++ b/src/content/docs/index.mdx
    @@ -25,16 +25,16 @@ Digital gardens have been fascinating for me for a long time. I miss the days
     of stumbling upon [information on an odd personal site](https://tilde.town/~dozens/sofa/)
     on the internet and want to be a part of bringing that back. I've tried keeping
     gardens in various iterations with tools like notion and even google drive, but
     nothing has been quite as consistent as a combination of some plaintext editor
     (VSCode & now Neovim) or
     "[Knowledge IDE](https://dev.to/envoy_/obsidian-an-ide-for-your-brain-1bn7)"
     like Obsidian.
     
     ## Inspiration
     
     Top of the list is definitely the [Blue Book](https://lyz-code.github.io/blue-book/).
     After starting a new python project and activating my virtual environment, I
     pretty much always install mkdocs with the material theme. That site, while also
     having some fantastic information, reminded me that I can just use mkdocs.
     
    -Also, take a look at my notes on [cultivating](/garden/writing/cultivation) a garden.
    +Also, take a look at my notes on [cultivating](/writing/cultivation) a garden.
  • Aristotle Problem
    Show diff
    diff --git a/src/content/docs/philosophy/aristotle-problem.md b/src/content/docs/philosophy/aristotle-problem.md
    index 1e4cdab..1b58c8b 100644
    --- a/src/content/docs/philosophy/aristotle-problem.md
    +++ b/src/content/docs/philosophy/aristotle-problem.md
    @@ -5,16 +5,16 @@ title: Aristotle's Problem Domain
     Aristotle's problem domain was trying to define[^1] what makes a person good:
     
     1. What **qualities** they ought to have?
     2. How much should they have?
     3. Is everyone capable of having them?
     4. How do we get them?
     5. What does having them look like?
     
     - The end goal is happiness (eudaimonia/flourishing)
         - To do so we need virtues (things that make us good at being human)
     - We're born with potential to get virtues
         - And a natural aptitude towards some
         - We become virtuous by doing virtuous things (habitual)
     
     [^1]: Schur, Michael. How to Be Perfect: A Foolproof Guide to Making the Correct Moral Decision in Every Situation You Ever Encounter Anywhere on Earth, Forever.
    -First Simon&Schuster hardcover edition, Simon & Schuster, 2022. ([source](/garden/philosophy/book-schur-2023))
    +First Simon&Schuster hardcover edition, Simon & Schuster, 2022. ([source](/philosophy/book-schur-2023))
  • Bentham Scale
    Show diff
    diff --git a/src/content/docs/philosophy/bentham-scale.md b/src/content/docs/philosophy/bentham-scale.md
    index e08af64..896fe3a 100644
    --- a/src/content/docs/philosophy/bentham-scale.md
    +++ b/src/content/docs/philosophy/bentham-scale.md
    @@ -1,17 +1,17 @@
     ---
     title: Bentham's Scale
     ---
     
     - Intensity
     - Duration
     - Certainty
     - Propinquity (how soon it will happen)
     - Fecundity (how much pleasure)
     - Purity ($\frac{Pleasure}{Pain}$)
     - Extent (how many people benefit)
         - If you're acting publicly, spread as much pleasure you can
     
     ## Backlinks
     
    -1. [How to Be Perfect](/garden/philosophy/book-schur-2023)
    -2. [The Trolly Problem](/garden/philosophy/trolley-problem)
    +1. [How to Be Perfect](/philosophy/book-schur-2023)
    +2. [The Trolly Problem](/philosophy/trolley-problem)
  • Book Schur 2023
    Show diff
    diff --git a/src/content/docs/philosophy/book-schur-2023.mdx b/src/content/docs/philosophy/book-schur-2023.mdx
    index cda3c7b..7ac570f 100644
    --- a/src/content/docs/philosophy/book-schur-2023.mdx
    +++ b/src/content/docs/philosophy/book-schur-2023.mdx
    @@ -12,57 +12,57 @@ Written by the venerable Michael Schur, creator of Parks & Recreation and of cou
     <Aside type="tip" title="Ethical Dilemma? Ask yourself..." icon='star'>
         1. What are we doing?
         2. Why are we doing it?
         3. Is there something we could do that’s better?
         4. Why is it better?
     </Aside>
     
     ---
     
     Everything has an ethical undercurrent and everything we do affects somebody
     
     Failure in trying to do the right thing is inevitable
         - But trying means we care
     
     Virtue ethics - what makes a person good or bad?
    -    - [Aristotle](/garden/philosophy/aristotle-problem) wrestled with this
    +    - [Aristotle](/philosophy/aristotle-problem) wrestled with this
     
     Brilliant instructors and wise friends are very important
     
     The Golden mean/goldilocks rule is that there is a spectrum that is like a see saw for virtues. If we veer to far towards one extreme, the see saw becomes imbalanced.
         - *ex.* Mildness is the golden mean of anger
         - Very challenging to define
     
     An excess of a virtue can harm the people around you
     
     If we don't take stock of our virtues, we can find ourselves moving towards extremes and these aspects can "calcify."
     
     As you practice, it becomes effortless - Schur talks about how Steve Carrell & Amy Poehler were like that with their comedy
     
     The closer we get to a golden mean, the easier it is to find others.
         - Examples include kindness and generosity
     
     Religious zealots ignore cruelty as it is not a slight against god
     
     Knowledge is how we escape cruelty
     
     ---
     
     <Aside type="note" title="The Trolley Problem" icon='information'>
         Do you let the trolley kill five workers ahead of you or do you switch to the other track and let one worker die?
     
    -    Read more here: [link](/garden/philosophy/trolley-problem)
    +    Read more here: [link](/philosophy/trolley-problem)
     
         ---
     
         by Philippa Foot
     </Aside>
     
     ## Quotes
     
     <Aside type="note" title="Hope" icon="open-book">
         With enough work, no one is doomed to be forever deprived of magnanimity or courage or any other desirable quality,
         the way I’m doomed to get lost every time I walk around a parking garage looking for my car.[^1]
     </Aside>
     
     ---
  • Heuristic
    Show diff
    diff --git a/src/content/docs/philosophy/heuristic.md b/src/content/docs/philosophy/heuristic.md
    index 9990964..52e8d59 100644
    --- a/src/content/docs/philosophy/heuristic.md
    +++ b/src/content/docs/philosophy/heuristic.md
    @@ -1,10 +1,10 @@
     ---
     title: Heuristic
     ---
     
     # Heuristic
     
     - Enter an input and get an output (philosophical algorithm or function).
     - Gives us a rule of thumb for a certain scenario,[^1]  as a guideline for our behavior
     
    -[^1]: [How to Be Perfect](/garden/philosophy/book-schur-2023)
    +[^1]: [How to Be Perfect](/philosophy/book-schur-2023)
  • Trolley Problem
    Show diff
    diff --git a/src/content/docs/philosophy/trolley-problem.md b/src/content/docs/philosophy/trolley-problem.md
    index 7021f29..e940eb5 100644
    --- a/src/content/docs/philosophy/trolley-problem.md
    +++ b/src/content/docs/philosophy/trolley-problem.md
    @@ -1,24 +1,24 @@
     ---
     title: The Trolley Problem
     ---
     
     - The problems arise when circumstances change
         - What if we're at a station with the lever and don't have the same amount of information?
         - What if we know someone on the tracks?
         - What if we push someone over a bridge to slow down the train and save everyone on the tracks?
     - Utilitarianism
         - Branch of consequentialism (only thing that matters is results)
         - The best action is what makes people the most happy (greatest happiness principle)
         - Developed by British philosophers Bentham (wanted himself studied and preserved after death) and Mill (had a rough childhood
    -- [Bentham's Scale](/garden/philosophy/bentham-scale) is a way to quantify pleasure & pain (hedons & dolors - happiness points & sadness demerits)
    +- [Bentham's Scale](/philosophy/bentham-scale) is a way to quantify pleasure & pain (hedons & dolors - happiness points & sadness demerits)
     - Utilitarians believe all people's happiness matters equally
     - Correlation does not imply causation
         - Humans don't often know the consequences of their actions
     - Most human actions don't have all the information - before or after
     - Critiques of utilitarianism center on the wide differences between everybody's pleasure and pain
     - When our actions can cause pain and suffering as a result, utilitarianism fails to take into account our integrity
         - Advantage of utilitarianism is a straightforward distribution (those in need get the most)
     
     ## Source/Backlink
     
    -[How to Be Perfect](/garden/philosophy/book-schur-2023)
    +[How to Be Perfect](/philosophy/book-schur-2023)
  • Hindley Milner
    Show diff
    diff --git a/src/content/docs/programming/functional_programming/hindley_milner.md b/src/content/docs/programming/functional_programming/hindley_milner.md
    index d8454fe..f3c9100 100644
    --- a/src/content/docs/programming/functional_programming/hindley_milner.md
    +++ b/src/content/docs/programming/functional_programming/hindley_milner.md
    @@ -176,27 +176,27 @@ with Γ mapping variables to schemes. The important rules (up to `let`) are:
        - infer `Γ ⊢ e₁ : τ₁`, `Γ ⊢ e₂ : τ₂`,
        - assert `τ₁` must be `τ₂ -> β` for fresh `β`,
        - unify `τ₁` with `τ₂ -> β`, giving substitution `S`,
        - result type is `S β`.
     
     4. **Let**:
        For `let x = e₁ in e₂`:
     
        - infer `Γ ⊢ e₁ : τ₁`,
        - generalize `τ₁` to `σ = Gen(Γ, τ₁)`,
        - infer `Γ, x:σ ⊢ e₂ : τ₂`,
        - result type is `τ₂`.
     
     ## Algorithm W
     
    -See [Algorithm W](/garden/programming/functional_programming/algo-w)
    +See [Algorithm W](/programming/functional_programming/algo-w)
     
     ## Further Reading
     
     1. Bernstein, Max. “Damas-Hindley-Milner Inference Two Ways.” Max Bernstein, 15 Oct. 2024, <https://bernsteinbear.com/blog/type-inference/>.
     2. Diehl, Stephen. "Hindley-Milner Inference" Write You a Haskell. <https://smunix.github.io/dev.stephendiehl.com/fun/006_hindley_milner.html>.
     3. Tuhola, Henri. Hindley-Milner Type System/Algorithm W Study. <https://boxbase.org//entries/2018/mar/5/hindley-milner>.
     4. Hazelden, Phil. A Reckless Introduction to Hindley-Milner Type Inference. <https://reasonableapproximation.net/2019/05/05/hindley-milner.html>.
     
     [^1]: <https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system> "Hindley–Milner type system"
     [^2]: <https://www.cs.tufts.edu/~nr/cs257/archive/martin-odersky/hmx.pdf> "Type Inference with Constrained Types"
     [^3]: <https://people.eecs.berkeley.edu/~necula/Papers/DamasMilnerAlgoW.pdf> "Principal type-schemes for functional programs"
  • Autonomy In Work
    Show diff
    diff --git a/src/content/docs/writing/autonomy_in_work.md b/src/content/docs/writing/autonomy_in_work.md
    index 31eae5a..ea96df5 100644
    --- a/src/content/docs/writing/autonomy_in_work.md
    +++ b/src/content/docs/writing/autonomy_in_work.md
    @@ -1,9 +1,9 @@
     ---
     title: Autonomy in Work
     ---
     
     This occurs when we are able to break down our work in to small chunks and
     steer it in a direction that is most interesting to us. This removes the need
     for us to use willpower to get things done.[^ref]
     
    -[^ref]: [How to Take Smart Notes](/garden/writing/book-ahrens-2017) - P. 138
    +[^ref]: [How to Take Smart Notes](/writing/book-ahrens-2017) - P. 138
  • Book Ahrens 2017
    Show diff
    diff --git a/src/content/docs/writing/book-ahrens-2017.mdx b/src/content/docs/writing/book-ahrens-2017.mdx
    index 4e39ff5..19e6041 100644
    --- a/src/content/docs/writing/book-ahrens-2017.mdx
    +++ b/src/content/docs/writing/book-ahrens-2017.mdx
    @@ -1,103 +1,103 @@
     ---
     title: How to Take Smart Notes
     ---
     
     import { Aside } from '@astrojs/starlight/components';
     
     Two-Slip boxes in one markdown file: note and reference - notes extend and relate to other notes, not in isolation
     (one note can exist in different contexts - basically, we can understand how different ideas[^1])
     
    -Read, Think, Understand - then write your note (woops) - we have to [write to externalize our ideas](/garden/writing/write_to_learn)
    +Read, Think, Understand - then write your note (woops) - we have to [write to externalize our ideas](/writing/write_to_learn)
     
     Life requires context switching, and notes with an index can help me pick up where I left off in the thought process. This is important for my work, as I am a knowledge worker
     
     Strip the workflow of everything that can be considered unimportant (I should probably stop using Notion for note taking - only as content management)
     
     The author advises that we always have the tools at hand - pen & paper (anything to capture with)
     
     A journal is a "graveyard for thoughts", the slip box should be for notes[^2]
     
     Asking yourself what you should learn is a useless question - it's easier to do things with a clear view of the destination
         - Deliberate practice helps us become better at making this journey[^3]
     
     > Nothing counts other than writing.
     
     The main goal[^4] of notes is to convey the truth (publishable insight)
     
     Note types: Fleeting, Permanent, Project (-specific)
     
     In order to find a topic, you need to have studied a subject
         - This makes me think of an old interview of Alexisonfire, where George says to make music, you have to listen to music.
     
     > By focusing on what is interesting and keeping written track of *your own intellectual development*,
     > topics, questions and arguments will emerge from the material without force.
     
     Rewarding work starts the positive feedback loop
         - Writing provides the feedback portion (we're forced to assess if we're understanding the material)
    -[Mere Exposure Effect](/garden/writing/mere_exposure_effect):  If we do something a lot, we *think* we're good at it, even if we're not
    +[Mere Exposure Effect](/writing/mere_exposure_effect):  If we do something a lot, we *think* we're good at it, even if we're not
     
     Focused attention is not very long. New technology damages our ability to practice sustained attention (where we work on one thing at a time)
     
     Creativity requires keeping an open mind and being able to switch to a narrow, analytical approach
     
     Memo-ize memories - group in to bundles, rather than discrete facts
     
     "Mind Like Water" - get knowledge out of our short term memory
     
     Willpower is like muscles - requires rest and gets exhausted quickly but can be strengthened
     
     Hand writing facilitates understanding because it is slow - college students have to understand what they hear rather than copy it down
     
     Shorter, in your own words allows us to focus on patterns, frames, and categories of an excerpt
     
     Re-reading breeds familiarity, writing forces us to confront misunderstanding
     - Cramming is for short term retention, not for learning
     
     The brain prioritizes comfort and its own happiness (like ego in The Power of Now)
         - Writing was Richard Feynman's thinking process (think outside your brain)
     
    -Forgetting can sometimes be [done by our minds](/garden/writing/active_inhibition) as a filter so we don't get flooded with memories and associations (think join models in SQL)
    +Forgetting can sometimes be [done by our minds](/writing/active_inhibition) as a filter so we don't get flooded with memories and associations (think join models in SQL)
     
     Memory can be measured by storage and retrieval strength
         - Storage strength can't be improved
     
     Linking is key!
         - Keep an eye towards other notes and contexts such that you can build the matrix around things you're interested in
     
    -Contradictions, paradoxes and problems help us reassess pre-existing knowledge stored in the slip-box (corrects for the [Feature Positive Effect](/garden/writing/feature_positive_effect))
    +Contradictions, paradoxes and problems help us reassess pre-existing knowledge stored in the slip-box (corrects for the [Feature Positive Effect](/writing/feature_positive_effect))
     
     Remember that the slip-box is just a tool[^5]
     
    -[Worldly Wisdom](/garden/writing/worldly_wisdom): hanging life experiences on mental models
    +[Worldly Wisdom](/writing/worldly_wisdom): hanging life experiences on mental models
     
     Spaced repitition and active recall are important for information retention.
     
     One idea per permanent note - place limits so that they stay concise.
         - Structure (experiment) and restrictions (assess what is important) are necessary for creativity
     
     The brain prioritizes information that is recently acquired and with emotions attached to it
     
     Evolution works by trial & error, not planning[^6]
     
    -- [Motivation](/garden/writing/motivation_when_studying) is relational (students must identify with and see the purpose of their work)
    -    - And be [free](/garden/writing/autonomy_in_work)
    +- [Motivation](/writing/motivation_when_studying) is relational (students must identify with and see the purpose of their work)
    +    - And be [free](/writing/autonomy_in_work)
     
     Athletes are more motivated when they imagine the training it takes to win.[^7]
     
     Build new habits to replace old ones, don't force old habits away
    -    - The [goal of learning](/garden/writing/goal_of_learning) is to evolve
    +    - The [goal of learning](/writing/goal_of_learning) is to evolve
     
     ## My Routine/Takeaways
     
     Keep a pen & paper handy at all times (if anything, just to avoid opening your phone when in the middle of a book)
     
     Abandon the notion of making perfect notes. Do you think the multicolored shit people made in college is something that would have helped you? Why not just make art instead?
     
     When processing notes, open up the source with anything you've highlighted
         - *ex. the Kindle notes & highlights for this book*
     
     Many of my attitudes towards learning are not conducive to learning, but to accomplishing a very specific task.
     
     Turn the writing everything and thinking about process in to a hobby
     
     [^1]: Page 20
  • Goal Of Learning
    Show diff
    diff --git a/src/content/docs/writing/goal_of_learning.md b/src/content/docs/writing/goal_of_learning.md
    index c26e9fa..3bb72e6 100644
    --- a/src/content/docs/writing/goal_of_learning.md
    +++ b/src/content/docs/writing/goal_of_learning.md
    @@ -1,9 +1,9 @@
     ---
     title: Goal of Learning
     ---
     
     > The goal of learning is not to accumulate knowledge but about becoming a different person with a different way of thinking.
     
     The author is trying to say[^1] that we learn to grow, not collect.
     
    -[^1]: [How to Take Smart Notes](/garden/writing/book-ahrens-2017)
    +[^1]: [How to Take Smart Notes](/writing/book-ahrens-2017)
  • On Writing
    Show diff
    diff --git a/src/content/docs/writing/on_writing.md b/src/content/docs/writing/on_writing.md
    index 1cfdf25..86d07c0 100644
    --- a/src/content/docs/writing/on_writing.md
    +++ b/src/content/docs/writing/on_writing.md
    @@ -1,14 +1,14 @@
     ---
     title: On Writing
     sidebar:
         order: 1
         badge:
             text: Start
             variant: note
     ---
     
     This section has notes about topics related to writing stories and educational
     material. It includes information about creating a site like this, and the
     backbone of my notes, writing to learn and using a zettlekasten system.
     
    -Here's a seed: [On Cultivating a Digital Garden](/garden/writing/cultivation)
    +Here's a seed: [On Cultivating a Digital Garden](/writing/cultivation)
  • Write To Learn
    Show diff
    diff --git a/src/content/docs/writing/write_to_learn.md b/src/content/docs/writing/write_to_learn.md
    index 873dfbe..553b59e 100644
    --- a/src/content/docs/writing/write_to_learn.md
    +++ b/src/content/docs/writing/write_to_learn.md
    @@ -1,14 +1,14 @@
     ---
     title: Write to Learn
     ---
     
     When you write as you learn, you create a tangible outcome out of what you've read.[^ref]
     
     I think what inhibits me is that I want everything to be perfect and pristine,
     when in reality it's the substance that matters. Notes can be messy and disorganized,
     so long as you understand what you're putting in your brain.
     
     - Write down *anything* you think is helpful to understanding or need to remember
     - When you process, then you can create perfection (the structure is important)
     
    -[^ref]: [How to Take Smart Notes](/garden/writing/book-ahrens-2017)
    +[^ref]: [How to Take Smart Notes](/writing/book-ahrens-2017)

April 7, 2026

docs: ux section + narrative note 1 file added

Added