Dustin's Quarry log
06.05.26
-
Are.na / visuals-zwag4_oe2ie (3)Wassily Kandinsky, Succession, 1935Véra Molnar | 9 carrés rouges, 199168e0eff275635f0671262cbfcaa72df9.jpg (960×1838)
- ▾ Are.na / visuals-zwag4_oe2ie (3)
-
Wassily Kandinsky, Succession, 1935 img
-
Véra Molnar | 9 carrés rouges, 1991 img
-
68e0eff275635f0671262cbfcaa72df9.jpg (960×1838) img
-
Are.na / map-ledger-diagram (1)4715afe93374f019ce8f9d904fe993a0.png
- ▾ Are.na / map-ledger-diagram (1)
-
4715afe93374f019ce8f9d904fe993a0.png img
-
Readwise / How To Read More
(1)
- GitHub / quarry (3)
-
fix: normalize v3 arena block bodies
-
fix: move ledger expansion interactions client-side
-
fix: make ledger arrow navigation instant
06.04.26
-
Are.na / listen-ufsrc4u-z0i (1)NTS Guide to: Armadillo World Headquarters 1st June 2026
- ▾ Are.na / listen-ufsrc4u-z0i (1)
-
NTS Guide to: Armadillo World Headquarters 1st June 2026 img
-
Are.na / visuals-zwag4_oe2ie (1)olddesignshop_russellcalendar1916.jpg
- ▾ Are.na / visuals-zwag4_oe2ie (1)
-
olddesignshop_russellcalendar1916.jpg img
-
Are.na / dev-otcejg6g3nk (4)Dreaming: Better memory for a more helpful ChatGPT | OpenAIPoke on X: "Say hi to the new Poke! 🌴 Now officially approved by Apple to text on Apple Messages. As the first and only AI agent. Chat now: https://t.co/VIWYU64dUI https://t.co/AtZxupI2Ji" / XInstallation - Plannotator DocsHazAT/glimpse: Native macOS micro-UI for scripts and agents — sub-50ms WKWebView windows with bidirectional JSON communication
- ▾ Are.na / dev-otcejg6g3nk (4)
-
Dreaming: Better memory for a more helpful ChatGPT | OpenAI img
-
Poke on X: "Say hi to the new Poke! 🌴 Now officially approved by Apple to text on Apple Messages. As the first and only AI agent. Chat now: https://t.co/VIWYU64dUI https://t.co/AtZxupI2Ji" / X img
-
Installation - Plannotator Docs img
-
HazAT/glimpse: Native macOS micro-UI for scripts and agents — sub-50ms WKWebView windows with bidirectional JSON communication img
-
Readwise / Too Loud a Solitude
(9)
-
-
-
Readwise / Gotham: A History of New York City to 1898
(2)
- GitHub / quarry (5)
-
feat: add source-specific poll intervals
-
fix: ingest all owned variety playlists
-
refactor: tune ledger log rendering
-
feat: ingest spotify playlist additions
-
feat: show obsidian note diffs
06.03.26
-
Are.na / dev-otcejg6g3nk (1)Elixir v1.20 released: now a gradually typed language
- ▾ Are.na / dev-otcejg6g3nk (1)
-
Elixir v1.20 released: now a gradually typed language img
-
Are.na / Retrieval Hypermedia (2)Plaisant1996LifeLines.pdfThe Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations - Visual Languages, 1996. Proceedings., IEEE Symposium on
- ▾ Are.na / Retrieval Hypermedia (2)
-
Plaisant1996LifeLines.pdf img
-
The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations - Visual Languages, 1996. Proceedings., IEEE Symposium on img
-
Are.na / map-ledger-diagram (2)original-miniature-patterns-for-hand-weaving_page_26.pngOscillons- Ben F. Laposky, 1952-56
- ▾ Are.na / map-ledger-diagram (2)
-
original-miniature-patterns-for-hand-weaving_page_26.png img
-
Oscillons- Ben F. Laposky, 1952-56 img
-
Are.na / gallery-2l1eb_62glk (1)San Antonio Spurs, 1999
- ▾ Are.na / gallery-2l1eb_62glk (1)
-
San Antonio Spurs, 1999 img
-
Readwise / Too Loud a Solitude
(2)
-
Readwise / Spatial Hypertext: Designing For Change
(5)
-
-
- Obsidian (2)
-
In quarry, you can respond to an entity by hitting the letter R. A response can be a set of entities and in response that I can select any existing entities in quarry to add to my response.
-
-
A response needs ownership a.k.a. what user performed it. As of now the platform is single player. However, other users and AI agents can interact with it via responses.
-
-
This also begins to touch upon permissions. You can imagine that permissions are set at the ingestion source. So there is a public version of quarry, which is more restricted in what it presents and is read only, and then I suppose types of users, although in a V one, it would simply be those with accounts have access to private information. And I guess my user, the admin of this given quarry, has even more privileges. Another consideration is permissions on replies.
-
-
On agents, I may have written this down somewhere else, but just to put it here, an agent can be involved with a keyword, either in an ingestion source for via replies.
-
-
Oh also for Spotify ingestion - can render it like the latest arena UI in the platform.
-
-
Any integrations can have their own first party actions attached to entities so if any given API exposes certain create permissions, and the user is launched into the integration they can interact that way. For example, using either arena or Spotify to add songs to playlist that are in someone’s quarry. People can theoretically also create their own custom actions that they can perform on entities.
-
Rough summary of #quarry
-
-
`quarry` is a personal lab notebook: an append-mostly timeline that ingests and organizes knowledge/activity from external sources like Are.na, Readwise Reader, Obsidian, and GitHub.
-
-
At a high level, it:
-
-
- Pulls content from source APIs via background pollers and explicit backfill tasks.
-
- Normalizes everything into a shared `entries` ledger with common fields like `source`, `type`, `occurred_at`, `title`, `body`, and `raw_payload`.
-
- Stores source-specific configuration, sync cursors, raw API payloads, and derived metadata in Postgres.
-
- Provides Phoenix LiveView interfaces for browsing entries (interface still in development)
-
- Uses idempotent upserts keyed by `(source, source_id)` so ingestion can safely retry and backfill.
-
- Keeps the UI fast and resilient by querying the local database instead of calling upstream APIs during page render.
-
-
Technical stack/choices:
-
-
- **Elixir/Phoenix 1.8** for the web app.
-
- **Phoenix LiveView** for interactive server-rendered UI.
-
- **Postgres + Ecto** as the durable ledger/read model.
-
- **GenServer pollers** for periodic ingestion.
-
- **Mix tasks** for explicit backfill and source configuration.
-
- **Req** for HTTP API clients.
-
- **PubSub** to refresh LiveViews when new entries arrive.
-
- **Postgres JSONB/raw payload storage** for preserving source data.
-
- **Postgres full-text search vector** prepared over entry title/body.
-
-
-
- GitHub / quarry (9)
-
feat: ingest obsidian daily note snapshots
-
refactor: rename app from wastebook to quarry
-
chore: update github repo refs to quarry
-
feat: make log view the main ledger interface
-
fix: avoid missing newly pushed github commits
-
fix: hydrate readwise parents during backfill
-
feat: add live system status bar
-
chore: use port 5433 for local postgres
-
chore: clarify direct-to-main workflow
06.02.26
-
Are.na / gallery-2l1eb_62glk (3)© Raymond DepardonMartin Luther King Jr., who led the procession of mourners at the funeral of Medgar Evers, is confronted by a Mississippi Highway Patrol Officer, 1963 © Ernest C. Withers – Courtesy Fahey/Klein GalleryMicha Bar-Am Parade, Beersheva
- ▾ Are.na / gallery-2l1eb_62glk (3)
-
© Raymond Depardon img
-
Martin Luther King Jr., who led the procession of mourners at the funeral of Medgar Evers, is confronted by a Mississippi Highway Patrol Officer, 1963 © Ernest C. Withers – Courtesy Fahey/Klein Gallery img
-
Micha Bar-Am Parade, Beersheva img
-
Are.na / visuals-zwag4_oe2ie (5)@marta___hdez1967-pistoletto.jpgcbdccbe2-1bcb-4ceb-9fd1-030a4c82e5b3.jpgEdward Fella,1994, Wedding inviteOops!
- ▾ Are.na / visuals-zwag4_oe2ie (5)
-
@marta___hdez img
-
1967-pistoletto.jpg img
-
cbdccbe2-1bcb-4ceb-9fd1-030a4c82e5b3.jpg img
-
Edward Fella,1994, Wedding invite img
-
Oops! img
-
Are.na / dev-otcejg6g3nk (2)The Conductor Rewrite: What They Changed to Make It FastSafe Ecto Migrations — Ecto SQL v3.14.0
- ▾ Are.na / dev-otcejg6g3nk (2)
-
The Conductor Rewrite: What They Changed to Make It Fast img
-
Safe Ecto Migrations — Ecto SQL v3.14.0 img
-
Readwise / Too Loud a Solitude
(4)
-
Readwise / Books are subjectivity-merging devices, not efficient information transfer devices (3)
-
Readwise / On Our API | Are.na Editorial (5)
-
-
-
Readwise / Benchmarking How Workflow Execution Scales on Postgres | DBOS (2)
-
Readwise / The Internal Family Systems Model Outline | IFS Institute (9)
-
-
- Obsidian (1)
-
#fiction
-
-
It was late March, or perhaps early April, when Hans arrived. There was the swing of the door, an exchange of words, and, after receiving his linens and key from the host, Hans stepped up the narrow staircase, returning the lobby to its previous quiet. Hans knew much of this place. He knew it was of the more affordable lodging in the heart of Amsterdam. He knew the staff to be agreeable and welcoming towards an extended stay. He even knew, by word of a partner at his firm whose sister had stayed the year before, that its café served, among many unremarkable dishes, an impressive Eggs Benedict. What Hans did not know, was that here, at the Hostel Vondelstraat, he would be murdered.
-
-
-
*So begins my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is from the point of view of Inspecteur Brouwer, visceral but scattered, and evidently missing whole sections of the story. The second, relying on an omniscient narrator, is much more coherent but significantly alters fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains serious misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
+
*This begins my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is from the point of view of Inspecteur Brouwer's journal entries, visceral but scattered, and evidently missing whole sections of the story. The second, relying on an omniscient narrator, is much more coherent but significantly alters fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. What follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
-
-
Our reports indicate that Hans was murdered in his room on the third floor of Hostel Vondelstraat, between 2 and 4pm on the sixteenth of May. This corroborates the host’s statement, that Hans had returned to the hostel that afternoon after a walk along the Herengracht from Brouwersgracht south toward Leidsestraat. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period surrounding time of death, except for the postman who did not enter beyond the lobby, dropped off a single package for the guest in room 5F (a collection of —) and has himself been questioned thoroughly enough to absolve suspicion. The host, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
+
May 20th
-
-
+
Hans Engelhardt was murdered in his room on the third floor of Hostel Vondelstraat, between three and five in the evening on the sixteenth of May. This corroborates the host’s statement, that Hans had returned to the hostel late that afternoon after a walk along the *Herengracht*. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period surrounding time of death, except for the postman who did not enter beyond the lobby, dropped off a single package for the guest in room 5F, a catalogue from a Rotterdam hardware supplier, and has himself been questioned thoroughly enough to absolve suspicion. The host, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
+
-
+
There is much to parse in the investigation. The host recalls that Mr. Engelhardt planned for an indefinite stay at the hostel, having provided enough funds to cover his stay through the end of June with a promise for more at that time. He did not have many preexisting acquaintances in this city, although it appears he became a regular at the Café Luxembourg where he befriended a number of patrons and the owner. This would potentially suggest a random act of violence, perhaps a robbery. But Mr. Engelhardt did not have possessions of note, and the method of murder and scene of the crime heavily imply a premeditated act. Who would want to kill this man?
-
+
-
+
-
+
Tomorrow, I meet with the wife of the deceased, who has arrived by train this morning from Heidelberg.
-
+
-
+
from Brouwersgracht south toward Leidsestraat
-
+
-
(More here)
-
-
The timing of Hans’ death was rather inconvenient for him.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
---
-
+
## Cutting room floor
-
+
-
+
It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains serious misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials
06.01.26
-
Are.na / dev-otcejg6g3nk (3)Web API | Spotify for DevelopersBenchmarking How Workflow Execution Scales on Postgres | DBOSOn Our API | Are.na Editorial
- ▾ Are.na / dev-otcejg6g3nk (3)
-
Web API | Spotify for Developers img
-
Benchmarking How Workflow Execution Scales on Postgres | DBOS img
-
On Our API | Are.na Editorial img
-
Are.na / visuals-zwag4_oe2ie (1)(1) Instagram
- ▾ Are.na / visuals-zwag4_oe2ie (1)
-
(1) Instagram img
-
Are.na / archive-mdnuqrmhvny (2)Books are subjectivity-merging devices, not efficient information transfer devicesare.na index viewer
- ▾ Are.na / archive-mdnuqrmhvny (2)
-
Books are subjectivity-merging devices, not efficient information transfer devices img
-
are.na index viewer img
-
Are.na / listen-ufsrc4u-z0i (1)Jungle - The Wave (Official Video) - YouTube
- ▾ Are.na / listen-ufsrc4u-z0i (1)
-
Jungle - The Wave (Official Video) - YouTube img
-
Are.na / Retrieval Hypermedia (2)sql-antipatterns-chapter-3-naive-treesHow to annotate literally everything
- ▾ Are.na / Retrieval Hypermedia (2)
-
sql-antipatterns-chapter-3-naive-trees img
-
How to annotate literally everything img
-
Readwise / Naive Trees
(9)
-
-
- Obsidian (11)
-
+
#fiction
-
+
-
It was late March, or perhaps early April, when Hans arrived. There was the swing of the door, an exchange of words, and, after receiving his linens and key from the host, Hans stepped up the narrow staircase, returning the lobby to its previous quiet. Hans knew much of this place. He knew it was of the more affordable lodging in the heart of Amsterdam. He knew the staff to be agreeable and welcoming towards an extended stay. He even knew, by word of a partner at his firm whose sister had stayed the year before, that its café served, among many unremarkable dishes, an impressive Eggs Benedict. What Hans did not know, was that here, at the Hostel Vondelstraat, he would be murdered.
-
-
-
*So begins the first draft of my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is deeply captivating, from the point of view of Captain —, though scattered and evidently missing whole sections of writing, either thrown away or lost in the move to Connecticut. The second, while structured more coherently, lacks the energy of the first, relying on a less interesting omniscient narrator and alerting fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains significant misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
+
*So begins my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is from the point of view of Inspecteur Brouwer, visceral but scattered, and evidently missing whole sections of the story. The second, relying on an omniscient narrator, is much more coherent but significantly alters fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains serious misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
-
-
Our reports indicate that Hans was murdered in his room on the third floor, between 2 and 4pm on May 16th. This corroborates the host’s statement, that Hans had returned to the hostel that afternoon after a walk through —. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period surrounding time of death, except for the postman who did not enter beyond the lobby, dropped off a single package for the guest in room 5F, a collection of —, and has himself been questioned thoroughly enough to absolve suspicion. The host, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
+
Our reports indicate that Hans was murdered in his room on the third floor of Hostel Vondelstraat, between 2 and 4pm on the sixteenth of May. This corroborates the host’s statement, that Hans had returned to the hostel that afternoon after a walk along the Herengracht from Brouwersgracht south toward Leidsestraat. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period surrounding time of death, except for the postman who did not enter beyond the lobby, dropped off a single package for the guest in room 5F (a collection of —) and has himself been questioned thoroughly enough to absolve suspicion. The host, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
-
(More here)
-
-
The timing of Hans’ death was rather inconvenient for him.
-
#quarry
-
-
Looks like spotify API is actually decent? Could totally be part of the system to support tracking playlists/listening. I'm delightfully surprised, would be a really cool feature.
-
#quarry
-
-
Super far from now and would require a lot of consideration, but realizing the quarry idea could be a protocol/connected system where users can deploy their own elixir setups that interact with some system that lets everyone share fully configurable hypermedia artifacts as we please. Inventing social media from first principles? Oof. But no. The difference is everyone owns their data literally (it’s their own deployed code), there is no real constraint of what gets added, can be entirely anti social, and the tail idea, where you can connect pieces however you want.
-
#quarry
-
-
Thinking about creative practice and how it relates to hypermedia system. The path is: collect, consume, reflect (either via synthesis or creation). At any point a node in that graph may trigger a new path (it’s not strictly linear). Quarry system should allow for this and hence why graph system (trails as I have called them) is necessary to attach ideas to each other. The beauty of that as well is participation from multiple individuals and cloud agents. In hindsight this is kinda similar to how Twitter works from a graph perspective (how it affords participation/invoking agents). The key difference is quarry serves as a consolidation layer across any hypermedia objects, works perfectly fine solo vs multiplayer, has permissioned participation, and none of the negative incentives around engagement.
-
-
Side note, enjoying name quarry more than waste book now; even though the historical context of the latter is cooler, the former is a much more fitting term standalone.
-
+
#dev
-
+
-
## Livebooks
-
-
One thing I'm curious about is how we can better leverage `.livemd` for agentic work. Agents often produce `.md` artifacts as a way to communicate ephemeral information and document long-term thinking in a codebase. However, if instead they were to use `.livemd`, agents could produce artifacts that are both readable and verifiable. *Verifiability* is something I always seek more of in LLM interaction, which affords agents more autonomy. The exciting element of this idea is that agents could run independently, document their work in `.livemd` (instead of markdown), and then execute the code inside those files to verify their claims made in prose. This means that human evaluators are met with information that has been confirmed (and they can interact with the underlying data system while reviewing). In order for this to work, however, the code must contain assertions that can fail if the claim it attempts to verify is inaccurate.
-
-
How exactly an agent would execute code in a livebook is still unclear to me. There isn't an actively maintained, often-used mechanism to headlessly execute a `.livemd` to my knowledge. Warrants further research, and is a prerequisite for any of this to work.
-
-
I have found that in agentic conversation having agents construct livebooks for describing their work quite effective as a communication device.
-
#quarry
-
-
Super far from now and would require a lot of consideration, but realizing the quarry idea could be a protocol/connected system where users can deploy their own elixir setups that interact with some system that lets everyone share fully configurable hypermedia artifacts as we please. Inventing social media from first principles? Oof. But no. The difference is everyone owns their data literally (it’s their own deployed code), there is no real constraint of what gets added, can be entirely anti social, and the tail idea, where you can connect pieces however you want.
-
+
#dev
-
+
-
- Build a repo with CLAUDE.md instructions, tools, file structure, etc that Claude can use to play a game with the user
-
- Push to github
-
- Others can clone the repo and run in Claude Code
-
- Paid Anthropic subscribers can fork the repo, play in Claude web/iOS app
-
- People can just rip your game in the terminal all day
-
-
Then
-
- push to web as nextjs/convex app for multiplayer
-
-
Then
-
- monetize with thoughtfully-constructed (expensive AKA nice) physical board for those who care
-
-
Fully functional monetization structure that is open source and considered. Just hold the trademark on physical game / name.
-
#quarry
-
-
Thinking about creative practice and how it relates to hypermedia system. The path is: collect, consume, reflect (either via synthesis or creation). At any point a node in that graph may trigger a new path (it’s not strictly linear). Quarry system should allow for this and hence why graph system (trails as I have called them) is necessary to attach ideas to each other. The beauty of that as well is participation from multiple individuals and cloud agents. In hindsight this is kinda similar to how Twitter works from a graph perspective (how it affords participation/invoking agents). The key difference is quarry serves as a consolidation layer across any hypermedia objects, works perfectly fine solo vs multiplayer, has permissioned participation, and none of the negative incentives around engagement.
-
-
Side note, enjoying name quarry more than waste book now; even though the historical context of the latter is cooler, the former is a much more fitting term standalone.
-
-
Looks like spotify API is actually decent? Could totally be part of the system to support tracking playlists/listening. I'm delightfully surprised, would be a really cool feature.
-
+
#music
-
+
-
I’m often restless
-
Much like the wind
-
But you’ve got calm enough for two
-
And calm you do
-
Until the trees stand still again
-
-
You leave your footsteps
-
Along the path
-
Between my memories old and new
-
With gentle shoes
-
And when you’re gone I follow them
-
-
I was unprepared for you
-
-
-
I will care for you
-
Beyond the setting sun
-
-
I take for granted
-
-
-
You leave me breathless
-
In your eyes
-
I see the whole world all anew
-
It’s what you do
-
To me my darling
-
#quarry
-
-
Thinking about creative practice and how it relates to hypermedia system. The path is: collect, consume, reflect (either via synthesis or creation). At any point a node in that graph may trigger a new path (it’s not strictly linear). Quarry system should allow for this and hence why graph system (trails as I have called them) is necessary to attach ideas to each other. The beauty of that as well is participation from multiple individuals and cloud agents. In hindsight this is kinda similar to how Twitter works from a graph perspective (how it affords participation/invoking agents). The key difference is quarry serves as a consolidation layer across any hypermedia objects, works perfectly fine solo vs multiplayer, has permissioned participation, and none of the negative incentives around engagement.
-
-
Side note, enjoying name quarry more than waste book now; even though the historical context of the latter is cooler, the former is a much more fitting term standalone.
-
-
Looks like spotify API is actually decent? Could totally be part of the system to support tracking playlists/listening. I'm delightfully surprised, would be a really cool feature.
-
#quarry
-
-
Super far from now and would require a lot of consideration, but realizing the quarry idea could be a protocol/connected system where users can deploy their own elixir setups that interact with some system that lets everyone share fully configurable hypermedia artifacts as we please. Inventing social media from first principles? Oof. But no. The difference is everyone owns their data literally (it’s their own deployed code), there is no real constraint of what gets added, can be entirely anti social, and the tail idea, where you can connect pieces however you want.
05.31.26
-
Are.na / visuals-zwag4_oe2ie (1)Thierry de Cordier
- ▾ Are.na / visuals-zwag4_oe2ie (1)
-
Thierry de Cordier img
05.30.26
-
Are.na / visuals-zwag4_oe2ie (1)screen-shot-2019-01-23-at-11.22.27-pm.jpg
- ▾ Are.na / visuals-zwag4_oe2ie (1)
-
screen-shot-2019-01-23-at-11.22.27-pm.jpg img
-
Are.na / dev-otcejg6g3nk (2)e3890bfdbc5677f657dade868748aa03.pngexe.dev - ssh exe.dev
- ▾ Are.na / dev-otcejg6g3nk (2)
-
e3890bfdbc5677f657dade868748aa03.png img
-
exe.dev - ssh exe.dev img
-
Are.na / archive-mdnuqrmhvny (1)crawshaw - 2026-04-22
- ▾ Are.na / archive-mdnuqrmhvny (1)
-
crawshaw - 2026-04-22 img
- Obsidian (1)
-
It was late March, or perhaps early April, when Hans arrived. There was the swing of the door, an exchange of words, and, after receiving his linens and key from the host, Hans stepped up the narrow staircase, returning the lobby to its previous quiet. Hans knew much of this place. He knew it was of the more affordable lodging in the heart of Amsterdam. He knew the staff to be agreeable and welcoming towards an extended stay. He even knew, by word of a partner at his firm whose sister had stayed the year before, that its café served, among many unremarkable dishes, an impressive Eggs Benedict. What Hans did not know, was that here, at the Hostel Vondelstraat, he would be murdered.
-
-
*So begins the first draft of my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is deeply captivating, from the point of view of Captain —, though scattered and evidently missing whole sections of writing, either thrown away or lost in the move to Connecticut. The second, while structured more coherently, lacks the energy of the first, relying on a less interesting omniscient narrator and alerting fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains significant misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
-
-
Our reports indicate that Hans was murdered in his room on the third floor, between 2 and 4pm on May 16th. This corroborates the host’s statement, that Hans had returned to the hostel that afternoon after a walk through —. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period containing time of death, except for the postman who did not enter beyond the lobby, and has himself been questioned thoroughly enough to absolve suspicion. The host himself, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
+
Our reports indicate that Hans was murdered in his room on the third floor, between 2 and 4pm on May 16th. This corroborates the host’s statement, that Hans had returned to the hostel that afternoon after a walk through —. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period surrounding time of death, except for the postman who did not enter beyond the lobby, dropped off a single package for the guest in room 5F, a collection of —, and has himself been questioned thoroughly enough to absolve suspicion. The host, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
-
+
(More here)
-
+
-
The timing of Hans’ death was rather inconvenient for him.
05.29.26
-
Are.na / dev-otcejg6g3nk (1)sql-antipatterns-chapter-3-naive-trees
- ▾ Are.na / dev-otcejg6g3nk (1)
-
sql-antipatterns-chapter-3-naive-trees img
-
Readwise / Too Loud a Solitude
(3)
-
Readwise / Gotham: A History of New York City to 1898
(1)
- Obsidian (6)
-
## Livebooks
-
-
One thing I'm curious about is how we can better leverage `.livemd` for agentic work. Agents often produce `.md` artifacts as a way to communicate ephemeral information and document long-term thinking in a codebase. However, if instead they were to use `.livemd`, agents could produce artifacts that are both readable and verifiable. *Verifiability* is something I always seek more of in LLM interaction, which affords agents more autonomy. The exciting element of this idea is that agents could run independently, document their work in `.livemd` (instead of markdown), and then execute the code inside those files to verify their claims made in prose. This means that human evaluators are met with information that has been confirmed (and they can interact with the underlying data system while reviewing). In order for this to work, however, the code must contain assertions that can fail if the claim it attempts to verify is inaccurate.
-
-
-
How exactly an agent would execute code in a livebook is still unclear to me. There is not an existing mechanism to headlessly execute a `.livemd` to my knowledge. Warrants further research, and is a prerequisite for any of this to work.
-
+
How exactly an agent would execute code in a livebook is still unclear to me. There isn't an actively maintained, often-used mechanism to headlessly execute a `.livemd` to my knowledge. Warrants further research, and is a prerequisite for any of this to work.
-
+
-
+
I have found that in agentic conversation having agents construct livebooks for describing their work quite effective as a communication device.
-
-
-
-
-
-
-
It was late March, or perhaps early April, when Hans arrived. There was the swing of the door, an exchange of words, and, after receiving his linens and key from the host, Hans stepped up the narrow staircase, returning the lobby to its previous quiet. Hans knew much of this place. He knew it was of the more affordable lodging in the heart of Amsterdam. He knew the staff to be agreeable and welcoming towards an extended stay. He even knew, by word of a partner at his firm whose sister had stayed the year before, that its café served, among many unremarkable dishes, an impressive Eggs Benedict. What Hans did not know, was that here, at the Hostel Vondelstraat, he would be murdered.
-
-
-
*So begins the first draft of my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is deeply captivating, though scattered and evidently missing whole sections of writing, either thrown away or lost in the move. The second, while structured more coherently, lacks the energy of the first and alters fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains significant misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
+
*So begins the first draft of my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is deeply captivating, from the point of view of Captain —, though scattered and evidently missing whole sections of writing, either thrown away or lost in the move to Connecticut. The second, while structured more coherently, lacks the energy of the first, relying on a less interesting omniscient narrator and alerting fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains significant misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
-
+
Our reports indicate that Hans was murdered in his room on the third floor, between 2 and 4pm on May 16th. This corroborates the host’s statement, that Hans had returned to the hostel that afternoon after a walk through —. The host has also expressed in multiple interviews that no one else was seen entering or exiting the hostel during the period containing time of death, except for the postman who did not enter beyond the lobby, and has himself been questioned thoroughly enough to absolve suspicion. The host himself, a man of about 70, is frail and timid, not the character one would expect to murder a guest with a pickaxe.
-
-
+
The timing of Hans’ death was rather inconvenient for him.
-
+
#quarry
-
+
-
I'll preface with: I have to be mindful of falling prey to system optimization for the sake of itself. That said, I have a deep interest in information retrieval and building a mechanism to better navigate an existing system has benefits.
-
-
-
This is for navigation. I am not building any functionality I can already achieve elsewhere. I collect on Are.na, I read on Readwise Reader, I write in Obsidian (though less writing than I'd like, and it's unclear to me what form said writing takes). I have no need to reinvent the wheel. That said, this information is far from consolidated, and I have hit some pain points.
-
+
This is for navigation. I am not building any functionality I can already achieve elsewhere. I collect on Are.na, I read on Readwise Reader, I write in Obsidian (though less writing than I'd like, and it's unclear to me what form said writing takes), I commit code to GitHub. I have no need to reinvent the wheel. That said, this information is far from consolidated, and I have hit some pain points.
-
-
1. Once I have annotated my reading, those annotations are no longer surfaced to me. They enter the abyss, similarly to my original pain point on Are.na: my collected resources didn't feel actionable. Integration into Reader solved this at that step. I now read and annotate my research, as opposed to simply collecting. I now feel the friction at the next level in the pipeline. Where do these fragments of thoughts go? Writing seems like a natural next step of synthesis, in addition to coding projects (like what I am discussing now). I need access/rendering of the information conducive towards synthesis.
-
2. I have a cloud LLM assistant which has access to my tools. While reading on Reader, I can simply mention the assistant in an annotation (via "Hermes") and make a request. These requests are translated into todos inside a `Hermes` Todoist project, where the assistant addresses them and replies in a comment (I've also given Hermes access to its own channel in my Are.na, called `hermes-postbox`, to deliver resources to me). This flow, too, is not captured or continuable in a meaningful way. I've noticed Todoist is very powerful for organizing tasks (and has a wonderful API to do so), but not so much for reviewing *other entities tasks*. It's fine for now, but a given "trail" (to use Vannevar Bush's term) sort of needs a primitive. It relates to / make include items like blocks, highlights, comments, LLM outputs. It's not a "chat" in the traditional sense but a resumable path of thinking (graph connections between entities).
-
-
There is an urge to jump straight into coding. Elixir offers a clear path towards effective ingestion and with a little AI prompting I can have a local Phoenix web app showing the results. That said, this is a project worth slowing down on. As already shown, it's become quite alluring to run ingestion processes, invent interfaces, and tinker with design. "Seeing things on the screen" is addictive. But, I am after a tool which provides a clear utility. Rather than getting pulled down the endless rabbit holes (which, by the way, are fully supported/encouraged by an LLM always eager and agreeing with proposals), I should zero in on my identified pain points to ensure they are addressed through a considered data model and interface.
-
-
I'll conclude with some clear knowns
-
-
- My system must ingest and interact with all external sources I use: Are.na, Reader, Todoist, Obsidian.
-
+
- My system must ingest and interact with all external sources I use: Are.na, Reader, Todoist, Obsidian, GitHub.
-
- My system must present view(s) of the data conducive for synthesis. This means both interfaces and data access.
-
-
I'd like to acknowledge a not yet mentioned feature: the initial thought for this actually arose as an idea for my personal website to open-source my thinking. I do believe there is validity in doing so, and I plan to make this accessible to others, although it is clear the root problems I wish to solve are operational. A perhaps meta-note to this, is that I would love to see the trail from Are.na blocks to scattered notes to todo item to code to this very journal entry. That journey itself is a trail; the ability to traverse it would be immensely helpful (e.g. I nearly forgot in writing here that the personal site was the origin, and that is a key consideration moving forward).
-
The interface is inherently political. To shape the set of actions performed on an underlying data model is to dictate, and ultimately constrain, behavior. This deeply empowers the developer; they are in charge of inventing a language.
-
-
How do you determine a new language for a population?
-
-
-
What authority do you have to suggest their current language(s) are inadequate?
-
-
-
-
The pretension to pursue this rests on being literate in existing languages. A new one would most beneficially provide clarity by resting on a familiar set of primitives, accruing an etymology; languages do not emerge from the dark.
-
-
-
-
Further, languages cannot and should not aim to answer the questions asked by their speakers. Because I speak English, or French, or Spanish, does not mean that I now know the answer to: *Where to, next?* when the words leave my tongue, but asking it in the language best understood by my peers leads me to a response in the given context.
-
+
Doing so requires literacy in existing languages. A new one would benefit from resting on a familiar set of primitives, accruing an etymology. Languages cannot and should not aim to answer the questions posed by their speakers. Rather, they provide a space for these questions to be best understood, and subsequently answered.
-
+
#quarry
-
+
-
Trails allow for graph-like connections between entities in the wastebook (or quarry, naming open to debate) system. A pre-existing trail-like connection already exists: when I annotate a document in Reader, I've created a trail of length 3; that is the source document, the highlighted text, and my comment. While this form of trail is built into the data model of Reader itself, there is no reason why other entities cannot participate in these trails or trails of their own.
-
-
Trails can allow for fragmented, purposefully-disorganized reflection. Across information systems, I strongly believe capture should be as cheap as possible. Most ideas are short and dissipate quickly. Longer tasks (long form synthesis, creating) require extended periods of uninterrupted focus, which are relatively rare in the grand scheme of things. Ideas should not be lost simply because they arise outside of that window. A trail serves as a reaction to one or more entities, say a comment on an image from Are.na, a note on a document I'd like to read soon, an answer to a question posed in an annotation. Or maybe I want to collect a set of entities to elaborate on a connection between them. I see a comment I made in reaction to a highlight and I attach 2 Are.na blocks and a follow up. It doesn't really matter. It is simply a way to connect units of information.
-
-
One critical affordance threads give is LLM interaction. Through a trigger word, I can invoke an LLM on a given trail to do some work (whether that's respond to a question, find a source document, etc.) The agent receives the trail, including the latest entity as the element containing its mention, performs some agentic task, and appends entities to the trail. That append can be: some text, an Are.na block from a source it found, a highlight (e.g. I ask "have I read something similar to XYZ before?"). An agent can now participate in this system as little or as much as I need. The idea of a "chat" is gone. An agent simply interacts with the trail from which it was invoked.
-
-
Prior to implementing an agentic layer, the underlying system must be developed considerately. Entities need to be ingested properly and exhaustively. All search strategies (see Berrypicking paper) must be accounted for to ensure proper retrieval. Then, by connecting an agent to these search tools via MCP, it can effectively traverse the information system to perform work.
-
-
There are obviously plenty of complexities that I'm unaware of (I'm sure there are canonical sources on graph-connected systems, people who have tried and failed to build systems like this). I have obviously used Vannevar Bush's term "trail" for this, so another read of "As We May Think" is probably worthwhile. But we have 60+ years of trial and error since then, I'm sure there is more to evaluate.
-
-
A note on what constitutes a worthwhile trail. A given connection is made when I personally connect multiple entities in service of an idea. Connections are not actually meant to make the system more traversable from a retrieval perspective. This may sound counterintuitive to much of my thinking. Allow me to explain. In this writing, I have referenced "As We May Think" and the berrypicking paper (exact name escaping me right now). Would it be cool if I could automatically connect those papers to this piece of writing to traverse between them? Sure. Could you design an agentic system that scans writing and extracts references such as this? Sure, and that'd be super useful for some cases, but not for this context. There is both a hard constraint (that is time and cost expensive) and a soft constraint (my goals, clarified below).
-
-
Although I must make this system searchable, I should make it searchable with respect to my train of thought. Only in reflection can I connect entities, and in writing I believe that I *shouldn't* connect entities without a new element. (E.g., I should not just connect paper A with block B, but instead connect them with note C that explains the reaction / next steps that arose from their connecting). That said, I wouldn't make that a hard constraint, rather a behavioral one. Similarly, I am technically able to highlight documents in Reader without attaching an annotation, but I don't because that's not helpful to me. The same applies here.
-
-
I'll hold back on attempting to better organize my thoughts just to get this idea down. In the implementation of a trail, I do wonder if a "step" in the trail must be a single entity, or if it can be an array of entities. For instance, let's say I want to react to 2 annotations of mine. Does that trail require I order it `annotation_1 -> annotation_2 -> reaction`? This seems like an arbitrary system constraint, when in reality the relationship is: `[annotation_1, annotation_2] -> reaction`. I imagine allowing for arrays in graph-like relationships increases complexity, but to be more specific, it increases implementational complexity while providing user simplicity. That should always be the goal when designing systems. In Dijkstra's *On the nature of Computing Science*:
-
-
> Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
-
-
It's worth it to do the "hard work" to achieve simplicity.
-
-
+
One aspect of trails I have yet to pin down is entity authorship. Do I care about identifying the author of a given source? That would be nice. I certainly want to know the difference between an entity authored by myself versus an agent, or another participant (there is no reason why I could not allow for others to participate).
-
-
+
Determining the entity for certain sources is also a challenge. While some are obvious, for example the block in Are.na, something like Obsidian is more difficult. This is because I am often modifying an existing entity. This is different than committing code, where I actively choose when and how a commit is performed. Writing is continual and messy. To continually ingest means I receive changes to the same documents across time. Though, maybe this isn’t so different than code? After all, I am using git to store my notes. If we imagine for writing the record is the file itself, when a diff is ingested we have a new “version” of this file for that day, and any subsequent diff for that day is folded into that version? I think the friction is I have an auto commit system every 10 min when I’d likely prefer one at the end of the day, but that means the system is out of date as I work which is not helpful. So there are competing incentives. Something to sit with. Even outside of syncing, versioned documents are much more complicated to consider than append-only ones, like blocks or highlights (behaviorally, I know those could technically be modified but in practice they aren’t in a way that matters). Because for these entities, there is both the diff, or modification of that document, for a given action (a day’s work in my conceptualization) as well as the full document at that time, as well as the documents current state and every other state. So to not confuse myself too much, I think I ought to let git itself dictate what this means?
-
-
# The Politics of Participation and Literacy
-
+
This document is AI generated. It was an interesting experiment but I don’t love having generative writing in my vault. TBD on if this is moved somewhere to signify this or deleted.
-
-
## Core Insight
-
-
Across language, emotion, and computational interfaces, the fundamental political question is: **Who decides what counts as legitimate participation?**
-
-
When interfaces claim to "democratize" through simplification, when languages standardize for "accessibility," when taxonomies claim to be "universal" - these are not neutral optimizations. They are decisions about which forms of participation are legitimate and which are foreclosed.
-
-
---
-
-
## The Pattern Across Domains
-
-
### Language as Gatekeeping
-
-
**From "A Very Big Fight Over a Very Small Language":**
-
> Schmid had already sketched a plan for standardizing Romansh: a "majority principle" in which the most widely shared spellings across the idioms would win out.
-
-
My note: "What is lost when you average over a set of languages? When you've settled for what is most agreed upon, you arguably strip away what the speakers of that language most cherish. It is the particularity of their expression, words unique to only their experience."
-
-
> "He had worked it all out in his head."
-
-
My note: "This particular phrasing is subtly revealing. Where is the conversation with the community? Why does a professor in his ivory tower dictate the future of a culture? You can't 'outsmart' the inertia of behavior."
-
-
> A bridge language never meant for speech was suddenly being spoken—and enforced as correct.
-
-
And later:
-
> "After Napoleon, language becomes the strongest means to define a people."
-
-
My note: "Language exerts power. It is an assertion of worldview, of what can be exchanged between people."
-
-
**From "Is the Dictionary Done For?":**
-
> The "ain't" controversy laid bare the stakes in lexicography: language use as an indicator of status.
-
-
My note: "It's interesting how linguistic status signaling includes not only which words you choose, but also those you exclude from your personal vernacular."
-
-
> How many Yiddish terms are in the English lexicon? Cambridge does not recognize "mishegoss," which seems like an oversight. It does list "schmo" and "schmuck," but gives them the same definition: "a stupid or silly person." Those words are not synonyms. We can empathize with schmoes but never schmucks.
-
-
My note: "Incredible that Cambridge cements this error into their dictionary. Even knowing these words exist means you know they're different. How can a definition be so wrong for such historic terms?"
-
-
---
-
-
### Emotion as Gatekeeping
-
-
**From "You Had to Be There":**
-
> In the 1960s and '70s, the psychologist Paul Ekman identified these six emotions
-
-
My note: "why was there so much pseudo-scientific metaphysics going on in the 60?"
-
-
> The laborers who hauled stones to build the pyramids in Giza felt anger that is our anger. We perform this projection on any number of human experiences: losing a child, falling ill, being bored at work. We assume that emotions in the past are accessible because we assume that at their core, people in the past were just like us.
-
-
My note: "This also makes me think of what Frederick Douglas touches on, somewhat relatedly, in his autobiography. The quality of human experience when met with similar circumstances or external forces is not stable. For him, as an individual, the quality of his life, his perceptions and actions, would be markedly different when under the tyranny of slavery."
-
-
> Yet anyone who has ever been asked to describe their pain to a doctor knows that we are at the mercy of language. Is it sharp or dull? Does it pound or burn? These are metaphors, and ones that culture gives us.
-
-
> Boddice is concerned that we are flattening ourselves. By not appreciating the full range of feeling that people are capable of, we are foreclosing a deeper engagement with one another. In *A History of Feelings*, he described our diminished and too limited vocabulary for emotions as "vague, empty or else crude." The danger is that this reduced language, this emojification of emotional life, also reduces, quite literally, how much we can feel.
-
-
My note: "This feels like the main thesis of Boddice's research. We are artificially constraining our understanding of history—and ourselves—by accepting a pseudo-scientific, limited definition of emotion (from a few people in the 60s) as fact."
-
-
---
-
-
### Computers as Gatekeeping
-
-
**From "Should Computers Be Easy to Use?":**
-
> [Yet it was in the imagination of an alternative that interface design emerged. The practice of programming computers began as complex, requiring manuals and study. The use of language to hold power and separate classes is a tale that recurs throughout human history. The Egyptian priestly class kept power through guarded knowledge of the sacred hieroglyphs, hindu brahmin priests kept power through their rites and incantations, catholic priests kept power over the interpretation of the Bible through their knowledge of ecclesiastical Latin](https://readwise.io/reader/document_raw_content/200680756/#bookmark52)
-
-
My note: "Thinking more about how language holds power. Reminds me of an article I recently read in the New Yorker about the role of dictionaries. In that, they discuss the controversy over adding 'ain't' to Webster's dictionary in the 60's. Here, we're seeing language can serve to divide people into factions, sometimes the haves and have-nots. What argument are they gonna make with respect to this and interfaces? I'm intrigued (and note that an interface is a 'language' itself)."
-
-
> It was not just the starry-eyed ideal of liberal democracy that coaxed computing out of the hands of scientist-priests, but also the prospect of fabulous wealth. Bill Gates took on the mission to place "a computer on every desk"
-
-
My note: "Honestly this Bill Gates quote feels a lot like the rhetoric we hear from those running AI labs: a relentless mission for mass adoption. They *allegedly* 'see the future' we must all live in, and attempt to will it into existence. Personal computers ended up being a net positive for society. AI has yet to make its case."
-
-
> while graphical user interfaces were usable, they were fundamentally restricted; end-users could not describe new behaviours – you need a programmer for that.
-
-
My note: "An interface is a layer of abstraction from the filesystem. The filesystem has more affordances than this interface allows, which is constructed as a language for a particular set of interactions."
-
-
> "*natural* to *use*" is not the same as "*easy* to *learn*"
-
-
> these successes also instilled a kind of designer-chauvinist idea that great design can all but eliminate the need for learning
-
-
My note: "I actually really enjoy the decision to use harsh language here; this article is unapologetic in its critique. I do feel that in making software that 'eliminates the need for learning,' we make software which eliminates any advancements in a user's capabilities. If there's nothing to learn, perhaps there is nothing new to accomplish except optimizations and conveniences around familiar behaviors."
-
-
> But is it always an indicator of superior design, when someone can learn to use a system very quickly? Is it always a better interface where the task is easy, simple, and forgiving, and requires little "mental and perceptual activity"?
-
-
My note: "This also makes me think of the intention friction that Are.na maintains on its platform. Because all organization is done by hand--and required--the user is forced to exert the mental load of making sense of an artifact. This can deter certain users, but for those who find the platform useful, it is imperative."
-
-
> first impressions of usability matter and are critical to commercial success. But in certain cases, this creates a moral hazard to make software appear *more usable* by making it *less useful*.
-
-
My note: "Probably also tied to VC models of maximizing active users for free. Get a ton of low stakes signups. Can't do that if the software has a steep learning curve."
-
-
> a few widespread commercial successes, such as the spreadsheet
-
-
My note: "@todo worth exploring more. I think I've saved an article somewhere on the ubiquity of spreadsheets. They are complex! Nontechnical people are willing and able to learn them."
-
-
> Knowing what can be done, an *awareness of the possible*, empowers users in entirely different ways. [...] A spreadsheet user who knows *a priori* how to write formulas will approach the same task differently from one who does not; starting with planning the data that must go in the spreadsheet and structuring it appropriately. By the time the spreadsheet is open and ready, the "task" has already taken on a vastly different nature for the two users.
-
-
My note: "Some softwares succeed with pre-knowledge. But also, a software like Excel makes the formulas feature 'known.' Something that AI chats do a bad job of is actually showcasing affordances in a meaningful way."
-
-
> This is a call for *negotiated complexity*, complexity in software which arises as the result of optimisation for intensive, long-term use, in consultation with communities of practitioners, shielded from commercial pressure to design for first impressions, and with the unapologetic assumption that users will invest months, or years, in ahead of time learning and deliberate practice.
-
-
My note: "Good term. How does it fit into an ecosystem where software is often deployed onto the web and rapidly changing?"
-
-
My note: "I kind of want more of the thesis! There's a lot of great background and research to lead us to the author's proposal. But the central term arrives only a few paragraphs before the end. Keep going!"
-
-
**From "How to Stop AI From Killing Your Critical Thinking":**
-
> Beyond getting the job done, a tool for thought helps us better understand the job. Beyond getting it done faster, it helps us get it done better. Beyond getting us to the right answers, a tool for thought helps us ask the right questions. Beyond automating known processes, it helps us explore the unknown.
-
-
My note: "The vast majority of AI rhetoric revolves around saving time and having work 'done for you.' @todo what's the term or concept for praying on people's psychological desire for shortcuts? It's present in every era, within the promises of every technical innovation."
-
-
> Ultimately, it can be said she has written this document herself.
-
-
My note: "No. She did not write this document. She conducted research for this document, she has edited this document, but this document was written by an LLM. AI has scooped out the middle."
-
-
> This is essentially force-feeding a critique-based approach of AI dialogue. This is fully achievable without a system built around it. But perhaps users don't know that they can do this. A chat box does not reveal its affordances. By building this into the interface of a software, an opinion as to how interactions should be held is placed into the experience. Interfaces become not an abstraction on the filesystem, but an abstraction on AI behaviors, which themselves operate on the filesystem. So an interface is as important as ever -- as it offers the affordances a chat does not provide...
-
-
---
-
-
### Community & The Open Web
-
-
**From "Do blogs need to be so lonely?":**
-
> I'm picturing something relatively simple. Something like a group blog, or a blog co-op. A group of internet friends posting together, without too much oversight or coordination between them.
-
-
My note: "(1) It feels like we've probably re-invented this a few times and yet I can't think of a platform I'd use today to accomplish this goal. (2) On reflection, isn't this what forums have always sort of been? Isn't this essentially a subreddit? I suppose the anonymity is a factor here or the exclusivity of who can or cannot contribute. (3) essentially the author wants the functionality of Web 2.0 but in a traditional publishing media distribution mechanism?"
-
-
> points out that the blocker isn't a tech problem. Rather, modern blogging is built on top of a techno-individualistic mindset.
-
-
My note: "I agree it isn't a tech problem, but disagree on what the author claims the true problem is. Substack and Beehive exist for a reason. It is very technically easy to spin up a blog now. This 'techno-individualist mindset' claim is years out of date."
-
-
> Forums have been reincarnated as Discord
-
-
My note: "Walled gardens are not the same as long form public spaces for discourse. Private communication has its place but we've killed the open web."
-
-
---
-
-
### Desire Paths as Counter-Example
-
-
**From "Desire Path - Wikipedia":**
-
> In Yosemite National Park, the National Park Service uses these indicators to help guide its management plan.
-
-
My note: "It takes a well-run organization to do this. Requires relinquishing control. Recognizing your assumptions of behavior were wrong."
-
-
> when off trail, distribute their travel lines so as to not inadvertently create new trails in unsustainable locations.
-
-
My note: "Desire paths are not inherently good or bad. They're just what happen. Sometimes you have to intentionally subvert them."
-
-
> Sometimes, land planners have deliberately left land fully or partially unpathed, waiting to see what desire paths are created, and then paving those.
-
-
My note: "I love this idea so much. How would it look in other fields beyond landscaping?"
-
-
> For example, Twitter has "paved" a number of desire paths by integrating them into the service, including @ replies, hashtags, and group discussions.
-
-
My note: "I'm curious how you track and measure emergent behaviors."
-
-
---
-
-
## Key Insights from Notes on 'Camp'
-
-
**On taste and judgment:**
-
> Camp taste turns its back on the good—bad axis of ordinary aesthetic judgment. Camp doesn't reverse things. It doesn't argue that the good is bad, or the bad is good. What it does is to offer for art (and life) a different — a supplementary — set of standards.
-
-
My note: "I love this interpretation. We are often arbitrarily constrained to the spectrum between 'good' and 'bad' when judging art. Yet, it's not so simple. We may appreciate, disagree, or react in any sort of way towards an artifact outside of that limited space."
-
-
**On cultural oversaturation:**
-
> The traditional means for going beyond straight seriousness — irony, satire — seem feeble today, inadequate to the culturally oversaturated medium in which contemporary sensibility is schooled.
-
-
My note: "It feels tireless the way new art must evolve constantly amongst the piles of cultural context. It does make me think: can you argue there are been periods of cultural stagnation as artists learn how to rub against the contemporary sensibility? There are people who argue we're currently in an aesthetic rut (there are always people arguing this). Is this traceable in reflection?"
-
-
**On McLuhan and technology:**
-
> Marshall McLuhan has described human history as a succession of acts of technological extension of human capacity, each of which works a radical change upon our environment and our ways of thinking, feeling and valuing.
-
-
My note: "Aaand all roads lead to McLuhan. @todo beyond The Medium Is The Message, which other texts are his best?"
-
-
> More timid people prefer to accept the previous environment's values as the continuing reality of their time. Our natural bias is to accept the new gimmick (automation, say) as a thing that can be accommodated in the old ethical order.
-
-
My note: "It's remarkable how much I can draw from this essay when reading modern essays on the state of technology. Just today I read a piece by Kevin Munger in [[2026.01.19 Things Will Have to Change]] about the need for academia to evolve in accommodation of AI, for they still essentially live in the realm of paper. There is a 'timid' nature in not moving towards the new technology, both, as I reflect here, in the arts as well as the sciences."
-
-
**On perception and cognition:**
-
> It is, first of all, an object modifying our consciousness and sensibility, changing the composition, however slightly, of the humus that nourishes all specific ideas and sentiments. Outraged humanists, please note.
-
-
My note: "Great works of art ask a question. In answering it, we discover a new avenue of perception."
-
-
> For we are what we are able to see (hear, taste, smell, feel) even more powerfully and profoundly than we are what furniture of ideas we have stocked in our heads.
-
-
---
-
-
## On Maps and Territory
-
-
**From my note on "You Had to Be There":**
-
> I've thought a lot about that idiom "the map is not the territory" since first hearing it. Every system or theory is inherently a layer of abstraction away from the true thing which it attempts to represent. It is an approximation, and with each decision in translating from experience it accepts certain biases. Biases are not necessarily bad, in fact they are necessary to simply make sense of the world at the cost of "knowing" it a certain way over another. But they are there.
-
-
---
-
-
## Tensions & Open Questions
-
-
### The Romansh Dilemma
-
I'm genuinely torn:
-
- "What is lost when you average?" (particularity stripped away)
-
- BUT ALSO: "How can this fragmentation persist? It just seems so impractical."
-
- Beautiful stubbornness: flaming disks in forest (chosen tradition, community practice)
-
- Ugly stubbornness: parents enforcing hyperspecific dialect (imposed, radicalizing children)
-
-
**The question I can't resolve:** What makes some stubbornness beautiful, but others ugly?
-
-
### The Accessibility Paradox
-
- Spreadsheets: complex but people learn them (non-technical users achieve capability)
-
- My mom learned Google Drive (simplification enabled her participation)
-
- But Google Drive forecloses deeper participation if she wanted it
-
-
**The tension:** Simplification can genuinely enable participation for some. But it also decides that certain levels of participation don't count as legitimate.
-
-
### Negotiated Complexity
-
The term "negotiated" is doing important work:
-
- Not pure emergence (too chaotic, no shared substrate)
-
- Not pure imposition (predetermined outcome)
-
- Requires: multiple parties, ongoing process, shared substrate, literacy to participate, no predetermined outcome
-
-
But what does this look like in practice beyond the examples I have (Wikipedia, desire paths, spreadsheets)?
-
-
---
-
-
## What This Means (Still Unclear)
-
-
I keep coming back to these fragments from our conversation:
-
-
**On authority and control:**
-
"Participation requires literacy. Who decides what counts as literate? That's the power move."
-
-
**On the problem with "natural to use":**
-
"Interfaces claiming to be 'natural' or 'simple' or 'accessible' are the most dangerous because they hide that they're doing this shaping. At least with a spreadsheet you KNOW you're learning a weird grid thing that will change how you think about data."
-
-
**On designer authority:**
-
"When interfaces 'eliminate the need for learning,' they're really saying: 'we've decided the only legitimate participation is surface-level, and we're foreclosing deeper forms.'"
-
-
**But also:**
-
"You can't outsmart the inertia of behavior."
-
-
---
-
-
## What I Need to Figure Out
-
-
I can see the pattern clearly:
-
- Language standardization = deciding what counts as legitimate expression
-
- Emotional taxonomies = deciding what counts as legitimate feeling
-
- Interface simplification = deciding what counts as legitimate participation
-
-
But I don't yet have:
-
1. **Clear sight on the "so what"** - Why does recognizing this pattern matter? What does it let me see or do?
-
2. **Non-prescriptive argument** - I don't want to say "always build for emergence" or "demand literacy" - both feel wrong given my Romansh ambivalence
-
3. **The through-line** - How do I weave language → emotion → computers into a single coherent reflection?
-
-
The core is there: **Who decides what counts as legitimate participation?**
-
-
But the implications are still unclear.
-
-
---
-
-
## Sources Referenced
-
-
- [[Readwise/2025.12.01 A Very Big Fight Over a Very Small Language]]
-
- [[Readwise/2025.12.05 You Had to Be There]]
-
- [[Readwise/2023.06.02 Should Computers Be Easy to Use Questioning the Doctrine of Simplicity — in User Interface Design]]
-
- [[Readwise/2025.12.28 How to Stop AI From Killing Your Critical Thinking Advait Sarkar TED]]
-
- [[Readwise/2025.08.21 Do blogs need to be so lonely - The History of the Web]]
-
- [[Readwise/2024.10.03 Notes on 'Camp']]
-
- [[Readwise/2025.12.22 Is the Dictionary Done For The New Yorker]]
-
- [[Readwise/2006.06.05 Desire Path - Wikipedia]]
-
05.28.26
-
Are.na / visuals-zwag4_oe2ie (1)
input output / Cosmos - ▾ Are.na / visuals-zwag4_oe2ie (1)
-
input output / Cosmos
img
-
Are.na / Retrieval Hypermedia (45)2301.01227as-we-may-think-vannevar-bush.pdfkay-opening-the-hood-of-a-word-processor.pdfaugmenting-human-intellect_25_06_12_09_29_44.pdfA General-Purpose File System For Secondary StorageAlan Kay - User Interface: A Personal View (1989)
- ▾ Are.na / Retrieval Hypermedia (45)
-
2301.01227 img
-
as-we-may-think-vannevar-bush.pdf img
-
kay-opening-the-hood-of-a-word-processor.pdf img
-
augmenting-human-intellect_25_06_12_09_29_44.pdf img
-
A General-Purpose File System For Secondary Storage img
-
Alan Kay - User Interface: A Personal View (1989) img
-
UNIX Time-Sharing System: The Programmer’s Workbench img
-
Building agents that reach production systems with MCP | Claude img
-
Yuma's Social Memory | Flower Computer Co. img
-
a-city-is-not-a-computer-other-urban-intelligences-by-shannon-mattern-z-lib.org-.pdf img
-
http://delivery.acm.org/10.11...FID=18699570&CFTOKEN=95610413 img
-
280uir-1999-05-pirolli img
-
38F1489A-7D93-48CE-A6C0-A4A5CCE9D5F4 img
-
A Brief History of Lab Notebooks img
-
E.W.Dijkstra Archive: On the nature of Computing Science (EWD 896) img
-
How I use Obsidian img
-
Meeting MARC: the 50-year-old data format for library records - YouTube img
-
Computer Power and Human Reason - Chapter 1 img
-
Computer Power and Human Reason - Chapter 10 img
-
Computer Power and Human Reason - Chapter 4 img
-
Computer Power and Human Reason - Chapter 3 img
-
Dialogue and the Search for Information — Stuart Hannabuss (1989) img
-
As We May Think img
-
The Commoncog Forum - A sensemaking community for business nerds. img
-
hzoo/henry.ink: *search by browsing*: annotation aggregation (prev extension-annotation-sidebar) img
-
Scent of Knowledge: Optimizing Search-Enhanced Reasoning with Information Foraging img
-
New Game in Town - YouTube img
-
Question-Negotiation and Information Seeking in Libraries — Robert S. Taylor (1968) img
-
Latticework: Unifying annotation and freeform text editing for augmented sensemaking img
-
IRLProximity img
-
History of Information img
-
AReader img
-
What Is a Reference Book? A Theoretical and Empirical Analysis — Marcia J. Bates img
-
doug_engelbart-augmentinghumanintellect.pdf img
-
txt The Curse of Xanadu | WIRED txt
-
berrypicking.pdf img
-
Ted Nelson on Pernicious Computer Traditions - YouTube img
-
Project Xanadu: Even More Hindsight · Gwern.net img
-
Marchionini_G_Exploratory_search_from_finding_to_u img
-
Human Cognition Inspired RAG with Knowledge Graph for Complex Problem Solving img
-
BelkinAnomolous.pdf img
-
The Design of Browsing and Berrypicking Techniques for the Online Search Interface — Marcia J. Bates img
-
Director’s Cut-- Ted Nelson on Hypertext, Douglas Engelbart, Xanadu and More - YouTube img
-
Reflections on NoteCards- Seven Issues for the Next Generation of Hypermedia Systems img
-
Spatial hypertext- designing for change img
-
Are.na / dev-otcejg6g3nk (2)Erlang Ecosystem Foundation - Supporting the BEAM communityandreasronge/ptc_runner: Secure sandbox runtime for Programmatic Tool Calling, Code Mode, and MCP aggregation. Run many concurrent LLM/tool clients safely while orchestrating tools and transforming data.
- ▾ Are.na / dev-otcejg6g3nk (2)
-
Erlang Ecosystem Foundation - Supporting the BEAM community img
-
andreasronge/ptc_runner: Secure sandbox runtime for Programmatic Tool Calling, Code Mode, and MCP aggregation. Run many concurrent LLM/tool clients safely while orchestrating tools and transforming data. img
-
Readwise / Too Loud a Solitude
(5)
-
-
-
Readwise / Scientific and Artistic Imagination Pt I • Measure for Measure (16)
-
-
- Obsidian (2)
-
## Livebooks
-
-
One thing I'm curious about is how we can better leverage `.livemd` for agentic work. Agents often produce `.md` artifacts as a way to communicate ephemeral information and document long-term thinking in a codebase. However, if instead they were to use `.livemd`, agents could produce artifacts that are both readable and verifiable. *Verifiability* is something I always seek more of in LLM interaction, which affords agents more autonomy. The exciting element of this idea is that agents could run independently, document their work in `.livemd` (instead of markdown), and then execute the code inside those files to verify their claims made in prose. This means that human evaluators are met with information that has been confirmed (and they can interact with the underlying data system while reviewing). In order for this to work, however, the code must contain assertions that can fail if the claim it attempts to verify is inaccurate.
-
-
How exactly an agent would execute code in a livebook is still unclear to me. There is not an existing mechanism to headlessly execute a `.livemd` to my knowledge. Warrants further research, and is a prerequisite for any of this to work.
-
Trails allow for graph-like connections between entities in the wastebook (or quarry, naming open to debate) system. A pre-existing trail-like connection already exists: when I annotate a document in Reader, I've created a trail of length 3; that is the source document, the highlighted text, and my comment. While this form of trail is built into the data model of Reader itself, there is no reason why other entities cannot participate in these trails or trails of their own.
-
-
-
Trails can allow for fragmented, purposefully-disorganized reflection. Across information systems, I strongly believe capture should be as cheap as possible. Most ideas are short and dissipate quickly. Longer tasks (long form synthesis, creating) require extended periods of uninterrupted focus, which are relatively rare in the grand scheme of things. Ideas should not be lost simply because they arise outside of that window. A trail serves as a reaction to one or more entities, say a comment on an image from Are.na, a note on a document I'd like to read soon, an answer to a question posed in an annotation. Or maybe I want to collect a set of entities to represent a connection between them. I see a comment I made in reaction to a highlight and I attach 2 Are.na blocks as relevant follow up. It doesn't really matter. It is simply a way to connect units of information.
-
+
Trails can allow for fragmented, purposefully-disorganized reflection. Across information systems, I strongly believe capture should be as cheap as possible. Most ideas are short and dissipate quickly. Longer tasks (long form synthesis, creating) require extended periods of uninterrupted focus, which are relatively rare in the grand scheme of things. Ideas should not be lost simply because they arise outside of that window. A trail serves as a reaction to one or more entities, say a comment on an image from Are.na, a note on a document I'd like to read soon, an answer to a question posed in an annotation. Or maybe I want to collect a set of entities to elaborate on a connection between them. I see a comment I made in reaction to a highlight and I attach 2 Are.na blocks and a follow up. It doesn't really matter. It is simply a way to connect units of information.
-
-
One critical affordance threads give is LLM interaction. Through a trigger word, I can invoke an LLM on a given trail to do some work (whether that's respond to a question, find a source document, etc.) The agent receives the trail, including the latest entity as the element containing its mention, performs some agentic task, and appends entities to the trail. That append can be: some text, an Are.na block from a source it found, a highlight (e.g. I ask "have I read something similar to XYZ before?"). An agent can now participate in this system as little or as much as I need. The idea of a "chat" is gone. An agent simply interacts with the trail from which it was invoked.
-
-
Prior to implementing an agentic layer, the underlying system must be developed considerately. Entities need to be ingested properly and exhaustively. All search strategies (see Berrypicking paper) must be accounted for to ensure proper retrieval. Then, by connecting an agent to these search tools via MCP, it can effectively traverse the information system to perform work.
-
-
There are obviously plenty of complexities that I'm unaware of (I'm sure there are canonical sources on graph-connected systems, people who have tried and failed to build systems like this). I have obviously used Vannevar Bush's term "trail" for this, so another read of "As We May Think" is probably worthwhile. But we have 60+ years of trial and error since then, I'm sure there is more to evaluate.
-
-
-
A note on what constitutes a worthwhile trail. A given connection is made when I personally connect multiple entities in service of an idea. Connections are not actually meant to make the system more traversable from a retrieval perspective. This may sound counterintuitive to much of my thinking. Allow me to explain. In this writing, I have referenced "As We May Think" and the berrypicking paper (exact name escaping me right now). Would it be cool if I could automatically connect those papers to this piece of writing to traverse between them? Sure. Could you design an agentic system that scans writing and extracts references such as this? Sure, and that'd be super useful for some cases, but not for this context.
-
+
A note on what constitutes a worthwhile trail. A given connection is made when I personally connect multiple entities in service of an idea. Connections are not actually meant to make the system more traversable from a retrieval perspective. This may sound counterintuitive to much of my thinking. Allow me to explain. In this writing, I have referenced "As We May Think" and the berrypicking paper (exact name escaping me right now). Would it be cool if I could automatically connect those papers to this piece of writing to traverse between them? Sure. Could you design an agentic system that scans writing and extracts references such as this? Sure, and that'd be super useful for some cases, but not for this context. There is both a hard constraint (that is time and cost expensive) and a soft constraint (my goals, clarified below).
-
-
Although I must make this system searchable, I should make it searchable with respect to my train of thought. Only in reflection can I connect entities, and in writing I believe that I *shouldn't* connect entities without a new element. (E.g., I should not just connect paper A with block B, but instead connect them with note C that explains the reaction / next steps that arose from their connecting). That said, I wouldn't make that a hard constraint, rather a behavioral one. Similarly, I am technically able to highlight documents in Reader without attaching an annotation, but I don't because that's not helpful to me. The same applies here.
-
+
-
+
I'll hold back on attempting to better organize my thoughts just to get this idea down. In the implementation of a trail, I do wonder if a "step" in the trail must be a single entity, or if it can be an array of entities. For instance, let's say I want to react to 2 annotations of mine. Does that trail require I order it `annotation_1 -> annotation_2 -> reaction`? This seems like an arbitrary system constraint, when in reality the relationship is: `[annotation_1, annotation_2] -> reaction`. I imagine allowing for arrays in graph-like relationships increases complexity, but to be more specific, it increases implementational complexity while providing user simplicity. That should always be the goal when designing systems. In Dijkstra's *On the nature of Computing Science*:
-
+
-
+
> Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
-
+
-
+
It's worth it to do the "hard work" to achieve simplicity.
-
+
-
+
05.27.26
-
Are.na / dev-otcejg6g3nk (4)Lua in Erlang | LuerlE.W.Dijkstra Archive: On the nature of Computing Science (EWD 896)Archive: The Intentional Domain Workbench - YouTubeLakebed Docs
- ▾ Are.na / dev-otcejg6g3nk (4)
-
Lua in Erlang | Luerl img
-
E.W.Dijkstra Archive: On the nature of Computing Science (EWD 896) img
-
Archive: The Intentional Domain Workbench - YouTube img
-
Lakebed Docs img
-
Are.na / map-ledger-diagram (1)Screenshot 2026-05-27 at 9.18.00 PM
- ▾ Are.na / map-ledger-diagram (1)
-
Screenshot 2026-05-27 at 9.18.00 PM img
-
Are.na / archive-mdnuqrmhvny (9)Computer Power and Human Reason - Chapter 3Computer Power and Human Reason - Chapter 10Computer Power and Human Reason - Chapter 1Computer Power and Human Reason - Chapter 4Scientific and Artistic Imagination • Measure for MeasureScientific and Artistic Imagination • Measure for Measure
- ▾ Are.na / archive-mdnuqrmhvny (9)
-
Computer Power and Human Reason - Chapter 3 img
-
Computer Power and Human Reason - Chapter 10 img
-
Computer Power and Human Reason - Chapter 1 img
-
Computer Power and Human Reason - Chapter 4 img
-
Scientific and Artistic Imagination • Measure for Measure img
-
Scientific and Artistic Imagination • Measure for Measure img
-
The Day After Trinity img
-
Home - Books - NCBI img
-
The Wired Laboratory - Impact of Advances in Computing and Communications Technologies on Chemical Science and Technology - NCBI Bookshelf img
-
Are.na / computer_canon (1)joseph-weizenbaum-computer-power-and-human-reason-from-judgement-to-calculation-1.pdf
- ▾ Are.na / computer_canon (1)
-
joseph-weizenbaum-computer-power-and-human-reason-from-judgement-to-calculation-1.pdf img
-
Readwise / Ironies of automation
(3)
-
Readwise / Backtracking through Time and Space in Erlang | Quinn Wilton & Robert Virding | Code BEAM Europe 22 - YouTube (15)
-
-
- Obsidian (21)
-
-
-
-
It was late March, or perhaps early April, when Hans arrived. There was the swing of the door, an exchange of words, and, after receiving his linens and key from the host, Hans stepped up the narrow staircase, returning the lobby to its previous quiet. Hans knew much of this place. He knew it was of the more affordable lodging in the heart of Amsterdam. He knew the staff to be agreeable and welcoming towards an extended stay. He even knew, by word of a partner at his firm whose sister had stayed the year before, that its café served, among many unremarkable dishes, an impressive Eggs Benedict. What Hans did not know, was that here, at the Hostel Vondelstraat, he would be murdered.
-
-
*So begins the first draft of my late father's story, "The Untimely Death of Hans Engelhardt". I had heard very little of it during his life; as you know, he was quite guarded with his unfinished writing. In organizing his files for you, I came across two manuscripts of this piece. The first is deeply captivating, though scattered and evidently missing whole sections of writing, either thrown away or lost in the move. The second, while structured more coherently, lacks the energy of the first and alters fundamental plot points. In your ongoing efforts to prepare his collected works, I offer this piece for your consideration. It is important to note that this is not one of his finest works. While my father was a bright man, he was not well traveled, and the piece contains significant misunderstandings surrounding Amsterdam and the Dutch people. Nevertheless, you have asked for any relevant materials, so what follows is my attempt to consolidate these manuscripts in a considerate manner and provide annotations which clarify their at times puzzling irregularities.*
-
-
-
Trails allow for graph-like connections between entities in the wastebook (or quarry, naming open to debate) system. A pre-existing trail-like connection already exists: when I annotate a document in Reader, I've created a trail of length 3; that is the source document, the highlighted text, and my comment. While this form of trail is built into the data model of Reader itself, there is no reason why other entities cannot participate in these trails or trails of their own.
-
-
Trails can allow for fragmented, purposefully-disorganized reflection. Across information systems, I strongly believe capture should be as cheap as possible. Most ideas are short and dissipate quickly. Longer tasks (long form synthesis, creating) require extended periods of uninterrupted focus, which are relatively rare in the grand scheme of things. Ideas should not be lost simply because they arise outside of that window. A trail serves as a reaction to one or more entities, say a comment on an image from Are.na, a note on a document I'd like to read soon, an answer to a question posed in an annotation. Or maybe I want to collect a set of entities to represent a connection between them. I see a comment I made in reaction to a highlight and I attach 2 Are.na blocks as relevant follow up. It doesn't really matter. It is simply a way to connect units of information.
-
-
One critical affordance threads give is LLM interaction. Through a trigger word, I can invoke an LLM on a given trail to do some work (whether that's respond to a question, find a source document, etc.) The agent receives the trail, including the latest entity as the element containing its mention, performs some agentic task, and appends entities to the trail. That append can be: some text, an Are.na block from a source it found, a highlight (e.g. I ask "have I read something similar to XYZ before?"). An agent can now participate in this system as little or as much as I need. The idea of a "chat" is gone. An agent simply interacts with the trail from which it was invoked.
-
-
Prior to implementing an agentic layer, the underlying system must be developed considerately. Entities need to be ingested properly and exhaustively. All search strategies (see Berrypicking paper) must be accounted for to ensure proper retrieval. Then, by connecting an agent to these search tools via MCP, it can effectively traverse the information system to perform work.
-
-
There are obviously plenty of complexities that I'm unaware of (I'm sure there are canonical sources on graph-connected systems, people who have tried and failed to build systems like this). I have obviously used Vannevar Bush's term "trail" for this, so another read of "As We May Think" is probably worthwhile. But we have 60+ years of trial and error since then, I'm sure there is more to evaluate.
-
-
A note on what constitutes a worthwhile trail. A given connection is made when I personally connect multiple entities in service of an idea. Connections are not actually meant to make the system more traversable from a retrieval perspective. This may sound counterintuitive to much of my thinking. Allow me to explain. In this writing, I have referenced "As We May Think" and the berrypicking paper (exact name escaping me right now). Would it be cool if I could automatically connect those papers to this piece of writing to traverse between them? Sure. Could you design an agentic system that scans writing and extracts references such as this? Sure, and that'd be super useful for some cases, but not for this context.
-
-
Although I must make this system searchable, I should make it searchable with respect to my train of thought. Only in reflection can I connect entities, and in writing I believe that I *shouldn't* connect entities without a new element. (E.g., I should not just connect paper A with block B, but instead connect them with note C that explains the reaction / next steps that arose from their connecting). That said, I wouldn't make that a hard constraint, rather a behavioral one. Similarly, I am technically able to highlight documents in Reader without attaching an annotation, but I don't because that's not helpful to me. The same applies here.
-
I’m often restless
-
Much like the wind
-
But you’ve got calm enough for two
-
And calm you do
-
Until the trees stand still again
-
-
You leave your footsteps
-
Along the path
-
Between my memories old and new
-
With gentle shoes
-
And when you’re gone I follow them
-
-
I was unprepared for you
-
-
-
I will care for you
-
Beyond the setting sun
-
-
I take for granted
-
-
-
You leave me breathless
-
In your eyes
-
I see the whole world all anew
-
It’s what you do
-
To me my darling
-
-
So I don't like to gear my material to a specific audience but I'd like to make a quick exception because I was told a few of Adam's coworkers from Habitat are here — I understand they flew a long distance to make it tonight — so this morning I worked up a joke especially for them. Those of you who don't work in energy trading probably won't get this, though maybe Adam's explained a bit of his work to you, but bear with me for a moment, I'd really like to do this.
-
-
This head of trading was in the middle of his morning book, and he started hedging a Palo Verde spark spread against a Markov-switching load forecast. Just then, this little junior quant leaned over and said, "You can't hedge a Palo Verde spark spread against a Markov-switching load forecast." Well, this infuriated the head of trading, so he pulled up Volume 14 of the Kinsley Stochastic Dispatch manual, and he reads to him and says, "The Palo Verde spark spread clears at the modal dispatch threshold." Just then, the little junior quant leaned over and said, "It says nodal, not modal!"
-
-
---
-
-
I love Adam. I've known him since he was a baby. And we've been the same age ever since.
-
-
Together, we grew up in Maryland, spent our summers at Lake Owego camp, and studied at the University of Michigan. I ran the numbers and I've spent a bit over 14% of my days under the same roof as him; about 1 out of every 7, as common to me as any given day of the week.
-
-
It's quite rare to have spent so much of life by someone's side, and in sharing all this time together, I'm in a unique position to have deeply known every version of Adam.
-
-
There was the Adam of our early childhood, who pretended with me to be Michigan football players out in the Levey backyard with Micah and Zach.
-
-
There was the Adam of our camp summers, with whom I crafted campfires and canoed a hundred miles.
-
-
The Adam of our teenage years, who went to a different high school but hung out with my friends as much as I did. This Adam also got me drunk for the first time off Mike's Hard Lemonade in the Levey basement.
-
-
There was the Adam of college freshman year, who dropped real low at DTD parties, as I hope we will witness tonight. I’m talking real low.
-
-
And there was the Adam of college fifth year, who I had the pleasure of watching dig into the work that would become his career, and eat a diet primarily of roasted nuts.
-
-
---
-
-
Adam, it is the greatest honor to be your best man.
-
-
As best man, my role has been to support the groom. And I've done my best — scouting locations for the bachelor camping trip in Utah — where I provided the exact longitude and latitude to the strippers — validating Adam and Zoe’s well curated music you'll hear tonight, and lending an ear on countless calls checking in on the wedding progress.
-
-
But the truth is that Adam, in the middle of planning his own wedding, has supported me.
-
-
*MINI BEAT*
-
-
As many of you know, Adam and I are best friends because our dads were; a friendship so strong it grew its own family tree. This year, that tree weathered a terrible storm. And Adam, from three thousand miles away, has been by my side at every step. When I've needed him most, more than once he has been on the first flight out of San Francisco without my ever having to ask.
-
-
This is what it means to be loved by Adam. And I've been lucky enough to know it my whole life. My dad gave me a lot of things; Adam was quite the gift.
-
-
---
-
-
Zoe, you came into our lives over a bottle of wine and a Marvel movie. It was junior year of college, and I remember just how giddy Adam was all day before you arrived for your first date at State and Hill. He even showered for the first time that semester.
-
-
I have this memory: it's a few years later, the three of us sitting around the fire pit at my house in Maryland, talking late into the night. We discussed everything under the sun: you asked me questions about my relationship to music, shared your thoughts on science and creativity, and I was struck, as I have been many times since, by your deeply focused, yet calm curiosity. Curiosity is a form of caring; you care tremendously. It was plainly apparent that night that, just like Adam, you see the world as a fantastic mystery — a puzzle not to be solved, but enjoyed piece by piece. I knew then that there was simply no future version of Adam without you.
-
-
These days, when I call Adam and you come into the room, the tone of his voice changes. Through the phone I can hear his smile. There’s a weightlessness to his words, and in your presence he shines — with laughter, confidence, and ease. Zoe, there is no greater person in the world to stand by my best friend’s side, through anything and everything that comes your way.
-
-
---
-
-
Though I have known every version of Adam, tonight I meet a new one for the very first time: husband Adam. I am confident this version will be even more incredible than all the others, given the company he gets to share along the way.
-
-
I love you Adam, my brother. And I love you Zoe, now my sister. And so today, as we celebrate my brother marrying my...sister, I regret my choice of words but the sentiment stands.
-
-
Please raise a glass to Adam and Zoe. Mazel tov.
-
-
```
-
curl "https://readwise.io/api/v3/list/?tag=publish" \
-
-H "Authorization: Token [YOUR_TOKEN]" \
-
-H "Content-Type: application/json"
-
-
```
-
-
If I put public link as the document note and mark "publish", then I have a way of fetching what I need.
-
-
-
PLAN
-
-
# Gridlock - Technical Specification
-
-
## Board Setup
-
-
- **Grid**: 5×5 with toroidal topology (edges wrap: left↔right, top↔bottom)
-
- **Coordinates**: (0,0) = top-left, (4,4) = bottom-right
-
- **Pawn**: Starts at (2,2) - center square
-
- **Player 1 Tiles**:
-
- A: (0,1)
-
- B: (4,1)
-
- C: (1,4)
-
- **Player 2 Tiles**:
-
- A: (4,3)
-
- B: (0,3)
-
- C: (3,0)
-
- **Symmetry**: All tile positions have 180° rotational symmetry around (2,2)
-
-
## Win Condition
-
-
First player to score all 3 of their tiles wins. Tiles are scored when the pawn lands on them.
-
-
## Turn Structure
-
-
### 1. Selection Phase
-
-
Both players simultaneously and secretly select one action:
-
-
- **Vote**: Choose cardinal direction (U/D/L/R) to move pawn
-
- **Move Tile**: Choose one unscored tile and direction (U/D/L/R/UL/UR/DL/DR) to move it 1 space
-
-
### 2. Resolution Phase
-
-
#### Case A: Both players voted
-
-
Calculate vector sum of votes:
-
-
- **Same direction**: Pawn moves 2 spaces in that direction
-
- **Opposite directions**: No movement, **lockout occurs**
-
- **Different directions**: Pawn moves 1 space diagonally (sum of vectors)
-
-
#### Case B: Both players moved tiles
-
-
- If tiles move to **same destination**: Neither moves, **lockout occurs**
-
- If tiles move to **different destinations**:
-
- Check each tile's destination for opponent tiles
-
- If destination occupied by opponent tile that didn't move: **move blocked**, tile stays
-
- Otherwise: tile moves to destination
-
-
#### Case C: One voted, one moved tile
-
-
- Pawn moves 1 space in voted direction
-
- Tile attempts to move:
-
- If destination occupied by opponent tile: **move blocked**, tile stays
-
- Otherwise: tile moves to destination
-
-
### 3. Scoring Phase
-
-
After all movement resolves:
-
-
- If pawn occupies same square as any tile, that tile is **scored**
-
- Scored tiles are removed from board
-
- Scored tiles cannot be moved
-
-
### 4. Lockout System
-
-
When lockout occurs:
-
-
- **Pawn vote lockout**: Add both conflicting directions to pawn lockout list
-
- **Tile move lockout**: Add conflicting direction to each player's tile lockout list
-
- Players must select again with locked directions disabled
-
- Lockout directions **accumulate** until turn successfully resolves
-
- **Turn does not advance** - board state unchanged
-
- All lockouts clear when turn successfully resolves
-
-
## Special Rules
-
-
### Tile Blocking
-
-
- Tiles cannot occupy same space (no stacking)
-
- Moving into space with opponent's stationary tile: move fails, tile stays in place
-
- Moving into space opponent is vacating: move succeeds
-
-
### Movement Wrapping
-
-
All coordinates wrap:
-
-
```
-
wrap(x) = ((x % 5) + 5) % 5
-
```
-
-
### Lockout Accumulation Example
-
-
1. P1 votes L, P2 votes R → lockout, L and R now blocked
-
2. P1 votes U, P2 votes D → lockout, U and D now added to blocked list
-
3. All 4 directions blocked, must move tiles to resolve
-
4. Turn resolves → all lockouts clear
-
-
## Action Space
-
-
- **Pawn voting**: 4 options (U/D/L/R), reduced by active lockouts
-
- **Tile movement**: Up to 3 tiles × 8 directions = 24 options, reduced by scored tiles and active lockouts
-
- **Total per player**: 4-28 options depending on game state
-
-
-
---
-
-
Brute force implementation
-
-
```ts
-
import React, { useState } from 'react'; -
-
export default function PawnGame() { -
const boardSize = 5;
-
const [pawn, setPawn] = useState({ x: 2, y: 2 }); -
const [p1Tiles, setP1Tiles] = useState([
-
{ x: 0, y: 1, scored: false }, -
{ x: 4, y: 1, scored: false }, -
{ x: 1, y: 4, scored: false } -
]);
-
const [p2Tiles, setP2Tiles] = useState([
-
{ x: 4, y: 3, scored: false }, -
{ x: 0, y: 3, scored: false }, -
{ x: 3, y: 0, scored: false } -
]);
-
const [p1Score, setP1Score] = useState(0);
-
const [p2Score, setP2Score] = useState(0);
-
-
const [p1Selection, setP1Selection] = useState('P'); -
const [p1Direction, setP1Direction] = useState(null);
-
const [p2Selection, setP2Selection] = useState('P'); -
const [p2Direction, setP2Direction] = useState(null);
-
-
const [pawnLockout, setPawnLockout] = useState([]);
-
const [p1TileLockout, setP1TileLockout] = useState([]);
-
const [p2TileLockout, setP2TileLockout] = useState([]);
-
-
const [winner, setWinner] = useState(null);
-
-
const wrap = (val) => ((val % boardSize) + boardSize) % boardSize;
-
-
const directions = { -
'U': { x: 0, y: -1 }, -
'D': { x: 0, y: 1 }, -
'L': { x: -1, y: 0 }, -
'R': { x: 1, y: 0 }, -
'UL': { x: -1, y: -1 }, -
'UR': { x: 1, y: -1 }, -
'DL': { x: -1, y: 1 }, -
'DR': { x: 1, y: 1 } -
};
-
-
const resolveTurn = () => { -
if (!p1Direction || !p2Direction) { -
alert('Both players must select a direction'); -
return;
-
}
-
-
const p1Action = p1Selection === 'P' ? { type: 'vote', data: p1Direction } : { -
type: 'tile',
-
data: { -
idx: p1Selection === 'A' ? 0 : p1Selection === 'B' ? 1 : 2,
-
dir: p1Direction,
-
dest: (() => { -
const idx = p1Selection === 'A' ? 0 : p1Selection === 'B' ? 1 : 2;
-
const tile = p1Tiles[idx];
-
const d = directions[p1Direction];
-
return { x: wrap(tile.x + d.x), y: wrap(tile.y + d.y) }; -
})()
-
}
-
};
-
-
const p2Action = p2Selection === 'P' ? { type: 'vote', data: p2Direction } : { -
type: 'tile',
-
data: { -
idx: p2Selection === 'A' ? 0 : p2Selection === 'B' ? 1 : 2,
-
dir: p2Direction,
-
dest: (() => { -
const idx = p2Selection === 'A' ? 0 : p2Selection === 'B' ? 1 : 2;
-
const tile = p2Tiles[idx];
-
const d = directions[p2Direction];
-
return { x: wrap(tile.x + d.x), y: wrap(tile.y + d.y) }; -
})()
-
}
-
};
-
-
let newPawn = { ...pawn }; -
let newP1Tiles = [...p1Tiles];
-
let newP2Tiles = [...p2Tiles];
-
let newPawnLockout = [...pawnLockout];
-
let newP1TileLockout = [...p1TileLockout];
-
let newP2TileLockout = [...p2TileLockout];
-
let lockoutOccurred = false;
-
-
// Both voted
-
if (p1Action.type === 'vote' && p2Action.type === 'vote') { -
const d1 = directions[p1Action.data];
-
const d2 = directions[p2Action.data];
-
const sumX = d1.x + d2.x;
-
const sumY = d1.y + d2.y;
-
-
if (sumX === 0 && sumY === 0) { -
if (!newPawnLockout.includes(p1Action.data)) newPawnLockout.push(p1Action.data);
-
if (!newPawnLockout.includes(p2Action.data)) newPawnLockout.push(p2Action.data);
-
lockoutOccurred = true;
-
} else { -
newPawn = { x: wrap(pawn.x + sumX), y: wrap(pawn.y + sumY) }; -
}
-
}
-
// Both moved tiles
-
else if (p1Action.type === 'tile' && p2Action.type === 'tile') { -
const p1Dest = p1Action.data.dest;
-
const p2Dest = p2Action.data.dest;
-
-
if (p1Dest.x === p2Dest.x && p1Dest.y === p2Dest.y) { -
// Both trying to move to same destination - lockout
-
if (!newP1TileLockout.includes(p1Action.data.dir)) newP1TileLockout.push(p1Action.data.dir);
-
if (!newP2TileLockout.includes(p2Action.data.dir)) newP2TileLockout.push(p2Action.data.dir);
-
lockoutOccurred = true;
-
} else { -
// Move P1's tile (will check for collision later)
-
const p1NewPos = { ...p1Tiles[p1Action.data.idx], ...p1Dest }; -
-
// Move P2's tile (will check for collision later)
-
const p2NewPos = { ...p2Tiles[p2Action.data.idx], ...p2Dest }; -
-
// Check if P1's destination collides with any P2 tile that hasn't moved
-
const p1Blocked = p2Tiles.some((t, idx) =>
-
idx !== p2Action.data.idx && t.x === p1Dest.x && t.y === p1Dest.y
-
);
-
-
// Check if P2's destination collides with any P1 tile that hasn't moved
-
const p2Blocked = p1Tiles.some((t, idx) =>
-
idx !== p1Action.data.idx && t.x === p2Dest.x && t.y === p2Dest.y
-
);
-
-
// Only move tiles if not blocked
-
if (!p1Blocked) { -
newP1Tiles[p1Action.data.idx] = p1NewPos;
-
}
-
if (!p2Blocked) { -
newP2Tiles[p2Action.data.idx] = p2NewPos;
-
}
-
}
-
}
-
// Split
-
else { -
if (p1Action.type === 'vote') { -
const d = directions[p1Action.data];
-
newPawn = { x: wrap(pawn.x + d.x), y: wrap(pawn.y + d.y) }; -
}
-
if (p2Action.type === 'vote') { -
const d = directions[p2Action.data];
-
newPawn = { x: wrap(pawn.x + d.x), y: wrap(pawn.y + d.y) }; -
}
-
if (p1Action.type === 'tile') { -
const p1Dest = p1Action.data.dest;
-
// Check if destination is blocked by any P2 tile
-
const p1Blocked = p2Tiles.some(t => t.x === p1Dest.x && t.y === p1Dest.y);
-
if (!p1Blocked) { -
newP1Tiles[p1Action.data.idx] = { ...p1Tiles[p1Action.data.idx], ...p1Dest }; -
}
-
}
-
if (p2Action.type === 'tile') { -
const p2Dest = p2Action.data.dest;
-
// Check if destination is blocked by any P1 tile
-
const p2Blocked = p1Tiles.some(t => t.x === p2Dest.x && t.y === p2Dest.y);
-
if (!p2Blocked) { -
newP2Tiles[p2Action.data.idx] = { ...p2Tiles[p2Action.data.idx], ...p2Dest }; -
}
-
}
-
}
-
-
// If lockout occurred, update lockouts and clear selections but don't advance turn
-
if (lockoutOccurred) { -
setPawnLockout(newPawnLockout);
-
setP1TileLockout(newP1TileLockout);
-
setP2TileLockout(newP2TileLockout);
-
setP1Direction(null);
-
setP2Direction(null);
-
alert('Lockout! Those directions are now blocked. Choose different moves.'); -
return;
-
}
-
-
// Check scoring
-
let newP1Score = p1Score;
-
let newP2Score = p2Score;
-
-
newP1Tiles = newP1Tiles.map(t => { -
if (!t.scored && t.x === newPawn.x && t.y === newPawn.y) { -
newP1Score++;
-
return { ...t, scored: true }; -
}
-
return t;
-
});
-
-
newP2Tiles = newP2Tiles.map(t => { -
if (!t.scored && t.x === newPawn.x && t.y === newPawn.y) { -
newP2Score++;
-
return { ...t, scored: true }; -
}
-
return t;
-
});
-
-
setPawn(newPawn);
-
setP1Tiles(newP1Tiles);
-
setP2Tiles(newP2Tiles);
-
setP1Score(newP1Score);
-
setP2Score(newP2Score);
-
-
// Clear lockouts only on successful turn resolution
-
setPawnLockout([]);
-
setP1TileLockout([]);
-
setP2TileLockout([]);
-
-
setP1Direction(null);
-
setP2Direction(null);
-
-
if (newP1Score === 3) setWinner('P1'); -
if (newP2Score === 3) setWinner('P2'); -
};
-
-
const renderBoard = () => { -
const cells = [];
-
for (let y = 0; y < boardSize; y++) { -
for (let x = 0; x < boardSize; x++) { -
let content = '';
-
let bg = '#fff';
-
-
if (pawn.x === x && pawn.y === y) content = '●';
-
-
const p1Tile = p1Tiles.find(t => !t.scored && t.x === x && t.y === y);
-
if (p1Tile) { -
const idx = p1Tiles.indexOf(p1Tile);
-
content = '1' + ['A', 'B', 'C'][idx];
-
bg = '#9f9';
-
}
-
-
const p2Tile = p2Tiles.find(t => !t.scored && t.x === x && t.y === y);
-
if (p2Tile) { -
const idx = p2Tiles.indexOf(p2Tile);
-
content = '2' + ['A', 'B', 'C'][idx];
-
bg = '#99f';
-
}
-
-
cells.push(
-
<div key={`${x}-${y}`} style={{ -
width: 40,
-
height: 40,
-
background: bg,
-
display: 'flex',
-
alignItems: 'center',
-
justifyContent: 'center',
-
fontSize: content.length > 1 && content !== '✓' ? 14 : 20
-
}}>
-
{content} -
</div>
-
);
-
}
-
}
-
return cells;
-
};
-
-
const renderPlayerControls = (player, selection, setSelection, direction, setDirection, tiles, tileLockout) => { -
const isPawn = selection === 'P';
-
const cardinalDirs = ['U', 'L', 'R', 'D'];
-
const diagonalDirs = ['UL', 'UR', 'DL', 'DR'];
-
-
const tileLabels = ['A', 'B', 'C'];
-
const activeTileLabels = tileLabels.filter((_, idx) => !tiles[idx].scored);
-
-
return (
-
<div style={{ border: '1px solid #000', padding: 10, marginBottom: 10 }}> -
<h3>{player}</h3> -
<div style={{ display: 'flex', gap: 20, alignItems: 'flex-start' }}> -
<div>
-
<div style={{ marginBottom: 5 }}>Select:</div> -
<div style={{ display: 'flex', flexDirection: 'column', gap: 2 }}> -
{['P', ...activeTileLabels].map(opt => ( -
<button
-
key={opt} -
onClick={() => { -
setSelection(opt);
-
setDirection(null);
-
}}
-
style={{ -
width: 40,
-
height: 40,
-
border: '1px solid #000',
-
background: selection === opt ? '#ddd' : '#fff',
-
cursor: 'pointer',
-
fontSize: 16
-
}}
-
>
-
{opt} -
</button>
-
))}
-
</div>
-
</div>
-
<div>
-
<div style={{ marginBottom: 5 }}>Direction:</div> -
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 40px)', gap: 2 }}> -
{[ -
['UL', 'U', 'UR'],
-
['L', null, 'R'],
-
['DL', 'D', 'DR']
-
].map((row, i) => row.map((dir, j) => { -
if (!dir) return <div key={`${i}-${j}`} style={{ width: 40, height: 40 }} />; -
-
const isDiagonal = diagonalDirs.includes(dir);
-
const isDisabled = (isPawn && isDiagonal) ||
-
(isPawn && pawnLockout.includes(dir)) ||
-
(!isPawn && tileLockout.includes(dir));
-
-
return (
-
<button
-
key={dir} -
disabled={isDisabled} -
onClick={() => setDirection(dir)} -
style={{ -
width: 40,
-
height: 40,
-
border: '1px solid #000',
-
background: direction === dir ? '#ddd' : '#fff',
-
cursor: isDisabled ? 'not-allowed' : 'pointer',
-
opacity: isDisabled ? 0.3 : 1,
-
fontSize: 10
-
}}
-
>
-
{dir} -
</button>
-
);
-
}))}
-
</div>
-
</div>
-
</div>
-
<div style={{ marginTop: 10 }}> -
Selected: {selection} {direction || '(no direction)'} -
</div>
-
</div>
-
);
-
};
-
-
return (
-
<div style={{ fontFamily: 'monospace', margin: 20, background: '#fff', minHeight: '100vh' }}> -
<h1>Gridlock</h1>
-
-
{winner && <h2>Winner: {winner}!</h2>} -
-
<div style={{ marginBottom: 20 }}> -
<div>P1 Score: {p1Score}/3</div> -
<div>P2 Score: {p2Score}/3</div> -
</div>
-
-
<div style={{ display: 'flex', marginBottom: 20 }}> -
<div style={{ display: 'flex', flexDirection: 'column', marginRight: 5 }}> -
<div style={{ height: 20 }}></div> -
{[...Array(boardSize)].map((_, y) => ( -
<div key={y} style={{ -
height: 40,
-
width: 20,
-
display: 'flex',
-
alignItems: 'center',
-
justifyContent: 'center',
-
fontSize: 12,
-
marginTop: y > 0 ? 1 : 0
-
}}>
-
{y} -
</div>
-
))}
-
</div>
-
<div>
-
<div style={{ display: 'flex', marginBottom: 5 }}> -
{[...Array(boardSize)].map((_, x) => ( -
<div key={x} style={{ -
width: 40,
-
height: 20,
-
display: 'flex',
-
alignItems: 'center',
-
justifyContent: 'center',
-
fontSize: 12,
-
marginLeft: x > 0 ? 1 : 0
-
}}>
-
{x} -
</div>
-
))}
-
</div>
-
<div style={{ -
display: 'grid',
-
gridTemplateColumns: `repeat(${boardSize}, 40px)`, -
gap: 1,
-
background: '#000',
-
border: '1px solid #000'
-
}}>
-
{renderBoard()} -
</div>
-
</div>
-
</div>
-
-
{renderPlayerControls('Player 1 (Green)', p1Selection, setP1Selection, p1Direction, setP1Direction, p1Tiles, p1TileLockout)} -
{renderPlayerControls('Player 2 (Blue)', p2Selection, setP2Selection, p2Direction, setP2Direction, p2Tiles, p2TileLockout)} -
-
<button
-
onClick={resolveTurn} -
style={{ -
padding: '10px 20px',
-
border: '1px solid #000',
-
background: '#000',
-
color: '#fff',
-
fontWeight: 'bold',
-
cursor: 'pointer',
-
fontSize: 16
-
}}
-
>
-
RESOLVE TURN
-
</button>
-
-
<button
-
onClick={() => window.location.reload()} -
style={{ -
padding: '10px 20px',
-
border: '1px solid #000',
-
background: '#fff',
-
marginLeft: 10,
-
cursor: 'pointer'
-
}}
-
>
-
Reset Game
-
</button>
-
</div>
-
);
-
}
-
```
-
-
-
-
-
**Gridlock MVP Implementation**
-
-
**Architecture:**
-
-
- Next.js + TypeScript + React
-
- Local state management (no backend yet)
-
- Single device, two players alternate input
-
-
**Flow:**
-
-
1. Player 1 selects move and confirms
-
2. Player 2 selects move and confirms
-
3. Both selections resolve simultaneously using existing game logic (vector sum, lockouts, scoring)
-
4. Repeat until win condition
-
-
**Key Features:**
-
-
- Hide P1's selection when P2 is choosing (maintain secrecy)
-
- Direct interaction: click tiles/pawn to select, click the space you'd like for it to inhabit
-
- must confirm with a "confirm" button, or can clear with "clear" button if prefer different vote
-
- Clean component architecture and data model
-
- All game rules from technical spec implemented
-
-
**Purpose:**
-
-
- Polish UX and component structure
-
- Validate game balance and mechanics
-
- Build production-ready codebase before adding multiplayer
-
- Easy migration path: resolution logic moves to Convex later (for backend + realtime sync), UI stays same
-
-
-
A new addition to the game mechanics is that when a tile is "captured" by the pawn, that now becomes a "dead cell" on the grid. how dead cells work:
-
- no tiles nor the pawn can move into it, so it is not an available move in their cardinal/diagonal options
-
- if a pawn is moved in the same direction by both players, causing it to move in that direction by 2 cells, and the second cell is a dead cell, it just moves 1 cell.
-
-
-
- **Wrench joke**
-
- **"We were both babies."** Been the same age ever since.
-
- **Every era.** Camp, high school, Michigan. I've known every version of him.
-
- **Who he is.** Cares enormously, lives intentionally, never takes himself too seriously.
-
- **Funny stuff.** Monogamy arc. Maybe lamb shanks.
-
- **He's always been there.** First kiss. Homecoming. Then — your dad. One breath. Let it land.
-
- **Zoe.** The first date. What she actually is to him. The right person.
-
- **Toast.**
-
-
-
-
So I don't like to gear my material to a specific audience but I'd like to make an exception because I was told there's a few of Adam's coworkers from Habitat here — I understand they flew a long distance to make it tonight — so this morning I worked up a joke especially for them. Those of you who don't work in energy trading probably won't get this, though maybe Adam's talked to you a bit about his work, but I think those of you who understand will really enjoy this…
-
-
This head of trading was stochastically optimizing a bid stack against a rolling-intrinsic valuation, co-optimized across regulation-up and non-spin using a 7-node basis spread under a Markov-switching load forecast. Just then, this little junior quant leaned over and said, "You can't co-optimize a rolling-intrinsic with a 7-node basis spread across a Markov-switching forecast." Well, this infuriated the head of trading, so he pulled up Volume 14 of the Kinsley Stochastic Dispatch manual, and he reads to him and says, "The 7-node basis spread clears at the mode-locked dispatch threshold." Just then, the little junior quant leaned over and said, "It says _node_, not _mode_."
-
-
...how many coworkers were supposed to be here?
-
-
---
-
-
I've known adam since he was a baby. And we've been the same age ever since.
-
-
probably too crude:
-
There was the Adam of bunk Pike who, lacking neither foresight nor a healthy microbiome, ran back to our cabin in an ill-fated attempt at relieving himself with dignity. The toilet was simply too far, and in a stroke of deranged genius, Adam aimed and fired at another camper's shorts lying on the ground, later convincing everyone the poor soul had done it himself. It was years before we learned that rather, Adam had pooped another mans pants.
-
-
Together we grew up in Maryland, went to summer camp at Lake Owego, and studied at the University of Michigan. I've been there at all junctures, so I'm in a unique position to have deeply known every version of Adam.
-
There was the Adam in bunk Carson, who
-
There was the Adam in late high school, who proved to me that our homes were not a driving distance of 20 minutes, but rather under 15. The key element being the driver.
-
There was the Adam freshman year of college, who
-
There was the Adam Junior year of college, who cried on my shoulder after an impossibly difficult physics exam.
-
-
This latest chapter of our lives has created the first true physical distance between Adam and myself; him, in San Francisco, me in New York. And that's been really hard. I mean, for my entire life we've either been minutes away or living under the same roof.
-
-
-
Adam cares so deeply for the people in his life. His family, his friends, the campers he was a counselor for.
-
-
When I think of Adam I think of intentionality. I've met no one else who has so continuously reflected on what matters most to them, and then consistently directed their attention in accordance with those priorities. In caring for his friends, in navigating his profession and passions, in nurturing his relationship with Zoe, Adam is breathtakingly exacting. And this is fundamentally rooted in how much he cares, in his recognition of life's preciousness. He lives it according to his truth, takes nothing for granted, and through my entire life this has been a profound source of my admiration.
-
-
In having known every version of Adam, I have also had the privilege of being supported by every version of Adam.
-
-
When my date left me at homecoming Junior year of high school, at her school where I knew nobody, I went straight to Adam's and he made the night worthwhile.
-
-
When I got too drunk in the Dominican Republic senior year of high school, though I have no memory of it, Adam showered and clothed me.
-
-
When I got too drunk freshman year of college, we'll skip these over (flips lots of pages)
-
-
... and that's when we learned it hurts to be pelted with eggs.
-
-
It was the greatest honor to be tasked with being Adam's best man. Normally, the role of the best man is to support the groom. And in many ways I have done my best, scouting locations for his bachelor's backpacking trip, providing the correct longitude and latitude to the strippers, helping coordinate the music, but I haven't done as much as you might think. This has been a very hard year, and the truth is Adam, in a remarkably busy time, planning his wedding, has supported me. When my dad passed, he was on the first flight out of San Francisco.
-
-
Adam is my best friend because Steve was my dad's best friend. And the two of them were part of a larger group of friends, known as the idiots, who we have always looked up to. What of gift it is that we now have our own group of idiots, nearly as funny yet perhaps even more stupid. Our jokes make sense to no one but us, our conversations are either about everything in the world, or nothing at all. And now a few of us have been fortunate to find partners, and you can see that this is how it out starts. My dad was not always terribly open about how his diagnosis affected him emotionally. But in one conversation as a family he let us know he was at peace, for he had lived such a wonderful life, its hallmark the people he spent it with. Despite reflecting on an entire lifetime with Adam by my side, I am also struck that in some ways, our lives are just beginning right now. With our friends, our families, our partners, we now get to fill up a whole lifetime of shared memories.
-
-
When I think of Adam I think of intentionality, which is why it is no surprise that he has chosen Zoe to be his partner in life.
-
-
I remember when he and Zoe had their first date. We were living at the corner of state and hill in ann arbor, and Adam and I lived in the two units on the first floor of the house. He popped in to let me know he had a date with a girl and they were, quote, gonna drink a bottle of wine and watch a marvel movie. Needless to say he was ecstatic.
-
-
Having been lucky enough to know Zoe since the very beginning of their relationship, I have witnessed just how perfect a compliment she is to my friend Adam. She not only understands him, but TBD. They encourage each others' curiosity, celebrate accomplishments, share dreams. There is no greater person in the world to stand by my best friend's side, through anything and everything that comes their way.
-
-
Adam and Zoe have already embarked on such a remarkable shared journey, rooted in their love for one another and how they equally squeeze every last drop out of this life they've been given. In this I admire them greatly.
-
-
I love you Adam, my brother, and I love you Zoe, my sister — you too are family now. And so as we rejoice today, my brother marrying my sister, I regret my choice of analogy but stand by its virtue.
-
-
[could cut? it's long? But it lands could be great]
-
-
So I don't like to gear my material to a specific audience but I'd like to make a quick exception because I was told there's a few of Adam's coworkers from Habitat here — I understand they flew a long distance to make it tonight — so this morning I worked up a joke especially for them. Those of you who don't work in energy trading probably won't get this, though maybe Adam's explained a bit of his work to you, so everyone else bear with me for a moment, I'd really like to do this.
-
-
This head of trading was in the middle of his morning book, and he started hedging a Palo Verde spark spread against a Markov-switching load forecast. Just then, this little junior quant leaned over and said, "You can't hedge a Palo Verde spark spread against a Markov-switching load forecast." Well, this infuriated the head of trading, so he pulled up Volume 14 of the Kinsley Stochastic Dispatch manual, and he reads to him and says, "The Palo Verde spark spread clears at the modal dispatch threshold." Just then, the little junior quant leaned over and said, "It says nodal, not modal."
-
-
...wait, how many coworkers were here tonight?
-
-
## *BEAT*
-
-
I love Adam. I've known him since he was a baby. And we've been the same age ever since.
-
-
Together, we grew up in Maryland, spent our summers at Lake Owego camp, and studied at the University of Michigan. I ran the numbers and I've spent a bit over 14% of my days under the same roof as him; about 1 out of every 7, as common to me as any given day of the week.
-
-
It's quite rare to have spent so much of early life by someone's side, and in sharing all this time together, I'm in a unique position to have deeply known every version of Adam.
-
-
*MINI BEAT*
-
-
There was the Adam of our early childhood, who pretended with me to be Michigan football players out in the Levey backyard with Micah and Zach.
-
-
There was the Adam of our camp summers, with whom I crafted campfires and canoed a hundred miles.
-
-
The Adam of our teenage years, who went to a different high school but hung out with my friends as much as I did. This Adam also got me drunk for the first time off Mike's Hard Lemonade in the Levey basement.
-
-
There was the Adam of college freshman year, who dropped real low at DTD parties, as I hope we will witness tonight. I’m talking real low.
-
-
And there was the Adam of college fifth year, who I had the pleasure of watching dig into the work that would become his career, and eat a diet primarily of roasted nuts.
-
-
-
## *BEAT*
-
-
Adam, it is the greatest honor to be your best man.
-
-
As best man, my role has been to support the groom. ==And I've done my best== — scouting locations for the bachelor camping trip in Utah — where I provided the exact longitude and latitude to the strippers — validating Adam and Zoe’s well curated music you'll hear tonight, and lending an ear on countless calls checking in on the wedding progress.
-
-
But the truth is that Adam, in the middle of planning his own wedding, has supported me.
-
-
*MINI BEAT*
-
-
As many of you know, Adam and I are best friends because our dads were; a friendship so strong it grew its own family tree. This year, that tree weathered a terrible storm. And Adam, from three thousand miles away, has been by my side at every step. When I've needed him most, more than once he has been on the first flight out of San Francisco without my ever having to ask.
-
-
This is what it means to be loved by Adam. And I've been lucky enough to know it my whole life. My dad gave me a lot of things; ==Adam was quite the gift==.
-
## *BEAT*
-
-
Zoe, you came into our lives over a bottle of wine and a Marvel movie. It was junior year of college, and I remember just how giddy Adam was all day before you arrived for your first date at State and Hill. He even showered for the first time that semester.
-
-
I have this memory: it's a few years later, the three of us sitting around the fire pit at my house in Maryland, talking late into the night. We discussed everything under the sun: you asked me questions about my relationship to music, shared your thoughts on science and creativity, and I was struck, as I have been many times since, by your deeply focused, yet calm curiosity. Curiosity is a form of caring; you care tremendously. It was plainly apparent that night that, just like Adam, you see the world as a fantastic mystery — a puzzle not to be solved, but enjoyed piece by piece. I knew then that there was simply no future version of Adam without you in it.
-
-
These days, when I call Adam and you come into the room, the tone of his voice changes. Through the phone I can hear his smile. There’s a weightlessness to his words, and in your presence he shines — with laughter, confidence, and ease. Zoe, there is no greater person in the world to stand by my best friend’s side, through anything and everything that comes your way.
-
-
## *BEAT*
-
-
Though I have known every version of Adam, tonight I meet a new one for the very first time: husband Adam. I am confident this version will be even more incredible than all the others, given the company he gets to share along the way.
-
-
I love you Adam, my brother. And I love you Zoe, now my sister. And so today, as we celebrate my brother marrying my sister, I regret my choice of words but the sentiment stands.
-
-
Please raise a glass to Adam and Zoe. Mazel tov.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
---
-
-
## Cutting room floor
-
-
-
When I got too drunk fr... eh, let's just skip over these...
-
-
*flips over lots of pages*
-
-
... and that's when we learned it hurts to be pelted with eggs.
-
-
-
His work may confuse us
-
-
-
-
-
## *BEAT*
-
-
In having known every version of Adam, I have also had the privilege of being supported by every version of Adam.
-
-
When my date ditched me at homecoming Junior year of high school, at her school where I knew no one, I went straight to Adam's house and he cheered me up.
-
-
When I got too drunk one night in the Dominican Republic senior year of high school, though I have no memory of it, Adam showered and clothed me.
-
-
When I started dating Tess just as she was graduating college, and worried over if we could make it work long distance, Adam drove around Ann Arbor with me, calming me down. He said it would work itself out, and I think he was pretty right.
-
-
-
-
As many here know, Adam and I are best friends because Steve was my dad's best friend.
-
-
A friendship so strong that it has its own family tree.
-
-
When my dad passed in February, Adam was on the first flight out of San Francisco. He has
-
-
In my darkest days, Adam has seemingly put the entire world on hold to be there for me.
-
-
Adam knows exactly what's important to him. His work is tremendously important, and at times it feels like he bears the weight of finding a way to move mountains. This dedication exists in all directions for him, and I have been the recipient of its aim, where he will put what is important to him truly first. This has been a period I've deeply needed a friend, and despite this really being the first time Adam and I have lived far apart, he has always, always been there for me.
-
-
You see, when I think of Adam, I think of intentionality. I have known no one else who has so continuously reflected on what matters most to them, and then turned all their attention and focus in that direction... He lives it according to his truth, takes nothing for granted, and through my entire life this has been a profound source of my admiration.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
free write
-
-
What did Adam do when dad died?
-
-
-
i mean even before dad died Adam was there for me. checking in. he had even tried to have my dad join a bachelor's trip he did with his dad and brothers, my dad and i were supposed to join them in vegas. dad was just too sick. I still went on the backpacking trip with the groomsmen.
-
-
As dad got more sick, Adam kept an eye on things. There was one scary night we thought it was the end. Dad couldn't speak, he left in an ambulance, I called Tess in hysterics. Adam flew to Maryland and just made himself useful. Slept in the house with the dogs so we could spent all hours in the hospital. It wasn't the end there, but he was there in case.
-
-
Dad died on a weekday, I don't remember what day. We was getting worse and we tried to get down to see him, but it snowed 16 inches in new york and they shut down all transportation in/out the city. I found out standing in penn station. They opened the roads and we paid an uber driver hundreds of dollars to take us to philly, get my sister, and drive down to maryland to meet my mom.
-
-
We got in maybe 7pm? Adam lives in San Francisco, he was in by maybe 6am the next morning. I don't know the specifics, but it was basically the first flight they could get on. Is that a red eye to get in that early? He just made it happen.
-
-
He was the first friend I saw after it happened. We just sat and talked, it was all really surreal. Not a whole lot I could understand, but my friend was right there. We just talked about how hard it was, how everything was now different. We sat in silence quite a bit too. Just the two of us. Later, he and zoe made the black ribbons we wore during mourning as traditional in jewish faith during shiva / the first week.
-
-
He cared about my dad too, it was a hard loss for all of us. We're like family. Adam's parents are my godparents, I'm pretty sure mine are his. If anything happens to my parents, the Leveys are in charge? I guess that's only for when you're a kid, but still. something did happen. now it's just mom.
-
-
There's something about the way Adam just appeared time and again that was so quintessential to who he is. I think people see how insanely passionate he is about what he's curious about, his work. His work is at a difficult, high stakes startup. He's trying to build the future of clean energy, bring the electric grid into the clean energy age through batteries. He is obsessed, dedicated, sometimes its the only thing he can talk about. People can see how he and zoe live their lives according to their wishes, to the beat of their own drum. I think there are types of people you may see like that and assume theres a selfishness in that. But Adam isn't selfish. He just knows what he cares about. And the second anything happened with my dad, I knew I was his priority. He stopped moving mountains. He stopped everything. He was there. When I see adam I see his intentionality, and it is exacting. That's what I mean when I say he reflects on what he cares about and directs his attention to what matters. His people matter to him, I matter to him. And he shows it in his actions always.
-
-
I don't know how to organize these thoughts, which thoughts belong in a speech. This wedding is a joyous occasion but there's an elephant in the room. I lost my dad three months ago, we all lost him. I don't want to dwell but it's part of adams character how he showed up for me and what it means to be a friend of his.
-
- Build a repo with CLAUDE.md instructions, tools, file structure, etc that Claude can use to play a game with the user
-
- Push to github
-
- Others can clone the repo and run in Claude Code
-
- Paid Anthropic subscribers can fork the repo, play in Claude web/iOS app
-
- People can just rip your game in the terminal all day
-
-
Then
-
- push to web as nextjs/convex app for multiplayer
-
-
Then
-
- monetize with thoughtfully-constructed (expensive AKA nice) physical board for those who care
-
-
Fully functional monetization structure that is open source and considered. Just hold the trademark on physical game / name.
-
-
-
-
## lead off ideas
-
-
steve martin wrench joke idea
-
-
the original joke:
-
-
> “Ok, I don’t like to gear my material to the audience but I’d like to make an exception because I was told that there is a convention of plumbers in San Francisco this week – I understand about 30 of them came down to the show tonight – so before I came out I worked-up a joke especially for the plumbers. Those of you who aren’t plumbers probably won’t get this and won’t think it’s funny, but I think those of you who are plumbers will really enjoy this…
-
>
-
> “This lawn supervisor was out on a sprinkler maintenance job and he started working on a Findlay sprinkler head with a Langstrom 7″ gangly wrench. Just then, this little apprentice leaned over and said, “You can’t work on a Findlay sprinkler head with a Langstrom 7″ wrench.” Well this infuriated the supervisor, so he went and got Volume 14 of the Kinsley manual, and he reads to him and says, “The Langstrom 7″ wrench can be used with the Findlay sprocket.” Just then, the little apprentice leaned over and said, “It says sprocket not socket!”
-
>
-
> “Were these plumbers supposed to be here this show…?”
-
-
And instead lead off the speech with a hyper specific joke about energy markets because it's all he talks about and no one ever understands because he goes so deep on it.
-
-
Ok, I don't like to gear my material to a specific audience but I'd like to make an exception because I was told there's a few of Adam's coworkers from Habitat here — I understand they flew a long distance to make it tonight — so this morning I worked up a joke especially for them. Those of you who don't work in energy trading probably won't get this, though maybe Adam's talked to you a bit about his work, but I think those of you who do will really enjoy this…
-
-
ALT:
-
-
This head of trading was stochastically optimizing a bid stack against a Brennan rolling-intrinsic valuation, co-optimized across regulation-up and non-spin using a Halverston 7-node basis spread under a Markov-switching load forecast. Just then, this little junior quant leaned over and said, "You can't co-optimize a Brennan rolling-intrinsic with a Halverston basis spread across a Markov-switching forecast." Well, this infuriated the head of trading, so he pulled up Volume 14 of the Findlay Stochastic Dispatch manual, and he reads to him and says, "The Halverston basis spread clears at the Kinsley mode-locked dispatch threshold inside the ergodic envelope." Just then, the little junior quant leaned over and said, "It says node, not mode!"
-
-
ORIGINAL:
-
This head of trading was building out a bid stack against a Brennan rolling-intrinsic valuation, co-optimized across regulation-up using a Halverston 7-node basis spread. Just then, this little junior quant leaned over and said, 'You can't co-optimize a Brennan rolling-intrinsic with a Halverston basis spread.' Well, this infuriated the head of trading, so he pulled up Volume 14 of the Findlay Stochastic Dispatch manual, and he reads to him and says, 'The Halverston basis spread clears at the Kinsley mode-locked dispatch threshold.' Just then, the little junior quant leaned over and said, 'It says node, not mode!
-
-
...how many coworkers were supposed to be here?
-
-
## our history
-
-
I've known adam since he was a baby. I was also a baby then, we were both babies. And we've been the same age ever since.
-
-
known adam my whole life
-
every version of adam I have known
-
as babies, at camp, in college, in maryland / high school
-
-
he has known every version of me
-
the quiet years
-
the preppy years
-
the fratty years
-
any every other embarrassing era
-
-
there is no other person on this planet that so fully knows me, nor, I like to believe, I of him. (grammar is wrong here but there's a good turn of phrase in there somewhere I'm just butchering it)
-
-
I've been there for him
-
he cried on my shoulder second semester junior year after a particularly hard exam
-
-
-
adam has been there for me at every juncture just as I have for him
-
he was there for my first kiss
-
when my homecoming date ditched me, I went straight to adams
-
when my dad passed, he was on the next flight across the country
-
-
-
## funny things
-
-
at camp, he pooped in another kid's pants. and if you ask him, you'll discover he's quite proud of this.
-
-
perhaps surprising to some in this room, during our sophomore year of college, after watching one too many netflix documentaries, adam declared he was fundamentally against monogamy. A testament to his ability to adapt, he is our first friend to marry. Either Zoe is so great a woman as to alter his core beliefs, or he was full of shit. I like to believe it is a combination of the two.
-
-
Adam's eating habits have provided plenty of entertainment over the years. On a trip to palm springs with Tess, myself, and some mutual friends, Adam had a separate grocery order primarily consisting of lamb shanks and butter. This was for health reasons.
-
## adams particularity
-
-
to adam, everything comes down to physics. Electrons must move, free will is a construct (although a valid one at our human level of abstraction), time is an allusion, and the universe is simluation run by lizard people. I may have made those last 2 up. (iffy on this joke)
-
-
If you haven't gotten a chance, I highly recommend you ask Adam about energy markets. He's not usually one to discuss work, but if you're persistent he might indulge you.
-
-
Adam is on a mission to save the world. He wants to eliminate suffering by providing affordable access to energy. It is a good cause, one he has been singularly obsessed with for many years. I trust he'll make substantial progress on this dream.
-
## a beat on tradition
-
-
Adam and I know each other because his dad was my dad's best friend.
-
-
the two of them had their group of idiots, who we have always looked up to.
-
-
what a gift that we have our own group of idiots, nearly as funny yet perhaps more stupid. Our jokes make sense to no one but us, always our conversations are about either nothing, or everything. We have yet to crack the in between.
-
-
## the couple
-
-
I remember when he and zoe had their first date. we were living at the corner of state and hill in ann arbor, adam and i had the two units on the first floor of the house. he said he had a date with a girl and they were gonna drink a bottle of wine and watch a marvel movie. he was ecstatic.
-
-
I remember there was a time early on the two of you recorded a multiple hour long conversation about environmental policy, considering perhaps to make it a podcast.
-
-
zoe is the perfect compliment to adam, his twin flame. she not only understands adam, and what drives him, but is so excited and encouraging of it. and similarly, adam always gets excited sharing with me zoe's latest curiosities, accomplishments, and dreams. there is no greater person in the world to stand by my best friend's side, through any and everything that comes their way.
-
-
adam and zoe have embarked on such a remarkable and intentional shared journey, one rooted in their love for each other, their loved ones, and their passions. They are calculating, which is a product of just how much they care. they squeeze every last drop out of life. I admire them deeply for this.
-
-
## rounding out
-
-
I love adam as my brother and will forever be there for him.
-
It brings me the greatest joy to know so will Zoe, in whom I have the utmost faith and respect. Zoe, you are family too now, though I like to believe you've already been so for some time.
-
You're stuck with all of us now, so my deepest apologies in advance.
-
-
-
## thinking of throughlines
-
-
adam is loyal
-
he is always there for his people
-
zoe is his person
-
-
need to make clear how special their relationship is, how much adam means to me, how much I love their love
-
-
-
## brain dump
-
-
cool um thought i could do a brief memo on the walk here just to see if there's anything
-
else that comes to mind for the speech writing um definitely liking some of the um the jokes
-
that are coming along um but still working on the through line i think uh there's this element of
-
oh yeah i had this idea of it's pretty rare to like overlap with someone in so many facets of life
-
and to just understand someone at such a fundamental level because you've been there
-
every step of the way um i think it's very rare and most people don't have that um and adam and i do
-
that um and so you know it gives me the you know privilege to see how he's grown you know over a
-
lifetime um and it's i mean it's pretty profound when you think about it i mean thinking about being
-
his uh his best man and um like everything that has led to this moment um so much
-
shared history and like so much support um both ways
-
i mean it's just remarkable it's really it's a beautiful thing um
-
and you know i'm sure i'll think of different anecdotes um and jokes that come to mind i mean we have
-
childhood um going to michigan games as kids watching michigan games at the household weird
-
rules about the remote eating mountains of food there's a wonderful story of uh going to raku in
-
bethesda with the levies and discovering that i could have my own tuna tartar appetizer which was
-
you know pretty monumental for me brown family always shared um and then we were at camp and i can't really
-
you know for both adam and myself was a space to sort of develop um
-
you know i think things like leadership and confidence um like really understand um the types of bonds you can make
-
the importance of community and being there for others um you know i certainly saw at camp the ways he flourished
-
um and sort of seeing the um you know the the kernel that became you know his love of the outdoors
-
like camp craft and fire making and hiking and camping and um canoeing
-
you know the early years there was plenty of situations where neither of us really wanted to be in the outdoors and it was a developed taste um
-
but we you know we really agreed to appreciate it now it's you know so so uh
-
you know so foundational in his life that uh you know before the wedding we went backpacking for three days
-
backpacking a few more miles than we expected or should have um but you know we had a good time um
-
it's funny um and you know at camp i saw
-
i just saw like a version of adam that was that was confident and excited and passionate um
-
and watching those parts of him sort of unfold um during that period and they're sort of cemented as these um
-
sort of core tenets of of who he is and if you've ever spoken to adam or been in the same room as adam it is
-
apparent um
-
the passion um
-
and drive and and confidence that he exudes um
-
and
-
i know not all of that was there from the start and it's really
-
beautiful to
-
to see that in him
-
and see him become
-
the person
-
he has
-
continued
-
or he continues to grow you know into
-
the i don't know if it's like the person he hopes to be it's not no i don't want to like add striving to that but it's
-
something around
-
he's so
-
dedicated to
-
living his life
-
in the way that
-
brings him and his people joy and meaning
-
and
-
that's why few people are so dogged in their
-
um
-
and their actions
-
or so dogged in their
-
uh
-
what's the wording
-
he would hold like he holds himself to such
-
a
-
standard in that manner
-
uh and it's you know truly a product of how much he cares
-
again for
-
like both uh
-
you know on self-respect as well as respect for those
-
people it's close
-
um
-
um
-
is always
-
you know we joke we
-
you know our friends
-
we sort of are either talking about
-
everything or nothing
-
I think it's also
-
sort of the way
-
Adam so wonderfully
-
loves you know his life
-
there are things
-
he takes very seriously
-
because they are important
-
nobody's careful not to take
-
himself to be seriously
-
never afraid to crack a joke
-
or be the joke in this situation
-
yeah there's any technology in that
-
um
-
uh so we're talking about camp
-
there's also you know I was around
-
high school with different schools in
-
the same county
-
um so we did not go to high school together
-
uh but you know we were both
-
around um
-
we had to see each other on weekends
-
um
-
kind of just reminds me of that Adam was there for my first kiss
-
uh Adam was also there for my second kiss
-
which was in his basement
-
um
-
the first being on a bus while he was getting his first kiss
-
um
-
and
-
he's been there for my first kiss and he's just been there you know like
-
like
-
and we have the high school stuff and there's not like a whole lot to uncover I think like
-
in that realm, just because we did not go to the same high school, but we still see each other,
-
you know, with frequency, and it was, you know, it was nice to have these connections through our
-
family, through ourselves, and then going to college, you know, we were both fortunate to go to Michigan,
-
having been indoctrinated into the cult years prior, and, you know, that can go a lot of different
-
ways, and, you know, when people move on to a new stage with old friends, people grow in different
-
ways, you never know, and there's no, nothing wrong, you know, with that, but there's always a possibility,
-
and so what a gift that I continued, you know, to have at them by my side in college,
-
and we experienced, you know, so many great years together there, made so many great friends,
-
so many shared friends, and, I mean, we put ourselves through very hard,
-
work loads while having obscene amounts of fun, you know, I'll get to the story of the atom crime,
-
the Hilder, the test, blah, blah, blah, you know, but I think we really, like,
-
we really made the most of that time, and, you know, seeing the, you know, the friends we made there here today,
-
I think this is sort of quote, like, is a testament to that, you know, like what a, we were, we were fortunate in the, in the people we met there,
-
and, you know, coming out of college, uh, I made my way, uh, after a quick stop in Ohio for a good reason, but, you know, Ohio, uh, I was, you know, I made my way out to New York,
-
Adam to San Francisco, and this has really been the first time in my life where he, you know, isn't right there, um, and that's really hard, um, you know, Adam's always been,
-
I mean, I mean, he's, he's been instrumental, um, in, you know, virtually everything I've done, every decision I've made, and, um,
-
you know, it's, I, I was lucky to live, uh, roughly continue to drive from New York to Maryland, depending on who's driving, uh,
-
you know, and, and basically living in, under the same roof as in all of, you know, college, uh, as well as,
-
you know, every summer at camp, and so, um, you know, this is new territory for us, um, and,
-
I know it has not impacted our bond, uh, in any way, um, I'm, I'm grateful for,
-
I've, I, I, I, I've gotten a chance to see each other, um,
-
you know, I'm, I think there's something I have to figure out there, wording-wise, you know, as to what I want to say, but it, it is quite hard to not have him there, um, he's always been there, and so, um,
-
I, I know he continues to be there for me, even when he's not by my side directly, um, you know, and I won't get into it right now, but, you know, has been on the next flight to where I am when I needed him most, um, you know, because he's family.
-
Um,
-
And so, there's that whole thing that I'll get into, there's, you know, there's always stuff I want to talk about, again, thinking about, you know, I guess, like, there's the idea of, like, there's the loyalty, there's the respect for himself, for his people.
-
It's just like, he just cares so much, um, and is highly intentional with the way he, you know, uh, moves through this world, and, you know, given that, it is no surprise that, no surprise to me that, you know,
-
Yeah, yeah, Zoe is his partner, who is someone I could not, I could not imagine someone more fit to be Adam's partner in life, someone, uh, who is such a bright light, and, um,
-
You know, it's just, uh, it brings me comfort to know this is, um, the life that Adam is making for himself, you know, that, and then Zoe will,
-
Without a doubt, um, do whatever they put their minds to, um, I know they'll have a lot of fun doing it, um,
-
And, yeah, I'm certainly thrilled to see what's in store and, and tag along wherever I can.
-
-
This project is an Obsidian vault - a markdown-based knowledge management system.
-
-
## Important Conventions
-
- Always preserve YAML frontmatter at the top of files
-
- Respect the existing folder structure
-
- Maintain consistent markdown formatting
-
- Use backreferences ([[ ]]) for internal links when creating new content
-
-
## Readwise Folder
-
- **Location**: `/Readwise/`
-
- Contains highlights and notes exported from Readwise
-
- Each file represents a source document with its metadata, highlights, and tags
-
- Files are named with the following pattern: `{{published_date|date('Y.m.d')}} {{title}}`. To see when they were last modified by me, check via bash commands. -
- Full source material is provided via the "See full document content" URL
-
- To add additional notes to these files, create a `## Reflections` title and bulleted list below it.
-
-
### Readwise File Structure
-
- Bullet points (highlights) are **source material** - never edit
-
- Indented `- Note:` lines are **user commentary** - allowed to edit if requested
-
- Each Note refers to the highlight immediately above it
-
-
## Backlinks & Cross-References
-
- Obsidian uses `[[filename]]` wikilink syntax for internal links
-
- When discussing commentary on a document, search for backlinks that reference the source document to find cross-references
-
- User often links related articles in their comments/reflections - this reveals important research connections
-
-
## Inline Task Markers
-
User leaves inline markers for future work:
-
-
### @task
-
- Actionable items for Claude to complete (add backlinks, create summaries, etc.)
-
- Upon completion: remove `@task` marker and append `(>claude)` at end of line
-
- Example: @task add backlinks to related nutrition articles
-
- After: *a note that includes backlinks to the requested articles* (>claude)
-
- When completing any `@task` work, modify the Note line, not the highlight
-
- Important: use the `edit` tool to make these edits
-
-
**When adding links/backlinks:**
-
- **ALWAYS** search `/Readwise/Full Document Contents/` first using Grep
-
- If found, use internal wikilinks `[[filename]]`
-
- Only use external URLs if no internal document exists
-
-
### @todo
-
- Research questions or topics to investigate later
-
- Unlike tasks, these **don't involve direct edits to the note**
-
- The user may ask you to surface these for their own research, or potentially get your help on them
-
- When fetching todos, it is **imperative** that you fetch the line above the todo itself, because each todo is a reference to a document highlight.
-
-
-
-
Pay Credit Cards
-
Add Albie to Charlotte Flight
-
Dustin Birthday Gift
-
<>
-
Plan Week Ahead
-
[break]
-
Venue Research
-
Headphones
-
-
-
# Garmish
-
-
clean up slop
-
reorg components
-
<>
-
id routes
-
convex project setup
-
writeup
-
-
-
The interface is inherently political. To shape the set of actions performed on an underlying data model is to dictate, and ultimately constrain, behavior. This deeply empowers the developer; they are in charge of inventing a language.
-
-
How do you determine a new language for a population?
-
-
What authority do you have to suggest their current language(s) are inadequate?
-
-
The pretension to pursue this rests on being literate in existing languages. A new one would most beneficially provide clarity by resting on a familiar set of primitives, accruing an etymology; languages do not emerge from the dark.
-
-
Further, languages cannot and should not aim to answer the questions asked by their speakers. Because I speak English, or French, or Spanish, does not mean that I now know the answer to: *Where to, next?* when the words leave my tongue, but asking it in the language best understood by my peers leads me to a response in the given context.
-
I'll preface with: I have to be mindful of falling prey to system optimization for the sake of itself. That said, I have a deep interest in information retrieval and building a mechanism to better navigate an existing system has benefits.
-
-
This is for navigation. I am not building any functionality I can already achieve elsewhere. I collect on Are.na, I read on Readwise Reader, I write in Obsidian (though less writing than I'd like, and it's unclear to me what form said writing takes). I have no need to reinvent the wheel. That said, this information is far from consolidated, and I have hit some pain points.
-
-
1. Once I have annotated my reading, those annotations are no longer surfaced to me. They enter the abyss, similarly to my original pain point on Are.na: my collected resources didn't feel actionable. Integration into Reader solved this at that step. I now read and annotate my research, as opposed to simply collecting. I now feel the friction at the next level in the pipeline. Where do these fragments of thoughts go? Writing seems like a natural next step of synthesis, in addition to coding projects (like what I am discussing now). I need access/rendering of the information conducive towards synthesis.
-
2. I have a cloud LLM assistant which has access to my tools. While reading on Reader, I can simply mention the assistant in an annotation (via "Hermes") and make a request. These requests are translated into todos inside a `Hermes` Todoist project, where the assistant addresses them and replies in a comment (I've also given Hermes access to its own channel in my Are.na, called `hermes-postbox`, to deliver resources to me). This flow, too, is not captured or continuable in a meaningful way. I've noticed Todoist is very powerful for organizing tasks (and has a wonderful API to do so), but not so much for reviewing *other entities tasks*. It's fine for now, but a given "trail" (to use Vannevar Bush's term) sort of needs a primitive. It relates to / make include items like blocks, highlights, comments, LLM outputs. It's not a "chat" in the traditional sense but a resumable path of thinking (graph connections between entities).
-
-
There is an urge to jump straight into coding. Elixir offers a clear path towards effective ingestion and with a little AI prompting I can have a local Phoenix web app showing the results. That said, this is a project worth slowing down on. As already shown, it's become quite alluring to run ingestion processes, invent interfaces, and tinker with design. "Seeing things on the screen" is addictive. But, I am after a tool which provides a clear utility. Rather than getting pulled down the endless rabbit holes (which, by the way, are fully supported/encouraged by an LLM always eager and agreeing with proposals), I should zero in on my identified pain points to ensure they are addressed through a considered data model and interface.
-
-
I'll conclude with some clear knowns
-
- My system must ingest and interact with all external sources I use: Are.na, Reader, Todoist, Obsidian.
-
- My system must present view(s) of the data conducive for synthesis. This means both interfaces and data access.
-
-
I'd like to acknowledge a not yet mentioned feature: the initial thought for this actually arose as an idea for my personal website to open-source my thinking. I do believe there is validity in doing so, and I plan to make this accessible to others, although it is clear the root problems I wish to solve are operational. A perhaps meta-note to this, is that I would love to see the trail from Are.na blocks to scattered notes to todo item to code to this very journal entry. That journey itself is a trail; the ability to traverse it would be immensely helpful (e.g. I nearly forgot in writing here that the personal site was the origin, and that is a key consideration moving forward).
-
-
-
Goal
-
-
Be the first player to score all 3 of your tiles by landing the pawn on them.
-
-
The Board
-
-
A 5×5 grid where edges wrap around (moving off the left brings you to the right, moving off the top brings you to the bottom).
-
-
The Pawn (black and white circle): Starts in the center
-
Tiles (red or purple colored squares): You and your opponent each have 3 tiles equally distributed on the board to start
-
-
Each Turn
-
-
Both players secretly choose ONE action:
-
-
1. Vote to move the pawn: Pick a direction (Up, Down, Left, Right)
-
2. Move one of your tiles: Pick one tile and a direction (including diagonals)
-
-
After both players choose, the actions resolve:
-
-
If both players voted for the pawn:
-
Same direction: Pawn moves 2 spaces that way
-
Opposite directions: Conflict! Nothing moves (this is called a lockout)
-
Different directions: Pawn moves 1 space diagonally
-
-
If both players moved tiles:
-
Same destination: Conflict! Neither tile moves (lockout)
-
Different destinations: Both tiles move
-
-
If one voted, one moved:
-
Pawn moves 1 space in the voted direction
-
Tile moves to its destination
-
-
Scoring
-
-
When the board resolves, if the pawn lands on a tile, that tile is scored and removed from the board. The cell now becomes "dead" - nothing can move there for the rest of the game.
-
-
Lockouts
-
-
When a conflict happens, the move you chose gets locked for you. You can't choose your locked moves again until the turn successfully resolves. Lockouts stack up if you keep conflicting!
-
---
-
argument-hint: [light|dark]
-
description: Switch Obsidian integrated terminal theme colors
-
---
-
-
Switch the Obsidian integrated terminal theme to "$1" mode by updating the theme colors in `.obsidian/plugins/terminal/data.json`.
-
-
## Color Schemes
-
-
**light theme:**
-
```json
-
{ -
"background": "#ffffff",
-
"black": "#000000",
-
"blue": "#0451a5",
-
"brightBlack": "#666666",
-
"brightBlue": "#0451a5",
-
"brightCyan": "#0598bc",
-
"brightGreen": "#14ce14",
-
"brightMagenta": "#bc05bc",
-
"brightRed": "#cd3131",
-
"brightWhite": "#a5a5a5",
-
"brightYellow": "#b5ba00",
-
"cursor": "#2e3338",
-
"cursorAccent": "#ffffff",
-
"cyan": "#0598bc",
-
"foreground": "#2e3338",
-
"green": "#00bc00",
-
"magenta": "#bc05bc",
-
"red": "#cd3131",
-
"selectionBackground": "rgba(100, 100, 255, 0.3)",
-
"white": "#555555",
-
"yellow": "#949800"
-
}
-
```
-
-
**dark theme:**
-
```json
-
{ -
"background": "#1e1e1e",
-
"black": "#000000",
-
"blue": "#569cd6",
-
"brightBlack": "#666666",
-
"brightBlue": "#569cd6",
-
"brightCyan": "#4ec9b0",
-
"brightGreen": "#6a9955",
-
"brightMagenta": "#c586c0",
-
"brightRed": "#f48771",
-
"brightWhite": "#e5e5e5",
-
"brightYellow": "#dcdcaa",
-
"cursor": "#aeafad",
-
"cursorAccent": "#1e1e1e",
-
"cyan": "#4ec9b0",
-
"foreground": "#cccccc",
-
"green": "#6a9955",
-
"magenta": "#c586c0",
-
"red": "#f48771",
-
"selectionBackground": "rgba(58, 130, 247, 0.3)",
-
"white": "#cccccc",
-
"yellow": "#dcdcaa"
-
}
-
```
-
-
## Instructions
-
-
1. Read `.obsidian/plugins/terminal/data.json`
-
2. Find the `profiles.darwinIntegratedDefault.terminalOptions.theme` object
-
3. Replace the entire theme object with the color scheme for "$1" mode
-
4. Save the file
-
5. Confirm the theme has been switched to "$1"
-
-
**Note:** The terminal will need to be restarted or the plugin reloaded for changes to take effect.
-
-
Music was the channel through which the world opened itself to me. In my pursuit of music, I learned a means to explore any curiosity:
-
-
1. engage consistently in its craft
-
2. study its history (the canon, the niche, following trails of influence), and
-
3. follow contemporaries who push the medium forward.
-
-
I cite these in order of importance. Practice is most imperative as nothing beats fluency and intuition. History, I argue, is more important than (though not a complete substitute for) the current. It is simply too rich and diverse compared to the flattening of the present moment, and more often than not, those pushing a craft forward are picking apart and reassembling history to their liking. Still, contemporaries reveal how new technology and sensibilities shape expression. Awareness of their work alongside those from the past produce an informed artist.
-
-
I stress the importance of being *informed* because a common trap is to either accept what one happens to be exposed to (often popular contemporaries and select few from the past) as the whole of a medium, which is narrow and arbitrary, or (slightly better but not by much) to pursue only that which one "likes" based on past preference. Walking through a medium, or life itself, only by what you "like" or what comes your way is to be stripped wholly of all agency. The greatest experiences of my life, those that shook me around and shouted *wake up!* , stood behind a thin wall of discomfort.
-
-
Why go through all this trouble? Because we're a bunch of monkey brains banging the walls of our skulls, asking questions through our eyes, ears, fingers, and toes. This is how you become literate in your own language (cathartic) and the languages of others (empathetic).
-
-
-
[could cut? it's long?]
-
-
So I don't like to gear my material to a specific audience but I'd like to make a quick exception because I was told there's a few of Adam's coworkers from Habitat here — I understand they flew a long distance to make it tonight — so this morning I worked up a joke especially for them. Those of you who don't work in energy trading probably won't get this, though maybe Adam's explained a bit of his work to you, so everyone else bear with me for a moment, I'd really like to do this.
-
-
This head of trading was in the middle of his morning book, and he started hedging a Palo Verde spark spread against a Markov-switching load forecast. Just then, this little junior quant leaned over and said, "You can't hedge a Palo Verde spark spread against a Markov-switching load forecast." Well, this infuriated the head of trading, so he pulled up Volume 14 of the Kinsley Stochastic Dispatch manual, and he reads to him and says, "The Palo Verde spark spread clears at the modal dispatch threshold." Just then, the little junior quant leaned over and said, "It says nodal, not modal."
-
-
...wait, how many coworkers were here tonight?
-
-
## *BEAT*
-
-
I love Adam. I've known him since he was a baby. And we've been the same age ever since.
-
-
Together, we grew up in Maryland, spent our summers at Lake Owego camp, and studied at the University of Michigan. I ran the numbers and I've spent a bit over 14% of my days under the same roof as him; about 1 out of every 7, as common to me as any given day of the week.
-
-
It's quite rare to have spent so much of early life by someone's side, and in sharing all this time together, I'm in a unique position to have deeply known every version of Adam.
-
-
*MINI BEAT*
-
-
There was the Adam of our childhood summers, with whom I crafted fires and canoed a hundred miles.
-
-
The Adam of our teenage years, who went to a different high school but hung out with my friends as much as I did. This Adam also got me drunk for the first time off Mike's Hard Lemonade in the Levey basement.
-
-
There was the Adam of college freshman year, who dropped real low at DTD parties, as I hope we will witness tonight. I’m talking real low.
-
-
And there was the Adam of college fifth year, who I had the pleasure of watching dig into the work that would become his career, and eat nothing but roasted nuts.
-
-
## *BEAT*
-
-
Adam, it was the greatest honor to be asked to be your best man.
-
-
As best man, my role has been to support the groom. And I've done my best — scouting locations for the bachelor camping trip in Utah — where I provided the exact longitude and latitude to the strippers — helping pick the music you'll hear tonight, and lending an ear on countless calls checking in on the wedding progress.
-
-
But the truth is that Adam, in the middle of planning his own wedding, has supported me.
-
-
*MINI BEAT*
-
-
As many of you know, Adam and I are best friends because our dads were; a friendship so strong it grew its own family tree. This year, that tree weathered a terrible storm. And Adam, from three thousand miles away, has been by my side at every step. When I've needed him most, he has been on the first flight out of San Francisco without my ever having to ask.
-
-
This is what it means to be loved by Adam. And I've been lucky enough to know it my whole life. My dad gave me a lot of things; Adam was quite the gift.
-
## *BEAT*
-
-
Zoe, you came into our lives over a bottle of wine and a Marvel movie. It was junior year of college, and I remember just how giddy Adam was all day before you arrived for your first date at State and Hill. He even showered for the first time that semester.
-
-
I have this memory: it's years later, the three of us sitting around the fire pit at my house in Maryland, talking late into the night. We discussed everything under the sun: you asked me questions about my relationship to music, shared your thoughts on [todo], and I was struck, as I have been many times since, by your deeply focused, yet calm curiosity. Curiosity is a form of caring; you care tremendously. It was plainly apparent that night that, just like Adam, you see the world as a fantastic mystery — a puzzle not to be solved, but enjoyed piece by piece. I knew then that there was simply no future version of Adam without you in it.
-
-
These days, when I call Adam and you come into the room, the tone of his voice changes. Through the phone I can hear his smile. There’s a weightlessness to his words, and in your presence he shines — with laughter, confidence, and ease. Zoe, there is no greater person in the world to stand by my best friend’s side, through anything and everything that comes your way.
-
-
## *BEAT*
-
-
Though I have known every version of Adam, tonight I meet a new one for the very first time: husband Adam. I am confident this version of Adam will be even more incredible than all the others, given the company he gets to forever share.
-
-
I love you Adam, my brother. And I love you Zoe, my sister. And so today, as we celebrate my brother marrying my sister, I regret my choice of words but the sentiment stands.
-
-
Please raise a glass to Adam and Zoe. Mazel tov.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
---
-
-
## Cutting room floor
-
-
-
When I got too drunk fr... eh, let's just skip over these...
-
-
*flips over lots of pages*
-
-
... and that's when we learned it hurts to be pelted with eggs.
-
-
-
His work may confuse us
-
-
-
-
-
## *BEAT*
-
-
In having known every version of Adam, I have also had the privilege of being supported by every version of Adam.
-
-
When my date ditched me at homecoming Junior year of high school, at her school where I knew no one, I went straight to Adam's house and he cheered me up.
-
-
When I got too drunk one night in the Dominican Republic senior year of high school, though I have no memory of it, Adam showered and clothed me.
-
-
When I started dating Tess just as she was graduating college, and worried over if we could make it work long distance, Adam drove around Ann Arbor with me, calming me down. He said it would work itself out, and I think he was pretty right.
-
-
-
-
As many here know, Adam and I are best friends because Steve was my dad's best friend.
-
-
A friendship so strong that it has its own family tree.
-
-
When my dad passed in February, Adam was on the first flight out of San Francisco. He has
-
-
In my darkest days, Adam has seemingly put the entire world on hold to be there for me.
-
-
Adam knows exactly what's important to him. His work is tremendously important, and at times it feels like he bears the weight of finding a way to move mountains. This dedication exists in all directions for him, and I have been the recipient of its aim, where he will put what is important to him truly first. This has been a period I've deeply needed a friend, and despite this really being the first time Adam and I have lived far apart, he has always, always been there for me.
-
-
You see, when I think of Adam, I think of intentionality. I have known no one else who has so continuously reflected on what matters most to them, and then turned all their attention and focus in that direction... He lives it according to his truth, takes nothing for granted, and through my entire life this has been a profound source of my admiration.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
free write
-
-
What did Adam do when dad died?
-
-
-
i mean even before dad died Adam was there for me. checking in. he had even tried to have my dad join a bachelor's trip he did with his dad and brothers, my dad and i were supposed to join them in vegas. dad was just too sick. I still went on the backpacking trip with the groomsmen.
-
-
As dad got more sick, Adam kept an eye on things. There was one scary night we thought it was the end. Dad couldn't speak, he left in an ambulance, I called Tess in hysterics. Adam flew to Maryland and just made himself useful. Slept in the house with the dogs so we could spent all hours in the hospital. It wasn't the end there, but he was there in case.
-
-
Dad died on a weekday, I don't remember what day. We was getting worse and we tried to get down to see him, but it snowed 16 inches in new york and they shut down all transportation in/out the city. I found out standing in penn station. They opened the roads and we paid an uber driver hundreds of dollars to take us to philly, get my sister, and drive down to maryland to meet my mom.
-
-
We got in maybe 7pm? Adam lives in San Francisco, he was in by maybe 6am the next morning. I don't know the specifics, but it was basically the first flight they could get on. Is that a red eye to get in that early? He just made it happen.
-
-
He was the first friend I saw after it happened. We just sat and talked, it was all really surreal. Not a whole lot I could understand, but my friend was right there. We just talked about how hard it was, how everything was now different. We sat in silence quite a bit too. Just the two of us. Later, he and zoe made the black ribbons we wore during mourning as traditional in jewish faith during shiva / the first week.
-
-
He cared about my dad too, it was a hard loss for all of us. We're like family. Adam's parents are my godparents, I'm pretty sure mine are his. If anything happens to my parents, the Leveys are in charge? I guess that's only for when you're a kid, but still. something did happen. now it's just mom.
-
-
There's something about the way Adam just appeared time and again that was so quintessential to who he is. I think people see how insanely passionate he is about what he's curious about, his work. His work is at a difficult, high stakes startup. He's trying to build the future of clean energy, bring the electric grid into the clean energy age through batteries. He is obsessed, dedicated, sometimes its the only thing he can talk about. People can see how he and zoe live their lives according to their wishes, to the beat of their own drum. I think there are types of people you may see like that and assume theres a selfishness in that. But Adam isn't selfish. He just knows what he cares about. And the second anything happened with my dad, I knew I was his priority. He stopped moving mountains. He stopped everything. He was there. When I see adam I see his intentionality, and it is exacting. That's what I mean when I say he reflects on what he cares about and directs his attention to what matters. His people matter to him, I matter to him. And he shows it in his actions always.
-
-
I don't know how to organize these thoughts, which thoughts belong in a speech. This wedding is a joyous occasion but there's an elephant in the room. I lost my dad three months ago, we all lost him. I don't want to dwell but it's part of adams character how he showed up for me and what it means to be a friend of his.
-
# The Politics of Participation and Literacy
-
-
## Core Insight
-
-
Across language, emotion, and computational interfaces, the fundamental political question is: **Who decides what counts as legitimate participation?**
-
-
When interfaces claim to "democratize" through simplification, when languages standardize for "accessibility," when taxonomies claim to be "universal" - these are not neutral optimizations. They are decisions about which forms of participation are legitimate and which are foreclosed.
-
-
---
-
-
## The Pattern Across Domains
-
-
### Language as Gatekeeping
-
-
**From "A Very Big Fight Over a Very Small Language":**
-
> Schmid had already sketched a plan for standardizing Romansh: a "majority principle" in which the most widely shared spellings across the idioms would win out.
-
-
My note: "What is lost when you average over a set of languages? When you've settled for what is most agreed upon, you arguably strip away what the speakers of that language most cherish. It is the particularity of their expression, words unique to only their experience."
-
-
> "He had worked it all out in his head."
-
-
My note: "This particular phrasing is subtly revealing. Where is the conversation with the community? Why does a professor in his ivory tower dictate the future of a culture? You can't 'outsmart' the inertia of behavior."
-
-
> A bridge language never meant for speech was suddenly being spoken—and enforced as correct.
-
-
And later:
-
> "After Napoleon, language becomes the strongest means to define a people."
-
-
My note: "Language exerts power. It is an assertion of worldview, of what can be exchanged between people."
-
-
**From "Is the Dictionary Done For?":**
-
> The "ain't" controversy laid bare the stakes in lexicography: language use as an indicator of status.
-
-
My note: "It's interesting how linguistic status signaling includes not only which words you choose, but also those you exclude from your personal vernacular."
-
-
> How many Yiddish terms are in the English lexicon? Cambridge does not recognize "mishegoss," which seems like an oversight. It does list "schmo" and "schmuck," but gives them the same definition: "a stupid or silly person." Those words are not synonyms. We can empathize with schmoes but never schmucks.
-
-
My note: "Incredible that Cambridge cements this error into their dictionary. Even knowing these words exist means you know they're different. How can a definition be so wrong for such historic terms?"
-
-
---
-
-
### Emotion as Gatekeeping
-
-
**From "You Had to Be There":**
-
> In the 1960s and '70s, the psychologist Paul Ekman identified these six emotions
-
-
My note: "why was there so much pseudo-scientific metaphysics going on in the 60?"
-
-
> The laborers who hauled stones to build the pyramids in Giza felt anger that is our anger. We perform this projection on any number of human experiences: losing a child, falling ill, being bored at work. We assume that emotions in the past are accessible because we assume that at their core, people in the past were just like us.
-
-
My note: "This also makes me think of what Frederick Douglas touches on, somewhat relatedly, in his autobiography. The quality of human experience when met with similar circumstances or external forces is not stable. For him, as an individual, the quality of his life, his perceptions and actions, would be markedly different when under the tyranny of slavery."
-
-
> Yet anyone who has ever been asked to describe their pain to a doctor knows that we are at the mercy of language. Is it sharp or dull? Does it pound or burn? These are metaphors, and ones that culture gives us.
-
-
> Boddice is concerned that we are flattening ourselves. By not appreciating the full range of feeling that people are capable of, we are foreclosing a deeper engagement with one another. In *A History of Feelings*, he described our diminished and too limited vocabulary for emotions as "vague, empty or else crude." The danger is that this reduced language, this emojification of emotional life, also reduces, quite literally, how much we can feel.
-
-
My note: "This feels like the main thesis of Boddice's research. We are artificially constraining our understanding of history—and ourselves—by accepting a pseudo-scientific, limited definition of emotion (from a few people in the 60s) as fact."
-
-
---
-
-
### Computers as Gatekeeping
-
-
**From "Should Computers Be Easy to Use?":**
-
> [Yet it was in the imagination of an alternative that interface design emerged. The practice of programming computers began as complex, requiring manuals and study. The use of language to hold power and separate classes is a tale that recurs throughout human history. The Egyptian priestly class kept power through guarded knowledge of the sacred hieroglyphs, hindu brahmin priests kept power through their rites and incantations, catholic priests kept power over the interpretation of the Bible through their knowledge of ecclesiastical Latin](https://readwise.io/reader/document_raw_content/200680756/#bookmark52)
-
-
My note: "Thinking more about how language holds power. Reminds me of an article I recently read in the New Yorker about the role of dictionaries. In that, they discuss the controversy over adding 'ain't' to Webster's dictionary in the 60's. Here, we're seeing language can serve to divide people into factions, sometimes the haves and have-nots. What argument are they gonna make with respect to this and interfaces? I'm intrigued (and note that an interface is a 'language' itself)."
-
-
> It was not just the starry-eyed ideal of liberal democracy that coaxed computing out of the hands of scientist-priests, but also the prospect of fabulous wealth. Bill Gates took on the mission to place "a computer on every desk"
-
-
My note: "Honestly this Bill Gates quote feels a lot like the rhetoric we hear from those running AI labs: a relentless mission for mass adoption. They *allegedly* 'see the future' we must all live in, and attempt to will it into existence. Personal computers ended up being a net positive for society. AI has yet to make its case."
-
-
> while graphical user interfaces were usable, they were fundamentally restricted; end-users could not describe new behaviours – you need a programmer for that.
-
-
My note: "An interface is a layer of abstraction from the filesystem. The filesystem has more affordances than this interface allows, which is constructed as a language for a particular set of interactions."
-
-
> "*natural* to *use*" is not the same as "*easy* to *learn*"
-
-
> these successes also instilled a kind of designer-chauvinist idea that great design can all but eliminate the need for learning
-
-
My note: "I actually really enjoy the decision to use harsh language here; this article is unapologetic in its critique. I do feel that in making software that 'eliminates the need for learning,' we make software which eliminates any advancements in a user's capabilities. If there's nothing to learn, perhaps there is nothing new to accomplish except optimizations and conveniences around familiar behaviors."
-
-
> But is it always an indicator of superior design, when someone can learn to use a system very quickly? Is it always a better interface where the task is easy, simple, and forgiving, and requires little "mental and perceptual activity"?
-
-
My note: "This also makes me think of the intention friction that Are.na maintains on its platform. Because all organization is done by hand--and required--the user is forced to exert the mental load of making sense of an artifact. This can deter certain users, but for those who find the platform useful, it is imperative."
-
-
> first impressions of usability matter and are critical to commercial success. But in certain cases, this creates a moral hazard to make software appear *more usable* by making it *less useful*.
-
-
My note: "Probably also tied to VC models of maximizing active users for free. Get a ton of low stakes signups. Can't do that if the software has a steep learning curve."
-
-
> a few widespread commercial successes, such as the spreadsheet
-
-
My note: "@todo worth exploring more. I think I've saved an article somewhere on the ubiquity of spreadsheets. They are complex! Nontechnical people are willing and able to learn them."
-
-
> Knowing what can be done, an *awareness of the possible*, empowers users in entirely different ways. [...] A spreadsheet user who knows *a priori* how to write formulas will approach the same task differently from one who does not; starting with planning the data that must go in the spreadsheet and structuring it appropriately. By the time the spreadsheet is open and ready, the "task" has already taken on a vastly different nature for the two users.
-
-
My note: "Some softwares succeed with pre-knowledge. But also, a software like Excel makes the formulas feature 'known.' Something that AI chats do a bad job of is actually showcasing affordances in a meaningful way."
-
-
> This is a call for *negotiated complexity*, complexity in software which arises as the result of optimisation for intensive, long-term use, in consultation with communities of practitioners, shielded from commercial pressure to design for first impressions, and with the unapologetic assumption that users will invest months, or years, in ahead of time learning and deliberate practice.
-
-
My note: "Good term. How does it fit into an ecosystem where software is often deployed onto the web and rapidly changing?"
-
-
My note: "I kind of want more of the thesis! There's a lot of great background and research to lead us to the author's proposal. But the central term arrives only a few paragraphs before the end. Keep going!"
-
-
**From "How to Stop AI From Killing Your Critical Thinking":**
-
> Beyond getting the job done, a tool for thought helps us better understand the job. Beyond getting it done faster, it helps us get it done better. Beyond getting us to the right answers, a tool for thought helps us ask the right questions. Beyond automating known processes, it helps us explore the unknown.
-
-
My note: "The vast majority of AI rhetoric revolves around saving time and having work 'done for you.' @todo what's the term or concept for praying on people's psychological desire for shortcuts? It's present in every era, within the promises of every technical innovation."
-
-
> Ultimately, it can be said she has written this document herself.
-
-
My note: "No. She did not write this document. She conducted research for this document, she has edited this document, but this document was written by an LLM. AI has scooped out the middle."
-
-
> This is essentially force-feeding a critique-based approach of AI dialogue. This is fully achievable without a system built around it. But perhaps users don't know that they can do this. A chat box does not reveal its affordances. By building this into the interface of a software, an opinion as to how interactions should be held is placed into the experience. Interfaces become not an abstraction on the filesystem, but an abstraction on AI behaviors, which themselves operate on the filesystem. So an interface is as important as ever -- as it offers the affordances a chat does not provide...
-
-
---
-
-
### Community & The Open Web
-
-
**From "Do blogs need to be so lonely?":**
-
> I'm picturing something relatively simple. Something like a group blog, or a blog co-op. A group of internet friends posting together, without too much oversight or coordination between them.
-
-
My note: "(1) It feels like we've probably re-invented this a few times and yet I can't think of a platform I'd use today to accomplish this goal. (2) On reflection, isn't this what forums have always sort of been? Isn't this essentially a subreddit? I suppose the anonymity is a factor here or the exclusivity of who can or cannot contribute. (3) essentially the author wants the functionality of Web 2.0 but in a traditional publishing media distribution mechanism?"
-
-
> points out that the blocker isn't a tech problem. Rather, modern blogging is built on top of a techno-individualistic mindset.
-
-
My note: "I agree it isn't a tech problem, but disagree on what the author claims the true problem is. Substack and Beehive exist for a reason. It is very technically easy to spin up a blog now. This 'techno-individualist mindset' claim is years out of date."
-
-
> Forums have been reincarnated as Discord
-
-
My note: "Walled gardens are not the same as long form public spaces for discourse. Private communication has its place but we've killed the open web."
-
-
---
-
-
### Desire Paths as Counter-Example
-
-
**From "Desire Path - Wikipedia":**
-
> In Yosemite National Park, the National Park Service uses these indicators to help guide its management plan.
-
-
My note: "It takes a well-run organization to do this. Requires relinquishing control. Recognizing your assumptions of behavior were wrong."
-
-
> when off trail, distribute their travel lines so as to not inadvertently create new trails in unsustainable locations.
-
-
My note: "Desire paths are not inherently good or bad. They're just what happen. Sometimes you have to intentionally subvert them."
-
-
> Sometimes, land planners have deliberately left land fully or partially unpathed, waiting to see what desire paths are created, and then paving those.
-
-
My note: "I love this idea so much. How would it look in other fields beyond landscaping?"
-
-
> For example, Twitter has "paved" a number of desire paths by integrating them into the service, including @ replies, hashtags, and group discussions.
-
-
My note: "I'm curious how you track and measure emergent behaviors."
-
-
---
-
-
## Key Insights from Notes on 'Camp'
-
-
**On taste and judgment:**
-
> Camp taste turns its back on the good—bad axis of ordinary aesthetic judgment. Camp doesn't reverse things. It doesn't argue that the good is bad, or the bad is good. What it does is to offer for art (and life) a different — a supplementary — set of standards.
-
-
My note: "I love this interpretation. We are often arbitrarily constrained to the spectrum between 'good' and 'bad' when judging art. Yet, it's not so simple. We may appreciate, disagree, or react in any sort of way towards an artifact outside of that limited space."
-
-
**On cultural oversaturation:**
-
> The traditional means for going beyond straight seriousness — irony, satire — seem feeble today, inadequate to the culturally oversaturated medium in which contemporary sensibility is schooled.
-
-
My note: "It feels tireless the way new art must evolve constantly amongst the piles of cultural context. It does make me think: can you argue there are been periods of cultural stagnation as artists learn how to rub against the contemporary sensibility? There are people who argue we're currently in an aesthetic rut (there are always people arguing this). Is this traceable in reflection?"
-
-
**On McLuhan and technology:**
-
> Marshall McLuhan has described human history as a succession of acts of technological extension of human capacity, each of which works a radical change upon our environment and our ways of thinking, feeling and valuing.
-
-
My note: "Aaand all roads lead to McLuhan. @todo beyond The Medium Is The Message, which other texts are his best?"
-
-
> More timid people prefer to accept the previous environment's values as the continuing reality of their time. Our natural bias is to accept the new gimmick (automation, say) as a thing that can be accommodated in the old ethical order.
-
-
My note: "It's remarkable how much I can draw from this essay when reading modern essays on the state of technology. Just today I read a piece by Kevin Munger in [[2026.01.19 Things Will Have to Change]] about the need for academia to evolve in accommodation of AI, for they still essentially live in the realm of paper. There is a 'timid' nature in not moving towards the new technology, both, as I reflect here, in the arts as well as the sciences."
-
-
**On perception and cognition:**
-
> It is, first of all, an object modifying our consciousness and sensibility, changing the composition, however slightly, of the humus that nourishes all specific ideas and sentiments. Outraged humanists, please note.
-
-
My note: "Great works of art ask a question. In answering it, we discover a new avenue of perception."
-
-
> For we are what we are able to see (hear, taste, smell, feel) even more powerfully and profoundly than we are what furniture of ideas we have stocked in our heads.
-
-
---
-
-
## On Maps and Territory
-
-
**From my note on "You Had to Be There":**
-
> I've thought a lot about that idiom "the map is not the territory" since first hearing it. Every system or theory is inherently a layer of abstraction away from the true thing which it attempts to represent. It is an approximation, and with each decision in translating from experience it accepts certain biases. Biases are not necessarily bad, in fact they are necessary to simply make sense of the world at the cost of "knowing" it a certain way over another. But they are there.
-
-
---
-
-
## Tensions & Open Questions
-
-
### The Romansh Dilemma
-
I'm genuinely torn:
-
- "What is lost when you average?" (particularity stripped away)
-
- BUT ALSO: "How can this fragmentation persist? It just seems so impractical."
-
- Beautiful stubbornness: flaming disks in forest (chosen tradition, community practice)
-
- Ugly stubbornness: parents enforcing hyperspecific dialect (imposed, radicalizing children)
-
-
**The question I can't resolve:** What makes some stubbornness beautiful, but others ugly?
-
-
### The Accessibility Paradox
-
- Spreadsheets: complex but people learn them (non-technical users achieve capability)
-
- My mom learned Google Drive (simplification enabled her participation)
-
- But Google Drive forecloses deeper participation if she wanted it
-
-
**The tension:** Simplification can genuinely enable participation for some. But it also decides that certain levels of participation don't count as legitimate.
-
-
### Negotiated Complexity
-
The term "negotiated" is doing important work:
-
- Not pure emergence (too chaotic, no shared substrate)
-
- Not pure imposition (predetermined outcome)
-
- Requires: multiple parties, ongoing process, shared substrate, literacy to participate, no predetermined outcome
-
-
But what does this look like in practice beyond the examples I have (Wikipedia, desire paths, spreadsheets)?
-
-
---
-
-
## What This Means (Still Unclear)
-
-
I keep coming back to these fragments from our conversation:
-
-
**On authority and control:**
-
"Participation requires literacy. Who decides what counts as literate? That's the power move."
-
-
**On the problem with "natural to use":**
-
"Interfaces claiming to be 'natural' or 'simple' or 'accessible' are the most dangerous because they hide that they're doing this shaping. At least with a spreadsheet you KNOW you're learning a weird grid thing that will change how you think about data."
-
-
**On designer authority:**
-
"When interfaces 'eliminate the need for learning,' they're really saying: 'we've decided the only legitimate participation is surface-level, and we're foreclosing deeper forms.'"
-
-
**But also:**
-
"You can't outsmart the inertia of behavior."
-
-
---
-
-
## What I Need to Figure Out
-
-
I can see the pattern clearly:
-
- Language standardization = deciding what counts as legitimate expression
-
- Emotional taxonomies = deciding what counts as legitimate feeling
-
- Interface simplification = deciding what counts as legitimate participation
-
-
But I don't yet have:
-
1. **Clear sight on the "so what"** - Why does recognizing this pattern matter? What does it let me see or do?
-
2. **Non-prescriptive argument** - I don't want to say "always build for emergence" or "demand literacy" - both feel wrong given my Romansh ambivalence
-
3. **The through-line** - How do I weave language → emotion → computers into a single coherent reflection?
-
-
The core is there: **Who decides what counts as legitimate participation?**
-
-
But the implications are still unclear.
-
-
---
-
-
## Sources Referenced
-
-
- [[Readwise/2025.12.01 A Very Big Fight Over a Very Small Language]]
-
- [[Readwise/2025.12.05 You Had to Be There]]
-
- [[Readwise/2023.06.02 Should Computers Be Easy to Use Questioning the Doctrine of Simplicity — in User Interface Design]]
-
- [[Readwise/2025.12.28 How to Stop AI From Killing Your Critical Thinking Advait Sarkar TED]]
-
- [[Readwise/2025.08.21 Do blogs need to be so lonely - The History of the Web]]
-
- [[Readwise/2024.10.03 Notes on 'Camp']]
-
- [[Readwise/2025.12.22 Is the Dictionary Done For The New Yorker]]
-
- [[Readwise/2006.06.05 Desire Path - Wikipedia]]
-
- GitHub / quarry (4)
-
feat: render github commits in ledger views
-
feat: ingest github commits as ledger entries
-
fix: bucket ledger entries by NY-local day, not UTC
-
feat: keyboard-navigable list view at /list
05.26.26
-
Are.na / archive-mdnuqrmhvny (2)Measure for measureQuestion-Negotiation and Information Seeking in Libraries — Robert S. Taylor (1968)
- ▾ Are.na / archive-mdnuqrmhvny (2)
-
Measure for measure img
-
Question-Negotiation and Information Seeking in Libraries — Robert S. Taylor (1968) img
-
Are.na / dev-otcejg6g3nk (1)Backtracking through Time and Space in Erlang | Quinn Wilton & Robert Virding | Code BEAM Europe 22 - YouTube
- ▾ Are.na / dev-otcejg6g3nk (1)
-
Backtracking through Time and Space in Erlang | Quinn Wilton & Robert Virding | Code BEAM Europe 22 - YouTube img
-
Are.na / computer_canon (1)1978.07_-_Bell_System_Technical_Journal
- ▾ Are.na / computer_canon (1)
-
1978.07_-_Bell_System_Technical_Journal img
-
Readwise / A Brief History of Lab Notebooks (14)
-
-
-
Readwise / Too Loud a Solitude
(3)
-
Readwise / UNIX Time-Sharing System: Forward (1)
-
Readwise / Gotham: A History of New York City to 1898
(1)
- GitHub / quarry (9)
-
feat: typography system and ledger layout/spacing pass
-
chore: ignore .DS_Store
-
feat: add dated wastebook pagination
-
feat: improve ledger homepage scanability
-
fix: make readwise backfill and rendering clearer
-
fix: harden ingestion smoke test path
-
chore: document ingestion operations
-
feat: add lab notebook ledger foundation
-
chore: initial Phoenix app
05.25.26
-
Are.na / archive-mdnuqrmhvny (6)An Introduction to Metaphysics — Henri BergsonThe Loss of the CreatureThe Extended MindWhen the Butterfly Effect Took FlightThe Tacit Knowledge SeriesMeeting MARC: the 50-year-old data format for library records - YouTube
- ▾ Are.na / archive-mdnuqrmhvny (6)
-
An Introduction to Metaphysics — Henri Bergson img
-
The Loss of the Creature img
-
The Extended Mind img
-
When the Butterfly Effect Took Flight img
-
The Tacit Knowledge Series img
-
Meeting MARC: the 50-year-old data format for library records - YouTube img
-
Are.na / computer_canon (2)UNIX Time-Sharing System: The Programmer’s WorkbenchAlan Kay - User Interface: A Personal View (1989)
- ▾ Are.na / computer_canon (2)
-
UNIX Time-Sharing System: The Programmer’s Workbench img
-
Alan Kay - User Interface: A Personal View (1989) img
-
Are.na / gallery-2l1eb_62glk (15)jl6hesdlbpj71.jpg?width=1000-auto=webp-s=5bcd88360db64ac4f3fbab00298c6b3211539757Ontario Gallery — Sam AbellRobert Frank4f687896ed1853c9cf2ce0a041ab82c9.jpgMorocco: the Color of Memory • Bruno Barbey • Magnum Photosnyc21172.jpg
- ▾ Are.na / gallery-2l1eb_62glk (15)
-
jl6hesdlbpj71.jpg?width=1000-auto=webp-s=5bcd88360db64ac4f3fbab00298c6b3211539757 img
-
Ontario Gallery — Sam Abell img
-
Robert Frank img
-
4f687896ed1853c9cf2ce0a041ab82c9.jpg img
-
Morocco: the Color of Memory • Bruno Barbey • Magnum Photos img
-
nyc21172.jpg img
-
nyc21192.jpg img
-
par116905.jpg img
-
nyc16976.jpg img
-
export-34.jpg img
-
Lee Friedlander img
-
lee friedlander img
-
Tatsuo Suzuki img
-
Lee Friedlander, Little Screens, 1960s img
-
kreuzberg tower, hejduk img
-
Are.na / map-ledger-diagram (2)toshi ichiyanagiplanta-fachada-y-secci-n-de-santa-mar-a-del-naranco-en-oviedo.jpg
- ▾ Are.na / map-ledger-diagram (2)
-
toshi ichiyanagi img
-
planta-fachada-y-secci-n-de-santa-mar-a-del-naranco-en-oviedo.jpg img
-
Are.na / visuals-zwag4_oe2ie (2)toshi ichiyanagi_-59-.jpeg
- ▾ Are.na / visuals-zwag4_oe2ie (2)
-
toshi ichiyanagi img
-
_-59-.jpeg img
-
Readwise / UNIX Time-Sharing System: Forward (13)
-
-
-
Readwise / Too Loud a Solitude
(12)
-
-
-
Readwise / Music As a Gradual Process
(8)
-
-
05.24.26
-
Are.na / archive-mdnuqrmhvny (8)The Eighty-Yard Run | Esquire | JANUARY, 1941c27977dadb36302db7f72abc2dd7c2d0.pngHow I use ObsidianUSB Club’s Next Chapter22665E1B-4A35-4722-98A9-A91E9786AC14Liebig’s law of the minimum - Wikipedia
- ▾ Are.na / archive-mdnuqrmhvny (8)
-
The Eighty-Yard Run | Esquire | JANUARY, 1941 img
-
c27977dadb36302db7f72abc2dd7c2d0.png img
-
How I use Obsidian img
-
USB Club’s Next Chapter img
-
22665E1B-4A35-4722-98A9-A91E9786AC14 img
-
Liebig’s law of the minimum - Wikipedia img
-
Decimal time - Wikipedia img
-
A Brief History of Lab Notebooks img
-
Are.na / gallery-2l1eb_62glk (3)Fred Herzog Main Barber 1968 Courtesy Equinox GalleryCatherine HylandCharles, then the Prince of Wales, and Queen Elizabeth II leaving Weymouth, southern England, on the royal train after visiting H.M.S. Eagle, an aircraft carrier, in the late 1950s.
- ▾ Are.na / gallery-2l1eb_62glk (3)
-
Fred Herzog Main Barber 1968 Courtesy Equinox Gallery img
-
Catherine Hyland img
-
Charles, then the Prince of Wales, and Queen Elizabeth II leaving Weymouth, southern England, on the royal train after visiting H.M.S. Eagle, an aircraft carrier, in the late 1950s. img
-
Are.na / map-ledger-diagram (1)The Provinces of Japan c. 1600 Hiking, from Murdoch and Yamagata published in 1903
- ▾ Are.na / map-ledger-diagram (1)
-
The Provinces of Japan c. 1600 Hiking, from Murdoch and Yamagata published in 1903 img
-
Are.na / dev-otcejg6g3nk (1)Simple AJAX using HTML attributes
- ▾ Are.na / dev-otcejg6g3nk (1)
-
Simple AJAX using HTML attributes img
-
Readwise / On Keeping A Notebook
(19)
-
-
-
Readwise / Building Pi With Pi
(4)
- Readwise / Bring your USB (1)