Skeleton placeholders are an underrated upgrade
A good error message answers three questions: what happened, why it happened, and what to try next. Most ship the first, hint at the second, and forget the third. The fix is usually a single sentence longer.
Cross-AI portability is the structural moat OpenAI and Anthropic can't build for themselves. The user's context, exported as a public URL, becomes infrastructure that survives any single vendor's pivot. That's why the right primitive isn't an API key — it's a permalink.
Markdown won because it was always good enough. Not the best at any one thing — never the fastest editor, never the prettiest output, never the most semantically rich. But always close enough that the switching cost killed every alternative.
Capture-flow check-list
- [x] Pulled from Safari via Share Sheet
- [x] OCR'd a whiteboard photo
- [x] Dictated three voice memos walking to coffee
- [ ] Imported the long PDF I was avoiding
- [ ] Cleaned the inbox folder
swift// SwiftUI: keep all five tab views mounted across tab switches so
// each view's @StateObject model persists.
ZStack {
ForEach(AppTab.allCases, id: \.self) { tab in
view(for: tab)
.opacity(router.selectedTab == tab ? 1 : 0)
.allowsHitTesting(router.selectedTab == tab)
}
}
| Provider | Strength | Weakness |
|---|---|---|
| Claude | Long context, instruction following | Slow for tiny prompts |
| GPT-4o | Multimodal, fast | Drifts on long sessions |
| Cursor | Code-aware ranking | Locked to editor |
Next steps
The hardest part of a 1-person startup isn't the work — it's the lack of a forcing function. Without a meeting on Tuesday, nothing has to ship on Monday. The schedule has to come from somewhere, and "because I said so" isn't enough.