I've been there. Here's what I've learned about breaking the cycle.
Problem: Nothing to say
One of the hardest parts of maintaining a blog is knowing what to write about.
Solution: Maintain an ongoing list of ideas.
This sounds obvious, but it's hard to do in practice. I keep a running list of topics, and whenever I come across a new idea or find something that supplements an existing idea, I add it immediately.
When it's time to write, the top idea usually has enough notes that I can draft something within a few hours.
Problem: Everything must be evergreen
We get in our heads about everything we publish. Every post has to be gilded for all eternity.
Solution: Time-box yourself.
Drafts aren't meant to drag out for weeks. Ideas should be simple and concise enough to be drafted, edited, and published within a few hours.
Some of the posts I spent the most time writing never got traction. Others that took an hour became the most popular. You can't predict what resonates.
Problem: Too hard to add content
If writing a post requires spinning up apps, opening a command line, saving text files, running tests—you'll never update things.
Solution: Make it frictionless.
Find tools that let you publish quickly. If it takes more than a few clicks to post something, you've lost.
Problem: Rigid site structure
A consistent architecture is satisfying from a coding perspective, but it can become a constraint on creativity.
Solution: Allow flexibility per page.
Not every page needs to follow the same template. Give yourself room to experiment.
Problem: Deploying takes too long
Every step to get something live is friction that stops you from starting.
Solution: Automate everything.
Use hosting that deploys on every commit. Set up tests that catch breaking changes. Keep dependencies updated automatically.
The pattern is clear: reduce friction everywhere.
Low friction means you're eager to add, extend, and edit. And a personal site that's constantly evolving is one that people actually want to revisit.