Xavier Fok
← All writing

· 5 min read

What a year of daily publishing actually taught me

Twelve months of shipping content every day, running AI tools in production. Here's what actually changed, and what didn't.

The commitment was simple, the execution wasn’t

A year ago I decided to publish something every day. Not “most days.” Every day. The idea was that daily cadence would force me to build real systems instead of relying on motivation, and it did. But the lessons that stuck aren’t the ones I expected going in.

I thought this would be a story about content velocity. It turned into a story about where automation actually helps, where it quietly creates new work, and where I was fooling myself about what “automated” even meant.

Automation doesn’t remove work, it moves it

The biggest misconception I had was that wiring up AI tools would mean less hands-on time. What actually happened is the work moved upstream. Instead of spending time writing and editing each piece, I spent time building and maintaining the pipeline that writes and edits: prompts, review steps, file naming conventions, queues that track what’s been drafted versus what’s actually gone out.

That’s not a bad trade. Maintaining a pipeline is more leveraged than doing each task by hand. But it’s a different job, and it took months to admit that the daily grind hadn’t disappeared, it had changed shape. Some weeks I spent more time debugging why a queue silently stalled than I ever would have spent just writing the thing manually.

Local versus cloud is a tradeoff you make every day, not once

I run a mix of local and cloud AI depending on the task, and a year of daily output made the tradeoffs concrete in a way that reading about them never did.

Local models running on my own hardware mean no per-call cost and no dependency on an API being up. That matters when you’re publishing daily and can’t afford a provider outage to break your schedule. But local setups need babysitting: model updates, hardware quirks, the occasional silent failure where a process looks alive but has stopped actually producing output. I’ve had render jobs sit there for hours doing nothing while every dashboard said “running.”

Cloud models are the opposite. They’re more capable for certain tasks and someone else handles the infrastructure, but you’re paying per use and you’re at the mercy of rate limits and outages on days you can least afford them. Neither one won outright. What actually happened is I ended up routing different parts of the pipeline to whichever made sense for that specific task, and rebuilding that routing more than once as costs and capabilities changed.

Agents are only as good as the boundaries you give them

I put AI agents into real workflows this year, connecting them to actual tools through MCP so they could take actions instead of just producing text I’d have to copy elsewhere. The honest lesson here is that agents are genuinely useful for well-scoped, repeatable tasks, and genuinely risky the moment the scope is vague.

Give an agent a narrow job with a clear success condition and it will grind through it reliably, faster than I would by hand. Give it something ambiguous and it will confidently do the wrong thing, and it will do it at scale before you notice. The daily cadence made this lesson expensive to learn but impossible to ignore, because a bad automated decision doesn’t happen once, it happens every day until you catch it.

The fix wasn’t smarter prompting. It was tighter boundaries: smaller permissions, explicit checks before anything irreversible, and treating agent output as a draft to verify rather than a finished result to trust. It’s just how autonomous systems behave when you hand them real access to real things.

Consistency exposes weak points that occasional effort hides

If you publish occasionally, you can paper over a shaky process with extra manual effort each time. Publish daily and every weak point in your system gets stress tested constantly. A script that works “most of the time” isn’t good enough when most of the time still means regular failures over 365 attempts.

This is where I actually saw the value of automating for real, not automating for the demo. A pipeline that looks good in a one-off test can still fail quietly under daily repetition: a file naming collision that only shows up once a month, a queue that processes items out of order under load, a step that silently skips instead of erroring when its input is missing. None of these show up if you run something five times. They all show up if you run it three hundred and sixty five times.

The metric that mattered wasn’t views

I’d be lying if I said I ignored view counts and engagement entirely. But the metric that actually told me whether the system was healthy was much more boring: did today’s piece go out, on time, without me manually intervening. That single yes or no question, tracked every day for a year, told me more about where my automation was solid and where it was fragile than any analytics dashboard did.

When the answer was “no,” it was almost never because the AI produced something wrong. It was because some piece of infrastructure around the AI broke: a file didn’t get written where the next step expected it, a step that should have run didn’t get triggered, a manual step I thought I’d removed was still secretly required. The AI parts of the pipeline were, more often than not, the reliable part. The plumbing around them was where things broke.

What I’d tell someone starting this today

Don’t start with the most sophisticated pipeline you can imagine. Start with something that runs end to end, even if every step is rough, and let the daily repetition show you which step actually needs the investment. I wasted time early on polishing steps that turned out to almost never fail, while the boring connective steps between them broke constantly and I hadn’t even noticed them as steps worth watching.

Also, budget real time for maintenance, not just building. A pipeline you set up once and never touch again is a pipeline that will eventually fail silently, and daily publishing means you’ll find out about that failure in public, on the day it happens, not in a quiet postmortem later.

None of this makes daily publishing effortless. It’s still work, every day, and the tools I use don’t change that. What they change is what kind of work it is: less time producing each individual piece, more time making sure the system producing them stays honest.

If you’re curious how any of this actually works, from routing between local and cloud models to wiring agents into real tools with MCP, you can find the rest of what I’ve written and shown on the home page.

Get new guides and videos first — join the Telegram channel.

Keep reading