devrob.inMagento · e-commerce · AI

Writing.

ls -t ~/writing · 19 notes on Magento, performance, security & AI

2026-08-077 min

What a minimal JS framework hands back to you

Dropping React for a small hand-rolled layer is easy. The hard part is the work the framework was doing quietly: init timing, state across DOM swaps, and CSP.

Hyvä · JavaScript · Magento 2 · Frontend
2026-08-066 min

The shipping rate your cart quotes is not the one you get billed

Couriers bill the greater of dead weight and volumetric weight. Leave dimensions blank in a rate calculator and it returns a confident, wrong number.

Ecommerce · Performance · Magento 2 · Shipping
2026-07-257 min

AI made writing code cheap. It did not make systems easier to reason about.

Code generation solved the typing. The expensive part of legacy e-commerce work was always reading the system — and that cost has not moved.

Architecture · PHP · AI-Assisted Development · Magento 2
2026-07-235 min

The Magento N+1 fix that hides your out-of-stock products

Replacing ProductRepository::getById() with a product collection to kill an N+1 in Magento silently drops out-of-stock products in the frontend area.

Magento 2 · PHP · Performance
2026-07-165 min

The Liquid you lint isn't the Liquid Shopify runs

Shopify theme check runs LiquidJS, not the Ruby engine your storefront uses. They diverge on whitespace, and here's where that becomes a real bug.

Shopify · Liquid · Frontend
2026-07-155 min

The docs were right — for a version I didn't have installed

A third-party Magento module's docs said one thing; the installed 0.6.2 source said another. Why vendor/ is the only reference you can trust.

Magento 2 · PHP · Debugging
2026-07-146 min

You can't find a bug you never named

A bug is a violated rule. If the rule was never written down, neither your tests nor your reviewer has anything to check against.

Magento 2 · PHP · Code Review · Testing
2026-07-025 min

The handshake tax: reuse your HTTP client in Magento integrations

A new HTTP client per API call quietly slows Magento sync jobs. The cost is repeated TLS handshakes — here's how connection reuse fixes it.

Magento 2 · PHP · Performance · API Integration
2026-06-304 min

WooCommerce HPOS: when order sync floods Action Scheduler

WooCommerce HPOS compatibility mode can flood Action Scheduler and balloon your database. Here's the one query that finds the culprit.

WooCommerce · WordPress · Performance · Action Scheduler
2026-06-266 min

Enriching a large Magento catalog without melting the indexer

Sourcing descriptions and attributes for thousands of SKUs is the easy part. Applying them to a Magento 2 catalog without reindex storms is the real work.

Magento 2 · PHP · Performance
2026-06-255 min

Three reasons a Tailwind v4 utility silently does nothing in Hyvä

A Tailwind v4 utility that looks overridden in a Hyvä v3 theme is usually one of three things: an ungenerated rule, cascade layers, or real specificity.

Hyvä · Tailwind CSS · Magento 2 · CSS
2026-06-246 min

A PHP login form that won't get you owned

The five mistakes hand-rolled PHP login forms keep making: weak hashing, string-built SQL, session fixation, user enumeration, no rate limiting.

PHP · Security · Backend
2026-06-236 min

Why Magento cart price rules get slow at checkout (and how to find the culprit)

Magento 2 cart price rules run in PHP on every quote change. Here's why complex promotions slow checkout, and how to find the rule that's costing you.

Magento 2 · Performance · PHP
2026-06-165 min

The EAV tax: why Magento product loads are slow

Magento 2 scatters every product attribute across typed EAV tables. Here's why loading them all wrecks category pages, and how to stop it.

Magento 2 · PHP · Performance · MySQL
2026-06-136 min

Migrating a Magento 2 store from utf8 to utf8mb4 without losing data

MySQL's utf8 stores only three bytes per character, so emoji and some international text get silently truncated. Here's the safe three-part migration to

Magento 2 · MySQL · PHP
2026-06-127 min

Which Magento extension is slowing you down? Stop guessing.

How to measure the real cost of each third-party extension in Magento 2 — interceptors, observers, layout, and queries — instead of disabling modules one by

Magento 2 · Performance · PHP
2026-06-126 min

unserialize() is the Magento footgun nobody audits

Most Magento compromises come through a third-party extension, not core: PHP object injection via unserialize(). Here's how it becomes a remote shell.

Magento 2 · PHP · Security
2026-06-127 min

Is your Magento store legible to AI assistants?

AI assistants are becoming a product-discovery channel. Shopify ships native tooling for it; Magento ships nothing. Here are the four layers that decide

Magento 2 · AI · E-commerce · SEO
2026-04-196 min

Paginating Magento catalogs without OFFSET

Why setCurPage() and OFFSET die at depth in Magento 2, and how keyset pagination with PHP generators makes catalog iteration scale to 100k+ products.

Magento 2 · PHP · Performance