Quick Summary
Geoffrey Smith gave a presentation on his recent ChatGPT experiments.
He has enabled chatGPT to do delphi coding on his laptop using NGrok.com
facilities. It can (on command) upload source files, check them with
fixinsight, compile them, and examine the output of the builds. (and
repeat)
ChatGPT hits an NGrok URL, The URL’s domain name is currently assigned
for Geoff’s laptop by NGrok (I think). This NGrok reverse proxy server
then forwards the request onto Geoff’s laptop via some sort of
cleverness. (Presumably with firewalling, etc)
He initially showed a demo of chatGPT connecting to get the current
time. Apparently it doesn’t know the time, it does know the date.
There is an OpenAPI spec required which is used to create the Rest
Endpoints, and Rest clients.
https://swagger.io/specification/
He has also got ChatGPT to build a few simple? games in Delphi. Snake
(Quite a few versions, perhaps while learning how to get ChatGPT to do
its thing) Tetris, etc.
Geoff got it to build a Minesweeper game for us.
We couldn’t think of any games to get it to create, this was one that
ChatGPT came up with when asked.
That seemed to work quite well.
He asked to change some part of the game, and ChatGPT then did that.
Interestingly, it recreated the entire main form source file to do it.
Currently there is not an editing facility available, and it may be
difficult to implement.
It apparently has some difficulty in generating the Res file? so needed
to do a first build from the ide. Once built it could then build it
itself.
Misc Stuff
Geoff also showed us, and then played some music he got ChatGPT to
create on the Site UDIO.com
There is also SUNO website for creating music.
Geoff has a few GPT’s (customised personal ChatGPT)
ChatGPT is more advanced, but Apples Siri can connect into more things.
ChatGPT likes python. It can create Python Code for analysing data that
you get it to look at.
Delphi AST converts Delphi into small chunks.
So can feed LLM with small chucks.
(Token Size of LLM is limited)
You can have local LLM’s (if you have enough compute) Perhaps to keep
your data from being used for training.
Spring4D, Nullable
I gave a very brief demo of some use cases for, and using spring4d’s Nullable
The discussion following was a lot longer.
Some use cases
Caching variables, where load time is expensive.
Returning variables, where there may or may not be a value returned.
(Rather than a boolean result, indicating if a var/out parameter has
been returned) As a general Unknown value (as per null entries in
databases)
Paul mentioned that Rust had return values that are ok (with info)
or no (with error)
I had a quick look at this, it also seems Rust has a fairly easy way of
either grabbing errors for handling, or passing them up the stack with
the ? operator. I guess (I know very little about rust) a bit like a
per line try except functionality??