Cron jobs plus AI quietly run my operation
# Cron jobs plus AI quietly run my operation
People who see how I actually use AI expect a chat window and get a crontab. The most useful AI in my setup does its work at three in the morning, with no dashboard and nobody watching. It is a list of scheduled jobs firing on timers in the dark, and it has changed my output more than any conversation with a model ever has.
The chat window is where AI looks impressive. The scheduled jobs are where it earns its keep. This is a tour of that plumbing.
A timer with no brain
Strip away the jargon and a scheduled job is a task that runs on a timer with no human present. You tell the computer to run this exact thing every night at three, or every fifteen minutes, or every Monday, and it does, indefinitely, whether you remember the arrangement or not.
On the machine under my desk the tool doing this is cron, which has existed for decades. It has no cleverness in it. It wakes up, checks whether anything is due, runs what you told it to run, and goes back to sleep. It is an alarm clock for your computer, and its whole virtue is that it never gets tired, never forgets, and never decides tonight is a bad night.
What timers did before models
For most of those decades, people pointed these timers at purely mechanical work. Move a file. Delete old logs before the disk fills. Copy a folder to a backup drive. Restart the service that tends to crash.
Useful, and completely literal. The job could only perform the exact steps you spelled out in advance, with zero judgment. Anything slightly outside what you predicted and it either did the wrong thing or fell over. A scheduled job was a very punctual assistant with no understanding at all, one that would wash the dishes at the same hour every night without being able to tell a clean plate from a dirty one.
Bolting a brain onto the alarm clock
Put an AI model inside one of those jobs and the character of the thing changes. The job can now read what it finds and form a judgment about it, then write that judgment down, rather than only move bytes around.
The old job could copy a hundred files. The new one can open them, understand what is inside, and report the three that matter. The old job could save a log. The new one can read that log, notice something looks wrong, and write a plain sentence about what it thinks happened.
The timer still supplies the punctuality, showing up on the dot every night with no excuses. The model supplies the judgment, the part that used to require a person sitting there reading. Once you have built one of these, you start spotting jobs everywhere that used to need you and no longer do.
The renders that happen while I sleep
Here are the real jobs, because vague descriptions are useless in this subject.
The first is rendering. I produce a lot of video, and rendering is slow and hungry, so I refuse to sit through it. During the day I queue work up. Overnight, a scheduled job pulls each item off the queue and renders it on my graphics card, strictly one at a time. The one at a time part is a hard rule, because two renders fighting over the same card will corrupt each other. The job is deliberately patient.
I wake up and videos that did not exist the night before are sitting there finished. The machine ground through them in the hours I was not using it anyway, which is exactly when a computer should be working hardest.
The backup I never think about
The second job is the most boring one I own and the most important. Every night it copies the work that matters off this machine and a handful of my servers, encrypts it, and pushes it to storage somewhere else entirely. No button, no ritual, no remembering.
The whole value of a backup is that it already ran before you needed it. A backup you have to remember to make is a backup you will not have on the day a drive dies. Taking myself out of that loop is the single best automation decision I have made, and the least glamorous.
Health checks that filter themselves
The third set of jobs watches my machines and services, because paying customers depend on some of them. Small checks wake every few minutes. Is this server responding. Is that disk filling. Is this service still doing its one job.
On its own that is classic mechanical monitoring, and mechanical monitoring has a famous flaw: it shouts constantly. So on the noisy checks I wired in a model. Instead of dumping raw numbers on me, the job reads them, decides whether this is normal weather or something genuinely wrong, and only interrupts me for the second kind. A monitor that cries wolf every hour trains you to ignore it, and an ignored alert is worse than no alert.
The morning paragraph
My favorite job runs before I wake. It goes around collecting everything that happened overnight: which renders finished, whether the backup ran clean, anything the health checks flagged, a few numbers I track. Then it hands the pile to a model and asks for a short plain summary, the kind of note a sharp assistant would leave on your desk.
By the time I sit down with coffee there is one calm paragraph telling me what I need to know and leaving out what I do not. I no longer log into five places to reconstruct the night. That is hours every week I simply do not spend, and the picture is clearer than the one I used to assemble by hand.
Content prep, with a human still at the end
The last set handles the steady stream of small writing and processing tasks that keep my projects moving. Drafts get tightened, items get tagged and sorted, routine pieces get prepared to the point where a person only has to review and approve.
This is exactly where the overselling happens, so let me keep it honest. These jobs do not replace judgment and they do not replace me. A person still reads everything that matters before it goes anywhere. What the jobs remove is the dead first stretch, the blank document, the mechanical sorting. They do the boring ninety percent so a human can spend attention on the part that needs one.
Why the pair beats either half
A model on its own has judgment and no punctuality. It sits there brilliant and inert until you show up and type, and it will never wake itself at three in the morning. A timer on its own has punctuality and no judgment. It arrives on the dot and can only execute what you spelled out.
Each half has a hole exactly where the other is strong, which is why the combination feels like more than the sum. Neither piece is impressive alone. Together they run a business quietly.
Silent failure is the trap
Now the part most write ups skip. These jobs run unwatched, and the same property that makes them valuable makes them dangerous, because a job that runs unwatched can also fail unwatched, silently, and stay dead.
A silently broken job is worse than no job. With no job you at least know the task is yours. With a dead one you believe it is handled, you stop checking, and you discover the truth two weeks later on the exact day you needed what it was supposed to produce. That is precisely how people lose data they believed was backed up.
So the rule I hold above all the others: every job must be able to shout. Backup did not run, I get a message. Render failed, I get a message. And a healthy job reports success on a schedule, because total silence is ambiguous. It might mean everything is fine, or it might mean the whole thing died in a way that left it unable to complain. No news is suspicious. You automate the work, and then you automate finding out when the work did not happen.
Start with exactly one job
If you want to try this, the honest advice is deliberately unambitious. Pick one small, annoying, repetitive task you already do by hand, something low stakes where early failures cost nothing. A tiny nightly backup of one folder is a perfect first job.
Put it on a timer. Leave it alone for a week and watch whether it actually fires. Resist adding a second job until the first has earned trust. Then add the alert so it can tell you when it fails, and only after that let a model anywhere near it to read or summarize or decide.
One dull job you trust beats ten clever ones you quietly re-check by hand, which cancels the entire point. The goal was never a clever system. The goal was to stop being the component that has to remember.
If this kind of plumbing is your idea of interesting, I write up more of it at [xavierfok.com](/).
Get new guides and videos first — join the Telegram channel.