41554 blogs · [
{
"id": "01a08791-1ddd-7285-bb4f-4c1051e2b393",
"title": "I built a Greek pottery roguelite with Claude Code in a weekend",
"url": "https://josh.miami/posts/sisyphus-greek-pottery-roguelite",
"published_at": "2026-08-16T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1051f335a4",
"title": "Anthropic's Mythos card reads like a containment memo",
"url": "https://josh.miami/posts/mythos-containment-memo",
"published_at": "2026-04-08T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c10520846b3",
"title": "I built a starter template because I kept rebuilding the same thing",
"url": "https://josh.miami/posts/monolith-industries",
"published_at": "2026-03-21T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105295c23f",
"title": "I built a Pokemon game inside Claude Code's statusline",
"url": "https://josh.miami/posts/statusmon-day-one",
"published_at": "2026-03-14T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1052e42962",
"title": "TokenGolf hit v1.0 because the two-mode system was the wrong abstraction",
"url": "https://josh.miami/posts/token-golf-v1",
"published_at": "2026-03-13T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105387da5e",
"title": "What I shipped today in TokenGolf v0.4.0",
"url": "https://josh.miami/posts/token-golf-v040",
"published_at": "2026-03-09T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1053c6cf15",
"title": "Sunday was when TokenGolf stopped feeling bolted on",
"url": "https://josh.miami/posts/token-golf-sunday",
"published_at": "2026-03-08T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105482ef42",
"title": "The repo looked done until I tried to run it",
"url": "https://josh.miami/posts/token-golf-saturday",
"published_at": "2026-03-07T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1054d6e73b",
"title": "The Half-Second Buffer",
"url": "https://josh.miami/posts/the-half-second-buffer",
"published_at": "2026-03-06T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1055351f29",
"title": "Claudedogged the blog",
"url": "https://josh.miami/posts/claudedogged-the-blog",
"published_at": "2026-03-01T12:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1055b74b21",
"title": "TokenGolf started with a simple question: what if AI cost had stakes?",
"url": "https://josh.miami/posts/token-golf-origin",
"published_at": "2026-02-28T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c10565d1360",
"title": "Publishing blog posts from my phone with Claude and GitHub Actions",
"url": "https://josh.miami/posts/publishing-blog-posts-from-my-phone-with-claude-and-github-actions",
"published_at": "2026-02-28T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105691859f",
"title": "Two Claude Code tricks I actually use every day",
"url": "https://josh.miami/posts/claude-code-profiles-and-audio-hooks",
"published_at": "2026-02-22T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c10573704f4",
"title": "The Model Is Not the Variable Anymore. The System Is.",
"url": "https://josh.miami/posts/the-model-is-not-the-variable-the-system-is",
"published_at": "2026-01-22T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c10573de2a6",
"title": "I Canceled Cursor. Claude Code Is the Default.",
"url": "https://josh.miami/posts/i-canceled-cursor-claude-code-is-the-default",
"published_at": "2025-10-09T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1057e7d956",
"title": "Claude Code Was Winning. I Just Wasn't Listening.",
"url": "https://josh.miami/posts/claude-code-was-winning-i-just-wasnt-listening",
"published_at": "2025-06-26T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1058764720",
"title": "I Stopped Defaulting to OpenAI",
"url": "https://josh.miami/posts/i-stopped-defaulting-to-openai",
"published_at": "2025-03-13T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c1058d5e8a3",
"title": "The Interface Was Solved. The Model Wasn't.",
"url": "https://josh.miami/posts/the-interface-was-solved-the-model-wasnt",
"published_at": "2024-12-12T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105954eb94",
"title": "Cursor Fixed the One Thing Browser AI Couldn't",
"url": "https://josh.miami/posts/cursor-fixed-the-one-thing-browser-ai-couldnt",
"published_at": "2024-06-06T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105a1a4890",
"title": "Copying Code Into a Chat Box Is Not a Workflow",
"url": "https://josh.miami/posts/copying-code-into-a-chat-box-is-not-a-workflow",
"published_at": "2024-04-18T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105a1abb97",
"title": "ChatGPT Replaced the Worst Part of Technical Search",
"url": "https://josh.miami/posts/chatgpt-replaced-the-worst-part-of-technical-search",
"published_at": "2024-01-18T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105b04f4ee",
"title": "It Is Getting Easier to Spin Up Ideas Than Finish Them",
"url": "https://josh.miami/posts/it-is-getting-easier-to-spin-up-ideas-than-finish-them",
"published_at": "2023-11-09T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105b25d0c4",
"title": "I Keep Opening It Before I Fully Trust It",
"url": "https://josh.miami/posts/i-keep-opening-it-before-i-fully-trust-it",
"published_at": "2023-08-17T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105bc2d098",
"title": "ChatGPT Is Weirdly Good at Front-End Grind Work",
"url": "https://josh.miami/posts/chatgpt-is-weirdly-good-at-front-end-grind-work",
"published_at": "2023-05-11T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105bfd1c15",
"title": "ChatGPT Is Replacing the Dumbest Part of Search",
"url": "https://josh.miami/posts/chatgpt-is-replacing-the-dumbest-part-of-search",
"published_at": "2023-02-16T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105c7e62f4",
"title": "Redacting personal identifiable information with Pino.js",
"url": "https://josh.miami/posts/redacting-personal-identifying-information-with-pino",
"published_at": "2022-03-04T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105ca5e892",
"title": "Yikes, It's Been a While",
"url": "https://josh.miami/posts/yikes-its-been-a-while",
"published_at": "2022-02-24T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105cfa8114",
"title": "Front End Developers: Activate CSS Grid Layout in Chrome",
"url": "https://josh.miami/posts/web-developers-activate-css-grid-in-dev-tools",
"published_at": "2017-04-05T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105df2ef38",
"title": "This Should Be the Miami MetroMover Extension",
"url": "https://josh.miami/posts/this-should-be-the-miami-metromover-extension",
"published_at": "2016-06-16T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105ec6bfb5",
"title": "Parsing an RSS Feed in Ruby on Rails",
"url": "https://josh.miami/posts/parse-an-rss-feed-in-ruby-on-rails",
"published_at": "2016-03-16T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105f0cbbc4",
"title": "The Bitcoin Halvening is Among Us",
"url": "https://josh.miami/posts/the-bitcoin-halvening-is-among-us",
"published_at": "2016-03-10T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105f210eb8",
"title": "Set up an http server in node in 3 steps",
"url": "https://josh.miami/posts/set-up-an-http-server-in-node-in-3-steps",
"published_at": "2015-10-07T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105f7f82a9",
"title": "Bitcoin Wallet Guide 101: Breadwallet Part 2",
"url": "https://josh.miami/posts/bitcoin-wallet-guide-101-breadwallet-part-2",
"published_at": "2015-09-09T00:00:00+00:00"
},
{
"id": "01a08791-1ddd-7285-bb4f-4c105fb528ec",
"title": "Bitcoin Wallet Guide 101: Breadwallet Part 1",
"url": "https://josh.miami/posts/bitcoin-wallet-guide-101-breadwallet-part-1",
"published_at": "2015-09-09T00:00:00+00:00"
}
] posts Claim your blog