Or: How I Mass-Summoned an AI, Fought WordPress for Ten Days, and Lived to Deploy
Prologue: The Moment I Snapped
Look, I’m going to be honest. My website was embarrassing.
I’d been running does-god-exist.org on a stock WordPress.com theme called Issue for… longer than I want to admit. It was fine. It worked. But every time someone asked for my URL — a recruiter, a reader, a fellow author — I’d give it out and then immediately start composing an apology in my head. It doesn’t really represent me. I’m in the middle of updating it. You know how it is.
Except I wasn’t updating it. I was just cringing.
So on March 21st, 2026, I finally snapped. I opened a terminal, summoned Claude into a conversation, and said something like: “We’re rebuilding this whole thing. Dark sci-fi. Cosmic horror. I want it to feel like me.”
What followed was thirty-three sessions across ten days. I barely slept through some of it. This is what happened.
Act I: Waking the Dead Data
Sessions 1–3 | March 21
The first problem was stupid and boring and absolutely necessary: I had to get all my content out of WordPress.com’s ecosystem and into a local Docker container where I could actually work on it.
Ninety-six posts. Nine pages. A hundred and nineteen media files. Years of writing, scattered across XML exports and database dumps and API endpoints that all returned slightly different versions of the truth.
I’m calling this enemy Neth’raxis, the Keeper of Lost Data, because it felt like negotiating with something ancient and hostile. WordPress.com doesn’t want you to leave. The export tools work, technically, but there’s always that one image that doesn’t come through, that one post where the formatting breaks, that one page that just… vanishes between systems.
We set up Docker with WordPress and MySQL on localhost:8888. Exported everything three different ways — XML, SQLite, raw SQL — because I’ve been burned by single points of failure before. Got the WordPress.com MCP server connected via OAuth. Configured GitHub Deployments. Tested the full pipeline end-to-end: push, deploy, verify.
By the end of Session 3, we had a working local forge and DGE Theme activated on production for the first time. Neth’raxis didn’t go quietly, but it went.
Act II: What Does This Thing Even Look Like?
Session 4 | March 22
This is the part where most redesigns die. You open a blank CSS file and think: okay, what now?
I knew what I didn’t want — generic, corporate, “clean.” I wanted something that felt like my book covers. So we pulled up nine reference sites and tore them apart. cyberpunk.net. Leigh Bardugo’s Grishaverse site. Zach.dev’s terminal portfolio. Daniel Gibbs. James Clear. Robb Owen. We looked at what worked, what was try-hard, what was actually readable.
Then I did something I’d never done before: I analyzed my own book covers for their color DNA. Turns out my aesthetic has always been deep space black, electric cyan, and arterial crimson. I just never formalized it.
The Design Codex came together fast after that:
- Chakra Petch for headings (sharp, technical, cuts across the page)
- EB Garamond for body text (literary, warm, the serif equivalent of a good whiskey)
- Twelve-color palette in theme.json
- Terminal blocks, glassmorphism, CRT scan lines, and — this is the part I’m proudest of — pseudo-random glitch effects using three layered CSS animations at prime-number durations so they never quite repeat the same way
Two things almost derailed us. First: Glyphthar, the Font That Would Not Render. Classic @font-face hell — missing WOFF2 files, wrong paths, the usual. Annoying but fixable.
The second one was worse. Git Bash on Windows has this MSYS compatibility layer that silently converts Unix-style paths into Windows paths. So when we tried to set the permalink structure to /%postname%/, the shell was mangling it into a file path before WordPress ever saw it. Every. Single. Permalink. Broken. We had to bypass the shell entirely with wp eval to fix it. I’m calling that one Perma’lynk and I hate it.
But by the end of the session, the homepage was standing. Hero section, book showcase, a console ticker that types out tail -3 /var/log/transmissions.json with a blinking cursor. The void had a face.
Act III: The Carousel Sessions
Sessions 5–7 | March 22–23
I wanted the homepage to feel like it was doing something when you landed on it. Not just a static page with a hero image — something alive.
The Hero Carousel ended up with six full-bleed slides (Books, Work, Blog, CankleBurry, Products, Discord) and four randomized transition effects:
- Glitch — RGB channels splitting apart like a broken signal
- Void Fade — dissolving into the background like it was never there
- Corruption — noise particles eating the slide alive
- Warp — scale and blur, like falling through a wormhole
Auto-rotates every seven seconds. Pauses when you hover. Full keyboard nav and ARIA labels because accessibility isn’t optional, even in cosmic horror.
Behind all of it: a Canvas2D starfield. A hundred and forty stars in cyan and crimson, parallaxing with your mouse, each one fading in and out on its own cycle with a rare random flicker. It’s subtle. Most people probably won’t consciously notice it. That’s the point.
We also built the 3D book tilt effect (hover over a cover and it lifts toward you with a physical spine and page edges), the Community CTA for the Ghosted Guild Discord (“JOIN THE FIGHT” — I know, but it works), and the CankleBurry Tales coming-soon page in silver and crimson-mist.
I remember sitting back after Session 7 and just… scrolling. Up and down. Watching the transitions fire. Thinking: okay. This is starting to feel like mine.
Act IV: The Day Everything Disappeared
Session 8 | March 23
This is the part of the story where I learned a lesson the hard way.
See, the DGE theme exists in two places: themes/dge-theme/ (the canonical source) and docker/wp-content/themes/dge-theme/ (the Docker mirror). Both are in git. Both need to match. And at some point between Sessions 7 and 8, they stopped matching.
I’m not entirely sure how. Maybe a deploy that copied the wrong direction. Maybe a careless file save. Doesn’t matter. The result was: two thousand lines of CSS — gone. functions.php with every JS enqueue — gone. front-page.html — gone.
The site was a blank white page. Not even an error. Just… nothing.
I named this disaster Desynchra and I’m not giving it a fancy title because it doesn’t deserve one. It was my fault for not having guardrails.
Git history saved us. Every line was recovered from previous commits. And from the ashes, I wrote the Theme File Sync Rules directly into CLAUDE.md so it would never happen again:
ALWAYS edit themes/dge-theme/. NEVER edit only docker/wp-content/themes/dge-theme/. If they diverge, themes/ wins.
Scripture, born from suffering. The usual way.
Act V: Four Sessions, One Sunday
Sessions 9–12 | March 23
I don’t know what possessed me to do four sessions in a single day, but here we are.
The Newsletter: “Transmissions from Elysium.” Inline signup on every marketing page. No popup. I will die on this hill — popups are hostile and I refuse.
The Nav: Rebuilt with hover-to-open dropdowns. Sign Up rendered as gold text, not a button, because I had strong opinions about this at 2am and they turned out to be correct.
The Footer: This is where things got weird in the best way. We called it the “Broken Monitor” — a cracked CRT aesthetic with eleven social platform icons in cyberpunk style. The columns are named Worlds, Apps, Connect, and Transmissions. We argued about whether it should be “Projects” or “Worlds.” I won. (It’s Worlds. Obviously.)
There was also a full accessibility audit — focus indicators, skip links, ARIA labels, contrast ratios. The boring stuff that makes a site actually usable.
Act VI: Taxonomy Hell
Sessions 13–16 | March 24–25
You want to know what the real monster is? It’s not some cosmic entity. It’s opening your WordPress database and finding forty-seven tags, eighteen categories, and half your posts filed under “Uncategorized.”
I’m calling it Taxono’mir, the Category Chaos Worm and honestly that’s being generous. It’s more of a fungus.
Session 13 was pure content migration — getting everything from the old WordPress.com site into the Docker forge. Session 14 was pruning the taxonomy tree with a machete. Session 15 was media triage: a hundred and nineteen files, deciding what stays and what gets archived. Session 16 was front page image processing — the tedious-but-necessary work of making the homepage look like it has weight.
Not glamorous. No glitch effects. No starfields. Just cleaning up years of digital entropy. But the site felt lighter after. Like it could breathe.
Act VII: The Blog Gets a Personality
Sessions 17–21 | March 25
Five sessions in one day again. I might have a problem.
Most WordPress blogs look the same. Category badge, title, excerpt, thumbnail. Maybe a color accent if you’re lucky. I wanted something different: a full sub-theme per category.
Each category got its own background gradient, accent colors, heading font, badge styling, and decorative effects. The Stories category feels different from Announcements, which feels different from whatever else I end up writing. It’s not just a color swap — it’s an atmosphere.
Blog cards are overlay-style: featured image as the full background, title and date floating at the bottom. The comment box is terminal-styled with a “TRANSMIT” button instead of “Submit” because, again, 2am opinions that turned out right.
Then came image processing. AI-generated art for the blog headers, run through processing, tested across every template. Grid locked at 3×3. Nine cards per page.
The blog wasn’t a blog anymore. It was six or seven micro-worlds wearing the same nav bar.
Act VIII: Building a Character Sheet for Myself
Sessions 22–24 | March 26–28
The About page was the scariest one to build.
Not technically — technically it was the Professional page (that comes next). But emotionally? Trying to represent yourself as a single page is terrifying. I’m an author, a developer, a martial artist, a father, a Scout leader, a volunteer paramedic, someone who reads too much about the occult, and a person who takes strategy games way too seriously. How do you put that on one page without it reading like a resume or a dating profile?
The answer: an RPG character select screen.
Eight classes. Eight facets. Each one has a sidebar button, a detail panel with photos, and quotes pulled from an actual interview session where Claude asked me questions and I rambled for way too long.
| Class | What It Means |
| Worldbuilder | The author. Elysium, CankleBurry, the billion-elephant ambition. |
| Technomancer | The developer. MacGyver with bytes. |
| Sensei | CMATOS. The martial arts system. The anchor. |
| Seeker | Philosophy, spirituality. “Can’t know what we can’t know.” |
| Guardian | Dad. Family. Fond memories over everything. |
| Paladin | Scouts, paramedic, non-profit. “I’m a helper.” |
| Arcanist | Occult interests. Cosmic horror. “Something will answer.” |
| Strategist | Gaming. Tactics. Thinking three moves ahead. |
The page loads with a boot sequence overlay, like an operating system initializing. Three-layer parallax in the hero — nebula, holographic class array, grid floor — all tracking your mouse. Twenty-five photos uploaded. Spark particles on canvas.
Two things almost killed us. First: Klass’neim, the Mismatch Phantom. The HTML template used one class name (dge-about__tab) while the CSS and JS expected a completely different one (dge-about__facet-btn). Eight buttons, silently broken. The boot sequence animations referenced classes that didn’t exist. Nothing crashed. Nothing threw errors. It just… sat there, dead, looking fine on the surface.
Second — and this one scared me — the .git directory vanished. Just gone. OneDrivax strikes again: Microsoft’s cloud sync had silently deleted internal git files. We had to re-init the repo, reconnect to the remote, and rebuild the history. I’ve since learned to watch for this, but man. Finding out your version control has been eaten by your cloud storage is a special kind of horror.
Act IX: Two Faces, One Page
Sessions 25–27 | March 28–29
The Professional page had to do something impossible: impress a recruiter and entertain a nerd. Same URL.
So we built two modes.
Professional Mode (default): Clean, dark, executive. Career timeline from 1984 to present — yes, my first computer was a TRS-80, yes I’m that old, no I don’t want to talk about it. Certifications with logos. Testimonials with actual LinkedIn photos and profile links. Keywords a recruiter’s ATS will pick up. Respectable. Serious. The kind of page you’d send to a VP of Engineering.
Chaos Mode (toggle): The career timeline disappears. In its place: cat origin_story.log | sort –reverse. Six acts of my life told as a terminal output. My title changes to “Warlord Operations & Cat Herding.” The testimonials get rewritten — some with Aramaic names, some from occult “clients” like Raum and Orobas and an unnamed elder god I allegedly did consulting work for in New Orleans.
The CSS specificity wars required to keep these two modes from bleeding into each other… I don’t want to talk about that either. Let’s just say min(550px, 42vw) is burned into my memory now.
We went through six rounds of user feedback. Six. Each round tighter. By the end I was pixel-pushing recommender photos and tweaking the kerning on certification badges. It was worth it.
Act X: The Apps, the System, and the 404 That Will Haunt You
Sessions 28–32 | March 29–30
Every app I’ve built has an origin story. SuperTroopers came from watching my wife struggle with terrible job search tools. Kreeder came from wanting to speed-read on Kindle without losing comprehension. GhostBusters came from — well, you’re reading the output of that one right now.
The app pages were built from interviews, not spec sheets. Real conversations about why each thing exists. Then screenshots — eleven of them, across multiple apps, processed and deployed into per-app subdirectories.
CMATOS got its own landing page. It’s my martial arts system — Comprehensive Martial Arts Training and Operating System — and it’s been running in the background of my life for decades. Giving it a proper page felt overdue.
The 404 page is my favorite thing on the entire site and I’m not ashamed to say it. It starts normal — “Page not found,” whatever. But then the monitor starts to crack. Phantom words bleed through. And somewhere between fifteen and forty-five seconds later, something happens that I’m not going to spoil here. Go find a broken link on does-god-exist.org. I dare you.
We also did a full theme code audit — dead code removal, specificity fixes, enqueue ordering, template standardization. The kind of cleanup that nobody sees and everybody benefits from.
Act XI: Pushing the Button
Session 33 | March 30
Every developer knows this feeling. You’ve built the thing. You’ve tested it locally. It works. It looks good. And now you have to push it to production, where real humans with real browsers on real devices will see it.
Gath’amon, the Guardian of Production, is the voice in your head that says: one more pass. Check one more thing. Are you sure about that font size on mobile?
SSH keys were configured. WP-CLI verified on the production server. WordPress Importer installed. The theme was pushed. Content synced. Images deployed. The bloated 517MB export directory — already safely on production — was finally deleted from the repo.
Then:
$ ssh wp-dge
Welcome to WordPress.com
doesgodexistorg:~$
The site was live. Ten days of work, thirty-three sessions, and it was actually out there.
I refreshed does-god-exist.org on my phone, my laptop, and my wife’s iPad (without asking — she’s used to this by now). The starfield loaded. The carousel glitched. The console ticker started typing.
It looked like me.
Epilogue: By the Numbers
| What | How Much |
| Sessions | 33 |
| Calendar days | 10 (March 21–30, 2026) |
| Git commits | 80+ |
| Custom JS files | Starfield, carousel, character sheet, parallax, sparks, blog index, console ticker, 404 horror, chaos mode |
| Pages built | Homepage, About, Professional, Apps Landing, 5 app detail pages, CMATOS, Books, CankleBurry, Blog Index, Single Post, 404 |
| Reference sites studied | 9 |
| Photos processed | 44+ |
| Enemies named | 8 (Neth’raxis, Glyphthar, Perma’lynk, Desynchra, Taxono’mir, Klass’neim, OneDrivax, Gath’amon) |
| Newsletter | Transmissions from Elysium |
| Discord | Ghosted Guild |
| Footer aesthetic | Broken Monitor |
| Comment button | TRANSMIT |
| Times OneDrive ate my .git | At least once |
| Regrets | Zero |
What I Learned
Here’s the thing about a personal website: it’s the only place on the internet that’s entirely yours. Not a social media profile, not a LinkedIn page, not a Medium blog. Yours. And if it doesn’t feel like you, it’s worse than not having one at all — because then it’s actively lying.
The old site was a default theme on a default platform saying nothing about who I actually am.
The new one has a starfield, a character sheet, a professional portfolio with a secret chaos mode, a blog where each category has its own atmosphere, and a 404 page that will make you check behind your chair.
I built it in ten days with an AI that kept trying to add docstrings to my code (I said no every time). We argued about whether the footer columns should be called “Projects” or “Worlds.”
I won.
Welcome to the new DGE.
March 30, 2026. The day the site went live.
Long may it glitch.



First comment on the newly designed DGE!