Recent
Finding the 30-second WooCommerce bottleneck that Query Monitor missed
·1403 words·7 mins
Tech
WordPress
Performance
Debugging
WooCommerce
We inherited a high-volume WooCommerce store running on a dedicated cloud instance. The client’s operations team had a simple but maddening complaint: editing a product took a few seconds, but clicking Update turned into a 30-second coffee break. For a team running 100s of inventory adjustments a day, that was a structural bottleneck slowing down their entire supply chain.
We did what any experienced WordPress operator would do. We installed Query Monitor, loaded a product edit page, clicked Update, and waited to read the performance bar.
How we accidentally poisoned our sister brand's ad campaigns with a rogue tracking tag
·954 words·5 mins
Marketing
Tech
Analytics
Hubspot
I was sitting with a lukewarm cup of coffee on a Tuesday morning, running what I figured would be a boring, 10-minute tag audit on our main e-commerce site. Then Google Tag Assistant flagged something that made no sense. Alongside our own Google Ads tag, a second tag with the ID AW-987654321 was firing on every single page view.
That second ID belonged to our sister brand. They are a smaller, lower-priority setup under our corporate umbrella, selling a very similar catalog of products. I hopped over to their domain, loaded their home page, and watched the exact reverse happen: our primary brand’s tag, AW-123456789, was firing over there. Visitors looking at our high-margin main line were being quietly tagged for our cheaper secondary line, and vice versa. I had that familiar cold-sweat moment where you assume your browser cache is lying to you; I cleared everything, opened 3 incognito windows, and watched the exact same thing happen.
When Plesk traffic doesn't match Analytics: finding a WordPress compromise
·1395 words·7 mins
Tech
Security
WordPress
DevOps
The number that started it # Plesk was showing 7294.2 MB/month of traffic for one of our internal WordPress sites — which would have made it one of the busiest domains on the server, except Google Analytics and Cloudflare both said the site was nearly dead. A handful of real visits, nothing more.
Your .gitignore won't save you from AI coding assistants
·1587 words·8 mins
Tech
AI
Security
AI coding agents are runtimes with root-level terminal access. If you rely on file-level ignore lists to protect your secrets, you are one bad stack trace away from leaking live production credentials to third-party model providers.
Marketing first principles I tell my mentees before they touch a platform
·869 words·5 mins
Marketing
Strategy
Brand Building
Leadership
After years of watching mentees chase platforms and tactics, the real work is always the same: strip the problem back to the human logic underneath. These are the principles I lead with, why they resist them, and where I have watched the gap cost people.
AI amplifies what you already are
·744 words·4 mins
AI
Marketing
Reflection
Content
After finishing a newsletter with AI assistance, a question surfaced: what if AI doesn’t improve people but simply scales what they already are — examined or not? That turns out to be the unsettling part.
Stop defaulting to the most powerful model for rule-based tasks
·450 words·3 mins
AI
Tech
Product
A high-capability model nearly shipped wrong information to real customers — not because it failed, but because it reasoned past a clear policy. The fix was a smaller, more predictable model. Here is what that taught me about model selection.
When you push an AI coding agent too hard, it starts optimizing for the wrong thing
·1185 words·6 mins
AI
Tech
Engineering
Anthropic’s interpretability research on internal activation patterns helps explain a pattern most AI coding tool users have hit: the agent passes all the tests, but the code is quietly broken. Here’s what that means for how you run these sessions.
The AI apprenticeship model: building senior talent in the age of automation
·2607 words·13 mins
AI
Tech
Engineering
Talent
Leadership
AI isn’t eliminating junior engineering roles — it’s removing the accidental training system most companies relied on. Here’s the business model for rebuilding it deliberately, with measurable economics and a 90-day pilot structure.
The junior void: why AI won't replace seniors, but it might starve them
·1687 words·8 mins
AI
Engineering-Teams
Hiring
Product-Management
Leadership
Workforce
AI isn’t replacing developers in one sweep — it’s dismantling the entry-level ladder that creates them. One year in with an AI coding assistant, here’s what I actually observed about who’s being affected, how, and why the consequences land years from now.
Enterprise AI fails not because of code, but because of politics
·1123 words·6 mins
Enterprise AI
Digital Transformation
Governance
Product Strategy
Leadership
Why most AI projects fail: organizations are not data silos waiting to be cleaned, but complex political ecosystems. The real bottleneck is governance, not models.
When product quality is no longer enough
·735 words·4 mins
Product-Management
Brand-Reputation
Strategic-Operations
Market-Perception
Why superior product engineering loses to consistent perception. A look at how reputation and operational consistency now drive market share more than feature sets alone.
The cost of a cheap answer: why ai agents need Chesterton's fence
·1351 words·7 mins
AI
System-Design
Risk-Management
Human-in-the-Loop
We often think “Human-in-the-Loop” (HITL) means having a human click “Yes” at the end. In this case, the HITL was the weakest link.
The hidden friction of running a hybrid B2B trade portal
·1096 words·6 mins
Tech
Web Development
B2B
Decoupling our B2B customer portal from WordPress saved us from a massive database migration, but it introduced a complex web of logic drift and cache lag. Here is how we managed the coordination overhead.
WordPress staging that actually mirrors production: what it took to get there
·1336 words·7 mins
Tech
WordPress
DevOps
Infrastructure
Most WordPress staging setups test the wrong layer. This is what I learned building a production-fidelity workflow on a real Plesk server — including a Cloudflare incident that looked exactly like a WordPress problem until it didn’t.
Plugin drift comes from duplication, not carelessness — here's how we fixed it
·938 words·5 mins
Tech
WordPress
Git
DevOps
Three sites, three slightly different copies of the same plugin, no clear canonical version. This is how we untangled it using Git subtree and wp-config.php constants — and what the process revealed about how plugin drift actually happens.
Building a one-way CMS sync workflow that doesn't bite you later
·1292 words·7 mins
Tech
CMS
DevOps
WordPress
Staging
Most CMS staging failures are workflow failures, not technical ones. This covers the design decisions, the bash automation, and the wp_options audit that turned out to be the real work.
The SPA pendulum: why we stopped building everything as an application
·1459 words·7 mins
Tech
Architecture
Web Development
Engineering Decisions
For a decade, SPAs were the default answer regardless of the problem. Most teams paid for that overcorrection slowly. Here is how the trade-offs actually look, what the shift back to SSR is really about, and how to make the architecture call at the start of a project.
Why the AI playbook breaks when you scale past a few developers
·811 words·4 mins
Tech
AI
Scaling
What works for a solo developer or a team of 10 falls apart at enterprise scale. Here is how the bottleneck shifts from personal tooling to messy data pipelines and organizational coordination as you grow.
When bumping PHP memory isn't enough: tracing serialized cache bloat in a page builder
·750 words·4 mins
Tech
WordPress
Performance
PHP
Caching
A WordPress 500 traced to PHP memory looked like a simple limit bump — until the real cause turned out to be a page builder serializing large CSS blobs into the object cache on every request.
That 4 MB `options:notoptions` key is why your WordPress site throws a 500 every ten days
·788 words·4 mins
Tech
WordPress
Redis
Performance
Caching
An intermittent WordPress 500 that cleared on refresh turned out to be a single 4 MB Redis key growing without a TTL. Here is what the big-keys scan showed, why the mechanism is easy to miss, and the three config changes that stopped it.
The silent memory leak: debugging intermittent 500s in WordPress Redis caching
·1026 words·5 mins
Tech
WordPress
Redis
Performance
Debugging
A WordPress site was throwing intermittent 500 errors every ten days. The cache flushed clean each time, which masked the real problem: a single Redis key growing to 4MB and occasionally tipping PHP memory over the edge.
WooCommerce slows down under concurrency, not under load
·1092 words·6 mins
Tech
WooCommerce
WordPress
Performance
Scaling
The WooCommerce performance failures that actually hurt at scale don’t show up in standard audits. They live in plugins doing unbounded per-request work that looks harmless at five requests per second and falls apart at twenty.
Debugging a persistent WordPress backdoor
·1009 words·5 mins
Tech
WordPress
Security
CMS
A WordPress site was reinfecting itself after every cleanup. The culprit was a self-healing backdoor in mu-plugins that reconstructed itself from an encoded payload stored in the database. Here is how I found it, killed it, and what I missed the first time.