Meetings 2018

Agenda & Information for the Meetings held in 2018
For each of the meeting dates there is a link to the meeting summary.
See Downloads 2018 for the available files associated with the meetings.

Date: 12th November 2018
Agenda

Meeting Summary
In a change to the previously published schedule the following will now be presented at the meeting in November.

  • Talk: Writing real-time collaboration software – David Capps
    As a case study I’ll demonstrate some software that allows multiple networked users to view and edit resources in real time, with a permissions system allowing users to see different parts of a resource while maintaining a (hopefully!) consistent and responsive view.
  • Talk: Creative debugging techniques: Part 2 – Brian Long
    The second part of a two-part talk on interesting debugging techniques to assist in resolving all sorts of tricky bug scenarios. Warning: this session may contain the CPU window!
  • Nugget: FMX – 3D elements on forms – Ian Hamilton
    A quick look at using 3D elements on forms both statically and dynamically.
Time Description Speaker
12:00 Registration (with tea and coffee)
12:00 News/Questions Brian Long
13:00 Break/Lunch
13:15 Creative debugging techniques: Part 2 Brian Long
14:45 Break
15:00 Writing real-time collaboration software David Capps
16:00 FMX – 3D elements on forms Ian Hamilton
16:30 Group Discussion All
17:00 Finish

For the rest of 2018 dates

Previous Meetings:
Date: 23rd October 2018 – TMS Day

See: TMS WEB Core event, in association with the UK Developers Group
Meeting Summary

Date: 10th October 2018
Agenda

Meeting summary
“Display Board Code Huddle”

The “client” wants to position display screens at multiple points around a site in order to display information. These screens will be HD-TV-style video monitors, with plug in “micro-PC” computer devices attached.

The day will be split into two session.

  1. Members have volunteered to engineer a solution to display on the day using the following technologies:
    • Paul Woodhams – Intraweb
    • Adam Brett – DevEx + EDB-database
    • Neil Parrish – App Tethering
    • Martin Hamilton – Fast Reports
  2. Members will have the opportunity to split into groups and engineer their own solutions to present to the group.
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Pete Sykes
13:00 Break/Lunch
13:15 Intro & Fast Report Martin Hamilton
13:45 DevEx / EDB Adam Brett
14:05 App Tethering Neil Parrish
14:35 Intraweb Paul Woodhams
14:55 Break
15:10 Group coding All
16:30 Presentation of group solutions. All
17:00 Finish

Date: 11th September 2018
Agenda

Meeting Summary
“A Day with Marco Cantu”

  • Talk: Status of the Product – Marco will talk about the current Roadmap
  • Talk: Deep Dive – Delphi Modern Language features
    • Use in the product
    • Real life examples
  • Talk: REST with and without RAD Server
  • Talk: FireMonkey – Confidence in deploying with target platform API versions (Apple / Android)
  • Talk: Windows 10 (if time permits)
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Jason Chapman
12:45 Break/Lunch
13:00 Status of the Product Marco Cantu
13:45 Deep Dive – Delphi Modern Language features Marco Cantu
14:15 Break
14:30 REST with & without RAD Server, FireMonkey and Windows 10 (if we can squeeze it in!) Marco Cantu
16:00 Q&A / Group Discussion Marco Cantu / Jason Chapman
17:00 Finish

Date: 16th July 2018
Agenda

Meeting Summary

  • Talk: Creative debugging techniques: Part 2 – Brian Long
    The second part of a two-part talk on interesting debugging techniques to assist in resolving all sorts of tricky bug scenarios. Warning: this session may contain the CPU window!
  • Talk: Crystal reports 2016 and the Cut Light library add-on for ad-hoc SQL queries – Mark Jacobs
    Mark will be presenting the use of ad-hoc SQL queries using an add-on library called Cut Light within a Crystal report.
  • Nugget: Model Maker Code Explorer – Adam Brett
    Model Maker Code Explorer has been an extremely valuable Delphi IDE extension since around Delphi 5 or 6. It automates a wide variety of coding operations, and provides a clean easy-to-use interface to navigate code. In the past few weeks, it has been announced that it will transfer to being a free tool, usable in all versions of Delphi above 7. This short talk will discuss the uses of the tool, its capabilities and how it is now being maintained and developed.
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Brian Long
13:00 Break/Lunch
13:15 Creative debugging techniques: Part 2 Brian Long
15:00 Break
15:15 Crystal reports 2016 and the Cut Light library add-on for ad-hoc SQL Mark Jacobs
16:15 Model Maker Code Adam Brett
17:00 Finish

Date: 13th June 2018
Agenda

Meeting Summary
June is “WebApp Day” where there will be a number of talks and nuggets on Web Applications.

  • Talk: My Experiences with Intraweb – Paul Woodhams
    Starting out using Intraweb – Creating applications presenting data.
  • Talk: Google Sites – Eric Thorniley
    Classic vs New Google Sites – a quick overview. We will build a new site and publish it complete with new SSL certificate. Google Forms for user input and automation using Google App Scripts. How to get your Google App Scripts into Visual Studio via version control (GitHub or Bitbucket)
  • Nugget: Iterating the DOM – Mark Jacobs
    1) General introduction.
    2) My Task to change the appearance and behaviour of an Askia question screen.
    3) Peering into the HTML of the screen.
    4) Writing JavaScript to alter the HTML after it has fully loaded, by iterating the DOM.
  • Nugget: TMS Web Core – Jason Chapman
  • Nugget: uniGUI – Martin Hamilton
Time Description Speaker
12:00 Registration (with tea and coffee)
12:00 News/Questions Jason Chapman
13:00 Break/Lunch
13:15 Intraweb Paul Woodhams
14:15 TMS Web Core Jason Chapman
15:00 Break
15:15 Google Sites Eric Thorniley
16:15 Iterating the DOM Mark Jacobs
16:30 uniGUI Martin Hamilton
17:00 Finish

Date: 15th May 2018
Agenda

Meeting Summary
To start the day we will have a talk on the following:

  • Talk: C++ Ranges – Will Watts
    In 2020, C++’s Standard Template Library is slated to receive a massive makeover. Its container classes, such as vector and set, will be converted from using pointer-like iterators to new-fangled kind of objects called ‘ranges’. Will Watts will explain what a range is, why they are thought to be better, and walk through an unusual calendar-printing program that shows them off.

May is “Debugging Day” where there will be a number of short talks on software and methods used for code debugging.
Each speaker has been assigned 30 minutes – this is to allow for the nugget and any specific questions to be asked after each session.
There is a short group discussion at the end.

  • Demo: MadExcept – Paul Woodhams
    Paul will walk-through how to use the application, providing a demo of the reporting process using a purpose built application designed to crash.
  • Nugget: DebugView – Adam Brett
    Delphi programmers will be familiar with the procedure OutputDebugString(). This causes useful messages to be shown in the Delphi IDE debug-messages window when running a program in debug-mode. DebugView is a Microsoft utility program which can be run on any computer and which surfaces the same messages, without Delphi running, allowing programmers to debug execution of a program on a remote machine.
  • Nugget: Logging from multiple threads without affecting performance – David Capps
    We need to log debug messages from multiple threads, without slowing things down, and without filling up the users’ disk with historical logs – this is how it works.
    David will also speak about his experiences tracking down memory leaks.
  • Nugget: EurekaLog – Dave Martel
  • Nugget: system audit -> message dialogue -> basic logging -> cnDebugger – Jason Chapman
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Pete Sykes
13:00 Break/Lunch
13:15 C++ Ranges Will Watts
14:15 MadExcept Paul Woodhams
14:45 Break
15:00 DebugView Adam Brett
15:20 Multi-thread logging + Tracking down memory leaks David Capps
15:50 EurekaLog Dave Martel
16:20 cnDebugger Jason Chapman
16:50 Discussion All
17:00 Finish

Date: 16th April 2018
Agenda

Meeting Summary

  • Talk: Parsing text using ANTLR (and Hime and Coco/R) – David Capps
    Parser generators let you write a set of rules to parse input text, generate objects representing the data in the input, and provide clear feedback when the input doesn’t match your expected data. We’ll look at three different parser generators and how they can be used to easily add some customising into your applications.
  • Talk: Software Design Case Study – Andrew Cutforth
    I was asked to redevelop some software that produces technical spec documents because it was clunky and unreliable. It currently uses xml to hold the topics structure and rich text to hold the paragraphs. I am moving all of this to a database and making the formatting a production step. This is a partially written system which I will demo and discuss the pros and cons of doing it this way.
  • Nugget: Security for the Internet of Things Gets More Ridiculous Every Day – Mark Jacobs
  • Nugget: Custom Browser Search Engine Shortcuts – Brian Long
    Online Delphi help can be accessed quicker if you know how. Let’s see how! The same applies to locating information on Stack Overflow, amazon, or your favourite web site
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Brian Long
13:00 Break/Lunch
13:15 Parsing text using ANTLR (and Hime and Coco/R) David Capps
14:30 Custom Browser Search Engine Shortcuts Brian Long
15:00 Break/Lunch
15:15 Software Design Case Study Andrew Cutforth
16:15 Security for the Internet of Things Gets More Ridiculous Every Day Mark Jacobs
17:00 Finish

Date: 14th March 2018
Agenda

Meeting Summary

  • Talk: Stretching ElasticSearch – Peter Sykes
    ElasticSearch is a hugely popular, RESTful, open source, non-SQL document database with blazingly fast textual search capabilities. Picking up where Patrick Hort left off last September (but with a brief recap) Pete will illustrate its advantages (and disadvantages) for performing textual searches of generally structured data. Any program code will be in C# but the important stuff is all in how queries are structured and that is all done using JSON.
  • Talk: Fun and Games with 3D surface plotting: From VCL to Firemonkey – Dave Martel
    Who doesn’t like seeing 3D models and surfaces being rotated and zoomed? This session covers a commercial application (though it will be provided for free to clients) for visualizing various properties of their samples. These vary from the real 3D shape of the sample surface (down to very small scale) to electrical and chemical properties. The initial application is written in the VCL and makes use of the free GLScene components for interacting with OpenGL.
    We ran in to issues on some graphics cards, and have a hankering to make this available cross-platform, so decided to investigate Firemonkey. This is in an early stage (so there is plenty of scope for digging around in the code). Examples of the difference in philosophy will be shown. Currently the 3D aspects are taking shape nicely, but the 2D image display is giving us more headaches as our component provider for 2D image handling and annotation is not yet onboard with Firemonkey (and may not ever be).
    If we get through the code and questions early, I will show some of the nicer demos I have found making use of the various system.
  • Nugget: Joy of JSON – Peter Sykes
    JSON – JavaScript Object Notation is well known as a lightweight, human-readable format used particularly in modern web communications. Patrick Hort did an excellent introduction to JSON last September but, for those who missed that, Pete will do a very swift recap of the format itself before focusing on hints and tips for using it for ad-hoc persistence of objects. The examples will be in C# but the principles will be applicable to any language with a reasonable JSON library.
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Pete Sykes
13:00 Break/Lunch
13:15 Joy of JSON Pete Sykes
14:00 Fun and Games with 3D surface plotting: From VCL to Firemonkey Dave Martel
15:15 Break
15:30 Stretching ElasticSearch Pete Sykes
17:00 Finish

Date: 13th February 2018
Agenda

Meeting Summary
Code Comparison Day: Different implementations of Calendar-like Components

  • Talk: TMyCalendar Component using TMS Diagram Studio – Adam Brett
    My line-of-business applications include a “Work Surface” which is a TMS TatDiagram component, on which the program draws a series of objects. The atDiagram is powerful because it is scalable. Offering a lot of the advantages of the new Delphi Firemonkey UI components within a VCL application. This means the programmer or user can re-scale the Work Surface and objects on it will also re-scale smoothly. However, atDiagram comes with a fairly limited set of elements: DiagramBlocks, Text, Shapes … So complex IU requires a programmer to build composite components using these elements.
    I have rarely done pure IU design programming, so writing a calendar using the elements in TatDiagram was an interesting challenge. The development was done on a “that’s good enough” basis, trying to code cleanly and effectively, but in a limited time.
  • Talk: It’s a date! – Peter Edwards
    Utilising a calendar object to represent time lined activities & control of associated resources.
    In the real world a user interface that deals with tasks in a manner that a user can immediately relate to is always a big bonus and of course an easy sell. We can take a look at how sales orders and distribution logistics can be merged together to provide easy overview daily tasks and provide valuable data aggregation as an unexpected by product.
  • Talk: Recurring Tasks using TMS  – Jason Chapman
  • Talk: Calendar using MySQL – Martin Hamilton
    As part of the “Campsite Booking System”, I use MySQL to keep track of bookings and present them onto a calendar for user interaction.
    Here I outline how it works.

    Separate from the Calendar Day
  • Nugget: REST Update – Peter Edwards
    There will also a short review on the new Jason reader Writer in 10.2.2  that completely negates the work around that I presented last time.
Time Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Jason Chapman
13:00 REST 10.2.2 Show and Tell Peter Edwards
13:15 Break for Lunch/Catch Up
13:30 Session Introduction & TMS Component Adam Brett
14:15 It’s a Date! Peter Edwards
14:45 Break
15:00 Recurring Tasks using TMS Jason Chapman
15:45 MySQL Component Martin Hamilton
16:15 Group Discussion All
17:00 Finish

Date: 15th January 2018
Agenda

Meeting Summary
Topics include:

  • Talk: Creative debugging techniques – Brian Long
    Breakpoints, watch expressions, stepping through code. It’s same old same old, isn’t it? Well, let’s take a closer look to see if we can find some interesting uses and applications of these and other debugging facilities to help in your debugging sessions.
  • Talk: Setting up Microsoft Azure Web Services (aka hosted IIS) and Website Volume/Stress Testing – Patrick Hort
    We have recently had issues with the scalability of our online booking system, so we have been working on volume/stress testing (using a tool called WCAT) and also at ways to increase capacity by using Azure Web Services. This talk will cover what we’ve learnt so far, and the problems we’ve encountered.
  • Nugget: Free SSL Certificates – Mark Jacobs
    How to set up a CSR using OpenSSL tools, go onto zerossl’s site and use the CSR to generate a 3 month free SSL certificate, valid everywhere
  • Nugget: Changing the behaviour of comboboxes globally, using the Application OnMessage event – Mark Jacobs

    Demonstration of using the Application OnMessage event to allow me centrally control the behaviour of all comboboxes in my application

  • Nugget: Writing text in FMX – Martin Hamilton

    In VCL, simply use “TextOut” to send text to a Canvas but, with FireMonkey, it’s more complicated.

Time

Description Speaker
12:00 Registration (with tea and coffee) Note time change
12:00 News/Questions Brian Long
12:45 Break for Lunch/Catch Up
13:00 Creative debugging techniques Brian Long
14:15 Free SSL Certificates Mark Jacobs
14:45 Break
15:00 Setting up Microsoft Azure Web Services (aka hosted IIS) and Website Volume/Stress Testing Patrick Hort
16:15 Writing text in FMX Martin Hamilton
16:45 Changing the behaviour of comboboxes globally, using the Application OnMessage event Mark Jacobs
17:00 Finish

Agendas for previous years can be found here:

2017

2016

2015