Meetings 2015

Agenda & Information for the Meetings held in 2015
See Downloads 2015 for the available files associated with the meetings.

Date: 16th November 2015

Agenda

Topics so far include(see timings below):

Session: DELPHI’s stand-alone HTTP server – Martin Hamilton
Building a simple HTTP Server and running it as a Windows Service

Nugget: Code Templates – Brian Long
Code templates used to be trivial and productive. Now they’re very flexible. As a consequence they are impossible to use. Or are they? In this nugget we’ll try and decipher the means of making code templates, to help offer up a little productivity boost here and there.

Nugget: Windows Monitor – Clive Henson
Clive will be showing the TalkingPoint Window Monitor utility that caused some interest at a previous session on Speech Recognition when demonstrating some of the scripting commands.
The utility provides various information about application windows for use by the Scripting for controlling other applications from Speech Recognition.
The utility will be available (as an executable) to Developer’s Group members.
Full source is not available, but some snippets covering some of the information extracted will be covered

More Delphi \ Rad Studio 10 Seattle – Jason Chapman

Please see times below:

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News/Questions Brian Long
13:00 Delphi’s Stand-alone HTTP Server Martin Hamilton
14:15 Break for tea / coffee
14:30 Code Templates Brian Long
15:00 Windows Monitor Clive Henson
15:30 Break for tea / coffee
16:00 More Delphi \ Rad Studio 10 Seattle Jason Chapman
17:00 Finish

Location: On the first floor of the Theodore Bullfrog pub (behind Charing Cross station) 28 John Adam Street, Charing Cross, London WC2N 6HL

Date: 14th October 2015

Agenda

Topics include(see timings below):

Session: Unicode, what’s in a string? – Simon Hooper

Simon explains Unicode and other popular string representations. He will discuss where the various representations are used and the many string types in Delphi.

Session: “My Arduino and what I’m doing with it”– Alex Hamilton

Session: Adventures with Disconnected Databases – Adam Brett

Adam builds VCL database applications for farming businesses in Africa using the Elevate DB database engine and Delphi. The application copes with Field Officers visiting thousands of farm-field sites to assess and check them, and the central farm-business accepting receipt of products from fields into their depot or depots.

Depots should not accept goods unless they have been inspected and quality checked prior to harvest, and Field-Officers need to receive updates on who to visit and who has already been visited, and management want to know exactly what products have been bought from whom, so everyone needs to see and share data effectively.

There is no effective internet in Africa, so Adam has used a brief-case type data management model to allow multiple users to share data. Elevate DB has specific functions built into its “Replication engine” to allow updates and synchronization between separated databases, and this has formed the basis of the application.

The session will look at the details of the Elevate DB product, how it works under the hood, and explore potential use-cases for disconnected data. It will also demonstrate the steps needed to actually make synchronization and updates work, which are non-trivial. Finally the big problem: of how to manage data clashes and conflicts will be discussed, with the caveat that there is no perfect solution to these issues!

The session will have a bit of “Delphi” content, code discussed will primarily be advanced SQL.

Please see times below:

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News/Questions Pete Sykes
13:00 My Arduino and what I’m doing with it Alex Hamilton
14:15 Break for tea / coffee
14:30 Unicode: What’s in a string? Simon Hooper
15:30 Break for tea / coffee
15:45 Adventures with Disconnected Databases Adam Brett
17:00 Finish

Please note: This is the provisional and is subject to change. We will update this page with future meetings soon.

For the detailed agenda:

Date: 15th September 2015

Agenda

Topics include(see timings below):

  • Session: Trouble with using MySQL plus SSL – Martin Hamilton
    • Do you want to access your MySQL database externally via the Internet?
      Here’s how I did it, especially how to use SSL encryption, but also getting to your Dynamic IP address and port-forwarding.
  • Nugget: Windows Monitor – Clive Henson
    • Clive will be showing the TalkingPoint Window Monitor utility that caused some interest at a previous session on Speech Recognition when demonstrating some of the scripting commands. The utility provides various information about application windows for use by the Scripting for controlling other applications from Speech Recognition. The utility will be available (as an executable) to Developer’s Group members.
      Full source is not available, but some snippets covering some of the information extracted will be covered.
  • Session: JavaScript programming model – Will Watts
    • The JavaScript language, both in web browsers and in the Node,js environment, uses an unusual programming model. Applications are single-threaded; ‘blocking’ calls (such as disk reads and network connections as coded in the standard libraries of C# and Pascal) are not allowed. Will Watts shows how this restriction impacts programming style, and discusses some different approaches to coping with it.
  • Session: Windows services and a registry setting – Mark Jacobs
    • Changing settings to allow them to spawn more applications simultaneously.

Please see times below:

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News/Questions Jason Chapman
13:00 Nugget: Windows services and a registry setting Mark Jacobs
13:30 Session: JavaScript programming model Will Watts
14:30 Brief break for tea / coffee
14:45 Session: Trouble with using MySQL plus SSL Martin Hamilton
15:45 Brief break for tea / coffee
16:00 Nugget: Windows Monitor Clive Henson
16:30 Review of DX Delphi 10 Seattle Jason Chapman
17:00 Finish

 

Please note: This is the provisional and is subject to change. We will update this page with future meetings soon.

For the detailed agenda: 20150915 detailed agenda

Date: 20th July 2015

Agenda

Topics include(see timings below):

  • Nugget: Lead link formatting – Simon Hooper
    • Computer programming from text scripts is 50ish years old, surely there can be nothing new about formatting code. Maybe there is – come and see for yourself.
  • Nugget: Generic TList<T> for records – Simon Hooper
    • With the advent of generics TList<T> is a great class for managing dynamic lists of objects, but it does not work with records. Simon has written TRecordList<T: record> to manage dynamic lists of records. He will recap on the differences between objects and records, demonstrate and explain his class. Full source code will be provided.
  • Nugget: Enunerators: for x in y do, Delphi’s “foreach” implementation – Simon Hooper
    • Delving deeper into TRecordList<T: record> Simon will demonstrate how to enable “for x in y” syntax for your own classes and how to add multiple enumerators to a class (e.g. “for x in y.Descending”)
  • Nugget: Version Control with Subversion – Brian Long
    • Version control isn’t just for teams of cooperative programmers in large software houses. There are many benefits from employing version control even if you’re working on a project alone. Brian looks at what the point of it all is and tries to get you on side with version control systems in general. Subversion is Brian’s VCS of choice so that will be what is used to show the ins and outs of it, but Subversion is just one of many options, and is certainly not the most fashionable VCS du jour. It does, however, do what it needs to do, which is why it has lasted so well. Maybe through discussion we will illuminate the group as to what additional benefits the current popular choices offer.
  • Session: Android and Speech Technology – Brian Long
    • The last time we saw Brian talking about Delphi and Android, we brushed on the subject of TTS (text-to-speech). We’ll follow this through and also look at how SR (speech recognition) works on the Android platform. That is, if Brian can work through the platform API vagaries and get it all working in time!

Please see times below:

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News / questions Brian Long
13:00 Version Control with Subversion Brian Long
14:00 Break
14:15 Nugget: Leading link formatting Simon Hooper
14:30 Nugget: Generic TList<T> for records
Nugget: Enumerators: for x in y do, Delphi’s “foreach”
implementation / Generic TList<T> for records and Enumerators
Simon Hooper
15:30 Break
15:45 Android and Speech Technology Brian Long
17:00 Leave

Please note: This is the provisional and is subject to change. We will update this page with future meetings soon.

For the detailed agenda: 20150720 detailed agenda

Date: 17th June 2015

Agenda

Topics include(see timings below):

  • Nugget: Rare boundary condition met in ICS emailing component and how I got round it – Mark Jacobs
    • From Mark: “I will show an example email that goes wrong, change a single word in the email and show it goes fine, then revert the email, change my code to incorporate the workround and show it sending it fine. I will then show why it went wrong, and why, therefore, this rare boundary condition may affect other email components too.”
  • Follow up XL Session: Guide to Azure – Pete Sykes
    • During his last session Pete covered some of the core functionality of Windows Azure such as web roles, worker roles, queues, tables, blob containers and so on. During this session he will expand on what we learnt last time and show how easy it is to use Azure to build a highly scalable, end-to-end application. If you missed Pete’s last session you can catch up by downloading his slides and samples from https://www.ukdevgroup.co.uk/downloads/
  • Tiny Nugget: The UK Developers Group Survey – the results – Jason Chapman
    • A brief discussion on the results of the surveys that we have asked members to fill out.
Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News / questions Pete Sykes
13:00 Nugget: ICS Emailing Component Problem Mark Jacobs
13:45 Break
14:00 XL Session: Follow up – Guide to Azure Pete Sykes
15:30 Break
15:45 Survey Results – users feedback Jason Chapman
16:00 Continued Session: Guide to Azure Pete Sykes
17:00 Leave

Please note: This is the provisional and is subject to change. We will update this page with future meetings soon. For the detailed agenda: 20150617 detailed agenda

Date: 12th May 2015

Agenda

Topics include(see timings below):

  • Session: XE8 & InterBase – Stephen Ball(Embarcadero).
    • Rather than a whistle stop tour of all new features, Stephen will be focusing on at least one new killer feature in each product. Both the following were covered in the recent EMBC spring event (06/05/2015) – so we going to get Stephen to answer in depth questions on the subject. New Analytics – really how is your app being used
    • Change Views with InterBase
    • Stephen is a long serving member and contributor to the user group and has been working at Embarcadero for a few years. He will have a unique insight and we are excited that he can come and talk to the group.
  • Nugget: Vetting input webserver – forms – submit forms (Mark Jacobs), which will include:
    • Switch off my browser input sanitisation code
    • Show a browser web form which views and edits fields in a database
    • Edit a field in such a manner that hovering over the field when displayed in the browser causes a JavaScript alert to pop up
    • Reset the field. Switch on my input sanitisation code. Try the same trick again
    • Show how the JavaScript alert no longer occurs and why
    • Show how the sanitiser cleans up naughty inputs before they hit the database
    • Discuss the alternatives I have seen in other products, for example, vetting the fields on output from, rather than input to the database. Advantages and disadvantages.
  • Nugget: Jython (Peter Brownlow)
    • Jython is an implementation of the scripting language Python integrated with the Java platform, so that a Java application can include a scripting facility where script writers have access to the Java and application object hierarchy. Pete will describe and demonstrate the use of Jython in conjunction with a widely used open source Java application for controlling model railways, called JMRI.
  • Nugget: WPtools and our technique for producing letters and reports (Jason Chapman)
    • 3 stabs at architecture for callbacks to get field values
    • Field markers
    • Tables
    • RTF, DOCX,

TimeDescriptionName
12:00Registration (with tea and coffee)
12:00News/QuestionsJason Chapman
13:00Break for lunch/Catch up
13:15Utilising jSon to move small data sets from server to mobile and possibly backPeter Edwards
14:45Break
15:00Integrating Delphi & .NETDavid Capps
16:15Transaction amount allocation engineAndrew Cutforth
17:00Finish
Please note: This is the provisional and is subject to change. We will update this page with future meetings soon. For the detailed agenda: 20150512 detailed agenda

Date: 20th April 2015

Agenda

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News / questions Brian Long
13:00 Basic 3D session using the standard FMX 3D components Ian Hamilton
14:00 Break
14:15 Thinking Programmers’ Guide to Modern JavaScript Development Will Watts
15:45 Break
16:00 Google maps api embedding in a windows program Andrew Cutforth
17:00 Leave
  • Nugget: Google maps api embedding in a windows program with callbacks into the application & map navigation (Andrew Cutforth)
  • Session: Thinking Programmers’ Guide to Modern JavaScript Development (Will Watts)
    • JavaScript has come a long way since the days of animating web page buttons. Now it’s a fully-fledged development tool, and the only one that functions successfully on the full range of platforms from phone to server. This talk will provide a high level introduction to the language and the ecosystem of tools that has grown up around it, framed from the point of view of a traditional Delphi or C# developer. Coverage will include Node.js, the system that is popularising the language on the back end, to Google’s Angular.js, a framework for creating fully-fledged applications that run inside the browser. Also meet the IDE that just has to be pronounced with an American accent: WebStorrrrrrrrrm.
  • Nugget: Basic 3D session using the standard FMX 3D components (Ian Hamilton – new speaker)

Please note: This is the provisional and is subject to change. We will update this page with future meetings soon. For the detailed agenda: Detailed Agenda – 20/04/2015

Date: 18th March 2015

Agenda

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News / questions Pete Sykes
13:00 Nugget: Painting tables onto a “PaintBox” – Delphi Martin Hamilton
14:00 Break
14:15 XL Session: Beginners Guide to Azure – C# with some Delphi examples Pete Sykes
15:45 Break
16:00 Continuation: Beginners Guide to Azure Pete Sykes
17:00 Leave

Nugget: Painting tables onto a “PaintBox” – Martin Hamilton

  • How to use TPaintBox in Delphi to get a custom grid display

Session: Beginners Guide to Azure – Pete Sykes

  • Introduction to Windows Azure
  • Azure storage: Queues, Blobs and Tables

There will be a follow-up session on this topic that will include:

  • Writing a Locally Hosted Scalable System Using Azure Storage
  • Migrating Your System to Azure

Date: 10th February 2015

Location: On the first floor of the Theodore Bullfrog pub (behind Charing Cross station) 28 John Adam Street, Charing Cross, London WC2N 6HL

Agenda

Time Description Speaker
11:30 Registration (with tea and coffee)
12:00 News / questions Jason Chapman
13:00 Nugget: Thoughts/discussion on Windows 10 Martin Hamilton
14:00 Break
14:15 Session: Priority Inversion and Logging Eric Thorniley
15:45 Break
16:00 Nugget: I’m starting with Python Jason Chapman
17:00 Leave

Nugget: Thoughts/discussion on Windows 10

  • A topic to start us all thinking about the way Microsoft is leading us

Session: Priority Inversion and Logging

  • Demonstration of how priority inversion can cause unpredictable application hangs.
  • How the use of some standard logging libraries can trigger the issue.
  • Some other unexpected performance issues that can be introduced by logging.
  • An implementation of priority inheritance in Delphi.
  • A class to allow lock-free logging in the C# log4net library.

Nugget: I’m starting with Python

  • My thoughts, your thoughts (free training for me, Jason)
  • We have a mantra – if you can automate it, build a tool. Our tool to build a tool has been Delphi / Batch files / Excel, but we have been experimenting with Python.
  • I’ll cover which version we use, where to get it, why we selected it and how we are finding it.
  • We will walk through one or two use cases from reading e-mails, parsing text files, automating downloads from password protected https websites.
  • We are very green at Python and I haven’t been the main driving force on this, so we’ll all be learning together J

Please note: This is the provisional and is subject to change. We will update this page with future meetings soon. For the detailed agenda: Detailed Agenda – 10/02/2015

Date: 19th January 2015

Location: On the first floor of the Theodore Bullfrog pub (behind Charing Cross station) 28 John Adam Street, Charing Cross, London WC2N 6HL

Agenda

Start Description (with tea and coffee)
11:30 Registration
12:00 News / questions Brian Long
13:00 Nugget: Class Hierarchy for Dummies Ian Murphy (Smurf)
14:00 Break
14:15 Nugget: Syntax Highlighting – see below Mark Jacobs
15:15 Break
15:30 Discussion on – XE7 Brian Long
17:00 Leave

Nugget: Class Hierarchy for Dummies A short case study on implementing Class Inheritance in our Fault Monitoring System. Demonstrated via a plethora of label layouts. Nugget: Syntax Highlighting The minefield that is syntax highlighting :-

  1. Determining viewports. Balancing text block size against speed of highlighting.
  2. Syntax highlighting routine – as fast and efficient as possible.
  3. When to trigger the routine. What events are covered and what are not (currently).

Discussion: XE7 Brian looks in more depth into some of the new features found in RAD Studio XE7 to save you from doing the research yourself. For the detailed agenda click here
Location:  On the first floor of the Theodore Bullfrog pub (behind Charing Cross station) 28 John Adam Street, Charing Cross, London WC2N 6HL