41554 blogs · [ { "id": "01a087e6-269d-723c-923e-7b58618d0f70", "title": "Thoughts on AI Safety", "url": "https://stevekinney.com/writing/thoughts-on-ai-safety", "published_at": "2026-06-19T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58619c0737", "title": "Using Codex from Claude: Getting a Second Opinion from a Different Model Family", "url": "https://stevekinney.com/writing/codex-as-a-second-opinion", "published_at": "2026-06-04T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b5861e8c83a", "title": "Multi-Model Agentic Coding: Letting the Other Model Do the Typing", "url": "https://stevekinney.com/writing/codex-as-a-worker", "published_at": "2026-06-04T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b5862261e08", "title": "Sentinels: The Quiet Power of a Touched File", "url": "https://stevekinney.com/writing/sentinels-for-agent-gates", "published_at": "2026-06-01T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586251dda8", "title": "Claude Ultraplan: Planning in the Cloud, Executing Wherever", "url": "https://stevekinney.com/writing/claude-ultraplan", "published_at": "2026-04-07T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586288a125", "title": "Playwright vs. Chrome DevTools MCP: Driving vs. Debugging", "url": "https://stevekinney.com/writing/driving-vs-debugging-the-browser", "published_at": "2026-04-06T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58635f6e36", "title": "Entering the Mind of Ralph Wiggum", "url": "https://stevekinney.com/writing/the-ralph-loop", "published_at": "2026-03-31T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b5863f999be", "title": "Memory Systems for AI Agents: What the Research Says and What You Can Actually Build", "url": "https://stevekinney.com/writing/agent-memory-systems", "published_at": "2026-03-25T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586425cbe6", "title": "Temporal's Developer Skill Is a Promising First Draft", "url": "https://stevekinney.com/writing/temporal-developer-skill", "published_at": "2026-03-24T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b5864d6126b", "title": "The Anatomy of an Agent Loop", "url": "https://stevekinney.com/writing/agent-loops", "published_at": "2026-03-19T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b5865410bfa", "title": "Agent Skills, Stripped of Hype", "url": "https://stevekinney.com/writing/agent-skills", "published_at": "2026-03-17T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58663b368a", "title": "Designing a Build System That Runs Untrusted Code", "url": "https://stevekinney.com/writing/designing-a-system-to-run-untrusted-code", "published_at": "2026-03-16T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58672d92a9", "title": "Designing an AI Gateway and Durable Workflow System", "url": "https://stevekinney.com/writing/ai-gateway-durable-workflows", "published_at": "2026-03-13T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586752aa7e", "title": "MCP Apps and the Missing Middle of AI Tooling", "url": "https://stevekinney.com/writing/mcp-apps", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586834bf6c", "title": "My Ridiculous AI-Assisted Development Workflow", "url": "https://stevekinney.com/writing/ai-assisted-development-workflow", "published_at": "2026-03-11T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58685a1de7", "title": "build-temporal-workflow: Faster Temporal Workflow Bundling with esbuild", "url": "https://stevekinney.com/writing/build-temporal-workflow", "published_at": "2026-03-09T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58687dfbf4", "title": "Prompt Engineering Across the OpenAI, Anthropic, and Gemini APIs", "url": "https://stevekinney.com/writing/prompt-engineering-frontier-llms", "published_at": "2026-03-06T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58695993e2", "title": "Introducing Prose Writer", "url": "https://stevekinney.com/writing/introducing-prose-writer", "published_at": "2026-01-12T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b58699386f7", "title": "Cursor Rules for Writing Temporal Workflows with TypeScript", "url": "https://stevekinney.com/writing/cursor-rules-temporal-typescript", "published_at": "2025-05-14T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586a052dbe", "title": "Cursor Rules for TypeScript Engineers", "url": "https://stevekinney.com/writing/cursor-rules-typescript", "published_at": "2025-05-13T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586a719c35", "title": "Using Anthropic's Message Batches API with Temporal", "url": "https://stevekinney.com/writing/anthropic-batch-api-with-temporal", "published_at": "2025-05-08T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586ab84274", "title": "What If It Goes Wrong?: The Hidden Dangers of Counterfactual Reasoning in AI", "url": "https://stevekinney.com/writing/counter-factual-reasoning-in-ai", "published_at": "2025-04-21T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586abd6b27", "title": "Getting the Most Out of GPT-4.1", "url": "https://stevekinney.com/writing/getting-the-most-out-of-gpt-4-1", "published_at": "2025-04-17T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586b55f5b1", "title": "Neural Networks", "url": "https://stevekinney.com/writing/neural-networks", "published_at": "2025-04-16T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586be199fa", "title": "A Gentle Introduction to Using a Vector Database", "url": "https://stevekinney.com/writing/using-a-vector-database", "published_at": "2024-12-31T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586bec8de7", "title": "Setting Up a Python Environment on macOS", "url": "https://stevekinney.com/writing/setup-python", "published_at": "2024-08-06T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586bfe86d3", "title": "Implementing Obsidian's Callout in Svelte", "url": "https://stevekinney.com/writing/obsidian-callout-svelte", "published_at": "2024-04-07T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586ce7a272", "title": "Positives, Negatives, and Alternatives to Using Tailwind for a Design System", "url": "https://stevekinney.com/writing/tailwind-and-design-systems", "published_at": "2024-04-06T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586dcf0a7b", "title": "Creating a Markdown Preprocessor for Svelte", "url": "https://stevekinney.com/writing/svelte-markdown-preprocessor", "published_at": "2024-01-14T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586e3fab01", "title": "Understanding Generics in TypeScript", "url": "https://stevekinney.com/writing/typescript-generics", "published_at": "2021-08-16T00:00:00+00:00" }, { "id": "01a087e6-269d-723c-923e-7b586e4c682d", "title": "A Gentle Introduction to Svelte Stores", "url": "https://stevekinney.com/writing/svelte-stores", "published_at": "2021-08-10T00:00:00+00:00" } ] posts Claim your blog
Back to Steve Kinney
Blog · corpus.blog/blogs/stevekinney.com/posts

Steve Kinney

stevekinney.com

2026

2025

2024

2021