A practical engineering write-up on moving Pinkary from Laravel Forge to Laravel Cloud. It walks through the real migration issues they hit, including SQLite to MySQL differences, query rewrites, and storage assumptions in the codebase. Read more
I've been writing about There There a lot lately. It's a helpdesk we're building at Spatie, born from two decades of running our own customer support for our open source work and SaaS apps. After all that time being the customer of other helpdesks, we finally started on the one we actually wanted to use. Our take on AI here is to aim it at the support agent, not the customer. The human owns the conversation. The model makes the reply a little cleaner and a little faster. There There is in private beta, and you can apply for early access at there-there.app. We're building There There with…
Over the past few weeks I've posted a couple of times about There There, the helpdesk we're building at Spatie. After two decades of running our own customer support, we decided to stop compromising on tools and build the one we actually want to use. A lot of the fun is on the AI side. We're not using it to replace support agents, we're using it to make them faster. The human reads the ticket, thinks, and clicks a button. The model pulls up relevant history, drafts a reply, tags the ticket, closes a duplicate. There There is in private beta right now, and you can apply for early access at…
At Spatie we build SaaS apps with Laravel on the backend and Inertia with React on the frontend. That split means two type systems have to agree about every payload that crosses between them. Laravel data going out, TypeScript picking it up. There There, the helpdesk we're building, is built exactly like that. Tickets, messages, members, custom sidebar sections, all of it crosses the bridge. We'd go insane maintaining those types by hand. So we don't. There There is in private beta right now, and you can apply for early access at there-there.app. Two Spatie packages make this painless.…
There There, the helpdesk we're building at Spatie, is a project of learned habits. Twenty-some years of writing Laravel apps has taught us which patterns pay off and which ones quietly rot. One that keeps earning its keep is a custom exception class for every domain error. This is a small pattern, but it's one of those things that makes a codebase nicer to live in. There There is in private beta right now, and you can apply for early access at there-there.app. Exceptions that explain themselves The conventional answer for a domain error is something like throw new…
A couple of posts back I walked through the agent and tools we built on top of the Laravel AI SDK for There There, the helpdesk we're putting together at Spatie. I ended that post on a small cliffhanger. We hand the agent off to a streaming service that turns the SDK's response stream into events the frontend can consume. That's this post. A quick reminder on our angle. After two decades of running our own customer support, we wanted a helpdesk where AI makes support agents faster, not one that tries to replace them. The human reads, thinks, and directs. The model drafts and retrieves in real…
A practical post on hardening Laravel projects against destructive AI agent behavior. It walks through the PocketOS incident and shows concrete safeguards like deny rules, credential isolation, and production guardrails. Read more
A video by the Syntax team on why they're using GPUI across more and more of their work. It offers a practical look at what makes GPUI appealing for modern tooling.
A short video by Justin Jackson on ambition, motivation, and the question of how much you really want something. It looks like a thoughtful prompt for anyone building or creating over the long term.
A look back at Packagist's first 15 years, from the first Composer experiments to more than 200 billion package installs. It also covers the team's recent supply chain security work and what they're building next. Read more
Recently I wrote about how we use Jev in There There to detect spam, bounces, and automatic replies. Jev reads an incoming email and answers questions we define up front. We keep the probabilities and decide in our own code what counts as a match. The cheap checks on mail headers still run first. That post ended with a promise that we'd find more uses for Jev. Here are two we have since added to There There: smart conditions for workflows, and automatic assignment to a team or person. Describing a workflow condition in plain language Workflows already let you match a subject, sender, or…
Jason Cohen shares a blunt framework for separating the rare 10x opportunities from the many 0.1x tasks that quietly consume time. It is a strong piece on ruthless prioritization, delegation, and why most backlogs should be archived instead of endlessly maintained. Read more
Large photo uploads can be slow, but resizing and compressing images in the browser can freeze the page if the work runs on the main thread. This article shows how to use a Web Worker to process images before uploading them without interrupting the app. Read more
What Agent Experience engineering means in practice: discoverable code paths, scoped agent instructions, useful feedback, and human ownership of risky decisions. Read more
Yesterday Taylor announced that Jev support landed in the 1.x branch of the Laravel AI SDK. We started using it that same day for spam detection in There There. Let's take a look at what Jev is and how you can use it. How Jev is different from an LLM Jev is made by TypeSafe. An LLM generates text: you ask it something, it writes an answer, and if you want structured data back you have to ask for it and hope. Jev doesn't generate anything. You give it some state and a question, and it gives you back a number. TypeSafe calls these System One models. They read natural language like an LLM does,…
A thoughtful write-up on adding logarithmic auto-scaling to Laravel Horizon. It shows how log-based weighting keeps huge queue spikes from starving smaller realtime queues while still giving large backlogs enough workers. Read more
A deep dive into Eloquent performance, from detecting N+1 queries to choosing aggregates, indexes, query plans, pagination, chunking, and transaction boundaries for a growing team dashboard. Read more
Laravel queues are great out of the box, until they bite. Over the years I’ve collected a few gotchas the hard way. Let me save you the headache. Read more
Transformers.js lets you run AI models directly in the browser without a backend, API keys, or an internet connection after the model is cached. The article explores how it works, which models are available, and the trade-offs of client-side AI compared to traditional AI providers. Read more
In this article, we’ll build an AI-powered Slack bot with the Laravel AI SDK. Unlike tools such as Claude Tag, it can switch AI providers, answer questions, execute tasks, and retrieve information from a knowledge base you control. Read more
Read at the source
Your visit, your choice.
Optional Google Analytics helps us understand visits. Microsoft Clarity records masked interactions to improve the site. Optional tools stay off unless you choose them. Privacy details.