# 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 - [Fibers Plus the Polling API: What Async PHP Actually Looks Like Now](https://www.juststeveking.com/articles/async-php/) - Fibers give PHP concurrency. The Polling API gives it native epoll and kqueue. Here's how to build on both, with honest benchmarks. - [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. ## 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/) - Master the tools, habits, and operating models needed to ship high-quality software in a day-to-day workflow shaped by LLMs, moving past outdated sprints and velocity metrics. - [Engineering Management](https://www.juststeveking.com/series/engineering-management/) - Scale your engineering organization and build a high-performing team culture. Learn modern leadership frameworks for managing remote engineers, technical debt, and team coaching. - [From Requirements to Reality](https://www.juststeveking.com/series/from-requirements-to-reality/) - Transition from writing simple code to designing complete architectures. Learn how to shape features, design database entity-relationship diagrams (ERDs), and plan before you build. - [Building Modern Laravel APIs](https://www.juststeveking.com/series/modern-laravel-apis/) - Build and deploy production-ready Laravel 13 APIs using PHP 8.5. Design an opinionated, robust architecture that scales under real production load through a step-by-step complete application build. ## 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.