[{"data":1,"prerenderedAt":236},["ShallowReactive",2],{"services:nav":3,"team:nav":45,"blog:\u002Fblog\u002Fyou-probably-dont-need-wordpress":60,"blog:author:Damien Guard":222,"latest-blog-posts":223},[4,15,25,35],{"path":5,"title":6,"description":7,"outcome":8,"icon":9,"image":10},"\u002Fconsulting\u002Fsoftware-development","Software development","Applications and APIs built properly — designed, architected and shipped by someone who has done it at scale.","Something to build, without the team or the expertise to build it.","app-development",{"url":11,"photographer":12,"source":13,"sourceUrl":14},"\u002Fimages\u002Fconsulting\u002Fsoftware-development.jpg","Daria Nepriakhina","Unsplash","https:\u002F\u002Funsplash.com\u002Fphotos\u002FzoCDWPuiRuA?utm_source=intracia&utm_medium=referral",{"path":16,"title":17,"description":18,"outcome":19,"icon":20,"image":21},"\u002Fconsulting\u002Fdata-extraction-and-recovery","Data extraction & recovery","Getting data out of systems that don't want to give it up — undocumented formats, dead platforms, failing media and legacy databases.","Data trapped in a system nobody supports any more.","data",{"url":22,"photographer":23,"source":13,"sourceUrl":24},"\u002Fimages\u002Fconsulting\u002Fdata-extraction-and-recovery.jpg","Patrick Lindenberg","https:\u002F\u002Funsplash.com\u002Fphotos\u002F1iVKwElWrPA?utm_source=intracia&utm_medium=referral",{"path":26,"title":27,"description":28,"outcome":29,"icon":30,"image":31},"\u002Fconsulting\u002Fdeveloper-and-ai-tooling","Developer & AI tooling","Libraries, SDKs, components and internal tooling — plus the MCP servers, agent integrations and evaluation harnesses that make AI features survive production.","A team blocked by something missing from a library they can't change.","libraries",{"url":32,"photographer":33,"source":13,"sourceUrl":34},"\u002Fimages\u002Fconsulting\u002Fdeveloper-and-ai-tooling.jpg","Luca Bravo","https:\u002F\u002Funsplash.com\u002Fphotos\u002FXJXWbfSo2f0?utm_source=intracia&utm_medium=referral",{"path":36,"title":37,"description":38,"outcome":39,"icon":40,"image":41},"\u002Fconsulting\u002Fweb-applications-and-sites","Web applications & sites","Designed and built end to end — customer-facing applications, product interfaces, marketing sites and documentation.","A web app or a site you'll still be proud of in three years.","web",{"url":42,"photographer":43,"source":13,"sourceUrl":44},"\u002Fimages\u002Fconsulting\u002Fweb-applications-and-sites.jpg","Domenico Loia","https:\u002F\u002Funsplash.com\u002Fphotos\u002FhGV2TfOh0ns?utm_source=intracia&utm_medium=referral",[46,53],{"path":47,"name":48,"role":49,"bio":50,"avatar":51,"pronouns":52},"\u002Fteam\u002Fdamien-guard","Damien Guard","Engineering & Operations","Damien has spent four decades writing software, most of it on the tools other developers depend on — .NET at Microsoft, the Atom editor at GitHub, SDKs and developer experience at Auth0, and the official MongoDB provider for Entity Framework Core.","\u002Fteam\u002Fdamien-guard.jpg","he\u002Fhim",{"path":54,"name":55,"role":56,"bio":57,"avatar":58,"pronouns":59},"\u002Fteam\u002Fkerry-guard","Kerry Guard","Marketing & Design","Kerry is CEO of MKG Marketing, the B2B SaaS and tech agency she co-founded in 2011, and leads marketing and web design at Intracia. She spends most of her time on the same problem from two directions: how technical products explain themselves to the people who have to buy them.","\u002Fteam\u002Fkerry-guard.jpg","she\u002Fher",{"id":61,"title":62,"author":48,"authorAvatar":51,"authorRole":49,"body":63,"category":206,"categorySlug":207,"cover":208,"date":209,"description":210,"extension":211,"meta":212,"navigation":213,"path":214,"readingTime":215,"seo":216,"stem":217,"tags":218,"__hash__":221},"blog\u002Fblog\u002Fyou-probably-dont-need-wordpress.md","You don't need WordPress any more",{"type":64,"value":65,"toc":196},"minimark",[66,70,73,78,81,84,88,91,94,97,101,109,112,116,119,122,130,133,136,140,143,146,153,161,164,167,175,178,182,185,188],[67,68,69],"p",{},"I ran WordPress for years — my own sites and clients'. Before that it was Blogger, and before that Subtext, which tells you how long I've been doing this. WordPress was the platform I stayed on longest, and for a good while it deserved that. It did everything, plugins filled every gap, and everyone already knew how to use it.",[67,71,72],{},"This is about what changed — not as a theory about where the web is going, but as what actually happened to my sites.",[74,75,77],"h2",{"id":76},"the-speed-problem-ate-real-infrastructure","The speed problem ate real infrastructure",[67,79,80],{},"The WordPress sites I ran were never fast enough, and the fix was always more machine. I've hosted them on cPanel, on VMs, and eventually on a dedicated server. I've run HHVM, and stacked WP Super Cache on top, all to keep pages responsive. Every setup bought a little time. Then the creep started again, and the next fix was more infrastructure again.",[67,82,83],{},"At some point you have to notice what you're doing: renting bigger machines so your publishing software can re-render the same page, thousands of times, for every visitor. The words aren't changing between requests. The work is being repeated anyway, and you're paying for it every month.",[74,85,87],{"id":86},"i-got-hacked-because-i-dared-to-be-asleep","I got hacked because I dared to be asleep",[67,89,90],{},"One of my sites got hacked because I dared to be asleep when a patch came out. That's the whole story, and it's exactly as stupid as it sounds: the patch landed, the exploits followed, and I was unconscious for the window in between.",[67,92,93],{},"What stuck with me wasn't the cleanup. It was the dependency the whole model rests on — my being awake. A site that needs a human to respond within hours of a patch release doesn't have a security posture. It has a hostage situation. And patches weren't rare: between core, the theme, and the plugins every site accumulates, there was always something, and every one of them was another small window like that one.",[67,95,96],{},"I don't need anyone's vulnerability statistics. I lived one.",[74,98,100],{"id":99},"my-content-wasnt-mine-in-practice","My content wasn't mine, in practice",[67,102,103,104,108],{},"The other rot was quieter. Years of posts, and the formatting had accreted inside them — HTML mixed in with the content, styles inline, every article a little different depending on which editor and which era produced it. The design of the site was inconsistent because the design was ",[105,106,107],"em",{},"inside"," the content, where I couldn't restyle it.",[67,110,111],{},"And I couldn't manipulate any of it at scale. No find-and-replace across years of posts. No way to answer a simple question about what I'd written without clicking through an admin screen one article at a time. The content sat in a database that only WordPress speaks, and I had access to exactly what WordPress decided to show me.",[74,113,115],{"id":114},"then-i-moved-and-the-problems-just-stopped","Then I moved, and the problems just stopped",[67,117,118],{},"I moved to Jekyll, and later to Nuxt Content, which is what this site runs on. The model is different in a way that's hard to overstate: the content is Markdown files in a repository. A generator reads them and writes out finished HTML. A CDN serves the files. When a visitor asks for a page, nothing executes. There is nothing to execute.",[67,120,121],{},"And everything that had been hurting resolved by itself, with no cleverness at all.",[67,123,124,125,129],{},"The patch race ended, because there's no server-side application to patch, no ",[126,127,128],"code",{},"\u002Fwp-admin"," waiting to be found, and no database to inject into. I still maintain things — the generator, its dependencies — but I do that on my own schedule. Nobody can start that job for me, and being asleep is no longer a vulnerability.",[67,131,132],{},"Speed stopped being a project. A page's response time is a file lookup near the visitor, so there's nothing to tune and nothing for an update to regress. No HHVM. No cache plugin. No dedicated server for a site that mostly just sits there.",[67,134,135],{},"And the content problems dissolved the moment the content was files. Find-and-replace is a command. A question about years of posts is a search. The design of the site and the words in it are separate things again, so each can change without the other. Every change has a diff, every version is recoverable, and the next time I change platforms the migration is a copy — because Markdown is the one format every tool in this space reads.",[74,137,139],{"id":138},"the-one-thing-i-actually-missed","The one thing I actually missed",[67,141,142],{},"Editing, and I'll be honest about it because pretending otherwise helps nobody. It was never a hardship — I live in a terminal, and Markdown in a repository is where my content wants to be. But I never loved it either, and it took me a while to work out why. A blank WordPress page felt like somewhere to write. A new Markdown file was another tab in the editor I'd been debugging in all day, same font, same sidebar, same keystrokes as the work. Something in that flattens the writing. Less flow, and less inclination to be bold.",[67,144,145],{},"Images were worse, and far less subtle. Cyberduck open in a second window to push a file up by hand. Then, weeks later, trawling back through old posts to find the one that used the photo I wanted again, so I could copy the URL out of it.",[67,147,148,149,152],{},"That was the experience for someone who ",[105,150,151],{},"likes"," Git, Markdown and the command line.",[67,154,155,156,160],{},"I don't only build sites for myself. ",[157,158,159],"a",{"href":54},"Kerry's"," agency runs a much bigger site with several authors, and what it needs is a stack where none of them ever has to see Markdown, let alone Git. So we went looking for a Git-compatible headless CMS, and then kept looking. Forestry, which we liked, until it was retired in favour of Tina, which never fitted. Then CloudCannon, which we grudgingly got by on — until we didn't.",[67,162,163],{},"Every one of those moves cost setup time that came out of the same budget as the writing, and asked everyone to learn a tool that would be replaced again soon enough. Each of them charged by the seat, too, so the obvious economy was always to have fewer people with accounts.",[67,165,166],{},"Which is how you end up watching the only number that mattered go quietly the wrong way: how many people could, and would, put words on our sites. The tooling was deciding who got to speak, and it kept deciding fewer.",[67,168,169,170,174],{},"So we built ",[157,171,173],{"href":172},"\u002F","Intracia",": a structured editing workspace over the Markdown already in the repository. Real fields instead of raw frontmatter, drafts and previews, and the media library sitting where you're writing rather than in a separate application. The files stay exactly where the generator expects them. Nothing about the site itself changes.",[67,176,177],{},"That was the last thing I missed about WordPress, and the only thing.",[74,179,181],{"id":180},"the-honest-boundary","The honest boundary",[67,183,184],{},"None of this is universal. If you render something different for every visitor — a shop, an account, anything personal — you need something that runs per request, and WordPress still does that job. I won't talk anyone out of a tool they genuinely need.",[67,186,187],{},"But most of the sites I've built over the years aren't that. They're marketing sites, blogs, documentation — the same words served to everyone. For those, I spent years paying for flexibility I never used, and the bills were the servers, the patches, the hack, and the content I couldn't touch.",[67,189,190,191,195],{},"If you're in the middle of that calculation and want a straight answer on whether the move is worth it, ",[157,192,194],{"href":193},"\u002Fcontact?enquiry=consulting","tell me what you're running",".",{"title":197,"searchDepth":198,"depth":198,"links":199},"",2,[200,201,202,203,204,205],{"id":76,"depth":198,"text":77},{"id":86,"depth":198,"text":87},{"id":99,"depth":198,"text":100},{"id":114,"depth":198,"text":115},{"id":138,"depth":198,"text":139},{"id":180,"depth":198,"text":181},"Perspective","perspective",null,"2026-08-23","I ran WordPress for years — my own sites and clients', from cPanel to HHVM to a dedicated server. Then came the hack while I was asleep, and the content I couldn't manipulate. Why I left, and what I run instead.","md",{},true,"\u002Fblog\u002Fyou-probably-dont-need-wordpress",6,{"title":62,"description":210},"blog\u002Fyou-probably-dont-need-wordpress",[219,220],"WordPress","Static sites","fLd7LdZR7-YOJHxKdoZeFbwcSlYjqir7jFlc15MF3Mo",{"path":47,"name":48,"role":49,"bio":50,"avatar":51,"pronouns":52},[224,225],{"path":214,"title":62,"description":210,"cover":208,"category":206,"date":209},{"path":226,"title":227,"description":228,"cover":229,"category":234,"date":235},"\u002Fblog\u002Fintroducing-intracia","Reintroducing Intracia","A new site, a clear list of the work we take on, and Intracia out in the open for the first time.",{"url":230,"photographer":231,"source":232,"sourceUrl":233},"\u002Fimages\u002Fblog\u002Freintroducing-intracia.jpg","bobotaks","Pexels","https:\u002F\u002Fwww.pexels.com\u002Fphoto\u002Fhand-holding-paper-plane-with-clear-sky-behind-4583874\u002F","Announcements","2026-08-20",1788372939431]