<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Xavier Fok</title><description>Honest, hands-on notes on hiring, delegation, productivity and AI for solo operators.</description><link>https://xavierfok.com/</link><item><title>I let a local AI sort and tag forty thousand photos</title><link>https://xavierfok.com/blog/ai-sorts-my-photo-library/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-sorts-my-photo-library/</guid><description>A decade of unsorted photos, described and tagged by a vision model running on an old GPU, with nothing uploaded anywhere. How the pipeline works, what it misclassified, and what the whole thing costs to run.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I choose a local AI model: a method that takes an hour</title><link>https://xavierfok.com/blog/choosing-the-right-local-model/</link><guid isPermaLink="true">https://xavierfok.com/blog/choosing-the-right-local-model/</guid><description>Leaderboards rank models on standardized tests, which says little about your specific task. The selection method I use for production work: define the job, narrow by hardware, then run a shortlist against a tiny test set built from your own real inputs.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Why local models slow down and the levers that fix it</title><link>https://xavierfok.com/blog/keeping-local-models-fast/</link><guid isPermaLink="true">https://xavierfok.com/blog/keeping-local-models-fast/</guid><description>Local model slowdowns trace back to a handful of predictable causes: context length, the KV cache, models spilling out of VRAM, and uncapped output. Here are the levers that fix them, in the order I actually check.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Two years of local AI: what was hype and what was real</title><link>https://xavierfok.com/blog/local-ai-hype-vs-reality/</link><guid isPermaLink="true">https://xavierfok.com/blog/local-ai-hype-vs-reality/</guid><description>Two years of running models on my own hardware, scored promise by promise. Privacy and high volume economics held up, parity with the best cloud models did not, and the maintenance load is the cost nobody prices in.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The overnight bill that made me give my AI agent a budget</title><link>https://xavierfok.com/blog/ai-agent-on-a-budget/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-agent-on-a-budget/</guid><description>An agent stuck in a retry loop spent real money all night on a task it could never finish. Here is the counter, the cap, and the warning I built so that cannot happen again.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I put AI code review on my own commits. Does it help?</title><link>https://xavierfok.com/blog/ai-code-review-on-my-commits/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-code-review-on-my-commits/</guid><description>A few months of running a model over every diff I commit: the real bugs it caught, the context it cannot see, the noise it generates, and why the whole thing only works while it stays advisory.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How AI reads my invoices without touching the money</title><link>https://xavierfok.com/blog/ai-handles-my-invoices/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-handles-my-invoices/</guid><description>A small pipeline that pulls supplier, total, due date, and invoice number out of incoming invoices into a review sheet. It has no access to payments, and every row still gets approved by hand.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The AI news digest that replaced my morning scroll</title><link>https://xavierfok.com/blog/ai-news-digest-i-built/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-news-digest-i-built/</guid><description>I wired RSS feeds, a language model, and a schedule into a once-a-day news digest. What the build involves, what it costs each month, and where it still misses.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I ran a local model on a mini PC</title><link>https://xavierfok.com/blog/ai-on-a-mini-pc/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-on-a-mini-pc/</guid><description>A fanless mini PC with no graphics card runs a seven billion parameter model at ten to fifteen tokens per second. What the box cost, what I actually use it for, and where a small local model falls short.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I spent a month testing an AI second brain</title><link>https://xavierfok.com/blog/ai-second-brain-experiment/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-second-brain-experiment/</guid><description>Four weeks of routing all my notes through an AI recall layer. Plain language search and summarising earned a permanent place. The invented connections and the maintenance tax did not.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I let an AI sort my inbox, and sorting is all it does</title><link>https://xavierfok.com/blog/ai-sorts-my-inbox/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-sorts-my-inbox/</guid><description>A small system reads every incoming email and files it as an action, a thing to know, or noise. It cannot send, delete, or reply, and that restriction is the reason the whole setup is trustworthy.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I monitor my servers with AI summaries</title><link>https://xavierfok.com/blog/ai-summaries-for-my-servers/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-summaries-for-my-servers/</guid><description>A model reads thirty minutes of logs and metrics from my small fleet and writes a five sentence summary I can scan while making coffee. The alerting that can wake me up stays deterministic and never touches the model.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The AI tools I actually use every day</title><link>https://xavierfok.com/blog/ai-tools-i-actually-use/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-tools-i-actually-use/</guid><description>Five AI tools survived a year of daily work: a writing model, one TTS voice, local image generation, a narrow agent, and plain scripts. What kept them around while dozens of others got dropped.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I let an AI triage my messages, with one rule that never moves</title><link>https://xavierfok.com/blog/ai-triage-my-messages/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-triage-my-messages/</guid><description>An assistant reads my email and chat apps, sorts what matters, summarizes long threads, and drafts replies. It cannot send anything. Why that one boundary makes the whole setup workable.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I put an AI on log watching duty</title><link>https://xavierfok.com/blog/ai-watches-my-server-logs/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-watches-my-server-logs/</guid><description>A cheap filter discards the routine lines, hard rules catch the known disasters, and a model reads only the ambiguous leftovers. What the layer costs, what it caught, and where I still refuse to trust it.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>An AI writes my changelogs now</title><link>https://xavierfok.com/blog/ai-writes-my-changelog/</link><guid isPermaLink="true">https://xavierfok.com/blog/ai-writes-my-changelog/</guid><description>Commit notes pile up in shorthand nobody else can read. A model turns that pile into a grouped, readable changelog in seconds, for a fraction of a cent, as long as I read every line before it ships.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How my pipeline picks b-roll and draws diagrams from a script</title><link>https://xavierfok.com/blog/auto-generating-broll-and-diagrams/</link><guid isPermaLink="true">https://xavierfok.com/blog/auto-generating-broll-and-diagrams/</guid><description>Every visual in my faceless videos is placed by a program: footage matched to the meaning of each line, diagrams drawn from the structure of the script, captions taken from the text itself. Here is how the visual track gets assembled, and the ways it used to fail.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Cron jobs plus AI quietly run my operation</title><link>https://xavierfok.com/blog/automate-with-cron-and-ai/</link><guid isPermaLink="true">https://xavierfok.com/blog/automate-with-cron-and-ai/</guid><description>The most useful AI I run has no chat window. It lives inside scheduled jobs that do real work overnight, from renders to backups to a morning summary. What each job does, and what happens when one breaks silently.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I back up everything automatically, and where AI actually fits</title><link>https://xavierfok.com/blog/automatic-backups-with-ai-glue/</link><guid isPermaLink="true">https://xavierfok.com/blog/automatic-backups-with-ai-glue/</guid><description>The 3-2-1 backup system that runs nightly on my machines, built on deterministic tools like rclone. AI helps at the edges, writing configs and summarizing logs, and stays completely out of the copying.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Building an AI agent with tools: how function calling actually works</title><link>https://xavierfok.com/blog/building-an-ai-agent-with-tools/</link><guid isPermaLink="true">https://xavierfok.com/blog/building-an-ai-agent-with-tools/</guid><description>A language model on its own cannot open a file, run a search, or send a message. Function calling is the mechanism that gives it hands, and it is simpler than the name suggests.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The cheapest way to run AI at home depends on three costs</title><link>https://xavierfok.com/blog/cheapest-way-to-run-ai-at-home/</link><guid isPermaLink="true">https://xavierfok.com/blog/cheapest-way-to-run-ai-at-home/</guid><description>Hardware, electricity, and your own time are the three real costs of running models at home. Steady high volume favors local hardware you already own; spiky occasional use favors a metered API.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Is CPU only AI usable? I timed it on a normal desktop</title><link>https://xavierfok.com/blog/cpu-only-ai-usable/</link><guid isPermaLink="true">https://xavierfok.com/blog/cpu-only-ai-usable/</guid><description>I ran three model sizes on a six core desktop with thirty two gigabytes of RAM and no graphics card, timing the first word and the tokens per second. The small models handle real work; the seventy billion one worked and was useless.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The dashboard I built to watch every automation I run</title><link>https://xavierfok.com/blog/dashboard-to-watch-all-my-automations/</link><guid isPermaLink="true">https://xavierfok.com/blog/dashboard-to-watch-all-my-automations/</guid><description>How I monitor dozens of scheduled jobs from one local status page. Every job pushes a tiny run record to a shared place, and the page flags anything that failed or went silent past its expected cadence.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Do you actually need multiple AI agents?</title><link>https://xavierfok.com/blog/do-you-need-multiple-ai-agents/</link><guid isPermaLink="true">https://xavierfok.com/blog/do-you-need-multiple-ai-agents/</guid><description>Multi agent diagrams look impressive, but every handoff costs money, time, and context. When one agent is enough, when parallel fan out wins, and why agent chains disappoint.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Embeddings, explained with one picture</title><link>https://xavierfok.com/blog/embeddings-explained-simply/</link><guid isPermaLink="true">https://xavierfok.com/blog/embeddings-explained-simply/</guid><description>An embedding is a list of numbers that places a piece of text on a map of meaning, and similar meanings sit close together. Here is the picture, the four step search recipe built on it, and the failure mode people forget.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Fine-tuning vs prompting: when each is actually worth it</title><link>https://xavierfok.com/blog/fine-tuning-vs-prompting/</link><guid isPermaLink="true">https://xavierfok.com/blog/fine-tuning-vs-prompting/</guid><description>Prompting costs minutes to iterate and covers most tasks. Fine-tuning changes the model&apos;s weights and leaves you with a dataset to keep current, so here is how I decide when it is actually worth it.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The first things to delegate to a virtual assistant</title><link>https://xavierfok.com/blog/first-things-to-delegate-to-a-va/</link><guid isPermaLink="true">https://xavierfok.com/blog/first-things-to-delegate-to-a-va/</guid><description>The six tasks I handed to my assistant first, the audit that surfaced them, and the short list of things I will never delegate to anyone.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Giving an AI agent memory that survives between runs</title><link>https://xavierfok.com/blog/giving-an-ai-agent-memory/</link><guid isPermaLink="true">https://xavierfok.com/blog/giving-an-ai-agent-memory/</guid><description>A language model forgets everything when a run ends, so memory has to be built around it. The working version is a notes file read at the start and updated at the end, and the hard part is deciding what to forget.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The guardrails I put around every AI agent I run</title><link>https://xavierfok.com/blog/guardrails-for-ai-agents/</link><guid isPermaLink="true">https://xavierfok.com/blog/guardrails-for-ai-agents/</guid><description>An agent with real tools can really send, delete, and spend. These are the specific limits I build around mine: least privilege, approval gates, dry runs, hard ceilings, and logs a human can skim.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How AI tokens actually work</title><link>https://xavierfok.com/blog/how-ai-tokens-work/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-ai-tokens-work/</guid><description>A token is a chunk of text, usually a fraction of a word, and it is the unit behind AI pricing, paste limits, and the way long chats forget. One mental picture, a desk that fills up, explains all of it.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How AI transcription works, and where it predictably fails</title><link>https://xavierfok.com/blog/how-ai-transcription-works/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-ai-transcription-works/</guid><description>A speech model turns audio into a grid of frequency features and predicts the likeliest word sequence behind them. That design explains both its accuracy on clean speech and its predictable failures on rare words and messy recordings.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How context windows actually work</title><link>https://xavierfok.com/blog/how-context-windows-work/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-context-windows-work/</guid><description>A context window is the model&apos;s working memory, measured in tokens, and everything inside it costs money and latency. Here is what the headline numbers mean, where long contexts quietly fail, and the habits I use to keep mine short.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How function calling works: the model only ever asks</title><link>https://xavierfok.com/blog/how-function-calling-works/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-function-calling-works/</guid><description>A language model can only produce text, yet AI assistants check weather and update calendars. The mechanism behind that is function calling, explained step by step.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I decide what to write about</title><link>https://xavierfok.com/blog/how-i-decide-what-to-write-about/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-i-decide-what-to-write-about/</guid><description>One text file per brand, about sixty entries in the biggest, and I have written nine. Topic selection stops being a creative decision the moment you publish on a schedule.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I hire a Filipino VA on OnlineJobs.ph</title><link>https://xavierfok.com/blog/how-i-hire-filipino-va-onlinejobs-ph/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-i-hire-filipino-va-onlinejobs-ph/</guid><description>The full process I use to hire a virtual assistant through OnlineJobs.ph: one month on the paid plan, a specific job post with a hidden filter, a paid test task, and slow onboarding.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I use AI to write scripts that still sound like me</title><link>https://xavierfok.com/blog/how-i-use-ai-to-write-scripts/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-i-use-ai-to-write-scripts/</guid><description>Most of my video scripts start as AI drafts, and I rewrite every line before recording. Where the model genuinely helps, where it cannot help at all, and the read aloud test that decides what survives.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I write a VA job post that filters for the right people</title><link>https://xavierfok.com/blog/how-i-write-va-job-post-onlinejobs/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-i-write-va-job-post-onlinejobs/</guid><description>The job post structure that took me from a flood of generic applications to about eighty genuinely good ones, section by section, including the one line that does most of the filtering.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How to spot a VA scam before it costs you</title><link>https://xavierfok.com/blog/how-to-spot-a-va-scam/</link><guid isPermaLink="true">https://xavierfok.com/blog/how-to-spot-a-va-scam/</guid><description>The five red flags I watch for when hiring remote help, learned the hard way on my own first hire. Covers both directions, because employers burn workers too.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I automated my email replies. The AI never touches send</title><link>https://xavierfok.com/blog/i-automated-my-email-replies/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-automated-my-email-replies/</guid><description>An agent reads the full thread, drafts a reply from templates I wrote myself, and stops there. Approval stays with me, and that one design decision is what the whole system depends on.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I automated my YouTube channel from one desk</title><link>https://xavierfok.com/blog/i-automated-my-youtube-channel-with-ai/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-automated-my-youtube-channel-with-ai/</guid><description>A walk through the pipeline that turns a two thousand word script into a finished video on my own hardware, what each stage costs, and the bugs I only caught by watching the output.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I built an AI research agent to do my grunt work</title><link>https://xavierfok.com/blog/i-built-a-research-agent-for-leads/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-built-a-research-agent-for-leads/</guid><description>An agent that reads full sources and returns a fixed-shape brief, cutting two hours of manual reading to about ten minutes per target. Here is how it is built and the one rule that makes it safe to use.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I built a scraping system that runs itself, and the scraper is the smallest part</title><link>https://xavierfok.com/blog/i-built-a-scraping-automation-system/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-built-a-scraping-automation-system/</guid><description>Fetch, parse, store, dedupe, notify: the loop behind a scraping system that feeds a real pipeline daily. The parsing code is a day of work; the plumbing around it is the actual engineering.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The voice on my videos is a clone, and the line I hold on it</title><link>https://xavierfok.com/blog/i-cloned-my-own-voice/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-cloned-my-own-voice/</guid><description>How I cloned my voice from a few minutes of audio, what the clone still gets wrong, and the consent line that decides every single use of it.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>What giving an AI real access to my computer taught me</title><link>https://xavierfok.com/blog/i-gave-ai-access-to-my-computer-mcp/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-gave-ai-access-to-my-computer-mcp/</guid><description>How MCP lets a model call real tools on my machine, the near miss that almost sent a message on my behalf, and the read versus write line every tool now lives behind.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I let an AI agent manage my calendar for a month</title><link>https://xavierfok.com/blog/i-let-ai-manage-my-calendar/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-let-ai-manage-my-calendar/</guid><description>An AI agent had read and write access to my calendar for a month. The drafting and slot finding were real wins, the autonomous writing was a mistake, and one near double booking set the rule I now follow.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>I let my VA use my AI tools</title><link>https://xavierfok.com/blog/i-let-my-va-use-my-ai-tools/</link><guid isPermaLink="true">https://xavierfok.com/blog/i-let-my-va-use-my-ai-tools/</guid><description>What happened when I gave my assistant access to the AI tools I use daily: the three tools I handed over, the guardrails, and where the combination still fails.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Installing Ollama and running your first local model</title><link>https://xavierfok.com/blog/install-ollama-first-local-model/</link><guid isPermaLink="true">https://xavierfok.com/blog/install-ollama-first-local-model/</guid><description>The full path from nothing to a working local model: install Ollama, pull a small model, chat with it offline, then call it from your own code through the local server. Includes the short troubleshooting list beginners actually need.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I keep AI agents reliable enough to trust</title><link>https://xavierfok.com/blog/keeping-ai-agents-reliable/</link><guid isPermaLink="true">https://xavierfok.com/blog/keeping-ai-agents-reliable/</guid><description>An agent that demos well and an agent you can leave running unattended are different machines. The difference is built from constraints: scope, tools, validation, confirmation gates, and logs.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How I keep my AI costs under control</title><link>https://xavierfok.com/blog/keeping-ai-costs-under-control/</link><guid isPermaLink="true">https://xavierfok.com/blog/keeping-ai-costs-under-control/</guid><description>My first serious month of AI usage ended in a surprise bill, and the cause was a stack of small habits rather than one leak. These are the specific changes that keep my token spend predictable now.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Local image generation with SDXL on an old GPU</title><link>https://xavierfok.com/blog/local-image-generation-sdxl/</link><guid isPermaLink="true">https://xavierfok.com/blog/local-image-generation-sdxl/</guid><description>Every thumbnail on my channel comes off an SDXL family model running on a years-old graphics card: one to two minutes per image, no cost per attempt, nothing uploaded anywhere. The workflow, the three settings that matter, and where a paid service still wins.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>