I don’t really like supportive tooling for writing code. I work in vim and prefer bazel (with occasional support from a language server client for things like large scale renames).

I’m a reasonable person I swear to god. I know that’s just a preference, my coworkers who prefer IDEs or whatever are equally valid, and I try to help them where I can. If they say they can’t use generated files because they don’t autocomplete with their IDE, or if they want 4 repos instead of 1 because they can’t have multiple languages at once, I’m cool with that, really, I try to be accommodating, I try to help where I can.

that said, my coworker who writes his code with chatgpt is just not working out for me. I mean for one thing the code is just a mess: meaningless parameters passed everywhere, error checks that can never trigger because the implementations of the interfaces don’t throw the errors that are being checked.

but the main problem is that it’s not *designed* at all. every single one of these things is like Alton Brown used to say about unitaskers. this code passes the (generated) unit tests and that’s it. trying to use it for anything that it wasn’t explicitly and specifically designed and tested for is like trying to use a pork puller bear claw when what you want is a fork.

it’s not extensible, it’s not maintainable, if you want to add a parameter or tweak an implementation detail the only reasonable call is to rewrite it from scratch.

And what’s so frustrating about that is that it LOOKS fine at a glance. It even looks fine in code review, one chunk at a time!

@gnat I think about this post from @ceejbot all the time when thinking about coding with AI: https://blog.ceejbot.com/posts/programming-as-theory-building/

AI cannot have a theory of the system or a point of view on the problem space, so it's actively detrimental to introduce into a codebase imho. It hinders the team's development of a theory of the system, which is the only long-term artifact that holds value.

Programming as Theory-Building – Ceejbot's notes

This internet thing seems to have taken off.

@paddy @gnat @ceejbot my view is that you don't just need a theory of a system, but intuition. a gut feeling for which direction to start digging, so that you produce better than random attempts, which you can then validate against your theory of the system

as an example in the linux kernel, I judge locking designs by how they feel. it works really well, with the caveat that intuitive insights have no timeline for when they'll arrive. and sometimes that waiting is nerve-wracking

@sima @paddy @gnat @ceejbot

> my view is that you don't just need a theory of a system, but intuition. a gut feeling for which direction to start digging,

This is how I wrote programs in my teens. But that doesn't get you very far.

@TomSwirly @sima well apparently it gets you to some significant success writing locking designs in or around the Linux kernel, ha. not all that many higher echelons to reach!

@gnat yeah, I've done enough locking design in the kernel that I've done a talk about locking design patterns http://blog.ffwll.ch/2023/07/eoss-prague-locking-engineering.html

links to my blog posts in there, too

or put differently, i barely chuckled seeing that toot you're replying to fly by 😏

EOSS Prague: Kernel Locking Engineering

EOSS in Prague was great, lots of hallway track, good talks, good food,excellent tea at meetea - first time I had proper teain my life, quite an experience. ...