Setting Up BayarCash in Laravel the Right Way
Setting Up BayarCash in Laravel the Right Way If you build SaaS for the Malaysian market, you will eventually need FPX. BayarCash is a common choice. The SDK is not the problem. T…
PHP, Laravel and WordPress.
Setting Up BayarCash in Laravel the Right Way If you build SaaS for the Malaysian market, you will eventually need FPX. BayarCash is a common choice. The SDK is not the problem. T…
Migrations That Won’t Break Production A migration runs perfectly on your machine. You deploy it on a Friday at 6 PM because it seems small. Then the deployment freezes. Or worse,…
The Truth About Async PHP: Fibers, epoll, and PHP 8.6 I worked with Laravel for years. I used sync PHP. A request comes, the process runs, and the response goes. I never needed as…
Building A Search Modal for Gated WordPress Sites Most WordPress search tutorials are too simple. They tell you to drop a widget in a header. This works for public blogs. It fails…
Driving Video Region Router Config With etcd Watches and Leases We route viewers to the nearest video edge using a region map. This map tells us which edge pool to use for specifi…
Building Video Heatmaps With HyperLogLog In PostgresQ You want to show editors exactly where viewers stop watching a video. To do this, you need a heatmap. This heatmap shows uniq…
Building Newsroom AI Modules in PHP Most people think AI in a newsroom means one big chat box. This is a mistake. That model leads to features that people use once and then ignore…
Laravel: From Version 5 to Today Laravel did not just change. It grew up. If you open an old Laravel 5 project, you see a house with rooms from different decades. It works, but th…
Dev Log: Driver Seams, URL Bugs, and DB Settings I spent the day building a platform. One architectural idea appeared constantly. You must put a seam between what you do and where…
Build The Seam On Day One Building a platform for high volume data forces a choice. You need a fast database for long term storage. But setting up a complex system on day one is h…
Securing AI Agents With Laravel MCP Tools Giving an AI agent access to your app via MCP is like handing someone a keyring. If you do not set rules, they might open the wrong doors…
How I Built A Sliding Window Rate Limiter in Redis Our video API used to crash every evening at 8pm UTC. It was not real traffic. A few scrapers found our trending endpoint and ha…
Putting an MCP Server Inside a Laravel App AI agents need more than just a scraped UI. They need a way to call specific tools with proper permissions. This is what the Model Conte…
CSV Injection: The Export Button That Runs Code A customer enters their name. They type =HYPERLINK("http://evil.example/leak", "click"). Your system accepts it. It looks like plai…
From PHP to Go: What Took Me Longest to Rewire I wrote PHP for seven years. I used Laravel for five of them. When I moved to Go to lead a migration from a Laravel monolith to micr…
The OpenID Configuration Fix For MCP Connectors I spent too much time this week fixing a remote MCP connector. The connector kept failing...
Building a Multi Region Health Check Aggregator A user in São Paulo hits a dead edge node. They do not file a bug report. They close the t...
Backing Up An API Gateway Config Managing multiple API gateways requires more than simple file exports. When you manage several environments like produc...
10 Common PHP Bugs in Real Time Development PHP is a forgiving language. This makes it dangerous in production. Code works on your local machin...
Building a Video URL Canonicalization Pipeline A single YouTube video can have a dozen different URLs. One URL uses a mobile host. Another...