Adam’s March 2023 Meeting Summary

  • Reflections on Working with Legacy Applications – Ian Walker
  • The Bootstrap Library – Will Watts
  • Open Mic for Mote /Fleck/Gobbit/Tools / Tricks / Ticks

Adam’s Summary


A possible summer face-to-face meeting was discussed.

There was a convincing dialogue about the need for Delphi to have a cross-platform IDE. Members felt that an IDE Running on Mac was now essential in many programming contexts. Will Watts emphasized the leaps forward in code-editor functionality that were now normal outside Delphi, areas where Delphi lagged badly, saying that Embarcadero really needed focus on improving in this area.

Reflections on Working with Legacy Applications – Ian Walker

This was a fascinating non-coding based talk from a veteran programmer (he started writing code in 1961!). Ian emphasized that most systems are legacy. A system is non-legacy for about the first 2 or 3 years of its life and most systems live for decades.

Typical features of legacy code?

Programs that:

 * Are stuck developing using an old or non-current IDE/Compiler.

 * Depend on third party component(s) without source, orphaned or no longer in development.

 * Use elaborate home-crafted components, often using detailed hierarchies of classes, form-inheritance.

 * Are tied to a legacy DBMS.

 * Have little or no documentation, or if they have any it is wrong, out of date or confusing.

The features of the resulting systems:

 * Fragility, changes in one area may result in unexpected consequences.

 * Multiple authors, often with very different code-styles.

 * “Eras” of code: Segments written with RAD, others with strong use of Interfaces, and so on.

 * Poor structure.

 * If key staff with detailed knowledge of the code depart, problems can be severe.

His observations

 * Fashionable approaches to code come and go, Agile, Waterfall etc., these are all temporary. None really capture the reality of writing code, particularly around deadlines and budget constraints.

 * Major issues which really impinge on development tend to be things like OS upgrades, DBMS upgrades and other versioning issues, none of which are captured by conventional software management systems.

 * Management will rarely spend enough money to maintain and support a working system.

 * Real-world code always contains segments which have been written in a rush, badly or by someone who’s coding skills were questionable.

 * Fresh starts are rare, so most systems contain layers of “sediment”, with sections that are more than 20 years old.

 * Ian believes that comments SHOULD be in code, and should be extensive. The only issue with this is keeping comments up to date, accurate and systematically placed in code so you can find them.

This was a really fascinating talk. Ian continued with a long section on the psychological profile of coders, and how to best manage a team of us. I would encourage members who didn’t see it to watch this section of the talk. I was particularly taken by the fact that programmers are typically quite “novelty driven” and like problem solving. This results in personality-types who are not particularly good at maintaining legacy systems! Legacy (most of our work) requires less raw creativity and more craft, less idealization of the latest new, shiny gadget and more focus on keeping the ship ship-shape.

The Bootstrap Library – Will Watts

This was a presentation on web-technologies for a Delphi audience.

Bootstrap provides a very large set of tools for styling web-UI. Standard systems for buttons, menus, editors, grids etc.

Several Delphi web-frameworks can now use Bootstrap (TMS Webcore, Intraweb and the THTMLComponents), so there is a direct Delphi tie-in.

Will spoke really well, with a few of his slides extended by co-pilot (VSCode’s Code-writing AI!)

He gave a quick summary of the history of CSS, and then shows a vanilla webpage, followed by a series of Bootstrapped versions.

Key advantages with Bootstrap:

 * Responsiveness, a website should look decent on either a phone, tablet or a laptop / PC. Items size and scale well, and things like the layout (across or up-down) are managed more fluidly.

 * It is installed everywhere, so it will not make your site slower, and you will find most web-tools work well with it.

 * Your website will look modern.

 * You can achieve really detailed complex UI designs.

Key Disadvantages of Bootstrap:

 * Upgrading between versions is a “bloody nightmare”. Bootstrap decorates CSS, which is then applied via scoping. UI changes made in an outer scope may (or may not) affect an inner scope. Upgrades can result is substantial changes to key words used in the CSS and scope of application of styling. This makes Bootstrap projects extremely fragile.

Will’s talk included a lot of key detail I can’t cover here, including showing actual decorating of the CSS/HTML of a site and how these changes reflected through to the site. I would encourage members who didn’t see it to watch the video.

Open Mic for Mote /Fleck/Gobbit/Tools / Tricks / Ticks

Rob Lamden spoke about TDictionary and TObjectDictionary

A really good, short talk showing how to override two methods on TDictionary (Equals and GetHashCode) to enable the class to search for and return simple data-types such as integer without the need for an intervening TObject.