Meetings 2019
Agenda & Information for the Meetings held in 2019. See Next Meeting for next meeting.
For each of the meeting dates there is a link to the meeting summary.
See Downloads 2019 for the available files associated with the meetings
Date: 12th November 2019
Agenda
- Roll your own remote desktop support in Delphi – Dave Capps
Rather than using Logmein, Teamviewer, or similar packages for remote support, we can build it into our own software – so no third party software needs to be installed and it’s always available on any machines our software is running on. I’ll explain the pitfalls involved in rolling our own remote desktop viewing and control software - Working with RAD Studio and Android Things on Raspberry Pi – Glenn Dufke
Android Things is Googles variation of Android, targeting IoT applications. Learn how you can work with IoT applications using RAD Studio and access hardware components with ease.
- REST Services with MARS Curiosity REST Framework – Glenn Dufke
Using the open source REST framework MARS Curiosity by Andrea Magni, you can build powerful REST servers and clients the Delphi way. By utilizing FireDAC you can connect to any supported database easily, and even serve data to a webpage.
Date: 14th October 2019
Agenda
- Ten Modern Language Features You Couldn’t Possibly Be Without, Maybe – Will Watts
Will Watts is a sucker for the latest glitzy baubles added to programming languages. Here he examines a selection of those which are either the most useful or merely the most interesting. - Actions, Action Lists And Action Managers – Brian Long
For those who never got the memo about Delphi’s action components this session brings you up to speed and shows you what you have been missing and what they can do for you.
This session looks at what actions are, how they are set up, how you use them, how they simplify certain UI setup tasks, and includes a run-through of the various pre-fabricated ones supplied in the Delphi libraries. If you’ve not taken the leap to use actions yet, now is the time for…. action! - A Simpleton’s approach to writing a Windows Service – Robert Evans
How to quickly construct basic Windows Service programs with Delphi and the IDE Projects manager
Date: 11th September 2019
Agenda
- Skia graphics library – Dave Capps
Skia is Google’s fast graphics rendering library (which is used amongst other things by Chrome). It can be used as a replacement for GDI/GDI+/TCanvas/System.Drawing.Canvas for various reasons – it’s cross platform, high performance, and easily bundled since it’s simply a drop in DLL/library. This talk will have a look at getting started with Skia, how to do the Skia equivalent of basic GDI rendering, and what additional rendering options Skia has that can make your graphics look more complex or higher quality without much extra code. - An intro to Oxygene – Ian Hamilton
What is Oxygene, what can it do and how to get going. - What’s new in Delphi 10.3.2 – Jason Chapman
Date: 9th July 2019
Agenda
- A PDF Report Generator as a free-standing REST-based Web Service implemented with Delphi, WebBroker and FastReport – Robert Evans
An outline of the construction a real-world Web Service application, design trade-offs and a few pitfalls.
I propose to outline the application requirements, “block-diagram” the eventual implementation, talk about some of the design trade-offs and subsequent tweaks to overcome performance issues. - Neo4j & the Data Ingestion – Pete Sykes
Following on from his graph database (Neo4j) presentation in May, Pete is going to share his experiences of attempting to solve April’s code huddle challenge using a graph DB approach. - Using Delphi for genome research – Ray Bridges
- Directory OPUS 12 – my experience – Martin Hamilton
- REST discussion follow on plus TMS WEBCore / REST services & clients – lead by Jason Chapman
Date: 10th June 2019
Agenda
- Using OmniThread Library – Russell Weetch
The session is an overview of the applications used to create 100,000 invoices in under 25 minutes on a fairly old bit of kit. Primarily we will look at the parts of OmniThread library we used to achieve this and the impact of the different memory managers we tried to improve performance. The code demonstrations will be simple implementations of setting these up rather than the convoluted code of the actual applications.
- PI / Arduino / Lazarus – Lorenz Wolf
In this session I will go through setting up Lazarus /fpc (free pascal compiler) on various versions of Raspberry PI and using it to control the various GPIO outputs on the PI – (blink led)
Time allowing I will also demonstrate how to use an Arduino compatible board.
Date: 15th May 2019
Agenda
- First Steps With A Graph Database – Neo4j – Pete Sykes
What is a graph database and why use it?
Relational databases are great for structured data in structured environments but are not good at answering unanticipated complex queries. Document databases are excellent for unstructured data and fast text retrieval. In a graph database, however, although data is represented by nodes and relationships there is also a much greater emphasis on the latter and on finding connections than we see in the relational model. In this session we will explore the differences and create a simple rail travel booking example.
- Full-stack read-write web application in Delphi using PostgreSQL, ODBC, ISAPI Dll, HTML/Ajax/JavaScript/JSON – David Mew
We will build, from scratch, a browser-based “To-Do List” application. We will use ODBC to read/write to a PostgreSQL database, and will use Ajax with a JSON payload to provide asynchronous page updates. The web pages (and Ajax messages) will be served by an ISAP dll written in Delphi.
Date: 10th April 2019
Agenda
- Code Huddle – Large Scale Data Importation Challenge – Adam Brett
SQL started as a syntax to define and retrieve data from relational databases. As data-structures have grown more complex SQL has developed to a point where it now more-or-less qualifies as a language. Many programmers know a little SQL, but often use compiled code to do a lot of the “hard graft” of managing data, and therefore have limited knowledge of the full breadth and power of modern SQL.This session may be the first of several, and is intended to be of an intermediate standard and review “somewhat more advanced” aspects of SQL SELECT and data retrieval, working on beyond basic SELECT statements, looking at and reviewing common pitfalls and gotchas. While this appears a basic problem, it can become complex, if users are attempting to collate large and complex relational data-structures.
The session will be interactive, with SQL queries being written and compared through the session. Know-alls in the room will be welcome to pitch in, particularly to discuss differences between the SQL demonstrated and their own versions of the language, and perhaps also with better ways to write particular statements.
There are many sub-dialects of SQL. This session will use ElevateDB, a written-in-Delphi relational SQL database which fully implements the ISO-SQL-2003 standard. This should mean that most of the SQL covered is common and comprehensible to those present.
Date: 11th March 2019
Agenda
- Home-grown RAD Server – Brian Long & Nick Gabb
Put off by the dizzying fees EMBT charge for RAD server licensing I decided to “grow my own” system to suit the needs that I’d considered RAD Server for. After some brain-storming, chewing the cud and generally putting the world to rights an idea gestated that we thought just might cover all the required bases. A general purpose minimalist REST server implemented in C#, which defers all requests to a Delphi DLL using a simple parameterised control mechanism, resulting in flexibility and performance. This session looks in more detail at the requirements and the implementation. - Advanced SELECT SQL: Nested statements, other tips and tricks, cursors and procedures – Adam Brett
SQL started as a syntax to define and retrieve data from relational databases. As data-structures have grown more complex SQL has developed to a point where it now more-or-less qualifies as a language. Many programmers know a little SQL, but often use compiled code to do a lot of the “hard graft” of managing data, and therefore have limited knowledge of the full breadth and power of modern SQL.
This session may be the first of several, and is intended to be of an intermediate standard and review “somewhat more advanced” aspects of SQL SELECT and data retrieval, working on beyond basic SELECT statements, looking at and reviewing common pitfalls and gotchas. While this appears a basic problem, it can become complex, if users are attempting to collate large and complex relational data-structures.
The session will be interactive, with SQL queries being written and compared through the session. Know-alls in the room will be welcome to pitch in, particularly to discuss differences between the SQL demonstrated and their own versions of the language, and perhaps also with better ways to write particular statements.
There are many sub-dialects of SQL. This session will use ElevateDB, a written-in-Delphi relational SQL database which fully implements the ISO-SQL-2003 standard. This should mean that most of the SQL covered is common and comprehensible to those present. - SQL Server black-box – Mark Jacobs
Using FTP only to talk to the server and upload/maintain web pages the nugget will cover:
MS SQL server and connecting to it.
Database and table maintenance considerations.
Email invitations and password resets.
User levels and maintenance.
Security considerations.
Date: 13th February 2019
Agenda
- Talk: Taekwondo Case Study – Neil Parrish
Neil recently provided software for coverage of the Manchester Taekwondo Grand Prix, shown online by the BBC. The system took feeds from the electronic scoring system and combined it with
info from the venue system to drive the TV graphics. We’ll see how it all worked, what was easy and what was not including how to produce a REST server with Delphi Pro. - Nugget: Dynamically Decoding Googles search results – Mark Jacobs
I devised a random website page on my jacobsm.com, which uses a dictionary of search words (the English dictionary with 267,751 words in it). It selects a word at random from this list and then uses Google search to get the first 25 results within the last month into a list. It then selects one of these 25 links at random and attempts to render it in an IFRAME on the random site page. I will be demonstrating it in action, and dissecting how it works and the caveats I had to program around in order to get it working properly. - Talk: Auto-generated SQL v. write your own in SQL Server – Eric Thorniley
We have two opposite approaches to connecting to databases. We can use an object-relational mapper (ORM) which allows us to create our business objects and persist them without troubling ourselves with any SQL – it does it all for us. The alternative is to start by designing the data structure in the database and then build our code to use it.
I have a project where the supplier of the main system used a commercial ORM system but, in my extensions to it, I used the old-fashioned method of designing a data structure first. The connection between the two system was via hardware controllers that knew nothing of either database.
I will go through some of the consequences of the two approaches, including some significant performance issues. - Nugget: RAD Server – Ian Hamilton
An intro to RAD Server, what it is and how to start with it.
Date: 15th January 2019
Agenda
Meeting Summary
HMRC’s “Making Tax Digital”
- Talk on HMRC’s Making Tax Digital
- Talk on how to work with OAUTH-2
- Talk on HMRC’s documentation
- Discussion on how to consume RESTFULL API’s in general
- Code Huddle – 3 groups – how far can you?
For the rest of 2019 dates
Previous Meetings:
Agendas for previous years can be found here: