And people think that this is usable for any serious work?
I'm on your ignore list, but have to reply anyway because I'm using it for a lot of serious work and today had such massive fucking success story again (even on-topic to this topic's subject field), and it's
exactly because the pattern you show is nowadays more an exception, than a rule. (I see guessing instead of checking happening, but less than with humans; the most annoying thing really is the
tone. Most humans say "here's a guess"; AI says: "Here it is! Found the root cause!" - to which I grin, knowing it's a guess from the lack of proof (it shows that when it actually checked), and go on.)
But to the today's success story, and it's a story of
not guessing, it's a story of checking, reasoning, and doing good job as a result.
So we have this energy management box. Our strength has classically been that we have responded to customer feature requests (customers = sales companies, in this context). So "we have this new Sungrow EVSE, we already sold a few, installers already installed them, can you add a support". So this time I think "fuck this life" and just ask Claude: "read this PDF with gazillion of modbus register definitions. Do a driver." Not much more prompting than that. A bit of chatting of all the new status fields I want - new enumerated charging states, current outputs, choosing between A/B charging socket, also supporting their DC charger. I continue doing other things I'm more interested about.
10 minutes later, I have sungrow.c with 400 lines of code - oh nice, could have been 2000, so it did a decent job fitting that many features in. I glance it for 2 minutes, and all I ask to change is to rename it to sungrow-evse.c
Then bravely remote flash the firmware to actual customer waiting for their Sungrow EVSE to start working. Nothing happens. Log says no traffic on modbus. So, RS485 A/B likely swapped, or EVSE-side configuration disabled the bus. Bummer - but this always happens. Tell them to go at the site and start swapping the wires, go through settings and so on.
Now, what makes this the success story? Week passes, I already forgot the whole Sungrow EVSE thing. Now my main work computer broke. Possibly CPU seating issue or RAM or something. That's the machine I'm used to using, with everything set up like I want it to. In the middle of taking the CPU out, the installer calls: "hey, I'm now at the site." Fuck, I had forgotten about the whole thing, and this is the worst possible moment.
The normal flow at this point: painfully start trying out things; look at logs, look at code, ask the installer to switch settings, swap wires, look at logs more, adjust code. Because we have two moving parts: the EVSE and our new, untested code - this is the first time we get to test it! It's a chicken-egg: we have to normally assume
neither side works.
Then what happened is magical: installer enabled External EMS control from the EVSE (so it was disabled, no wonder it wasn't working); slave_id autoscan mode Claude suggested adding (and added) locked into slave ID - car started charging - cable current limit, acknowledged current limit, and measured phase currents all popped on the UI.
Implementation perfect. First try. All features work. Didn't touch a single line in code.
Now because I have written, without any AI, more than 20 such drivers (solar inverters, hybrid inverters, some EVSE) myself in the past, I
know that for myself, writing the damn thing means I need 1 day of uninterrupted concentration, then another half-a-day with installer on site, while I meticulously debug.
Now I happened to push the experimental branch to remote just hours before the computer broke down. I could have debugged it manually on my laptop; cumbersome, I don't like it, but doable. But I didn't need to. The binary already running on the device was spotless. On the first try, no modifications needed. So had I failed pushing the branch, I would have survived. Installer got out there in no time; sales company happy, end-user happy.
That's all thanks to the
high quality of work. That's all thanks to Claude reading the documentation carefully, doing its reasoning cycle (which is nowadays hidden to prevent competitors trying to distill the model / learn from it) carefully, and writing the code carefully. A very good human programmer might have done exactly the same; I'm not one so would have had ~3-5 showstopper bugs to iron out, in a step-by-step process where first I get nothing, then I get a mangled status field but no command acceptance, then I fix the status field, then I try a different command, 2-3 times until it works. And it's not a bad process, when one can dedicate time for it. But that's the hard part. All of this was not needed as the AI did so good and careful job initially.