Where It's at://
🔗 **Source:** [Where It's at://](https://overreacted.io/where-its-at/)
> [!note]+ Document Notes
> ```markdown
>
> ---
> tags: [AT Protocol, DIDs, Bluesky]
> author: Dan Abramov
> source: overreacted.io
> reference: [https://overreacted.io/where-its-at/]
> date created:
>
> ---
>
> # 🏷️ Title: Where It's at://
>
<!-- deep-read:sections start -->
## 🧭 Table of Contents
- [📝 Summary](#-summary)
- [📖 Main Content](#-main-content)
- [🗒️ Notes](#️-notes)
- [📚 References](#-references)
- [🗣️ Paraphrase](#️-paraphrase)
- [📰 Newsletter](#-newsletter)
- [✅ Action Items](#-action-items)
- [🧪 Hypotheses](#-hypotheses)
- [📊 Methodology](#-methodology)
- [❓ Questions](#-questions)
- [🔮 Future Research](#-future-research)
- [💡 Implications](#-implications)
- [🧠 Learning Styles Assessment](#-learning-styles-assessment)
- [📊 Accessibility Assessment](#-accessibility-assessment)
- [🌍 DEIB Assessment](#-deib-assessment)
- [✅ Logical Validity](#-logical-validity)
- [🛡️ DARVO Analysis](#-darvo-analysis)
- [🎯 Conclusion](#-conclusion)
### 🔗 References
- Include links cited in or relevant to the article.
## 📝 Summary
- The article explains resolving at:// URIs to JSON.
- It matters because identity and hosting are decoupled.
- Stakeholders include app builders, users, and host operators.
- Risks include DNS loss for did:web and PLC centralization.
- Bottom line: store DIDs, not handles, for durable links.
## 📖 Main Content
- at:// uses user authority, not host authority.
- Resolution has three steps: handle→DID, DID→host, host→record.
- Two DID methods exist: did:web and did:plc.
- did:web ties identity to domain control.
- did:plc uses the PLC directory for DID documents.
- JSON records are fetched via the host’s XRPC endpoints.
- SDKs and resolution caches improve performance.
### 🗒️ Notes
### [H1] AT separates identity from hosting
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/) by [[Dan Abramov]] via [[overreacted.io]]. Published 2025-10-02. Accessed .
> “The user is the authority for their own data.”
This frames user-owned identity independent from servers.
[view highlight](https://overreacted.io/where-its-at/#H1) #xref #articleseed ID:rw_01
### [H2] at:// resolution has three steps
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “1. Resolve the handle to an identity… 2. Resolve that identity to a hosting… 3. Request the JSON…”
Clear, actionable algorithm for clients.
[view highlight](https://overreacted.io/where-its-at/#H2) #xref ID:rw_02
### [H3] DIDs are the canonical permalinks
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “Think of at:// links with DIDs as ‘permalinks’.”
Store DIDs to avoid link rot from handle or host changes.
[view highlight](https://overreacted.io/where-its-at/#H3) #xref #articleseed ID:rw_03
### [H4] did:web depends on domain control
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “If did:web… ever loses control of the… domain, he will lose control over his DID Document.”
did:web has DNS/TLD dependency risk.
[view highlight](https://overreacted.io/where-its-at/#H4) #xref ID:rw_04
### [H5] did:plc uses PLC directory
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “Essentially, you need to hit the https://plc.directory service with a GET”
Operational pointer for fetching PLC DID documents.
[view highlight](https://overreacted.io/where-its-at/#H5) #xref ID:rw_05
### [H6] DID documents bind handle, key, endpoint
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “A DID Document… here’s their handle, here’s their signature, and here’s their location.”
Three essentials: alias, verification key, hosting URL.
[view highlight](https://overreacted.io/where-its-at/#H6) #xref #articleseed ID:rw_06
### [H7] Fetch records via com.atproto.repo.getRecord
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “hit the … server with the com.atproto.repo.getRecord endpoint”
Concrete API to retrieve JSON records.
[view highlight](https://overreacted.io/where-its-at/#H7) #xref ID:rw_07
### [H8] Caches improve resolution performance
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “for good performance, you’ll want to hit a resolution cache…”
Cache DIDs/hosts to avoid repeated lookups.
[view highlight](https://overreacted.io/where-its-at/#H8) #xref #articleseed ID:rw_08
## 📚 References
- AT Protocol docs: Identity, DIDs, XRPC (https://atproto.com)
- W3C DID Core specification (https://www.w3.org/TR/did-core/)
- PLC directory service (https://plc.directory)
- QuickDID resolution cache (https://quickdid.net) — If inaccessible, use AT SDKs.
- Bluesky XRPC: com.atproto.repo.getRecord (https://github.com/bluesky-social/atproto)
## 🗣️ Paraphrase
- The system resolves human handles into stable identities and hosts.
- Clients then fetch portable JSON records from the current host.
## 📰 Newsletter
- AT Protocol tip: store DIDs, not handles, for durability.
- WordPress builders can map at:// into site content safely.
- Try a resolution cache like QuickDID for speed.
- Learn DIDs with the W3C primer and AT docs.
## ✅ Action Items
#### DevRel
- Publish a “Handle→DID→Host” tutorial with cURL and Node examples.
- Demo getRecord in a WordPress plugin with caching.
- Record a 5-minute explainer on DID documents.
#### OSPO
- Draft a policy to store DIDs canonically across services.
- Add PLC and did:web risks to governance docs.
- Define SBOM notes for AT SDK dependencies.
#### Community
- Run an onboarding session on at:// resolution.
- Create a cheat sheet for DNS TXT and .well-known.
- Share a sample DID document with annotations.
#### WordPress
- Build a WP plugin to resolve at:// to embeds.
- Add transients for DID and host caches.
- Provide admin tools to verify DNS and .well-known.
#### The WPOCC
- Fund a microgrant for an open at:// resolver.
- Publish transparency reports on funded infra.
### FAIR
- Add provenance checks for DID documents.
- Write a covenant for neutral PLC governance.
## 🧪 Hypotheses
- Storing DIDs reduces broken links by 90% versus handles.
- Resolution caches cut API latency by 50%+.
- did:web identities fail more during domain churn periods.
### 📊 Methodology
- Compare link integrity across handle vs DID datasets.
- A/B test cache-enabled vs direct lookups.
- Track incident rates for did:web expirations.
### ❓ Questions
- What SLOs should PLC directory meet?
- How should apps rotate keys without downtime?
### 🔮 Future Research
- Evaluate multi-PLC federation designs.
- Explore DID method migration playbooks for users.
### 💡 Implications
- CMSs should normalize at:// to DIDs.
- OSPOs must document identity risks and mitigations.
- Fund neutral registries to reduce capture risks.
### 🧠 Learning Styles Assessment
- Reading level estimate: Flesch-Kincaid Grade ≈ 10–11.
#### 👀 Visual learners
- Present: URI diagrams implied.
- Improve: End-to-end resolution flowchart.
#### 🔊 Aural learners
- Present: None.
- Improve: Short narrated explainer.
#### 🗣️ Verbal learners
- Present: Clear definitions and steps.
- Improve: Glossary for DID terms.
#### 🧩 Kinesthetic learners
- Present: cURL commands.
- Improve: Interactive sandbox with real endpoints.
#### 🧠 Logical learners
- Present: Three-step algorithm.
- Improve: Decision tree for did:web vs did:plc.
#### 🧑🤝🧑 Social learners
- Present: Community references.
- Improve: Group lab with shared hosts.
#### 🧘♀️ Solitary learners
- Present: Self-paced commands.
- Improve: Self-check quiz on steps.
#### 🌿 Naturalistic learners
- Present: Not applicable.
- Improve: None required.
### 📊 Accessibility Assessment
#### Screen reader semantics
- Present: Standard headings.
- Improve: ARIA landmarks for code examples.
#### Keyboard navigation
- Present: Basic web article flow.
- Improve: Skip links in long posts.
#### Contrast and readability
- Present: Typical blog contrast.
- Improve: Larger code font and line height.
#### Text resizing and reflow
- Present: Responsive layout.
- Improve: Prefer reduced motion support.
#### Media and captions
- Present: Static content.
- Improve: Captioned video explainer.
#### Forms and interactions
- Present: None.
- Improve: N/A.
#### Standards reference
- Map to WCAG 2.2 AA: 1.4.*, 2.4.*, 1.3.1.
### 🌍 DEIB Assessment
#### Cultural breadth
- Present: Neutral technical scope.
- Improve: Global DNS and TLD examples.
#### Inclusive language
- Present: Clear, neutral phrasing.
- Improve: Plain-language summary card.
#### Neurodiversity support
- Present: Chunked steps.
- Improve: Repeated key takeaways.
#### Representation
- Present: Technical identities only.
- Improve: Diverse case studies.
#### Psychological safety
- Present: Respectful tone.
- Improve: Community guidelines link.
### ✅ Logical Validity
#### Strong reasoning
- Procedural reasoning in three steps [H2].
- Risk analysis contrasts did:web and did:plc [H4][H5].
#### Fallacies
- None apparent; assumptions are noted as tradeoffs.
#### Tone of voice
- Informative, pragmatic, and instructional.
### 🛡️ DARVO Analysis
- No denial, attack, or reversal patterns present.
- Risks are acknowledged without blame.
## 🎯 Conclusion
- Use DIDs as canonical permalinks.
- Resolve handle→DID→host, then fetch the record.
- Prefer caches for speed and reliability.
## 🧱 Refactor Appendix (append after 🎯 Conclusion)
### 📚 Literature Split Pad
- Purpose: Stage Konik CEE units that become per-source Literature notes.
- Split level: H3.
- Include verbatim quotes under 25 words and a [view highlight] link.
### [H1] AT separates identity from hosting
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/) by [[Dan Abramov]] via [[overreacted.io]]. Published 2025-10-02. Accessed .
> “The user is the authority for their own data.”
Two lines: central principle; guides storage and linking strategy.
[view highlight](https://overreacted.io/where-its-at/#H1) #xref #articleseed ID:rw_[MISSING]
### [H2] at:// resolution has three steps
> [!quote] [Where It's at://](https://overreacted.io/where-its-at/)
> “1. Resolve the handle to an identity… 2. Resolve that identity to a hosting… 3. Request the JSON…”
Two lines: operational recipe for implementers.
[view highlight](https://overreacted.io/where-its-at/#H2) #xref ID:rw_[MISSING]
---
### 🔖 Atomic Split Pad (Zettel Candidates)
- Purpose: Promote reusable claims into Atomic notes.
- Split level: H4.
- Each item: one idea, present tense, specific, testable.
#### [Z1] Clients store DIDs as canonical links
- Holds when persistence across handle changes is required.
- Pointer: [H3].
- Links: [[AT-Identity]] [[Permalinks]]
#### [Z2] did:web risks domain-based identity loss
- Holds when DNS/TLD events occur.
- Pointer: [H4].
- Links: [[DID-Methods]] [[Operational-Risk]]
---
### ✏️ Fleeting Queue (Extract by Selection)
- Purpose: Capture quick actions or sparks for Fleeting notes.
- Extraction: Select one line → Refactor.
- [F1] Draft WP at:// embed plugin — context/https://overreacted.io/where-its-at/ #fleeting #inbox
- [F2] Create DID cache service spec — context/https://overreacted.io/where-its-at/ #fleeting #inbox
- [F3] Record 5-min DID doc explainer — context/https://overreacted.io/where-its-at/ #fleeting #inbox
---
<!-- deep-read:sections end -->