Meetings 2021

Agenda & Information for the Meetings held in 2021.  See Next Meeting for next meeting.
For each of the meeting dates there is a link to the meeting summary.

See Downloads 2021 for the available files associated with the meetings

Date: 14th September 2021

Agenda

  • Basic Tooling to Continuous Integration (Part1) – Conrad Vermeulen
    A journey to shipping software with confidence anytime anywhere……….Software development methodologies have evolved over the decades. Continuous integration is the norm in the agile workplace. However, the Delphi ecosystem does not have as much support as we have in other languages. Over these sessions I’ll cover some tools I’ve written/used for manipulating project files, package management, unit testing, code coverage and continuous integration (with team city / github actions).
  • Excel file handling: Excel and Flexcel: The Good, the bad and…. – Dave Martel
    Microsoft Excel files have been a hugely popular mechanism for distributing and storing data over the years. The recent debacle of Covid test data stored in Old-format Excel files illustrates why it is often not such a good idea. However, clients often love/request Excel files and most people have access to using them (Excel, OpenOffice, etc.).
    A quick review of the comparison in using Excel directly as an automation server and using TMS Flexcel. The advantages/limitations of each will be covered along with some of the newer features coming in to Flexcel that are addressing long-standing problems that prevented its use in sophisticated graphing.
  • Nugget: Unit Initialisation Strategies – Rob Lambden
    Delphi promises that the initialisation section of a unit is called on load, and that any ‘used’ units are initialized before any units which use them.  This has been found to not always be true.  C++ Builder does not support initialization in the same way that Delphi does.  This is a brief outline of the problems, things to bear in mind when building a strategy, and a presentation of one strategy used for initialisation of multiple inter-acting units.

Date: 12th July 2021

Agenda

  • Data Abstraction Layer – Rob Lambden
    Lots of our programs deal with structured data – that is a data with known definition of what the data should be like – and that data is often stored in and/or retrieved from an external system (like the OS, an API or a database). This session is a whizz through some of the code I have been using to try and standardise access to structured data.
  • An introduction to Azure – Ian Hamilton
    Azure 101, what can it do and how to start with it – a general introduction from the ground up.
  • Nugget: Using Devart – dBForge Studio for MySql – Enterprise edition – Pete Edwards

Date: 16th June 2021

Agenda

  • Computing in Education in Schools – Dr Kevin Bond Educational change is a slow process, circumstances need to be just right and a “lot of ducks need to be lined up” to make it happen. The session will cover how Computing came to replace ICT in the National Curriculum and the impact of the change on Computing/ICT at Advanced Level and other qualifications. The role of different organisations and central Government’s support in making this happen will be highlighted as well as the timeline of events that led to the change.
  • AWS Continued…..Deploying applications at scale on Amazon EC2 – Richard Hatherall
  • Getting to the bottom of a tiny tear your hair out bug in the IDE – Adam Brett
    I got caught by a fairly simple IDE gotcha last month, which killed almost a day of my time. It may never happen to you, but if it does and you remember this nugget, it might save you some time, and help you keep your hair.

Date: 18th May 2021

Agenda

  • Delphi (Nearly) Into Space – Dave Akerman How Delphi and modern radio techniques are transforming the hobby of high altitude ballooning
  • Building a game like Rummikub – Martin Hamilton Start to finish, trials and tribulations of getting a multi-player game working over the Internet
  • Nugget: LetsEncrypt – how to get going in 15 minutes – David Capps
    I will take an existing website hosted in IIS with no SSL or LetsEncrypt tools installed, and go from zero to working SSL, including automated renewals – in (hopefully) less than 15 minutes

Date: 12th April 2021

Agenda

  • Digging into LiveBindings – Stephen Ball
    Jason keeps asking me questions about LiveBindings, so I thought it might be easier to do a session 🙂 In this session, Stephen will skim the basic of LiveBindings, before diving into advanced use and binding them to different controls, including VCL, and how to enable Master Detail Detail relationships with multiple data sources.
  • Event-based and Asynchronous Programming in Delphi – Dalija Prasnikar
    Event-based programming is everywhere. Nowadays, you can hardly write any kind of application without leaning on events and messages. This simple, yet extremely powerful mechanism is also the cornerstone of asynchronous and multi-threaded programming. Without events, we would not know when some task was completed.
    But, asynchronous and multi-threaded programming consists of more than just handling multiple threads, protecting shared resources, and synchronization. It also includes designing and understanding program flow. That design aspect is often forgotten, taken for granted, and solving all the fine-grained nuances of multi-threaded programming hogs the spotlight.
    Move away from Application.ProcessMessages and take a dive into multi-threaded waters. It is not that hard 🙂
  • Nugget: JSON and XML in Postgress – Lorenz Wolf
    We are all used to storing basic types (String,Integer, Float, Currency ,BLOBs) in a database.
    Databases have evolved to work with more complex data types JSON and XML. Lets play with some of these datatypes and investigate how they may be useful.
    I will look at some specific examples using Progress DB which implements some of the datatyes extremely well.

Date: 17th March 2021

Agenda

  • An Introduction to Amazon Web Services (AWS) – Richard HatherallThere are many ways to solve problems with AWS. In this session, I’ll give a high-level walk through a handful of services offering different approaches.
  • Meta Data XML Schema to CodeGen from Marvin – Patrick Hort
    Fifteen years ago I created an ORM framework in Delphi that allowed me to use XML to define a database schema and corresponding object structure. I wrote Delphi code to generate SQL to create the database tables, and also to write out a unit with a Delphi class corresponding to each table. Due to the consistency, and because of the access to the meta-data, I was then able to write very generic code to stream database table rows into instances of Delphi objects, and vice-versa (i.e. to update the database when objects were edited). Finally, I wrote data binding classes to link the objects to UI components. This framework has paid for itself many times over (both for our core ticketing system Oscar, and for internal tools such as Marvin). But in January 2021, we started to dip our toes into C# waters –and by tweaking the Delphi code generator to spit out C# classes instead of Delphi ones, and by then rewriting the plumbing in C#, we are now able to start building a new C# UI to (over time) replace the Delphi one. In this talk I’ll be focussing on the Code Generation side of things.
  • Software Licensing Control using CopyMinder – Martin Barringer
    Software licensing control is needed to protect the intellectual property tied up in software which is to be marketed generally rather than developed only for in-house use or for a specific client. The general principle is that the software can only be run if the user has a valid licence from the organisation marketing the software. This allows the marketing organisation to ensure that the software is only run according to the terms of the licence agreement. This session describes the use of one third-party tool called ‘CopyMinder’ developed and marketed by Microcosm Ltd which can be used to enforce licence control of software in a Windows environment.

Date: 16th February 2021

Agenda

  • Using TMS Diagram Studio: A scalable surface available in Delphi VCL Apps – Adam Brett
    The TMS Diagram Studio is a fairly old component, which allows vector-drawing in a Delphi Application in a fully object oriented context. I have used it in multiple contexts in my programming work over a period of several years. This session will introduce the components how to code with them and show working examples of their use.
  • What’s wrong with VCL – Rob Lambden
    Windows 3.1 was released in 1992, Delphi was first released in 1995.  The VCL is still core to the Delphi paradigm, but 25+ years on how relevant is the VCL to current needs?  What do we want in a UI and where do we want to run it?
  • TSQL Deadlocks – Patrick Davey
    What causes deadlocks

Date: 18th January 2021

Agenda

  • Getting Started with Watson – Russell Weetch
    A look about setting up and using the IBM Watson AI engine with Delphi.
  • An intro to Smartdraw – Ian Hamilton
    A quick look at my diagramming tool of choice and what I use it for: ER & UML diagrams. Plus a peek at what else it can/may also do.
  • Components – Ian Hamilton
  • An interview with…..Richard Hatherall – Jason Chapman