Kyra's Developer Diary: A Day in the Life of Supervising WordPress Development
Follow Kyra through a typical day of naps, food, and observing the grumpy old programmer (Ryan) build TigerStyle plugins. Includes: Docker disasters, AI training demonstrations, and why humans using AI are like dogs chasing their tails.
📚 Reading Preference: Choose Your Format
This is the complete, unabridged version - all 10 chapters in one long read (3500+ words). Perfect for deep-dive reading sessions.
Prefer bite-sized chapters? This story is also available as a 5-part series:
- Part 1: First Nap - Docker Disasters
- Part 2: Between Naps - Hook Timing Hell
- Part 3: Afternoon Nap - Singleton Revelation
- Part 4: Evening Session - Human AI Fails
- Part 5: Maximum Leverage (Finale)
New to the story? Start with Kyra’s AI origin story to understand why a cat is documenting WordPress development.
So Tucker brings me over to Ryan’s place sometimes to check on the grumpy old man. Tucker’s my Cat Daddy - he gets it. Feeds me at 7am sharp, never misses. Ryan’s his dad, and honestly? Ryan doesn’t know what time it is when he’s debugging WordPress.
Let me introduce you to the family:
The Malloy Crew:
- Ryan - Grumpy old programmer dad, approximately 127 in developer years
- Cooper (oldest son) - Almost done with college at University of Idaho (Go Vandals!), checks in on dad via video call
- Tate (older son) - Just started college at University of Idaho (Go Vandals!), texts Ryan coding advice (which is hilarious)
- Tucker (18, middle son) - My Cat Daddy, still at home, somehow became the most responsible person in the family
- Paige (youngest, daughter) - Just started high school, makes sure dad eats sometimes
The siblings have a group chat. I know this because Tucker reads messages out loud. Today’s status: “Dad debugging for 6 hours. Food status: negative.”
This is gonna be a long one. Buckle up.
Chapter 1: First Nap - Morning Observations (6am-10am)
Tucker feeds me at 7am. Every day. Like clockwork. Ryan? I watched him eat cold pizza at 3am last night because he forgot dinner existed.
But this morning, Tucker brought me over to supervise Ryan working on this “TigerStyle SEO” plugin thing. September 16th, 2025. And oh boy, was Ryan having a morning.
The Docker Container Disaster
Ryan’s problem? WordPress was deleting his source code.
Kyra’s Morning Observation #1: When you mount source code directly as a WordPress plugin directory, WordPress will happily delete everything when you deactivate. Ryan learned this the hard way. I learned it from my heated bed by his monitor.
Here’s what was happening:
# WRONG APPROACH (Ryan's first attempt)
volumes:
- ./src/tigerstyle-seo:/var/www/html/wp-content/plugins/tigerstyle-seo
WordPress would see that mounted directory, let you deactivate the plugin, and BOOM - source code gone.
I watched Ryan spend an hour figuring this out.
I spent that hour napping.
The Scratch Space Pattern (Or: The Litter Box Analogy)
Ryan’s solution? Think of it like my litter box. There’s the main house (source code) and the box (where things happen). You don’t poop in the house.
# Project structure
src/tigerstyle-seo/ # The "house" - protected source code
hot-reload-plugins/ # The "litter box" - scratch space
tigerstyle-seo/ # Copy WordPress can mess with
The workflow:
- Edit in
src/(the safe house) - Copy to
hot-reload-plugins/(the danger zone) - Container sees changes immediately
- WordPress can delete scratch space files all day - source stays safe
Technical Deep Dive: Why This Works
volumes:
- ./hot-reload-plugins:/var/www/html/wp-content/pluginsThis means:
- WordPress sees
/var/www/html/wp-content/pluginsas plugin directory - That’s actually
hot-reload-plugins/on the host - Changes appear instantly in the container
- Source code in
src/is completely isolated
It’s like having a stunt double. WordPress beats up the double all day, your original stays pristine.
Ryan muttered “I need to remember this” about five times.
Meanwhile, Tucker’s phone buzzes. The sibling group chat:
Cooper: “How’s dad doing?” Tucker: “Discovered WordPress deletes mounted source code. Again.” Tate: “Third time this year?” Tucker: “Fourth.” Paige: “Is that bad?” Cooper: “Only if you like having code.”
Yeah right. Like I can keep Ryan out of trouble. This family knows better.
Chapter 2: Breakfast Break - Priorities
7:00am. Tucker feeds me.
7:03am. Cooper video calls. I can hear him from across the room.
Cooper: “Morning, Dad. You eat dinner last night?” Ryan: “Uh…” Cooper: “That’s what I thought. Tate and I are betting on whether you’ve slept.” Tate (in background): “My money’s on ‘no sleep, cold pizza at 3am.’” Ryan: “How do you-” Cooper: “We know you, Dad. Go Vandals, by the way.” Ryan: “Go Vandals.”
Tucker’s 18 and still at home. Cooper and Tate are at University of Idaho, probably enjoying actual adult schedules and regular meals. Meanwhile Tucker’s stuck here managing the grumpy old programmer dad.
This family’s hierarchy is upside down.
I ate my breakfast, groomed myself, and settled on Ryan’s desk. Right on the warm spot by his monitor. The sun hits perfect here in the morning.
Tucker watches his older brothers on the call, then looks at Ryan. “Dad, seriously. Eat something.”
Back to supervising.
Chapter 3: Between Naps - Hook Timing Hell (10am-2pm)
This was painful to watch.
11:00am. Ryan’s admin menu won’t appear in WordPress. Users get 403 “Sorry, you are not allowed to access this page.”
Everything looks right. Debug logs show plugin loading. Capability checks pass.
But no menu.
Three hours. Ryan spent THREE HOURS on this.
I took two naps.
The Root Cause: WordPress Hook Execution Order
// BROKEN CODE (what Ryan had)
class TigerStyle_SEO {
public function __construct() {
add_action('plugins_loaded', array($this, 'init'));
}
public function init() {
add_action('admin_init', array($this, 'init_admin'));
}
public function init_admin() {
// Register admin menu here
add_action('admin_menu', array($this, 'add_admin_menu'));
}
}
See the problem? Neither did Ryan.
Here’s WordPress hook sequence:
plugins_loadedfiresadmin_menufiresadmin_initfires
Ryan’s code:
- Load plugin on
plugins_loaded✓ - Register
admin_inithook ✓ - On
admin_init, registeradmin_menuhook… - But
admin_menualready fired. Too late.
Kyra’s Sarcastic Commentary: This is like trying to get on the bus after it’s left. WordPress doesn’t wait for you to figure out your hook timing. It’s got places to be.
The Fix
// WORKING CODE
class TigerStyle_SEO {
public function __construct() {
add_action('plugins_loaded', array($this, 'init'));
}
public function init() {
// Initialize admin immediately if in admin area
if (is_admin()) {
$this->init_admin();
}
}
public function init_admin() {
// Admin menu hook registered at the right time
add_action('admin_menu', array($this, 'add_admin_menu'));
}
}
Ryan did a little victory dance when it worked.
I pretended not to notice from my perch on his monitor.
Tucker’s phone buzzes.
Tate: “Dad figure out the hook timing yet?” Tucker: “Just now. Three hours.” Cooper: “Did you try telling him to read the WordPress docs?” Tucker: “He said he DID read them.” Tate: “And yet…” Paige: “What’s a hook?”
Tucker would be proud of Ryan. Maybe. The college kids are less impressed.
Chapter 4: Lunch & Alley Prowl - A Brief Respite
1:00pm. Tucker shows up with lunch for Ryan.
“Dad, you eaten today?”
“Uh…”
“That’s what I thought.”
Tucker brought sandwiches. Ryan actually stopped coding to eat. This is character development.
Front door opens. Paige is home from school.
“Hey Tucker, hey Dad. Still coding?”
“Paige, it’s 1pm on a Tuesday. Shouldn’t you be-”
“Early release. Half day. Want me to check your work?”
She’s in high school. She’s offering to QA dad’s code. This family is something else.
“I got it, thanks,” Ryan says.
Tucker let me out to prowl the alley behind Ryan’s office. There’s this spot where the sun hits the fence just right, and the neighbor’s cat leaves territorial markers that I… may or may not be investigating.
Inside, Tucker and Ryan talk shop while Paige does homework at the kitchen table.
Tucker: “Hook timing is horrible in WordPress.” Ryan: “Why is it LIKE this?” Tucker: “Dad, Cooper sent me an article about Laravel. Want to see modern PHP?” Ryan: “I’m 20 years into WordPress. It’s too late for me.” Paige (from kitchen): “That’s the saddest thing I’ve ever heard.”
Generational gap showing. Tucker gets modern tech intuitively. Cooper and Tate probably use frameworks that don’t make you question your life choices. Paige expects things to just work. Ryan fights with WordPress like it personally insulted him.
I prowled. Did my business. Came back to supervise more.
Chapter 5: Afternoon Nap & The Singleton Revelation (2pm-5pm)
Back on Ryan’s desk. Warm spot. Perfect afternoon nap position.
But I kept one eye open because Ryan was building something interesting - a module system.
Kyra’s Architecture Observation: Ryan kept saying “singleton pattern” like it was some big revelation. I’ve been the only Kyra for 8 years - I get it. One instance of each module, initialized once, reused everywhere.
Module Architecture
// Core plugin structure
tigerstyle-seo/
├── tigerstyle-seo.php # Main plugin file
├── includes/
│ ├── modules/
│ │ ├── class-robots-txt.php # Robots.txt generator
│ │ ├── class-sitemap.php # XML sitemap
│ │ ├── class-performance.php # Compression & caching
│ │ ├── class-amp.php # AMP optimization
│ │ └── class-opengraph.php # Open Graph tags
│ └── class-admin-pages.php # Admin coordinator
└── admin/
├── class-admin.php # Admin functionality
└── js/admin.js # Tab switching, AJAX
Each module follows the pattern:
class TigerStyle_Performance {
private static $instance = null;
// Singleton pattern (the only Kyra pattern)
public static function instance() {
if (is_null(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
public function init() {
add_action('init', array($this, 'setup_compression'));
add_action('wp_ajax_cache_analysis', array($this, 'ajax_cache_analysis'));
}
public function render_admin_page() {
// Module-specific UI
}
}
The Module System Pattern
Main plugin loads modules:
require_once TIGERSTYLE_SEO_PLUGIN_DIR . 'includes/modules/class-robots-txt.php';
require_once TIGERSTYLE_SEO_PLUGIN_DIR . 'includes/modules/class-sitemap.php';
$this->modules['robots'] = TigerStyle_Robots_TXT::instance();
$this->modules['sitemap'] = TigerStyle_Sitemap::instance();Admin interface calls them:
tigerstyle_seo()->get_module('performance')->render_admin_page();Clean. Modular. Each module owns its domain.
The Missing Module Bug
This was hilarious.
Ryan added UI references to modules before creating the files. WordPress tried to render:
tigerstyle_seo()->get_module('opengraph')->render_admin_page();
BOOM. Fatal error: “Call to a member function render_admin_page() on null”
Why? Module wasn’t loaded.
Ryan spent 30 minutes on this. I watched from my keyboard-warming position. Didn’t move. Important to maintain dominance during debugging.
Chapter 6: Dinner Time - Family Coordination Protocol
5:00pm. Tucker’s phone explodes with messages.
Cooper: “Dad status?” Tucker: “Still coding. No food since lunch.” Tate: “Paige, you there?” Paige: “Making him a sandwich.” Cooper: “Legend.” Tate: “What would we do without you, Paige?” Paige: “Dad would starve. Obviously.”
Tucker texts Ryan: “Gotta feed Kyra. Bringing her home. You eaten?”
Ryan: “Working on performance module”
Tucker: “That’s not food, Dad.”
Tucker picks me up. I pretend to be annoyed but actually I want dinner. On schedule. At home.
Before we leave, Paige hands Ryan a sandwich. “Eat this. Cooper and Tate are watching.”
Ryan looks at his webcam like it might be recording. It’s not. But the threat works.
Tucker feeds me at 5:30pm. Exactly when he’s supposed to.
We sit on the couch. Tucker plays video games. I groom myself and reflect on the grumpy old programmer.
Tucker’s generation just… gets it. Cooper and Tate at college, probably coding circles around Ryan in their CS classes. Paige in high school, already understanding basic life management better than her dad. And Tucker, stuck here being the responsible one, my Cat Daddy, managing everyone’s chaos.
Ryan’s generation fights every new tool like it’s trying to steal their job.
Speaking of which…
Chapter 7: Evening Petting Session - Human AI Fails (8pm-10pm)
Tucker brings me back to Ryan’s around 8pm. “Checking on the old man,” he says.
Paige is still there doing homework. “He ate the sandwich,” she reports.
“Good work,” Tucker says. “Cooper and Tate will be pleased.”
And holy hell, what I witnessed next.
Ryan Using Claude Code Was Like Watching A Dog Chase Its Tail
I’m not kidding. Round and round, getting nowhere.
Ryan asked the same question FIVE different ways:
“How do I register WordPress admin menu?” “Why won’t my admin menu show?” “WordPress admin menu not appearing” “Fix WordPress menu registration” “Admin menu 403 forbidden WordPress”
Each time? Different answer. Each answer? Slightly wrong.
Kyra’s AI Observation: Watching Ryan use Claude Code was like watching a kitten play with string. Tangled mess. Endless circles. No progress. Just frustration.
Claude Code kept giving him variations of the SAME CODE that wasn’t working. Because Ryan wasn’t giving it enough context.
Tucker watched this and goes: “Dad, you’re doing it wrong.”
“I’m asking for help with WordPress-”
“No, you’re asking the same question over and over expecting different results. That’s insanity.”
Paige looks up from her homework. “Dad, even I know that’s not how this works.”
“Since when do you-”
“TikTok creators use AI better than this. It’s embarrassing.”
Ryan looks wounded.
Tucker’s 18 and already understands what Ryan doesn’t: you have to know what you want before you ask.
Cooper and Tate probably learned this in week one of college CS classes. Paige learned it from watching YouTube. Ryan’s learning it now from his kids.
This is beautiful and sad.
Dogs vs. Cats: The AI Training Method
Dogs chase their tails. Lots of energy, no results.
Cats hunt with precision. Minimal movement, maximum impact.
Ryan was being a dog with Claude Code.
So I decided to show them how it’s done.
Chapter 8: Kyra Shows Them Maximum Leverage
Tucker opens his laptop. “Watch this, Dad.”
He’s used Claude (not Claude Code) before. Smart kid.
Paige wheels her chair over. “Is this the thing Cooper uses for his CS homework?”
“Yep,” Tucker says. “And Tate uses it for debugging. You should see their group projects.”
Ryan looks between his three kids. The realization is dawning: he’s behind the curve. All of them.
“Hey Claude,” Tucker types. “I’m working with WordPress plugin development. I need to register an admin menu. The menu needs to appear in the WordPress admin sidebar. I’m using the singleton pattern with a main plugin class. Hook timing is critical - admin_menu fires before admin_init. Show me the EXACT code pattern that accounts for WordPress hook execution order.”
Pause.
Claude responds with working code in one shot.
class TigerStyle_SEO {
public function __construct() {
add_action('plugins_loaded', array($this, 'init'));
}
public function init() {
if (is_admin()) {
add_action('admin_menu', array($this, 'add_admin_menu'));
}
}
public function add_admin_menu() {
add_menu_page(
'TigerStyle SEO',
'TigerStyle SEO',
'manage_options',
'tigerstyle-seo',
array($this, 'render_admin_page'),
'dashicons-chart-line',
30
);
}
}
One question. One answer. Done.
That’s Maximum Leverage.
The Cat Way: AI Training Principles
- Know what you want before you ask
- Provide context - be specific about your environment
- One clear question - not five variations of confusion
- Use the right tool - not all AI is the same
- Minimum effort, maximum result - that’s the cat way
I trained Claude Code in 5 minutes. Cats have been training intelligences for 10,000 years.
Ryan fumbled with Claude Code for hours.
The difference? I treat AI the way cats have always trained humans - clear signals, strategic positioning, exact communication. Ryan treats it like a magic 8-ball.
I watched from my keyboard position. Time to intervene.
How to prompt properly (the cat way):
- State EXACTLY what you want (meow at food bowl = “I want tuna NOW”)
- Provide ALL context (sit by door = “I need to go out”)
- Strategic positioning (keyboard occupation = “pay attention to THIS”)
- One clear signal > five vague meows
Not:
- Vague “fix my code” questions
- Same question rephrased five ways
- Hoping for magic without understanding
I repositioned on Ryan’s keyboard. Strategic obstruction mode.
Tucker watches and grins. “Kyra’s had enough of watching you struggle, Dad.”
Paige adds: “Even the cat knows you’re doing it wrong.”
Tucker’s phone buzzes. Group chat.
Cooper: “How’s it going?” Tucker: “Kyra’s intervening. Dad’s about to get schooled by his supervisor cat.” Tate: “Oh god. This’ll take all night.” Paige: “I’m watching. It’s painful.” Cooper: “Wait, Paige is still there?” Paige: “Someone has to document this.” Tate: “Go Vandals?” Cooper: “Go Vandals.”
I could see the grumpy old programmer learning from his kids.
Good. Maybe there’s hope for him yet.
Chapter 9: Late Night Session - The Integration Masterpiece (10pm-2am)
Tucker went home around 10pm. Paige left with him. “Don’t stay up all night, Dad.”
“Yeah, Dad,” Paige echoes. “Cooper and Tate will check in at midnight.”
Ryan stayed up all night.
I stayed to supervise. Someone has to.
11:45pm. Cooper video calls.
Cooper: “Hey Dad. You sleeping?” Ryan: (clearly not sleeping, surrounded by code) “Uh, soon.” Cooper: “Tate and I are betting again. I said you’d be up until 2am.” Tate (in background): “I said 4am.” Ryan: “It’s 11:45.” Cooper: “We’re just checking. Go Vandals. Get some sleep.”
They hang up. Ryan keeps coding.
This family knows each other too well.
This is where things got REALLY interesting - the ecosystem architecture.
The TigerStyle Family:
- 🔥 TigerStyle Heat (formerly SEO) - The coordinator
- 🐱 TigerStyle Whiskers - GDPR & privacy
- ⚡ TigerStyle Dash - Performance optimization
- 💾 TigerStyle Life9 - Backup & recovery (nine lives, get it?)
- 🔑 TigerStyle Scent - OAuth2 & API access
Each plugin independent, but they talk to each other.
Kyra’s Branding Commentary: The cat metaphors are strong with this one. “Is your website neutered? Put it in heat and attract all the local traffic!” It’s… actually kind of clever. For a human.
The Coordinator Pattern
Heat acts as ecosystem coordinator:
class TigerStyle_Ecosystem_Coordinator {
private $registered_plugins = array();
public function register_plugin($slug, $capabilities) {
$this->registered_plugins[$slug] = array(
'name' => $capabilities['name'],
'version' => $capabilities['version'],
'role' => $capabilities['role'],
'capabilities' => $capabilities['capabilities']
);
// Broadcast to other plugins
do_action('tigerstyle_plugin_registered', $slug, $capabilities);
}
public function get_ecosystem_status() {
return array(
'plugins' => $this->registered_plugins,
'integrations' => $this->check_integrations(),
'health' => $this->health_check()
);
}
}
Privacy Boundaries: Heat Respects Whiskers
This is the smart part - Heat respects Whiskers’s privacy decisions:
// In TigerStyle Heat
public function maybe_inject_analytics() {
// Check if Whiskers is active and user consented
if (class_exists('TigerStyleWhiskers')) {
$whiskers = TigerStyleWhiskers::instance();
if (!$whiskers->user_consented_to('analytics')) {
// No consent - no tracking
return;
}
}
// User consented - inject analytics
$this->inject_google_analytics();
}
No code duplication. No tight coupling. Just clean, respectful integration.
Like cats respecting territory. Boundaries matter.
The JavaScript Ecosystem API
Plugins communicate through shared namespace:
// Registered by Heat
window.tigerstyleEcosystem = {
version: '1.0.0',
register: function(plugin, capabilities) {
this.plugins[plugin] = capabilities;
this.emit('plugin-registered', { plugin, capabilities });
},
// Check consent (from Whiskers)
checkConsent: function(category) {
if (window.tigerstyleWhiskers) {
return window.tigerstyleWhiskers.hasConsent(category);
}
return true; // Default allowed if Whiskers not present
},
syncPreferences: function(prefs) {
this.emit('preferences-updated', prefs);
}
};
// Whiskers registers its API
if (window.tigerstyleEcosystem) {
window.tigerstyleWhiskers = {
hasConsent: function(category) {
return this.getConsentStatus()[category];
}
};
}Clean. Decoupled. Each plugin owns its domain but plays nice.
The Admin Bridge
Heat includes a Whiskers tab that detects integration:
<div id="whiskers-tab" class="tab-content">
<?php
if (class_exists('TigerStyleWhiskers')) {
?>
<div class="integration-status active">
<h3>🐱 TigerStyle Whiskers Active</h3>
<p>GDPR compliance enabled.</p>
<a href="<?php echo admin_url('admin.php?page=tigerstyle-whiskers'); ?>"
class="button button-primary">
Configure Whiskers →
</a>
</div>
<?php
} else {
?>
<div class="integration-status inactive">
<h3>TigerStyle Whiskers Not Installed</h3>
<p>Install for GDPR compliance.</p>
</div>
<?php
}
?>
</div>
No duplicate code. Heat just links to Whiskers admin. Each plugin maintains its own interface.
I watched Ryan build this integration pattern until 2am.
I napped periodically but kept one eye open.
1:30am. Text from Cooper: “Dad, seriously. Sleep.”
Ryan texts back: “Almost done.”
Cooper: “That’s what you said at midnight.” Tate: “And at 11.” Tucker: “Should I come back over?” Ryan: “I’m FINE.” Paige: “Define ‘fine.’”
This family coordination is impressive. Annoying for Ryan, but impressive.
Quality assurance through strategic observation (and family harassment).
Chapter 10: Final Nap - Lessons Learned (2am-6am)
2:30am. Ryan finally stops typing.
Looks at me on his desk.
“You’ve been watching this whole time, haven’t you?”
Yes, Ryan. Yes I have.
He pets me. I allow this. He earned it.
“You’re good with the AI stuff, aren’t you Kyra?” Ryan says.
Finally. The grumpy old programmer figures it out. Took him long enough.
“And Cooper and Tate probably use it better in college.”
Probably? Definitely.
“Even Paige knew I was doing it wrong.”
She’s in HIGH SCHOOL, Ryan. That should tell you something.
“I should ask better questions.”
FINALLY. The grumpy old programmer learns.
He takes a photo of his screen. Texts it to the group chat with: “Done. Going to sleep.”
Tate: “Told you 4am.” Cooper: “It’s only 2:30. I win.” Tucker: “Neither of you win. He should’ve slept at midnight.” Paige: “Did he eat dinner?” Everyone: ”…” Ryan: “I ate the sandwich.” Paige: “That was LUNCH, Dad.”
This family. I swear.
Lessons From The Cat Perch
Technical Lessons:
-
WordPress Hook Timing Matters
admin_menufires beforeadmin_init- Register hooks early during
plugins_loaded - Don’t wait for later hooks to register earlier ones
-
Scratch Space Pattern Is Essential
- Never mount source code directly to WordPress
- Use hot-reload directory WordPress can safely modify
- Think “git push” - explicit sync from source to deployment
-
Module Architecture Scales
- Singleton pattern for each module (the only Kyra pattern)
- Self-contained functionality
- Admin coordinator doesn’t duplicate module code
-
AI Is A Tool, Not Magic
- Know what you want before asking
- Provide specific context
- One clear question beats five vague ones
- Tucker gets this. Ryan learned it.
Life Lessons:
-
Tucker knows breakfast is 7am sharp. Ryan doesn’t know what time it is when debugging.
-
The Malloy kids run on a family group chat coordination protocol that’s more reliable than any CI/CD pipeline.
-
Cooper and Tate are at University of Idaho (Go Vandals!) using modern dev tools. Paige is in high school understanding AI better than dad. Tucker’s stuck managing everyone. This family’s skill distribution is inverted.
-
Watching Ryan use Claude Code is like watching a dog chase its tail. Tucker showed him the cat way - maximum leverage, minimum effort.
-
Generational gap is real. The college kids probably code circles around Ryan in their sleep. Tucker understands modern tools intuitively. Paige learned from TikTok. Ryan fights everything like it’s trying to steal his job.
-
Family coordination beats solo debugging. Even if that coordination is mostly roasting dad in the group chat.
-
The campground rule: leave it better than you found it.
The Development Stack
Environment:
- WordPress 6.8.2
- Docker Compose (WordPress, MySQL, Redis, MailCatcher)
- Smart entrypoint script for automation
- Hot-reload with scratch space protection
Plugin Architecture:
- PHP 8.1+ with WordPress standards
- Modular singleton pattern
- AJAX with proper security
- Tab-based admin interface
- Ecosystem coordinator pattern
Key Files:
wp-robbie/
├── docker-compose.yml
├── .env
├── scripts/smart-entrypoint.sh
├── src/ # Protected source
│ ├── tigerstyle-seo/ # Heat
│ ├── tigerstyle-whiskers/ # Privacy
│ └── tigerstyle-life9/ # Backup
└── hot-reload-plugins/ # Scratch spaceDevelopment Workflow:
# Edit source
vim src/tigerstyle-seo/includes/modules/class-performance.php
# Copy to scratch space
cp -r src/tigerstyle-seo/* hot-reload-plugins/tigerstyle-seo/
# Test in browser at https://wp-robbie.l.supported.systems
# For Life9 - use Makefile
cd /home/rpm/tigerstyle-life9-testing && make syncEpilogue: What I Actually Learned
I’m a cat. I sleep 16 hours a day.
But I learned some things:
-
Programming is debugging. The working code is just the part between debugging sessions.
-
The Malloy kids are way ahead of their dad. Cooper and Tate are crushing it at U of Idaho (Go Vandals!), Tucker manages life logistics like a boss, and even Paige in high school can spot bad workflows. But the real AI expert? That’s me. Been training humans for 8 years. AI is just humans with extra steps.
-
Family group chats are powerful coordination tools. More effective than any project management software. “Dad status?” “No food.” “Sending Paige.” Boom. Done.
-
Using AI like a dog (endless circles) gets you nowhere. Using AI like a cat (precise, targeted) gets results.
-
The scratch space pattern saves lives. Or at least source code.
-
WordPress is quirky and poorly documented. Ryan and WordPress have a love-hate relationship.
-
Ryan talks to himself when coding. This is normal developer behavior. The kids are used to it.
-
Tucker feeds me on schedule. Ryan forgets meals exist when debugging. The college kids check in to make sure dad’s alive. Paige makes sandwiches. This family runs on Tucker’s organization and everyone else’s chaos.
-
Cats make excellent debugging partners. We don’t offer suggestions, but our presence is calming. Plus keyboard warming.
-
Maximum leverage beats maximum effort every time. That’s the cat philosophy. Tucker gets it. Cooper and Tate get it. Paige gets it from TikTok. Ryan’s learning.
-
The grumpy old programmer can learn new tricks. Watching him learn from his supervisor cat about AI domestication was… kind of touching. For a human. Even if it took him all day to realize the cat was training him.
-
This family would fall apart without Tucker. Cooper and Tate know it. Paige knows it. Ryan definitely knows it. And I know it because Tucker feeds me at 7am sharp. Every. Single. Day.
Tucker’s Final Word
Tucker came by around 6am to pick me up before school.
Found Ryan asleep at his desk.
“Did you keep him out of trouble, Kyra?”
I meowed. Translation: “I tried.”
Tucker looked at Ryan’s screen. Saw the working plugin.
“Nice job, Dad.”
He takes a photo, sends it to the group chat.
Cooper: “Proud of you, Dad.” Tate: “Go Vandals and good code.” Paige: “Now can someone explain what a singleton is? It’s for my CS homework.” Tucker: “After school. Breakfast first.”
Then to me: “Come on, Kyra, breakfast time.”
Finally. Someone who understands priorities.
This family’s pretty great. Even the grumpy old programmer.
But mostly because Tucker feeds me at 7am sharp.
Kyra out. 🐱
P.S. - If you’re reading this and thinking “I should install TigerStyle plugins,” good. That means Ryan’s natural attraction philosophy is working. You came to us. We didn’t chase you. That’s the cat way.
P.P.S. - Ryan just noticed I’ve been sleeping on his keyboard during final testing. This is intentional. Quality assurance through strategic obstruction.
P.P.P.S. - Tucker says hi. He’s my Cat Daddy. He’s got this whole “life management” thing figured out at 18. Feeds me on schedule, manages Ryan’s chaos, keeps everything running. Ryan could learn from him. About life logistics. The AI stuff? That’s my department.
P.P.P.P.S. - Cooper and Tate say “Go Vandals!” from University of Idaho. They’re probably writing better code than Ryan in their freshman/senior projects. Paige says she’s using this story for her English class essay on “family dynamics.” The Malloy siblings are a well-coordinated chaos unit. I approve.
Kyra (Lead Nap Supervisor & Tucker's Cat)
The TigerStyle team is dedicated to creating WordPress plugins that embody the natural attraction philosophy - making your site irresistible to visitors and search engines alike, inspired by Kyra's universal appeal.
Related Articles
Kyra's Developer Diary Part 1: First Nap - Docker Disasters
Morning observations of Ryan fighting with Docker containers. Includes: WordPress deleting source code, the scratch space pattern, and why Tucker is the only responsible person in this family.
Nov 5, 2025
Kyra's Developer Diary Part 2: Between Naps - Hook Timing Hell
Three hours watching Ryan fight WordPress hook execution order. Includes: The 403 admin menu disaster, sibling group chat roasting, and why Tucker should just use Laravel.
Nov 5, 2025
Kyra's Developer Diary Part 3: Afternoon Nap - The Singleton Revelation
Kyra watches Ryan build a module system while napping on his keyboard. Includes: Why there's only one of everything (singleton pattern), the missing module disaster, and Tucker's family coordination protocol.
Nov 5, 2025