Sign in

Nicholas C. Zakas

@humanwhocodes.com
5.5K followers 48 following 1.4K posts

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

PostsRepliesMedia
Nicholas C. Zakas @humanwhocodes.com · 1h
Sometimes my pull requests end up with dozens of comments and the interface starts breaking down. Between hiding comments and no easy way to keep track of what I've read, I miss important details. I've asked folks at GitHub for an Outlook-style view, and I finally decided to build my own.
PR Comment Inbox screenshot. Comment thread starters listed in the left pane and the full threads in the right pane.
110
Nicholas C. Zakas @humanwhocodes.com · 4h
Finally have my personal CI system working. I have Gitea on my NAS for private products, but it’s not strong enough to run workflows. So I now have Gitea Runner up on my Mac Mini so it can run workflows in both ubuntu-latest and macos-latest. 🎉
020
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 29/09/2026
The Bredbox mobile app is now available for iOS and Android! bredbox.app/downloads/mo...
bredbox.app
Bredbox for Mobile — iOS & Android | Bredbox
Save from any app, read without distractions, and take your personal library with you on iOS and Android.
022
Nicholas C. Zakas @humanwhocodes.com · 28/09/2026
GitHub pull requests are so hard to work with once you have more than around a dozen comments. I've been struggling to keep up with the comments on a recent PR, so I've been working on a tool to make it easier. Will share soon.
010
Nicholas C. Zakas @humanwhocodes.com · 25/09/2026
One of my drudgery tasks is going through and downloading bank statements and receipts and uploading them to Dropbox for my bookkeeper. Once a month that 30 minutes lost. Now Grokbot does it all for me. 🎉
000
Nicholas C. Zakas @humanwhocodes.com · 25/09/2026
I spend very little time reviewing AI-generated code. Instead, I focus on reviewing the tests to make sure they are correct and complete. Most agents put together lousy tests without explicit feedback and instructions. Trust the tests, not the code.
250
Nicholas C. Zakas @humanwhocodes.com · 24/09/2026
Impressed with Opus 5.5 so far. I've been using it on a project where I previously used Sonnet 5 exclusively and Opus 5.5 is not only better but it's actually using up less of the five-hour and weekly limits than Sonnet did while accomplishing the same amount of work.
130
Nicholas C. Zakas @humanwhocodes.com · 23/09/2026
GPT 6 Luna's pricing is now competitive with Cloudflare's hosted Gemma 4: Gemma 4: $0.10 in/$0.30 out GPT 6 Luna: $0.10 in/$0.50 out
010
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 21/09/2026
Now you can take your reading library on the go with the new Bredbox for iPhone app! blog.bredbox.app/blog/2026-09...
blog.bredbox.app
Bredbox for iPhone is here
Bredbox is now available on iPhone, making it easier to save, read, search, and carry your personal library wherever you go.
001
Nicholas C. Zakas @humanwhocodes.com · 21/09/2026
I was using Gemma 4 to categorize articles on Bredbox. Just tested using Jev: same results, 127x faster, 1/10th the cost.
180
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 18/09/2026
📬 You can now save email directly to Bredbox. Forward anything to your personal Bredbox email address and it’ll appear as a private save in your library. You can also use your Bredbox address to sign up for newsletters directly instead of your personal email. blog.bredbox.app/blog/2026-09...
blog.bredbox.app
Save Email to Your Bredbox Library
Forward emails or send newsletters directly to your personal Bredbox address and keep them as private, readable saves in your library.
001
Nicholas C. Zakas @humanwhocodes.com · 18/09/2026
Testing out a new process: have Claude create a bunch of related code and then have it split the work into stacked pull requests for easy review.
120
Nicholas C. Zakas @humanwhocodes.com · 17/09/2026
I've long felt like services should offer alternate logins to the same account that had limited capabilities. Like a read-only login to a bank account that you could give to your bookkeeper. Now with AI agents, I feel like this could be even more useful.
000
Nicholas C. Zakas @humanwhocodes.com · 16/09/2026
It's disappointing to see otherwise intelligent people arguing that because AI hasn't done anything truly terrible yet that it never will. This is the same faulty logic used by climate change deniers ever since the 1980s.
140
Nicholas C. Zakas @humanwhocodes.com · 15/09/2026
Getting WatermelonDB to compile into an Expo app was torture due to outdated docs on both sides. Here's what I did to get it working: humanwhocodes.co...
000
Nicholas C. Zakas @humanwhocodes.com · 15/09/2026
I've been wanting to for a while: treating PDFs and other documents as first-class citizens when I save them.
000
Nicholas C. Zakas @humanwhocodes.com · 14/09/2026
The VS Code Claude Code extension now shows you prompt cache information. This is quite useful.
010
Nicholas C. Zakas @humanwhocodes.com · 11/09/2026
Looking for something new to try this weekend? Give @bredbox.app app a try. It's my read-later app and I think you'll really enjoy it. ☺️ bredbox.app
bredbox.app
Bredbox - A trusted home for the content you care about.
Save articles, documents, recipes, images, videos, and ideas in one personal library. Read them when the time is right, find them again later, and take your library with you whenever you choose.
020
Nicholas C. Zakas @humanwhocodes.com · 11/09/2026
This was a lot of fun to build. Uses the web speech APIs to read your articles out loud.
001
Nicholas C. Zakas @humanwhocodes.com · 10/09/2026
In case you missed it, I wrote about the different ways software engineers interact with AI. There’s not a one size fits all approach and it depends on how much control you want over the output. humanwhocodes.com/blog/2026/09...
humanwhocodes.com
Five software engineering roles for working with AI - Human Who Codes
Software engineers can work with AI in different ways, from observing every change to managing an entire software factory.
030
Nicholas C. Zakas @humanwhocodes.com · 08/09/2026
Not everyone uses AI the same way. I like to think of these different interaction models as roles we can take to co-create code. In my latest post, I discuss the most common roles and what it means about how we build software going forward. humanwhocodes.co...
000
Nicholas C. Zakas @humanwhocodes.com · 04/09/2026
Cloudflare has so many amazing APIs that it's impossible to know them all. Today I discovered AI.toMarkdown() that converts multiple different file formats into Markdown. Such a time saver.
120
Nicholas C. Zakas @humanwhocodes.com · 04/09/2026
Wow, the X API has different charges for posting content depending if it contains a URL. No URL: $0.015 per post With URL: $0.20 per post I just don't understand the hostility towards URLs.
130
Nicholas C. Zakas @humanwhocodes.com · 03/09/2026
Cloudflare’s lack of a multi-consumer event bus is a frequent source of frustration for me. It seems like a glaring omission from the offering that forces me into tight coupling where I don’t want it.
000
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 02/09/2026
Still have your Pocket export ZIP? Bring your entire library back to life with Bredbox. bredbox.app/from/pocket
bredbox.app
Bring your Pocket library with you | Bredbox
Upload your Pocket export and Bredbox rebuilds your library, including links, tags, collections, notes, and highlights.
011
Reposted by Nicholas C. Zakas
pamelafox.bsky.social @pamelafox.bsky.social · 01/09/2026
"The role of software engineer has changed, probably forever, in the face of AI. There’s a collective feeling of grief as our jobs transition away from what we have been doing." Nice post from @humanwhocodes.com on the changing identity of SWEs: newsletter.humanwhocodes.com/posts/the-ch...
newsletter.humanwhocodes.com
The changing identity of software engineers
071
Nicholas C. Zakas @humanwhocodes.com · 01/09/2026
I never just ask an agent to implement something. If I don't know how to do it, I first ask for an overview of the approach. Then I ask questions until I understand it. Only then do I have it implement the change. If you're not using AI to learn, you're missing out.
0274
Nicholas C. Zakas @humanwhocodes.com · 01/09/2026
New open source process: 1. You use AI to file a bug 2. I use AI to fix it 3. I use AI to review the fix 4. You use AI to integrate and validate the fix Faster feedback loop but it doesn’t feel nearly as collaborative. 😢
010
Nicholas C. Zakas @humanwhocodes.com · 31/08/2026
This setup has worked well for me with AI coding projects: 1. Have a repo template with AGENTS.md 2. Define the interface I want 3. Explain the algorithms, structures, and overall approach to use 4. Explain the tests to write to validate correctness
010
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 28/08/2026
Big news! Bredbox is now in open beta. 🎉 Come join us: bredbox.app
011
Nicholas C. Zakas @humanwhocodes.com · 27/08/2026
I think we're at the point where new GitHub repos should have pull requests limited to contributors only by default.
050
Nicholas C. Zakas @humanwhocodes.com · 26/08/2026
Your reading library shouldn't be trapped where you save it.
010
Nicholas C. Zakas @humanwhocodes.com · 26/08/2026
Another one of my 'todo list' projects I couldn't find time to finish before Claude: A CSS Paged Media polyfill. I loved PagedJS but it's not been updated in three years. This is my take. github.com/human...
110
Nicholas C. Zakas @humanwhocodes.com · 25/08/2026
The Astro team's triagebot-action looks fascinating, but I couldn't find any info on what it costs to run on the Cloudflare instrastructure. Does anyone know?
000
Nicholas C. Zakas @humanwhocodes.com · 24/08/2026
The new parser I'm working on, now called jskit, explores a direction I've been pondering: binary formats that allow you to easily switch between JS and native (Rust) at different phases with zero serialization cost. Early returns vs. state of the art.
Horizontal bar chart titled "Syntax tree only": median MB of source per second for parsers producing a minimal syntax tree (no tokens, comments, range, or loc). From highest to lowest: jskit (native) parse() 43.8; oxc-parser 31.6; oxc-parser (raw transfer) 26.2; jskit parse() 16.3; meriyah 16.3; jskit (native) parse()+validate()+toAST() 11.3; jskit parse()+validate() 10.4; jskit parse()+validate()+toAST() 7.86; acorn 6.09; @babel/parser 5.81; espree 5.08; @typescript-eslint/parser + TS 6.0.3 0.60; @typescript-eslint/parser + TS 5.9.3 0.58. Footnotes detail each configuration (Rust native, binary AST, validation, etc.).
2241
Nicholas C. Zakas @humanwhocodes.com · 24/08/2026
This is one of the things I hate about the web: the SEO-ification of recipes. Bredbox fixes it.
020
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 21/08/2026
New this week: 🧩 More control in the Bredbox browser extension: edit titles and tags, favorite, archive, and see when a page is already saved. 🗂️ Library lists now have compact, tile, and detailed views. 📱 iOS and Android apps are almost ready for the app stores.
011
Reposted by Nicholas C. Zakas
Bredbox @bredbox.app · 21/08/2026
Bredbox is more than a reading app. Your library can plug into the developer tools you already use. 🔌 REST API ⚡ Webhooks 🤖 MCP server 🧩 n8n integration Save your content once, then build whatever workflow you want around it. Read more: blog.bredbox.app/blog/2026-08...
blog.bredbox.app
Bredbox: The Programmable Reading Library for Developers
Use Bredbox Pro to connect your personal reading library to your own tools with a REST API, MCP server, webhooks, and n8n.
001
Nicholas C. Zakas @humanwhocodes.com · 19/08/2026
100% agree. I’ve spent way too much time digging into “security reports” on ESLint where people torture their systems to find a “vulnerability” that is not exploitable. They want the credit, nothing more.
080
Nicholas C. Zakas @humanwhocodes.com · 19/08/2026
Building a JavaScript parser with AI is a good use case. There are already a ton of conformance tests available, so models can iterate autonomously. I’ve had Claude working through these on my new parser all week.
010
Nicholas C. Zakas @humanwhocodes.com · 19/08/2026
I know it’s popular to poop on GitHub for availability these days, but they’re basically being DDoSed every day by AI. It’s a small miracle the site stays up at all.
2182
Nicholas C. Zakas @humanwhocodes.com · 17/08/2026
Seriously. Just upload your whole Pocket zip.
000
Nicholas C. Zakas @humanwhocodes.com · 17/08/2026
When working on a parser, there are actually two things you need to validate: that correct syntax parses and that incorrect syntax does not. It’s typical to focus so much on the former that you forget about the latter, which is equally important.
090
Nicholas C. Zakas @humanwhocodes.com · 14/08/2026
I'm working on a new parser (called jsparse for now) for ESLint with Claude. It splits parsing into multiple phases so we can just take what we need. Very early performance gains look promising. (Node.js v24 on a not-so-great laptop.)
Chart. Syntax tree only: No tokens, no comments, no range or loc — the smallest job that still yields a tree. Grouped horizontal bar chart of 7 parsers, each with a bar for JavaScript, TypeScript, and JSX, measured in megabytes of source per second. On JavaScript, jsparse parse() is fastest at 10.3, 1.5 times jsparse parse() + validate() at 6.9, and 21.2 times the slowest, @typescript-eslint/parser, at 0.5. On TypeScript, jsparse parse() is fastest at 10.7, 1.2 times jsparse parse() + validate() at 8.6, and 29.2 times the slowest, @typescript-eslint/parser, at 0.4. On JSX, jsparse parse() is fastest at 4.8, 1.1 times acorn at 4.5, and 10.8 times the slowest, @typescript-eslint/parser, at 0.4. acorn and espree have no TypeScript bar, that dialect being unsupported.Chart: Chart: The job ESLint actually asks for: Tree + tokens + comments, every one of them carrying both range and loc. Grouped horizontal bar chart of 4 parsers, each with a bar for JavaScript, TypeScript, and JSX, measured in megabytes of source per second. On JavaScript, jsparse eslintParser.parse() is fastest at 3.0, 1.5 times espree at 2.0, and 6.2 times the slowest, @typescript-eslint/parser, at 0.5. On TypeScript, jsparse eslintParser.parse() is fastest at 3.7, 5.7 times @babel/eslint-parser at 0.6, and 9.8 times the slowest, @typescript-eslint/parser, at 0.4. On JSX, jsparse eslintParser.parse() is fastest at 2.3, 1.4 times espree at 1.7, and 5.4 times the slowest, @typescript-eslint/parser, at 0.4. espree has no TypeScript bar, that dialect being unsupported.
3150
Nicholas C. Zakas @humanwhocodes.com · 14/08/2026
Starting to share some of Bredbox's story.
010
Nicholas C. Zakas @humanwhocodes.com · 14/08/2026
New package! I couldn't find an npm package that satisfied my needs for social logos, so I designed the interface and had @claudeai implement it. - Pure SVGs when you want them (Astro imports) - React components for everything else github.com/humanwhocode...
github.com
GitHub - humanwhocodes/social-logos: npm package with social logos in SVG and React
npm package with social logos in SVG and React. Contribute to humanwhocodes/social-logos development by creating an account on GitHub.
040
Nicholas C. Zakas @humanwhocodes.com · 13/08/2026
People think they understand ESLint but performance, but most don't. I get a lot of "why can't you make parsing faster?" But ESLint does so much more than parsing. There's scope analysis and control flow analysis before rules run. It adds up. And that's what I'm focused on now.
1110
Nicholas C. Zakas @humanwhocodes.com · 12/08/2026
Zuckberg's call for all AI to be open source is a classic corporate attempt to weaponize open source to thwart competitors. I wrote about this in a previous newsletter: newsletter.humanwhocodes.com/posts/human-... Meta has fallen way behind in AI and this is an admission that they won't catch up.
040
Nicholas C. Zakas @humanwhocodes.com · 11/08/2026
There are a lot of reasons that ESLint can be slow. I’m putting Claude to work on a bunch of them. Some of it is beyond the scope of what we can control. I mean, if you have 2000 rules enabled, there’s not much we can do about that.
140
Nicholas C. Zakas @humanwhocodes.com · 10/08/2026
Me to Fable: I think there's a way to improve the ESLint CLI performance by at least 20%. There are a lot of inefficencies in there. Fable: github.com/eslint/eslin... 🤯
github.com
chore: Improve CLI perf by nzakas · Pull Request #21210 · eslint/eslint
Prerequisites checklist I have read the contributing guidelines. AI acknowledgment I did not use AI to generate this PR. (If the above is not checked) I have reviewed the AI-generated content...
1170