Nicholas C. Zakas

@humanwhocodes.com

Creator of @eslint.org and @bredbox.app. Author. Speaker. Advisor. Coach. GitHub Star. Mastodon: https://fosstodon.org/@nzakas Blog: https://humanwhocodes.com Coaching: https://humanwhocodes.com/coaching

Grok 4.5 has so far been underwhelming for me. It really struggled with the task I gave it, introduced repeated syntax errors, and couldn't figure out how to get to the final state. GPT 5.6 Luna sailed through the same task without breaking a sweat.

GPT 5.6 Luna's weak spot in my workflow is SQL. It has a lot of trouble figuring out permissions and needs multiple turns to get it right. Will use another model for this from now on.

Ran out of space on my Windows laptop. While I'm waiting for my Framework 13 Pro, I loaded Ubuntu onto an external drive and it's been a joy. Tip: Don't install dev tools using snap, stick with apt.

I built Bredbox on Supabase and I have some regrets. Without upgrading the npm package, they changed the Docker images and my whole local setup broke. Local setups should remain working as long as I don't change the package!

My latest process: 1. GPT-5.6 Terra writes the PRD 2. GPT-5.6 Terra writes the tech spec 3. GLM 5.2 creates the implementation plan 4. DeepSeek V4 Pro follows the plan MAI-Code-1-Flash and GPT-5.6 Luna for incremental changes.

npm staged publishing is useful, but the workflow is high-friction. For one or two packages it's fine; for dozens, the overhead is brutal. I'd rather require 2FA on every publish: approve a text prompt and continue. No extra website logins.

GLM 5.2 is really good at drafting plans and fairly good at drafting tech specs. However, it's really inefficient add editing tech specs. $2-3 per revision. It's thorough, but other models can make revisions more cheaply.

GLM 5.2 put together an impressive implementation plan for a tech spec. Not only did it break everything down, it also compared against the codebase to find inconsistencies and asked whether I wanted to make adjustments based on that.

This week's Bredbox updates are now live! 📥 Saves is now called Inbox​ to make its purpose clear 🗑️ Deleted links now end up in Trash for 30 days so you can restore them easily ⚡ Fixed a bug that removed at least 2s from each metadata fetch 📱 Test build of the Android app awaiting publishing

One of the things I find is that all models are overly defensive when it comes to input validation, often creating a bunch of unnecessary 'if' statements. This code wants to validate ?permanent=true in a query string. Anything other than "true" should be false. AI generated code and my edits below.

const SavesDeleteQuery = z.object({
	permanent: z
		.preprocess(value => {
			if (value === undefined || value === "") {
				return false;
			}

			if (typeof value === "string") {
				const normalized = value.trim().toLowerCase();

				if (normalized === "true") {
					return true;
				}

				if (normalized === "false") {
					return false;
				}
			}

			return value;
		}, z.boolean())
		.optional()
		.default(false),
});
const SavesDeleteQuery = z.object({
	permanent: z
		.preprocess(value => {
			if (!value || typeof value !== "string") {
				return false;
			}

			
			return value.trim().toLowerCase() === "true";
		}, z.boolean())
		.optional()
		.default(false),
});

Really liking GPT-5.6 Terra. It's much less sycophantic than 5.5 and 5.4. I asked it to make a change that didn't make sense (I had forgot a detail) and it asked if I was sure because of those details. That would have been an annoying mistake otherwise.