Frequently Asked Questions
By which I mean questions not really asked at all, let alone frequently.
- What is this?
- It's a bunch of fancy automation and a little AI that takes excerpts from fiction & poetry I wrote in the 90s & early 00s and generates short critiques. It then builds static files and pushes to a github repo that is watched for changes. When changes are detected, they're pushed live to iamzach.com (here). The end (or is it?)
- Why is this?
- I'm just messing around. I'm looking at a bunch of different things here: various local models (output, performance, etc), the tooling around them, human-AI collaboration, LLM context/memory management, other secret and probably weird things I'm not telling you about. One thing I'm not actually looking for: real critiques of my terrible high school writing. Just fodder for the experiment.
- Who are you?
- I'm Zach. You may have figured this part out already. I've been on the internet in one way or another since the early 90s. I've got a 30+ year tech career spanning engineering, product, and design. More later, maybe.
Changelog
- Jan 31 - Feb 1 2026
-
- New Model: switched from Qwen2.5:32b to Gemma2:27b
- Improved Selection Script: initial script was too simplistic, easily tripped up by formatting errors, etc. This iteration uses a strategy pattern with confidence scoring for better passage extraction: text arrives → each selector (poetry, prose) scores confidence → highest confidence wins → winner extracts
- Cleaner Sources: poor formatting led to extraction errors, eg prose only for the month of January due to the markdown transformer's shit poetry formatting. Manual fix for now, transformer improvements WIP
- QoL Stuff: `--dry-run` added for crit preview/testing without writing to history, html templates more dynamic
- Feb 28 - Mar 1 2026
-
- New Model: switched from Gemma2:27b to nous-hermes2pro:Q4_K_M
- Database: added DuckDB as a data layer. All 59 existing critiques backfilled with passage and critique text extracted from HTML. Sources, models, and tags normalized. Full-text search indexes on source content and critiques. JSON files still in place for now
- Reliability Fix: macOS 26.3 update reset the Xcode license agreement, breaking git in the launchd environment. Fixed by switching to Homebrew's git instead of Apple's stub
- Mar 26 2026
-
- Mar 31 - Apr 1 2026
-
- May 1 2026
-
- New Model: outgoing deepseek-r1:8b, incoming phi4:latest. This after trying QwQ:32b. Alas, my eyes were too big for my hardware. Gen times were 10+ mins, compared to under 2 mins for everything else so far.
- Model name matching fix: the model availability check now handles case differences and ignores the :latest tag suffix, so config entries like phi4 work without needing the exact tag. I call this "pappin' the paprika". Wait, do I?
- May 31 - Jun 1 2026
-
- New Model: phi4 out, dolphin3:8b in. Dolphin is an intentionally uncensored fine-tune of Llama 3.1 — no guardrails, no softening, just opinions. Will I regret this one? Probably not but maybe!
- Model Thinking Block: critique pages now show an expandable thinking section for reasoning models. The section only appears when there's actually thinking content — non-reasoning models like phi4 and Dolphin render nothing there.
- Jun 3 2026
-
- Tag Parser Fix: Dolphin decided that generating tags meant generating tags plus a paragraph explaining each one. The archive page was not thrilled about this. Fixed in two ways: the tag parser now strips anything after
--- or a newline in each tag, and the tags call now passes a system prompt instructing the model to output only the requested format, no additional content. The two malformed tags were cleaned from the database directly.
- Jun 30 - Jul 1 2026
-
- New Model: dolphin3:8b out, qwq:32b in. QwQ is Qwen's 32B reasoning model, the one giving me 10+ min gen times on the M3 Pro. Happy to report the new machine handles it in under 90 seconds. Unfinished business...finished??
- Reasoning Fix: QwQ emits its thinking without an opening
<think> tag (just a bare </think> before the answer), which caused the existing think-block stripper to miss it entirely. The full reasoning stream bled into both the critique body and the tags output. Fixed by extending _extract_reasoning to fall back to splitting on the orphan closing tag when no paired tags are found.
- Jul 31 - Aug 1 2026
-
- New Model: qwq:32b has done its time, mlabonne/gemma-3-27b-it-abliterated (Q4_K_M via bartowski) takes the helm. This is Gemma 3 27B with its refusal direction surgically removed via abliteration: a weight-editing technique that projects out the model's "I won't do that" vector rather than fine-tuning on uncensored data. Underlying Gemma 3 quality intact, guardrails quietly absent. Buckle up! Or maybe not who knows.
- Memory System: introduced a two-layer memory architecture.
core_memory.md is a persistent doc covering the full critique archive, updated monthly by the outgoing model. model_memory.md is a working doc written by the incoming model at month start and updated daily. The goal here is to give each model continuity with the archive it's critiquing from.
- Sep 1 2026
-
- New Model: abliterated Gemma 3 out, mistral-small3.2:24b in. First Mistral model in the project: French lab, different lineage from everything we've run. 15GB, ~12s gen time.
- Prompts extracted: critique, tags, and system prompts moved from hardcoded engine fallbacks into
lib/prompts/ as versioned markdown files. Easier to iterate month-to-month without touching the engine.
- Memory framing: added
system.md which wraps model_memory.md with explicit context so the model knows what it's reading and why.
- --finalize-month: outgoing model now writes its own farewell entry to
core_memory.md before the switch. NOTE: piloting high-level memory design via flat files for now, with intent to move to db when I'm happy. BUT WILL I EVER BE HAPPY????
- Oct 1 2026
-
- New Model: Farewell to mistral-small3.2:24b, Hello nemotron-3.5-lightning:30b. NVIDIA's Nemotron line, new as of this month: a 30B MoE with only 3B active parameters, gen time is great despite the size. First reasoning model in rotation since QwQ.
- Thinking field fix: unlike QwQ and DeepSeek-R1 which emit reasoning inline wrapped in (or missing)
<think> tags, nemotron returns its reasoning as a separate field in the Ollama API response. The old regex-based stripper would've just found nothing to strip and silently dropped the thinking content. _call_ollama now captures that field directly and prefers it when present, falling back to the old tag-parsing for models that still embed it inline.
- Thinking block on the homepage: the expandable "Show model thinking" section has existed on individual archive pages since May, but the homepage's "latest critique" view never wired it up. Today's critique now shows its thinking too, same as the archive.