# Steve Kinney > Software engineer, teacher, and artist based in Denver, Colorado. Steve Kinney builds tools and teaches courses on frontend engineering, TypeScript, React, and modern web development. ## Blog Posts - [Prompt Engineering Across the OpenAI, Anthropic, and Gemini APIs](https://stevekinney.com/writing/prompt-engineering-frontier-llms): A practical guide to writing reliable prompts across the major LLM APIs—covering core techniques, where the providers actually diverge, trust boundaries, and two production workflows built from brittle to hardened. ([llms.txt](https://stevekinney.com/writing/prompt-engineering-frontier-llms/llms.txt)) - [Introducing Prose Writer](https://stevekinney.com/writing/introducing-prose-writer): A little TypeScript library for building Markdown-friendly strings without template literal sprawl. ([llms.txt](https://stevekinney.com/writing/introducing-prose-writer/llms.txt)) - [Cursor Rules for Writing Temporal Workflows with TypeScript](https://stevekinney.com/writing/cursor-rules-temporal-typescript): Essential guidelines and best practices for writing reliable Temporal workflows in TypeScript, covering serialization, determinism, and workflow patterns. ([llms.txt](https://stevekinney.com/writing/cursor-rules-temporal-typescript/llms.txt)) - [Cursor Rules for TypeScript Engineers](https://stevekinney.com/writing/cursor-rules-typescript): A collection of some potentially useful Cursor rules as well as a rundown of what potentially makes a Cursor rule great. ([llms.txt](https://stevekinney.com/writing/cursor-rules-typescript/llms.txt)) - [Using Anthropic's Message Batches API with Temporal](https://stevekinney.com/writing/anthropic-batch-api-with-temporal): Build scalable, cost-efficient AI processing with Anthropic's Message Batches API and Temporal workflows. ([llms.txt](https://stevekinney.com/writing/anthropic-batch-api-with-temporal/llms.txt)) - [What If It Goes Wrong?: The Hidden Dangers of Counterfactual Reasoning in AI](https://stevekinney.com/writing/counter-factual-reasoning-in-ai): Exploring the pitfalls of counterfactual reasoning in AI, highlighting its fragility, chaotic nature, and alignment with Nassim Taleb's critique of prediction in complex systems. ([llms.txt](https://stevekinney.com/writing/counter-factual-reasoning-in-ai/llms.txt)) - [Getting the Most Out of GPT-4.1](https://stevekinney.com/writing/getting-the-most-out-of-gpt-4-1): A naïve guide to get the most out of GPT-4.1: context window optimization, coding tips, prompt best practices, and when to choose GPT-4.1 over GPT-4.5. ([llms.txt](https://stevekinney.com/writing/getting-the-most-out-of-gpt-4-1/llms.txt)) - [Neural Networks](https://stevekinney.com/writing/neural-networks): A friendly intro to neural networks, what they are, how they learn, and why they matter for software engineers exploring the world of generative AI. ([llms.txt](https://stevekinney.com/writing/neural-networks/llms.txt)) - [A Gentle Introduction to Using a Vector Database](https://stevekinney.com/writing/using-a-vector-database): In which we learn how to build a simple vector database using Pinecone and OpenAI embeddings, and discover it was way easier than we might have expected. ([llms.txt](https://stevekinney.com/writing/using-a-vector-database/llms.txt)) - [Setting Up a Python Environment on macOS](https://stevekinney.com/writing/setup-python): A brief guide for getting started writing Python on a Mac using virtual environments. ([llms.txt](https://stevekinney.com/writing/setup-python/llms.txt)) - [Implementing Obsidian's Callout in Svelte](https://stevekinney.com/writing/obsidian-callout-svelte): A gentle walkthrough where we build our take on Obsidian's callout component in Svelte. ([llms.txt](https://stevekinney.com/writing/obsidian-callout-svelte/llms.txt)) - [Positives, Negatives, and Alternatives to Using Tailwind for a Design System](https://stevekinney.com/writing/tailwind-and-design-systems): Is Tailwind the best choice when building out a design system? It depends. ([llms.txt](https://stevekinney.com/writing/tailwind-and-design-systems/llms.txt)) - [Creating a Markdown Preprocessor for Svelte](https://stevekinney.com/writing/svelte-markdown-preprocessor): Let's look at how to write our own preprocessor for SvelteKit. ([llms.txt](https://stevekinney.com/writing/svelte-markdown-preprocessor/llms.txt)) - [Understanding Generics in TypeScript](https://stevekinney.com/writing/typescript-generics): Let's learn a little bit about what generics are in TypeScript, why they're useful, and how to use them. ([llms.txt](https://stevekinney.com/writing/typescript-generics/llms.txt)) - [A Gentle Introduction to Svelte Stores](https://stevekinney.com/writing/svelte-stores): Svelte stores simplify state management across components. Let's learn how they're implemented. ([llms.txt](https://stevekinney.com/writing/svelte-stores/llms.txt)) ## Course Walkthroughs - [Enterprise UI](https://stevekinney.com/courses/enterprise-ui): This course teaches senior frontend engineers how to scale applications beyond a single-team SPA — covering composition patterns, operational infrastructure, and migration strategies. ([llms.txt](https://stevekinney.com/courses/enterprise-ui/llms.txt)) - [React Performance](https://stevekinney.com/courses/react-performance): Master React performance optimization from fundamentals to advanced techniques with React 19 ([llms.txt](https://stevekinney.com/courses/react-performance/llms.txt)) - [React with TypeScript](https://stevekinney.com/courses/react-typescript): Comprehensive guide to building type-safe React applications with TypeScript and React 19 ([llms.txt](https://stevekinney.com/courses/react-typescript/llms.txt)) - [AI Fundamentals with Python](https://stevekinney.com/courses/python-ai): Learning about the basics of AI with Python and Hugging Face. ([llms.txt](https://stevekinney.com/courses/python-ai/llms.txt)) - [Developing with AI Tools](https://stevekinney.com/courses/ai-development): A course covering everything that Steve has learned to date about developing software with Cursor and Claude Code. ([llms.txt](https://stevekinney.com/courses/ai-development/llms.txt)) - [Tailwind](https://stevekinney.com/courses/tailwind): An introduction to testing using JavaScript ([llms.txt](https://stevekinney.com/courses/tailwind/llms.txt)) - [Full Stack TypeScript](https://stevekinney.com/courses/full-stack-typescript): Add type-safety across the stack. ([llms.txt](https://stevekinney.com/courses/full-stack-typescript/llms.txt)) - [Visual Studio Code](https://stevekinney.com/courses/visual-studio-code): An in-depth guide covering everything you would ever want to know about using Visual Studio Code. ([llms.txt](https://stevekinney.com/courses/visual-studio-code/llms.txt)) - [Introduction to Testing](https://stevekinney.com/courses/testing): An introduction to testing using JavaScript ([llms.txt](https://stevekinney.com/courses/testing/llms.txt)) - [Web Security](https://stevekinney.com/courses/web-security): An introduction to the fundamentals of web security. ([llms.txt](https://stevekinney.com/courses/web-security/llms.txt)) - [Figma for Developers](https://stevekinney.com/courses/figma): An high level introduction to Steve's Figma for Developers course. ([llms.txt](https://stevekinney.com/courses/figma/llms.txt)) - [Building Design Systems in Storybook](https://stevekinney.com/courses/storybook): An exploration in building a design system using Storybook. ([llms.txt](https://stevekinney.com/courses/storybook/llms.txt)) ## Links - [RSS Feed](https://stevekinney.com/writing/rss) - [Sitemap](https://stevekinney.com/sitemap.xml) - [Full Content](https://stevekinney.com/llms-full.txt)