Writing
Thoughts on WordPress, web development, and the tools I use.
Why WooCommerce shows three different refund rates
A merchant found three different refund rates for one subscription product. Tracing WooCommerce core shows why each report disagrees and what to track instead.
Why Cursor couldn't launch my fnm-managed MCP server
An MCP server kept dying on launch in Cursor with an ENOENT error pointing inside the app bundle. The real cause was fnm, a missing PATH, and a Node shebang. Here's the full trace and every fix.
Why your plugin name isn't accepted on WordPress.org
If WordPress.org asked you to rename your plugin, it almost always comes down to one idea: plugin names need to be distinctive and brandable, not descriptions of what the plugin does. Here's what I picked up from the guidelines and my own submissions, and how to choose a name that clears the naming check on the first try.
What three WordPress.org courses taught me about working with people
Three Learn.WordPress.org courses on decision-making, writing, and conflict resolution. Most of the guidance applies to any collaborative work, not only WordPress.
Why WooCommerce EPUB downloads fail with an invalid download link
WooCommerce digital downloads can silently fail for file types like EPUB that aren't in WordPress's default MIME list. Admin can download, customers can't. Here's what actually happens in the code and how to fix it.
Why I built HappyAccess, a free WordPress plugin for temporary admin access
HappyAccess is a free WordPress plugin that replaces password sharing with OTP-based temporary admin access. Built for support engineers, agencies, and developers who need secure, auditable, GDPR-compliant access to client sites.
WooCommerce Order Emails Reply to the Wrong Person
WooCommerce sets the Reply-To on admin order emails to the customer. Here is how to change it so replies go to your team instead.
I read The 48 Laws of Power, and It Changed How I See Every Workplace Interaction
I picked up The 48 Laws of Power by Robert Greene expecting a hustle-culture playbook. Instead, I got a 3,000-year history lesson on how power actually works in every workplace, every team, and every conversation. Here's what stuck with me and what I'd skip.
What makes a WooCommerce plugin actually good? A Reviewer's Perspective on UX
Good UX is the fastest way to earn trust in WooCommerce.com. After reviewing many WooCommerce plugins, one thing is clear: UX matters more than most people expect. I share real, repeatable UX checks based on what I've seen during reviews that help plugins feel native and trustworthy from the first click.
Fixing Min/Max rules inside Product Bundles
I ran into a tricky case where Min/Max Quantities pushed its "Group of" rules onto bundled items, breaking the whole bundle flow. There was no UI switch to control it, so I traced both plugins' code, found the right filters, and wrote a snippet that fixes the product page, cart, and Store API in one go. The bundle now works as expected without changing how the standalone products behave.