# Steve McDougall — Personal Site Practical engineering education, courses, and resources for the modern PHP & Laravel developer. ## Core Pages - [Home](https://www.juststeveking.com/) - Practical API Design & Laravel Architecture Education - [Articles](https://www.juststeveking.com/articles) - Opinionated articles on PHP, Laravel, and APIs - [Guides](https://www.juststeveking.com/guides) - Comprehensive written guides and references - [Series](https://www.juststeveking.com/series) - Step-by-step learning series - [Videos](https://www.juststeveking.com/videos) - Video archives and live coding - [Talks](https://www.juststeveking.com/talks) - Presentation slides and slides list - [Podcasts](https://www.juststeveking.com/podcasts) - Podcast appearances - [Work](https://www.juststeveking.com/work) - Career history and CV details - [Career Framework](https://www.juststeveking.com/career-framework) - Interactive levels framework - [About](https://www.juststeveking.com/about) - Biography and testimonials ## Articles - [The Polling API Is the Most Underrated RFC PHP Has Shipped in Years](https://www.juststeveking.com/articles/php-8-6-polling-api-rfc/) - The Polling API gives PHP 8.6 native epoll and kqueue at last. Here's why the RFC nobody discussed is the most consequential in years. - [A Proper Look at Tabstack](https://www.juststeveking.com/articles/tabstack-review/) - A developer's review of Tabstack, the Mozilla-backed web API that gives AI agents clean extraction, browser automation, and cited research without a scraper. - [Giving your agents a terminal: a first look at the tabstack CLI](https://www.juststeveking.com/articles/tabstack-cli/) - A hands-on look at Mozilla's tabstack CLI: a single Go binary that turns any URL into clean Markdown or JSON, runs browser automation, and scripts neatly. - [The Tips Behind API Artisan: Building Laravel APIs Developers Actually Want to Use](https://www.juststeveking.com/articles/api-tips-and-tricks-from-my-book/) - Practical tips for building Laravel APIs developers trust: contract-first design, versioning, RFC 9457 errors, idempotency and more. Free book inside. - [Testing Actions, Not Mocks](https://www.juststeveking.com/articles/testing-actions-not-mocks/) - Mocking your own Actions tests the wiring, not the behaviour. How I test Laravel Action classes for real with Pest, and where fakes still belong. - [Meet Sevalla; Cloud Hosting Without the Headache](https://www.juststeveking.com/articles/sevalla-101/) - Sevalla simplifies cloud hosting by providing intuitive app deployment, database hosting, and object storage. No infrastructure to manage. - [Server-Side Rate Limiting in Laravel with Fingerprint.dev](https://www.juststeveking.com/articles/server-side-rate-limiting-with-laravel-and-fingerprint-dev/) - Learn how to build device-based rate limiting in Laravel with Fingerprint.dev, Redis caching, and custom middleware to avoid the limits of IP-based throttling. - [The Reason I Love Tempest for APIs](https://www.juststeveking.com/articles/the-reason-i-love-tempest-for-apis/) - Tempest makes API development feel lightweight by combining typed request objects, attribute-based validation, discovery-driven routing, and built-in mapping with minimal ceremony. - [The Art Of Keeping Business Logic Honest](https://www.juststeveking.com/articles/the-art-of-keeping-business-logic-honest/) - Use state machines and workflow engines in Laravel to keep business rules explicit, auditable, and resilient across async processes. - [From Diagram To Implementation Plan](https://www.juststeveking.com/articles/from-diagram-to-implementation-plan/) - Turn your diagrams and design notes into a clear build order that respects dependencies. - [Introduction To Systems Architecture](https://www.juststeveking.com/articles/introduction-to-systems-architecture/) - Learn how to map application components, layers, and dependencies before you start building. - [Reading Between the Lines](https://www.juststeveking.com/articles/reading-between-the-lines/) - Learn how to spot hidden assumptions in a brief before you turn it into code. - [Relationships, Cardinality, and the Questions Your Schema Is Asking](https://www.juststeveking.com/articles/relationships-cardinality/) - Understand relationship types and cardinality so your schema reflects how your data really connects. - [Shaping Before You Build](https://www.juststeveking.com/articles/shaping-before-you-build/) - Shape features before coding so scope, approach, and boundaries are clear from the start. - [Stop Writing Code First](https://www.juststeveking.com/articles/stop-writing-code-first/) - Think through requirements, assumptions, and structure before you open your editor. ## Deep-Dive Guides - [Bulk updates via async jobs](https://www.juststeveking.com/guides/bulk-updates-via-async-jobs/) - Move heavy bulk operations out of the request/response cycle with job resources. Enqueue work, return quickly, let clients poll for status. - [Cursor-based pagination for stable lists](https://www.juststeveking.com/guides/cursor-based-pagination-for-stable-lists/) - Use opaque cursors instead of numeric offsets for more stable pagination over changing data like feeds, logs, or events. - [Deferred writes with the Outbox Pattern](https://www.juststeveking.com/guides/deferred-writes-with-the-outbox-pattern/) - Write events to your database inside the same transaction as your state changes, then publish them reliably with a background worker. - [Expandable relationships with sparse expansions](https://www.juststeveking.com/guides/expandable-relationships-with-sparse-expansions/) - Avoid over-fetching by default while letting clients pull related data in one call when needed using expand parameters. - [Idempotency keys for safe retries](https://www.juststeveking.com/guides/idempotency-keys-for-safe-retries/) - Let clients safely retry non-idempotent calls without accidentally creating duplicates. Essential for payments and critical operations. - [Webhook event delivery with signed payloads](https://www.juststeveking.com/guides/webhook-event-delivery-with-signed-payloads/) - Push events to third-party systems in near-real-time with signed payloads, retry logic, and event replay capabilities. ## Learning Series - [Building Software in the AI Era](https://www.juststeveking.com/series/building-software-with-ai/) - Sprints, story points, and velocity metrics were never a perfect fit for complex software work. Now that LLMs have changed the shape of a development day entirely, the gap between how most teams plan and how work actually gets done has become impossible to ignore. This series covers the tools, habits, and operating models that work better. - [Engineering Management](https://www.juststeveking.com/series/engineering-management/) - A comprehensive guide to modern engineering leadership, covering everything from the transition into management and leading remote teams to scaling organisations, managing technical debt, and building high-performing cultures based on psychological safety and coaching. - [From Requirements to Reality](https://www.juststeveking.com/series/from-requirements-to-reality/) - A practical guide for junior developers learning to think before they build, covering requirements, feature shaping, ERDs, and application architecture. - [Building Modern Laravel APIs](https://www.juststeveking.com/series/modern-laravel-apis/) - I have built a lot of Laravel APIs. This series is how I do it now - PHP 8.5, Laravel 13, opinionated architecture, and patterns that hold up under real production load. We will work through a complete application together, but every decision along the way is one you can take to your own projects. ## Podcast Appearances - [Analytics for your API, with Steve McDougall from Treblle](https://www.juststeveking.com/podcasts/api-analytics/) - Phil and Mike sit down for a chat with Steve MacDougall, who has just recently started working in Developer Relations at Treblle, a past sponsor of APIs You Won't Hate. - [PHP Frameworks, API's and more - With Steve McDougall](https://www.juststeveking.com/podcasts/laravel-magazine-1/) - A conversation with Steve McDougall about PHP frameworks, APIs, and his contributions to the Laravel community. - [Let's talk APIs w/ Steve McDougall](https://www.juststeveking.com/podcasts/overengineered-apis/) - Steve McDougall (aka JustSteveKing) is known as the 'API guy' on Twitter. In today's episode we start with the question, 'what if the best option is just a single page app with a good, RESTful API?' - [PHP Alive And Kicking: Episode 7 – Steve McDougall](https://www.juststeveking.com/podcasts/php-alive-and-kicking-7/) - A lively episode profiling Steve McDougall—from bored sysadmin to PHP developer—covering DIY projects born from necessity. - [With Steve McDougall. Streaming, Learning Laravel and PHP + Much More!](https://www.juststeveking.com/podcasts/streaming-learning-php-and-more/) - A conversation with Steve McDougall about streaming development, learning PHP and Laravel, and his contributions to the developer community. - [Interview with Steve McDougall](https://www.juststeveking.com/podcasts/voices-of-the-elephant/) - In this episide, Cal and Steve chat about Steve's journey into development, and what he is doing in the PHP community right now.