Ian’s June 2024 Meeting Summary

  • Building a Delphi project with FinalBuilder and Continua CI + Intro to the DPM Package Manager – Vincent Parrett
  • Codolex 2.0 – A new way to program with quality – Ricardo Boaro
  • Db replication without native support – Mika Koistinen

Ian’s Summary

This was a hybrid meeting, with 8 people at Rob’s offices in London and others on-line. Jason hosted the meeting from the London venue.

Welcome and News

Jason flashed through the usual intro slides in record time, noting that flecks were not expected to be required today.

The talk then moved to Github and the dev group. Jason had been discussing the use of Git and/or Github with Richard and Rob, who are more experienced with it. The group has actually had a Github repo for a few years with the HMRC components. The discussion has been around licensing and issues likely to affect users and contributors.

Jason commented that he has only 1 talk for July and none after that, so just the usual situation really. Dave Martell confirmed that he hopes to be well enough to do his talk in July.

Jason has a potential new pub to check out for future in-person meetings Holborn (which he did visit after the meeting and gave it a positive review). There was talk of another in-person meeting in September, to be confirmed, which would give people time to make arrangements in advance. Other potential meeting places would be Patrick’s cinema, GDK’s offices in Bromley (London) and a village hall near Jason.

Talk moved on to the Delphi summit in Amsterdam the previous week, with two of today’s speaker coming from that event: Ricardo Boaro (GDK) back in Brazil and Vincent Parrett going back to Australia. People asked whether the sessions would be generally available on-line, or restricted to those who had paid the remote viewing charge of €199.

Those who had been there or watched on-line gave their views on the presentations and drew comparisons with the Salamanca event last year. The consensus seemed to be that the Keynote(s) should have been better prepared and testing should have been done for and by the speakers. Jason thought that it would have benefited from more seating in the public areas and some pre-arranged speed dating to get people talking between sessions. Discussions then moved on to Ian Barker and how he was doing 18 months into the role and the general approach from Embarcadero around marketing and promotion of Delphi as a product. There were positives and negatives, but people were positive about Ian’s role.

Codolex 2.0 – A new way to program with quality – Ricardo Boaro

The first scheduled talk was from Ricardo Boaro of GDK Software, talking about Codolex.

Codolex is a work-flow generation tool that can be operated either as an add-in to Delphi, or as a stand-alone process. It does need the Delphi compiler to build the output (which is Delphi code), but does not specify which versions of Delphi might be required. It is a low-code tool for visually creating business processes and work-flows. GDK are currently using it themselves for their own work. Details can be found here: www.codolex.com.

The session was all demonstrations, showing the tool in action and some previews of new elements in the pipeline. He began by pointing out that the new version, v2.0 is currently free to use.

It is a graphical tool, generating flow diagrams, where the nodes represent actions or sub-processes, which together make up a larger process. The Codolex process generates pascal/Delphi code for each node, which is then compiled into the application. In short, it is a visual code builder and the code generated for each node can be viewed. It seems to create a class to handle a flow, with methods to represent the nodes.

Work-flows are built up by dropping items from a pallet to create nodes. The nodes can have many purposes, including, but not limited to, database access, interaction with REST/RPC services, file handling and many more. Database access is through Firedac, although it seems to have its own Codolex dataset for internal processing. Variables and SQL can be declared for use.

In response to questions from the audience, they are intending to build large projects to show that it is not just for odd jobs, it cannot handle individual coding standards and it cannot yet import from existing Delphi projects.

Building a Delphi project with FinalBuilder and Continua CI + Intro to the DPM Package Manager – Vincent Parrett

The second talk was by Vincent Parrett. It was scheduled as a talk on Final Builder and Continua and also his Delphi Package Manager.

Starting with Final Builder (www.finalbuilder.com), this is a build management tool that has been around since 2000. It can do things like building, code signing and zipping and currently has around 600 to 700 built-in actions, some of which will never be needed again and could be removed with a bit of housekeeping. Up to date actions include many related to git, although version control should be kept outside of the build process. Actions can be managed with Action Studio and can be written in javascript or C#.

Final Builder projects have a number of property sets within the project settings for things like version no., directories, Delphi versions, debug/release and many more. New Delphi versions have to be set up and tested, as things like directories and paths can change in new Delphi releases. It does do CPP Builder as well.

It does not handle mobile, because frequency of change and the number options is just too much to keep up with. It can call msbuild for mobile though. It can run scripts written in javascript, python or powershell and watches can be set to enable debugging of the build process. Vincent finished this section with a demo of the build process.

Moving on to Continua CI, which is a continuous integration server (https://www.finalbuilder.com/continua-ci). Vincent started with a demo, creating a new user and a new project. He showed how to set up the project options, which looks like a 10 page wizard. Continua can call Final Builder to do the actual build bit and has its own git credentials provider.

It has, or can have, multiple stages and can run on one machine, or split the process across machines using agents, software packages running on other machines, where Continua sends jobs to connected agents. It can queue builds and every build is a full build; it does not to incremental builds. Notifications can be sent to many targets. The current version only runs on Windows, but Mac and linux versions are planned.

Vincent finished his presentation with a very brief view of DPM, a Delphi package manager. The need is for a standard way of doing things in Delphi; Getit is not really a package manager and does not do the job. DPM can be found at https://delphi.dev. The server is running in oz, so there can be a bit of latency in Europe.

Packages should be distributed as a zip file with a manifest and should not be dependent on the Delphi version. There was a discussion on the best ways to do this, including distributing source code or DCUs and debug/release versions. There is still work to do on project group integration, design-time packages and dependencies.

Db replication without native support – Mika Koistinen

The third talk of the day was by Mika Koistinen in Finland and covered his database replication process. The problem is that three companies, each with their own databases, share some product information, so when detail is updated in one company database, it has to be pushed to the other databases. Standard DB replication cannot handle this situation.

They are using the Actian Zen database, which was described as having access via a Btrieve API, with no triggers, and SQL, which does have triggers. Three logging tables have been created in each database, a master change log, a changed data log, with old and new values, and a separate data log for memo fields. All inserts, updates and deletions are recorded in the logs, with one trigger for each action. The triggers have to be rebuilt for each schema change.

The changes stored in the logs are distributed with a replication service. It continuously scans all databases for changes to push to the other databases. There is a table logger component that handles changes for tables, generating SQL statements from the log data.

The system clearly must not create continuous update loops, so the replication process includes a flag that indicates that an update came from replication. When checking for updates to push, it ignores any with the replication flag, taking only updates originating in the current database. Mika reported that the replication process does have a noticeable effect on the speed of the database and there have been some locking issues.

The meeting finished promptly at 5:00 pm, with the group in London keen to get to the pub and, as no-one else took over as session admin, meant that remote users were cut off from the post meeting chat.

It was good for a group of us to be able to get together and we are looking forward to more face to face meetings.