Web scraping in Laravel with Larascraper
I do a fair amount of scraping in Laravel, and it always splits into two worlds. Guzzle for the pages that are just HTML, and a mess of Puppeteer scri…
Latest Testing & QA news from Tech News
I do a fair amount of scraping in Laravel, and it always splits into two worlds. Guzzle for the pages that are just HTML, and a mess of Puppeteer scri…
On hosting environments without SSH access, the fallback is browser automation: Playwright logs into wp-admin and drives the plugin update screen dire…
A few weeks ago I wrote about the WordPress Abilities API — what it is, why WordPress 6.9 shipped it, and what it means for how plugins will talk to e…
TL;DR Shared-database multi-tenancy = one database, every row tagged with tenant_id , a global scope that filters automatically. Three moving parts: a…
TL;DR Shipped a SEO + analytics baseline in Kickoff : meta/OG, canonical, JSON-LD org schema, dynamic robots.txt , sitemap, and admin-editable GA4/GTM…
Contract testing a Symfony API with OpenAPI takes four moving parts: the OpenAPI spec, a WebTestCase (or a plain Request / Response pair), one trait, …
Notes from January 2026, when giving an AI agent live database access still felt reckless. Written for engineers who are about to do this, and for the…
Третий год по вечерам в одиночку пилю текстовую MMORPG в Telegram. Мрачный остров, выжившие, ресурсы, базы, драки. Проект уже один раз почти умер. Тян…
Мы добавили кэширование, чтобы ускорить работу бэкэнда. Затем кэширование нарушило авторизацию. Поначалу ситуация казалась безобидной. Сервису Symfony…
The projects I dread are the ones where the database is the only documentation. Twenty tables, foreign keys, years of production data, and either no A…
Technical books have a shelf life that nobody prints on the cover. A cookbook from 2018 still works. A history book from 2018 still works. A Laravel b…
Are you tired of wrestling with raw cURL requests, parsing Server-Sent Events (SSE) by hand, and building complex polling loops just to interact with …
It is time to bring opposites together, to stir up these stagnant waters, and to restore an industry that is dynamic from within, with multiple connec…
TL;DR Shipped an email broadcast module: audience filtering, suppression, queued per-recipient sends, delivery tracking. Fixed a silent implicit-route…
TL;DR Rewrote a bootstrap seeder so the deployment stack — DB engine, queue runner, PHP version — is config, not hardcoded. Renamed it away from a pha…
Custom product options are one of those features every Magento store uses, but few optimize. They're deceptively simple — a dropdown for gift wrapping…
The problem: chat that can only talk The chatbot from earlier in this series can answer questions, but ask it "how many orders did we ship yesterday?"…
In the last post we streamed AI responses over SSE. Now let's fix the problem every chatbot hits in week one: the model doesn't know your data. Ask it…
First published on the Accreditly blog . When someone finishes a course in your Laravel app they want proof: a certificate they can download, print an…
💡 TL;DR A broken PHP form almost always comes down to one of five things: wrong method attribute, a mismatched name on your input, checking $_POST wit…
The companion to the seven things to check before a WordPress major upgrade is the question that comes right after: when do you actually apply it? A n…
Originally published on letmesend.email . I work on letmesend.email, and this is an adapted edition of that guide. This article was prepared with AI-a…
Большинство ORM строятся вокруг естественного предположения: одной таблице соответствует одна entity . Это настолько привычно, что даже не о…
Generating a PDF in Laravel means choosing which problem you want to own. dompdf makes you write CSS like it's 2011. Snappy chains you to an abandoned…
TL;DR A job dispatched once , at row-creation time, has a silent failure mode: if that dispatch is lost, the row sits pending forever — and never appe…
As our Laravel applications grow, we inevitably face a common architectural dilemma: where do we put complex business logic that dictates whether an e…
In modern Laravel applications, events and listeners are the glue that holds our complex business logic together. They allow us to decouple our code, …
The problem I've been working with Manticore Search for about two years at EricaPRO , building the search layer for two financial data platforms. For …
1. Hook & Problem Statement You’ve been there. You're building a Laravel application, and everything is going smoothly. You type Route::get('/orde…
The ScyllaDB PHP driver is not a C++ extension anymore. As of 1.4.0 it's pure C23, the ZendCPP template layer we leaned on for the object embed and al…