What is the path toward more effective AI integration into Oxygene? Chatgpt isn’t the greatest Oxygene coder and supposedly if I use the paid version it will learn better (still hasn’t mastered the difference between stirngs in single vs double quotes, for instance), but I don’t want to do that if there’s something on the horizon that’s more effective and convenient.
Hi,
Have you tried CodeBot? CodeBot for Elements | RemObjects Software . It supports many different back-ends, but personally i use it mostly with gpt-4.1, and it is very good at generating Oxgene code.
I’m using Software Architect GPT with GPT5, and because I don’t think things through I gave it a huge project that it seems to have digested pretty well. The problem – and this may have to do with my AI skills – is that it stores everything not only on my computer but verbosely in the browser. So we map out the goals and milestones of the project as a whole, then we bite off chuncks my human brain can deal with at one time, which may even be less than a milestone. Getting it to cycle down to the smaller chunk is an impossibility, it rewrites and reposts the entire project with every little tweak. At first I thought it expected me to read all of that but I realized it gets posted back with each message I submit to it and the AI basically starts the whole thing from scratch with each postback, so all of that text is basically notes to itself. I’m going to see if I can start a new chat for each chunk and get the new chat to reference the project without blorping it back to me with each answer. The approach for large projects should be to create the overall outline, create granular milestones, and then tackle each milstone while inserting the necessary hooks to be used later and which are dictated by the overall project requirements. I’m going to try to open a new chat for each milestone and get it to refer to the project chat outline for guidance, and then if we do something during a milestone that changes the description of the overall project, go back to the project chat and update it. That’s my theory. It does fall down on Oxygene in places, and being AI it just throws C# code in there, but it’s not too bad. I’ll give CodeBot for Elements a shot, though, thanks.
Yeah.
TBH i haven’t relly played much with this more “agentic” model to just let the AI go to towmn on a while project codebase on its own (mostly because i dont just ave thousands of dollars to burn or failed stuff
).
I’m mostly using it for small and specific coding tasks, foused on individual files or even just methods.
For example, the other day i was writing a small command line tool to help me automate verifying and manageing the setup the dozens of domains we have, as i consolidated them all to AWS. The AWS APIs are a pain to use directly, IMHO, and badly designed for direct use. But it worked really well to just have CodeBot generate me helper method after helper method for each task, as i needed them. Just simple primpts like “ok, next lets get all the domains”, or “ok, how do i replace a record”?
The result was this super simple-to-use API, and I basically wrote none of it myself, and it was all fine out of the box
Route53Helper = public static class
public
property Credentials: Amazon.Runtime.BasicAWSCredentials;
property EndPoint: RegionEndpoint;
constructor .cctor;
method DeleteRecord(aHostedZoneId: String; aRecordName: String);
method EnableDomainTransferLockAsync(aDomainName: String);
method GetDomainContacts(aDomainName: String): tuple of (ContactDetail, ContactDetail, ContactDetail, ContactDetail);
method GetHostedZones: RemObjects.Elements.RTL.List<HostedZone>;
method GetRegisteredDomains: RemObjects.Elements.RTL.List<DomainSummary>;
method GetRegisteredNameServers(aDomainName: String): RemObjects.Elements.RTL.List<Nameserver>;
method GetZoneNameServers(aHostedZoneId: String): RemObjects.Elements.RTL.List<System.String>;
method GetZoneRecords(aHostedZoneId: String): RemObjects.Elements.RTL.List<ResourceRecordSet>;
method ListHostedZones: RemObjects.Elements.RTL.List<System.String>;
method ListRegisteredDomains: RemObjects.Elements.RTL.List<System.String>;
method ReplaceRecord(aHostedZoneId: String; aRecordName: String; aNewRecordSet: ResourceRecordSet; aTTL: Int64 := 300);
method ReplaceRecordWithA(aHostedZoneId: String; aRecordName: String; aA: String; aTTL: Int64 := 300);
method ReplaceRecordWithCName(aHostedZoneId: String; aRecordName: String; aCNameValue: String; aTTL: Int64 := 300);
method UpdateDomainContacts(aDomainName: String; aNewContacts: tuple of (ContactDetail, ContactDetail, ContactDetail, ContactDetail));
method UpdateDomainContacts(aDomainName: String; aNewContact: ContactDetail);
method UpdateDomainNameServers(aDomainName: String; aNameServers: RemObjects.Elements.RTL.List<System.String>);
end;
Usually i just ask CodeBot to add one method for me at a time; sometimes a whole file.
side form that working better, i also don’t want the AI to just go to town and mess up my entire codebase to its liking. But maybe thats because i’m anal about my code ![]()
looks like you used a “reasoning” model that outoputs its full thinking process. Deepseek did that for a while, i found it very annoying. And no way to keep it sepaarted from the actual real response, either.
Yeah, i find the Oxygene if generates is usually 80-90% spot on, with just a few C#'isms, sometimes. That said, i also find it doing Oxygene’isms whe i ask it for C# code (Fire is all RemObjects C#)… CodeBot I(vs the general ChatGPT app) has a lot more syste prompting to teach it about Oxygene- and Elements- specific stuff, based on the language and platform you’re working on, and that does help too; without it, i e.g. found it woudl ofte try to Swifty-fiy or (worse) Xamarin-ify Cocoa code for e.g. Fire, instead of giving me the pure Cocoa API calls.
Cool, let me know how you like it!
—marc
Have to stick with Visual Studio so I’m going to make my own custom GPT.
Chat assumes a null conditional operator: var shipments := if assigned(response) then Object(response).GetType().GetProperty(‘Shipments’)?.GetValue(response) else nil; Is it getting tye syntax wrong or is that just not part of the language?
Oxygene uses “:” instead of “?.”, see Member Access. In fact, we had this tears and years before C# and other C-based languages introduced the “elvis” operator ;).
ChatGPT still often gets confused between language syntaxes and needs to be reminded. I think I’ll add a note about this to the system prompt.
On this topic I have tried GitHub CoPilot in VS where the suggestions seem to be getting better but there is some editor integration issue where Tabbing a suggestion doesn’t add it. There was no way I could find to do so.
Yeah, thats on our list. Thats a feature Microsoft added to VS “under our feet” but it seems to need some explicit support to actually work fully, it seems.