Short: Gemini CLI modified GNU APL's C++ code to integrate the Quad_FMT class.
Long: So I don't know C++. Lets start there. Still, I have dabbled a bit solely to do a few very limited, surgical changes to GNU APL to facilitate the trygnuapl website eg. there is no /dev/tty in the cloud. All the changes are very minor and all are on the, shall we say, periphery of the code's functionality.
But ⎕FMT was going to be at the heart of things. So I became a cut-n-paste monkey. I followed the pattern I found in the code for ⎕FFT to understand how an optional system function is stitched in.
I modified Id.def and Token.def. I modified Makefile.am to add in a
new source file. One make(1) later and I saw I had several unresolved
member functions from the UCS_string class. Seems Quad_FMT requires some
services that UCS_string doesn't provide. The missing member functions
are: length() find() find_first_of() find_first_not_of() assign()
substr(). These all seemed very straightforward going by the names.
How hard could it be?
size_t length() const { return size(); }
Ha! This was going to be easy. But then I got bogged down mainly because every little tyro modification of UCS_string.hh causes (almost) everything to be recompiled. And my machine is a wimp. And I have little patience* for computers that are slower than my brain.
Then I had an idea -- use the Gemini cli from Google's free cloud shell. Now I've run this gemini AI for real only once before. It was a last-gasp effort to surmount an obstacle when deploying a trygnuapl revision that turned out to be a bug in Google Cloud's infrastructure involving docker push with an updated tagged image from cloud shell to the artifact registry... (eyes glaze over here). Gemini didn't solve the problem, but it pointed me to a serviceable workaround.
Anyway, could this Gemini AI understand and modify C++? Yes. I typed into the cli what I thought Quad_FMT needed, using English, just like I would chat with a human co-worker. During this interaction, I learned several of the missing member functions have the same names as std::string functions. Was I too ignorant of C++ to not know about some --use-inheritance switch?
It turns out Gemini will modify the code for you, after telling you its plan, displaying the deltas, and asking for your OK. So I press 'y' because what's to lose**? It's just bits on a disk.
And sure enough, the AI-designed, coded, and modified additions to the UCS_string class compiled fine on the first try. That got me past the unresolved symbols. Then a few other missing things were addressed by resuming the aforementioned monkey persona. The files include SystemVariable.def, QuadFunction.cc, Workspace.cc and Archive.cc which were summarily adjusted.
If I did this the hard way, at least I learned. Advice to further my learning is most welcome. I'm half expecting someone to say, "compile -fPIC, place the .so in/this/dir and GNU APL will pick it up automatically."
The take away is: AIs are useful coding helpers now, today, for real in Jan 2026. To a guy who once accessed UNIX via parity and stop bits, I find this revelation stunning.
* Larry Wall encourages coders to develop the three great virtues of a programmer: laziness, impatience, and hubris.
** one day, someone will press 'y' and Skynet will be born.