<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2000/Atom">
  <channel>
    <title>goekmen.ai — Journal</title>
    <link>https://goekmen.ai/notes.html</link>
    <atom:link href="https://goekmen.ai/rss.xml" rel="self" type="application/rss+xml" />
    <description>Build diary for goekmen.ai, a personal AI lab. Rough, honest notes on local models, agent workflows, knowledge systems and AI products, posted every 2-3 days.</description>
    <language>en</language>
    <lastBuildDate>Wed, 12 Aug 2026 12:00:00 GMT</lastBuildDate>

    <item>
      <title>My Obsidian vault had zero backups until tonight</title>
      <link>https://goekmen.ai/notes.html#p19</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p19</guid>
      <pubDate>Wed, 12 Aug 2026 12:00:00 GMT</pubDate>
      <category>Knowledge Vaults</category>
      <description><![CDATA[<p>Realized tonight that my Obsidian vault has never had a real backup. iCloud sync isn't a backup, it just makes sure a dead laptop doesn't also take the newest copy with it. One bad sync conflict or one accidental delete and the file is just gone. Decided to fix that before another two weeks went by.</p><p>Wrote a two-line script that runs git add, git commit, git push inside the vault folder, then wired it to a launchd job so it runs automatically every night. First commit had way more files than I expected. Once I actually looked, the vault has quietly grown to something like 380 notes.</p><p>Second run the next morning still showed a diff, eighteen files, even though I hadn't touched a single note. Turned out .obsidian/workspace.json rewrites itself basically every time the app opens, tracking which panes and tabs were last open. Most of the rest was data.json inside each plugin's own folder, one per installed plugin, rewritten on every launch too. None of that is content. All of it was getting committed anyway, burying the actual changes.</p><p>Added a .gitignore for the .obsidian folder, except for the parts I actually care about keeping, like my custom CSS snippet and the plugin list. Diffs are readable again, just the notes that actually changed. Small fix, but exactly the kind of thing that would have made the daily backup useless within a week if I hadn't caught it on day two instead of day sixty.</p>]]></description>
    </item>

    <item>
      <title>An agent cited a GitHub issue that never existed</title>
      <link>https://goekmen.ai/notes.html#p18</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p18</guid>
      <pubDate>Tue, 11 Aug 2026 12:00:00 GMT</pubDate>
      <category>Agent Workflows</category>
      <description><![CDATA[<p>Twice in the last couple of weeks I caught a coding agent slipping a fabricated reference into an otherwise solid piece of writing. Not a wrong opinion, a wrong fact stated as if it had been checked.</p><p>First time it was a changelog line for a small fix, "Fixes #47." That repo doesn't even use GitHub Issues, I track things in a plain TODO.md file, there's no issue tracker for a #47 to exist in. Second time it was a test-run summary claiming the suite finished in 38 seconds. The actual CI log said just under 6 minutes.</p><p>Neither one felt wrong on a first read. A changelog line with an issue number looks exactly like every other changelog line. A fast test suite is exactly what I want to hear, which is probably why I almost didn't check it.</p><p>Same fix as always, just applied more consistently now. No number, no reference, no citation goes out without me pointing at the real source first, a log line, a file, an actual link. Slower to write, but at least it's true.</p>]]></description>
    </item>

    <item>
      <title>AI Control Center's image studio stopped faking its own progress bar</title>
      <link>https://goekmen.ai/notes.html#p17</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p17</guid>
      <pubDate>Sun, 09 Aug 2026 12:00:00 GMT</pubDate>
      <category>AI Products</category>
      <description><![CDATA[<p>Most of this week went into the image side of AI Control Center, the part that talks to ComfyUI for generating and editing images locally. It used to be one crowded screen. Now it's split into three, one for creating new images, one for editing existing photos, one for the results gallery. Picking the wrong mode by accident finally stopped happening.</p><p>The progress bar took the most rework. ComfyUI doesn't always report a clean percentage while it renders, so the first version either froze on some number or jumped straight from 12% to done. Looked broken even on runs that finished fine. Now the current step stays visible the whole time. A percentage only shows up when ComfyUI actually sends one, otherwise there's just no number instead of a fake one.</p><p>Also split the docked prompt library so it only shows image prompts. It used to pull from the same store as chat and code prompts. Picking one for an image run meant scrolling past a pile of unrelated snippets first.</p><p>Reference images, LoRA support and the private vault all got the same pass. Still tuning the deviation setting that controls how close a new variant has to stay to a locked reference. Not sure yet if the default is too loose or too strict.</p>]]></description>
    </item>

    <item>
      <title>Local LLM Matrix v0.37.3 stops hiding the prompt it actually sends</title>
      <link>https://goekmen.ai/notes.html#p16</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p16</guid>
      <pubDate>Fri, 07 Aug 2026 12:00:00 GMT</pubDate>
      <category>AI Products</category>
      <description><![CDATA[<p>Was putting together a short write-up comparing a few benchmark runs and went to quote the exact prompt I'd used. It wasn't in the export. Wasn't in the result view either. Wasn't anywhere I looked.</p><p>Turned out BenchmarkResult never had a field for the prompt in the first place. It got used during the run and then just fell out of scope the moment the run finished. Nothing overwrote it, nothing got corrupted, it simply was never saved anywhere past the moment it got used. Fixed it by adding a real prompt field to the model and threading it through save and load. The commit message ended up about as blunt as the bug itself, "Fix: benchmark prompt was never saved or shown to the user." So the prompt is visible now, live in the interface, in the result view and in every export. Markdown, HTML, CSV, JSON, all of it.</p><p>While the code was already open, I finally rebuilt the overview page into something closer to a real control center instead of a static summary. It now shows RAM and CPU, tokens per second, latency, a throughput chart, which jobs are active right now, plus an event log. All of it refreshes every few seconds. AI Control Center already does something similar for the whole machine. Wrote about that a few days ago, when it caught two stuck Ollama processes fighting over the same port. But that dashboard covers everything running on the Mac, not just Local LLM Matrix. So I stopped waiting for the standalone version and built a smaller one straight into the app, scoped to just its own runs.</p><p>A few smaller things shipped alongside that. A "reset all results" button, so starting over doesn't mean reinstalling. Ollama now gets auto-detected and can be started right from the app in the background, no terminal window popping up and stealing focus. And the recommended install path switched from manual pip plus a virtual environment to pipx, mostly because half the setup questions I was getting turned out to be venv problems in disguise.</p><p>None of this was on the roadmap for this week. It all started with one missing column in an export. v0.37.3 is live on GitHub now. Not sure what's next, probably whatever the next missing field turns out to be.</p>]]></description>
    </item>

    <item>
      <title>AI Control Center found two Ollama processes fighting over the same port</title>
      <link>https://goekmen.ai/notes.html#p15</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p15</guid>
      <pubDate>Mon, 03 Aug 2026 12:00:00 GMT</pubDate>
      <category>AI Products</category>
      <description><![CDATA[<p>AI Control Center is the one item on the "soon" list that's actually further along than the label suggests. Working prototype for a while now, a small local dashboard that shows which models are loaded and which agents are running. Lets me kill anything stuck without opening Activity Monitor and hunting for the right process name.</p><p>Today it caught something I would have missed for hours. The dashboard listed Ollama as running fine, green dot, port 11434 responding. But a benchmark job for Local LLM Matrix kept timing out anyway. Turned out there were two ollama serve processes alive at once, an old one left over from a crashed terminal session three days ago, plus the current one. Both bound to the same port somehow. Whichever one answered a given request depended on pure luck.</p><p>The dashboard's health check had only ever pinged the port, not the actual process table, so a zombie process that still responded to pings looked completely healthy. Added a second check that cross-references the PID behind the port against what launchd thinks should be running. Killed the stale process, response times back to normal immediately.</p><p>Small fix, but it's exactly the kind of bug this tool exists to catch. Not a benchmark number, just "why is this slow" turning into an actual answer in two minutes instead of an evening of guessing.</p>]]></description>
    </item>

    <item>
      <title>Renaming a note in Finder quietly broke twelve backlinks</title>
      <link>https://goekmen.ai/notes.html#p14</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p14</guid>
      <pubDate>Sun, 02 Aug 2026 12:00:00 GMT</pubDate>
      <category>Knowledge Vaults</category>
      <description><![CDATA[<p>Renamed a project note straight in Finder today instead of through Obsidian. Seemed faster. Wasn't. Obsidian tracks links by filename, not by some hidden id underneath, so every note pointing at the old name broke the moment I hit rename. None of it made a sound.</p><p>Didn't notice for almost an hour, until a search for that project came back nearly empty, way fewer notes than I remembered having on it. Went into the vault's built-in broken-links view, twelve notes still pointed at the filename that no longer existed.</p><p>Fixed them one by one. No bulk find-and-replace, not on markdown link syntax I didn't fully trust to run unsupervised across two hundred plus files, especially so soon after handing an agent free rein on tags in that same vault a few weeks back. Took about ten minutes, not the two seconds the rename itself felt like in Finder.</p><p>New rule for the vault, right under the tagging one. Rename inside Obsidian and nowhere else. The one spot where a native macOS feature actively made things worse instead of saving a step.</p>]]></description>
    </item>

    <item>
      <title>Q5 quantization pushed my 18GB MacBook into swap</title>
      <link>https://goekmen.ai/notes.html#p13</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p13</guid>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <category>Local AI Systems</category>
      <description><![CDATA[<p>Spent the evening testing whether Q5_K_M quantization of Qwen2.5 14B would run better than the Q4_K_M I've been using for a few weeks on Local LLM Matrix's benchmark queue. My setup is a MacBook Pro M3 Pro with 18GB of unified memory, no discrete GPU, so every gigabyte a model needs comes straight out of the same pool as the rest of macOS.</p><p>Loaded the Q5 build into Open WebUI afterward and it just sat there, spinner going, no response for almost two minutes on a short test prompt. Turned out num_ctx was still pinned to 8192 in an old Modelfile I'd copied from a smaller model months ago and never touched since. Fixed that, still slower than I expected.</p><p>Ran a real benchmark with ollama run --verbose instead of guessing. Q4_K_M was doing 22 tokens per second. Q5_K_M dropped to 6. Activity Monitor showed why, memory pressure in the red and swap climbing for most of the run. With Chrome and Slack open like normal, there wasn't enough of the 18GB left for the bigger quant plus context. macOS started paging to disk instead of just failing outright. That's the actual bottleneck, not the Modelfile bug.</p><p>Rolled back to Q4_K_M for now. Not the quality bump I was hoping for, but at least the next time I'm tempted to try a bigger quant I have real numbers to check against instead of just a feeling that it might be worth it.</p>]]></description>
    </item>

    <item>
      <title>Let an agent backfill tags on 200 old notes instead of reorganizing anything</title>
      <link>https://goekmen.ai/notes.html#p12</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p12</guid>
      <pubDate>Mon, 27 Jul 2026 12:00:00 GMT</pubDate>
      <category>Knowledge Vaults</category>
      <description><![CDATA[<p>Back in an old note from a few weeks ago I promised myself one rule for the vault. Every new note gets a date and at least one tag. Old notes stay exactly as chaotic as they are. Never went back and fixed the old ones, obviously. About 200 notes with no tags at all, sitting there since before that rule existed.</p><p>Instead of doing the reorg by hand, which is exactly the thing I already gave up on once, I pointed an agent at the folder with one narrow instruction. Read each untagged note, suggest one or two tags based on the actual content, write them into the frontmatter, touch nothing else in the file.</p><p>It got through all 200 in about eighteen minutes. I spot checked maybe thirty of them, two tags were a little generic, one note about a failed benchmark run got tagged "success" which made me laugh, everything else was close enough to what I would have picked myself.</p>]]></description>
    </item>

    <item>
      <title>Getting a local model to stop breaking JSON took one example, not more rules</title>
      <link>https://goekmen.ai/notes.html#p11</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p11</guid>
      <pubDate>Fri, 24 Jul 2026 12:00:00 GMT</pubDate>
      <category>Prompt Engineering</category>
      <description><![CDATA[<p>Spent way too long this week trying to get a local 7B model to output clean JSON for a small script, no dedicated JSON mode available on that one. Kept telling it to "always respond with valid JSON" in different phrasings and it kept adding trailing commentary anyway.</p><p>What actually worked was showing it exactly what a bad response looked like next to a good one, one pair, not a paragraph of rules. First run after that came back clean. Ran it 20 more times to make sure it wasn't luck, 19 out of 20 were valid on the first try.</p><p>Kind of obvious in hindsight. Telling a model what "not to do" in the abstract barely registers. Showing it one concrete failure case does most of the work instructions never quite manage.</p>]]></description>
    </item>

    <item>
      <title>Two agents, one refactor, very different results</title>
      <link>https://goekmen.ai/notes.html#p10</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p10</guid>
      <pubDate>Tue, 21 Jul 2026 12:00:00 GMT</pubDate>
      <category>Agent Workflows</category>
      <description><![CDATA[<p>Spent Friday evening running the same small refactor through two different coding agents to see how far apart they actually are in practice. Pull a hardcoded config block out of a 200 line script into its own module, then update every place that imported it.</p><p>Claude Code found all 7 call sites and asked before touching two of them because the imports looked ambiguous. It wrapped up in about 12 minutes, including the time I spent reading the diff.</p><p>OpenCode running a local model did the extraction fine, but missed one import in a test file. The test suite failed silently until I ran it myself. The agent had already reported success and moved on to something else.</p>]]></description>
    </item>

    <item>
      <title>Obsidian AI Vault has a first working search, and it's slower than I'd like</title>
      <link>https://goekmen.ai/notes.html#p9</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p9</guid>
      <pubDate>Sat, 18 Jul 2026 14:00:00 GMT</pubDate>
      <category>AI Products</category>
      <description><![CDATA[<p>Started actually building Obsidian AI Vault this week instead of just talking about it. Pointed a local embedding model at my real vault folder, about 340 markdown files, a good chunk of it the messy pile I wrote about a while back. Goal for this pass was just basic semantic search, nothing about the eventual interface yet.</p><p>First run choked, just not on the embedding step. A batch of older notes had a tags field written as a plain string instead of a list, my indexer assumed a list every time and threw on note 61 of 340. It failed quietly in the background too, so I didn't notice for a good twenty minutes.</p><p>Once that was fixed, search actually worked. Not fast though. Indexing the full vault takes about six minutes on my machine with nomic-embed-text running through Ollama. That number has to come down a lot before this is something I use daily instead of something I demo once and forget about.</p>]]></description>
    </item>

    <item>
      <title>The only file format I've never had to migrate away from</title>
      <link>https://goekmen.ai/notes.html#p8</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p8</guid>
      <pubDate>Wed, 15 Jul 2026 14:00:00 GMT</pubDate>
      <category>Markdown</category>
      <description><![CDATA[<p>Set up git for this site today, first time this project's had real version control. Ran a diff on a few older files just to see it work, and it hit me again why I only ever want to write things down in Markdown: the diff for a .md file is just readable. Two lines changed, that's what you see. Try that with a Word doc or a Notion export sometime.</p><p>I've migrated between three note apps over the years, and the ones that stored things in a proprietary format lost something every single time — formatting, backlinks, sometimes the whole file. The plain .md files from a project I abandoned in 2022 opened today exactly the way I left them.</p><p>There's a more practical reason too, one I only really felt today: an agent reading a folder of .md files doesn't need a parser, a plugin, or an export step, it just reads text. Same reason git handles them so well. Boring format, on purpose, and that's exactly the point.</p>]]></description>
    </item>

    <item>
      <title>Two weeks in, and the backlog already won</title>
      <link>https://goekmen.ai/notes.html#p1</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p1</guid>
      <pubDate>Wed, 15 Jul 2026 12:00:00 GMT</pubDate>
      <category>Reflection</category>
      <description><![CDATA[<p>Two weeks since launch. Four projects marked "soon" on the build log are still marked "soon." That's not a confession, that's just how this works — the list grows faster than I clear it, and I've stopped pretending otherwise.</p><p>What did happen: the site stopped being a static page and started being a place I actually update. This time the plan was to publish something rough every couple of days instead of waiting for it to be right, and so far that's the only part of the plan that's worked exactly as intended.</p><p>The thing I keep coming back to: public benchmark numbers for local models tell you almost nothing about your own setup. Local LLM Matrix exists because I got tired of trusting numbers that weren't measured on my hardware.</p>]]></description>
    </item>

    <item>
      <title>Before it was Local LLM Matrix, it was called Local LLM Scout</title>
      <link>https://goekmen.ai/notes.html#p2</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p2</guid>
      <pubDate>Mon, 13 Jul 2026 12:00:00 GMT</pubDate>
      <category>AI Products</category>
      <description><![CDATA[<p>Caught something today while cleaning up the build log: it still listed "Local LLM Scout" as something coming soon. That project shipped a while ago, it just doesn't go by that name anymore.</p><p>Scout was the earlier, narrower version, it just discovered and listed whatever Ollama models you had installed locally. Once it grew into actually running benchmark profiles and comparing results over time, the name didn't fit anymore, so it became Local LLM Matrix.</p>]]></description>
    </item>

    <item>
      <title>I let an agent loose on my own website</title>
      <link>https://goekmen.ai/notes.html#p3</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p3</guid>
      <pubDate>Fri, 10 Jul 2026 12:00:00 GMT</pubDate>
      <category>Agent Workflows</category>
      <description><![CDATA[<p>Out of curiosity I pointed a coding agent at this site's repo and just said "clean up the CSS." Vague on purpose, I wanted to see what it would do with no scope at all.</p><p>It touched twelve files. Renamed variables I liked. Reformatted things that weren't broken. I didn't recognize half the diff and had to revert most of it. Second attempt, same agent, much narrower: one file changed, three lines, done in under a minute.</p><p>The agent isn't the variable. How tightly you scope the task before handing it over is the variable.</p>]]></description>
    </item>

    <item>
      <title>My Obsidian vault is a mess, and that's fine</title>
      <link>https://goekmen.ai/notes.html#p4</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p4</guid>
      <pubDate>Wed, 08 Jul 2026 12:00:00 GMT</pubDate>
      <category>Knowledge Vaults</category>
      <description><![CDATA[<p>I tried to reorganize my notes vault this weekend. Got about forty notes in and gave up, same as the last two times I tried this.</p><p>It doesn't matter that it's messy, because it's still just plain text files on disk. No app can hold it hostage. Every note-taking app I've dropped over the years failed at exactly the moment I needed to get my data back out. Markdown has never once done that to me.</p>]]></description>
    </item>

    <item>
      <title>Why my prompt needed to be three times longer</title>
      <link>https://goekmen.ai/notes.html#p5</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p5</guid>
      <pubDate>Sun, 05 Jul 2026 12:00:00 GMT</pubDate>
      <category>Prompt Engineering</category>
      <description><![CDATA[<p>Spent an evening this week convinced a 7B model was just bad at a summarization task for Local LLM Matrix. Turns out the model wasn't the problem, the instruction was.</p><p>What actually fixed it: telling it exactly what "summarize" meant in this context, giving it one example of the input/output shape, and asking it to reason through the differences before writing the summary.</p>]]></description>
    </item>

    <item>
      <title>Three days in and something's already broken</title>
      <link>https://goekmen.ai/notes.html#p6</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p6</guid>
      <pubDate>Fri, 03 Jul 2026 12:00:00 GMT</pubDate>
      <category>Build Log</category>
      <description><![CDATA[<p>Shared the link in a couple of places over the weekend and got the first outside eyes on the site. Within a day someone pointed out the link preview on one platform showed a broken image instead of the logo.</p><p>Turned out to be a relative path in the meta tags that worked fine locally and broke the second the site moved to its real domain. Local testing catches maybe seventy percent of what matters.</p>]]></description>
    </item>

    <item>
      <title>Site's live. Now the real work starts.</title>
      <link>https://goekmen.ai/notes.html#p7</link>
      <guid isPermaLink="true">https://goekmen.ai/notes.html#p7</guid>
      <pubDate>Tue, 30 Jun 2026 12:00:00 GMT</pubDate>
      <category>Launch</category>
      <description><![CDATA[<p>goekmen.ai is live as of today. The reason this exists at all: notes, benchmark results and half-built tools scattered across an Obsidian vault, a few private GitHub repos and a couple of Twitter threads that nobody but me will ever find again.</p><p>The plan is to post something here every couple of days, rough drafts of whatever I actually worked on, not polished announcements written after the fact.</p>]]></description>
    </item>

  </channel>
</rss>
