I wish there was good third party highlight/bookmark support for LLM answers. A few times recently I’ve gotten responses that included some particularly useful framing or formulation. Wish I could save the whole conversation with the important stuff highlighted. I need a Pinboard for ChatGPT.
Final unfiltered thoughts on Claude Code
Saturday, March 29, 2025
The last three things on my mind from this week of building LDAPEnforcer from scratch.
- Claude Code only has the bluntest access to tools like the type system. When you ask it to make a conceptually simple change that I might start by deleting a variable definition and then looking for red underlines in my editor, it just finds one part of the code at random and changes it, and looks for references elsewhere. If it had a direct interface to type systems, linters, etc, that’d make it a lot faster.
- Watching it do dumbshit things like make up arguments to
cat
or read file contents withxxd
was cute at first and then very annoying (especially if you’re paying attention to/cost
…). - It desperately needs an always-safe set of tools it can run. If I’ve already given you access to the codebase, you shouldn’t ask for permission to run grep, but as I mentioned previously you really should know that piping grep’s output to something else has implications beyond grep). But beyond that, is having the LLM directly call shell commands really the best way to do this?
More unfiltered thoughts on Claude Code
Tuesday, March 25, 2025
Continuing from last time.
- Was very exciting to work with this yesterday. Then I kept waking up last night worrying about job security. The times, they are uncertain.
- I manifested the Claude Code automatic context management functionality
- I’m still waiting for my manifestation of it using PRs automatically. Supposedly it’ll retrieve the contents of a URL you give it and take instructions from there (fortunately I can see no security issues with this); if you take this idea just a little further you might think that running the god damned thing in my terminal makes no sense at all, and you should interact with it in a web page, and it should submit all its changes as PRs
- Which would allow you to have multiple of these things working on the same codebase at once! As you accept PRs, they each rebuild their own branches, and handle merge conflicts.
- I think both of these things are in the works from people familiar with the product space; I’m not having novel ideas, but using the product for a few minutes really makes you want this stuff.
- It doesn’t have as good an eye for making reviewable changes as you’d like. Sometimes all the tests change and it’s hard to understand why. For a side project, you probably just YOLO accept; for code that’ll run in production, this will get really boring.
- It really wants to maintain backwards compatibility, which would be nice sometimes, but I really don’t need that for a feature you just wrote 5 minutes ago
- Because there is so much time that Claude is churning away spending your money on tokens, this feels a lot less like programming flow state; it’s very easy to get distracted and half do 5 things as you keep an eye on Claude in case it got stuck or is asking you for help. In this way it is less enjoyable.
- … I appreciate that you’re asking for permission before running shell commands, but
cd ... && ...
is not a “cd command”. - Really does not have a good idea of when to comment; if you provide no guidance it’ll shit out a whole file with no comments; if you tell it to comment everything it’ll provide inane comments like
mainLogLevel := logging.InfoLevel // Default to INFO level
(that’s a real example). - Imagining a future version of this stuff
- Don’t have the LLM comment any code
- Strictly track what was LLM generated, and associate it with the prompt (could be a prompt from another LLM)
- Strictly track human edits and associate with some comments or commit messages
- Could use git for this, but Claude Code’s attempt at an implementation that does so is too ham-fisted for actual use, so I end up artisinally crafting all the commit messages
- Have another LLM help you explain the code, including generating comments at viewing time. Explanations tailored to the user, and the context. The tool knows when you’re stepping into a codebase for the first time and when you’ve just viewed all the other relevant modules and provides “comments” that are appropriate to each case.
- The real power is having it write tests and test the code it writes. However, it is still pretty LLM-stupid, so you end up with Intro to Programming -level tests like
TestInitializeDefaultLogLevelIsInfo
.
More unfiltered thoughts on Claude Code
Monday, March 24, 2025
Continuing from last time.
- Was very exciting to work with this yesterday. Then I kept waking up last night worrying about job security. The times, they are uncertain.
- I manifested the Claude Code automatic context management functionality
- I’m still waiting for my manifestation of it using PRs automatically. Supposedly it’ll retrieve the contents of a URL you give it and take instructions from there (fortunately I can see no security issues with this); if you take this idea just a little further you might think that running the god damned thing in my terminal makes no sense at all, and you should interact with it in a web page, and it should submit all its changes as PRs
- Which would allow you to have multiple of these things working on the same codebase at once! As you accept PRs, they each rebuild their own branches, and handle merge conflicts.
- I think both of these things are in the works from people familiar with the product space; I’m not having novel ideas, but using the product for a few minutes really makes you want this stuff.
- It doesn’t have as good an eye for making reviewable changes as you’d like. Sometimes all the tests change and it’s hard to understand why. For a side project, you probably just YOLO accept; for code that’ll run in production, this will get really boring.
- It really wants to maintain backwards compatibility, which would be nice sometimes, but I really don’t need that for a feature you just wrote 5 minutes ago
- Because there is so much time that Claude is churning away spending your money on tokens, this feels a lot less like programming flow state; it’s very easy to get distracted and half do 5 things as you keep an eye on Claude in case it got stuck or is asking you for help. In this way it is less enjoyable.
- … I appreciate that you’re asking for permission before running shell commands, but
cd ... && ...
is not a “cd command”. - Really does not have a good idea of when to comment; if you provide no guidance it’ll shit out a whole file with no comments; if you tell it to comment everything it’ll provide inane comments like
mainLogLevel := logging.InfoLevel // Default to INFO level
(that’s a real example). - Imagining a future version of this stuff
- Don’t have the LLM comment any code
- Strictly track what was LLM generated, and associate it with the prompt (could be a prompt from another LLM)
- Strictly track human edits and associate with some comments or commit messages
- Could use git for this, but Claude Code’s attempt at an implementation that does so is too ham-fisted for actual use, so I end up artisinally crafting all the commit messages
- Have another LLM help you explain the code, including generating comments at viewing time. Explanations tailored to the user, and the context. The tool knows when you’re stepping into a codebase for the first time and when you’ve just viewed all the other relevant modules and provides “comments” that are appropriate to each case.
- The real power is having it write tests and test the code it writes. However, it is still pretty LLM-stupid, so you end up with Intro to Programming -level tests like
TestInitializeDefaultLogLevelIsInfo
.
Some unfiltered thoughts on Claude Code
Sunday, March 23, 2025
Everyone is right, Claude Code is fucking mindblowing.
dang it can build the code, run it, see an error, and modify the code all itself without returning to me
omg
- Why do AI companies hate the productization part? It’s so bizarre that on the first launch they give you an option of 6 different color schemes, but windows support is a coming-maybe feature
- The idea of using this on an untrusted codebase is … yikes. I see they warn you not to. But once you try it, the temptation will be strong. And when you have a project with open contribution (on GitHub, accepts PRs, etc), that’s like, a gaping hole.
- If you have a project you’ve wanted to start but don’t have time, set it up and start from zero.
- OK more on productization and security: I appreciate that it asks me before running bash commands, but it would be nice if they would whitelist commands like touch and mkdir. Also it keeps asking me to cat files in the repo which it already has access to, come on bro
- Really wish it kept a transcript of my interactions that was saved to the repo. Or saved the prompts to the commits. Or something.
uhhhhhhhhhhhh. this thing is amazing.
It wrote an ldap client for me
and created users and groups in my actual ldap server
this is unbelievable
It took me longer to set up a test LDAP server than it did to have it write code to connect and sync users and groups
…
2700 lines of code in less than 4 hours, with tests. It actually works on my real LDAP server.
- I wonder if this + voice recog LLMs means I can code on a laptop without using an ergo keyboard or having my hands hurt
- As my codebase gets bigger this thing is really lighting money on fire. Edits taking 5+ minutes regularly
- Honestly this thing really needs to be able to work in its own branch. While I’m sitting here waiting up to 10 minutes in the case of one edit, I would really like to be looking at the codebase and working on something else.
- All told today it wrote 3800 lines of Go in about 5 hours of working with it and $25 of tokens
Product idea 1: patch maintainer
I’m thinking how much more software this will put out into the world. And how much more work it’ll seem like to make an open source project that is all things to all users.
Example: my app manages LDAP users/groups. Config file with users and groups, and some dedicated OUs (think like folders where your users/groups are in the LDAP directory), and it makes the LDAP users/groups look exactly like the config file. Idea is you can keep your users/groups/memberships in git, so your LDAP server has no state. (We made something like this at a previous job as a way to keep people from having access they shouldn’t; we could use git history to tell auditors exactly who had access to what when.)
But right now it’s tied to my LDAP server. LDAP is very configurable, you can keep your users in the “people” OU, or the “users” OU, or the “accounts” OU, or anything you want. They might be of type inetOrgPerson
, or organizationalPerson
, or just account
, or (as Active Directory does) sAMAccountName
, etc. LDAP is a “directory”, and using it as a specific user/group database is not standardized.
So for my tool to be useful to the world at large, I would have to make it as configurable as LDAP is. A ton of setup gunk. One way that could go in the new world of Claude Code et al is, I’ll just write this one for me, and you write one for you, and it’s honestly fine because I did this for my fucking homelab on a weekend day between hanging with family and stuff.
But another option is, I could release this open source, and you could have a build pipeline that has Claude Code in there where you tell it “take this code and change it so that it works with my LDAP structure”.
Product idea 2: Infrastructure as Code platform with locally runnable test
Talking to even expensive APIs like OpenAI o1 about Kubernetes is a mess. Claude Code can write the code, test it, read the errors, and modify it in a loop. I saw it do this multiple times. What if an IaC platform enabled this without deploying first?
This would help humans a lot too!
It would also improve editor support - right now VS Code can F2 -> rename a symbol across multiple files, but Ansible and Kubernetes are just string matching, so if you misspell anything anywhere it just fails. I’m imagining something with a whole syntax and type system like a language.
Or maybe the right solution is just a library on some existing language. Use something with an extensible type system.
Maybe Pulumi could turn into this.
What it’s missing is a high level of integration so that testing locally works exactly like deploying to productionn
My project
- It’s called ldapenforcer
- I want an idempotent LDAP user/group/membership tool, so I can define them in config files and keep them in Git
- I’ve been putting it off because it would be a lot of work, probably a week or two of banging my head against the wall on nights and weekends
- Claude Code just… did it. From a note of ideas to working MVP in one day. I can’t believe it.
I just type stuff in to Claude Code then load up the Anthropic Console and watch my balance go down. (Don’t worry, it auto reloads.)
You know, the calendar view that I would prefer is a nine day week+ view, starting on Saturday and ending on the Sunday of the following weekend. The final weekend is never the current day, ensuring your week view always is showing you what’s happening at least the next couple of days.
Earthquakes
Monday, February 10, 2025
For a while, it felt like I could read everything on the Internet that I cared about, that I could follow every interesting blog, keep up with every interesting idea. It feels like that changed at some point since 2020. My guess is this is related to the cultural tremors rippling through the concrete of society outward from tumblr… something about the recent re/dis-aggregation of ideas that caused has suddenly meant there are a lot more ideas out there. Too many to keep up with.
Cordwifto Part 2
Sunday, February 9, 2025
A screenshot of a web page running in an in-app browser, talking to an in-app webserver, inside an Apache Cordova application running on the iOS simulator. The in-app browser is displaying a site built by Hugo running in-process by way of a Swift wrapper.
I kind of can’t believe I just plugged it all together. Getting the compiled languages to talk to each other was a little difficult, and going from zero to one in Cordova took a little while, but really the whole thing… works. It’s kind of a weird program in that all this functionality exists I just have to snap it together like Lego bricks.

Cordwifto
Saturday, February 8, 2025
I embedded Hugo in a Go library in a Swift library in a Cordova plugin in a Cordova app to see if it would work. Looks like it does. That’s Hugo logging to a <textarea>
and generating a static HTML page on the iPhone simulator.
Had this idea that it would be neat to be able to make an iPhone blog client that could render a new post exactly the way it would be on the site. Not sure if I’ll take this anywhere yet.
why is the US government wasting its time with a tiktok ban when there are REAL problems with chinese apps????

My first sunrise of the year this morning at Mueller Lake Park… planning to see one every month 🌅

Someone told me this yesterday and I did not believe them. Funny in an X (formerly Twitter) sort of way.

Holy shit this list of features is enormous.
S3, Postgres, CSS imports, HTML imports, inline C, JSONC package.json, color conversions, ORMless object mappings.
Amazing!
The most inscrutable icons in my dock are in the IDE and LLM sections

Opening a project that has been only in zed inside other editors and it looks SO wrong. Not just Zed’s own font, but theme too, I guess. My eyes glaze over and I don’t want to read the code. Feels like one experience I had reading an ancient Python codebase that wrapped a C library. Weird.
Wishlist: good web UI for flipping through diffs. I’d like to be able to export a few commits to a set of diffs, which I can then show on a webpage in sequence.
Especially useful for explaining how to build something, or showing LLM changes and how I had to modify them, etc
I wish I could give o1 access to a regular Git repo and have it commit its changes in a branch, with my instructions in the commit message. Surely someone else has had this idea? Where can I buy this.
Charming captcha (is such a thing possible?) from LibraryThing

htmz is a neat hack