Adam’s Oct 2020 Meeting Summary

Agenda

  • Using Webassembly via Blazor – David Capps
  • Exploring some basic AWS services supported by Delphi – Conrad Vermeulen
  • XML Mapper – Jason Chapman

Adam’s Summary

News/Problem Clinic

Another Zoom meeting, with fairly strong use of Slack. Please subscribe to the Slack channel for the day if you are a member and haven’t already: #20201012meet. I am putting some of the content here, but by no means all.
The meeting started with the usual informal “problem clinic”. There was a lot of moaning about EMB licensing costs and mechanisms on the group. EMB has changed the SKUs of both Delphi / RAD Studio recently, and members seem to feel most of the changes have been ways of cutting back the features of Delphi Professional to try to push people to buy Enterprise.
What this actually means for members is that despite being loyal Delphi license-fee payers for up to 25 years they feel as though are being shunted around at the whim of EMB in order to maximize EMBs revenue streams.
With the rise of Visual Studio Code and a whole range of other tools EMB are clearly playing a dangerous game. They will lose loyal customers, who play an important role in maintaining the vitality of the product, and just as importantly scare away potential new customers.
Members picked up “DelphiCon” (https://delphicon.embarcadero.com/) which actually looks like a good set of speakers and sessions. 17th – 19th November.

WebAssembly (WASM) and Blazor – David Capps

A WebAssembly is basically a compiled block of low level instructions which a web-page can interact with. It is a robust standard, and all the major browsers can use them. This makes it a cross-platform technology, and therefore likely to be long-lived. A block of WASM can be added to a website to provide complex functionality. Programmers can write WASM in many languages (not especially Pascal) so WASM is a way to avoid having to write in Javascript. WASM is fully sandboxed within the browser, it cannot directly touch the Document DOM, nor any parts of the user’s machine which are not available to the browser.
An alternative to WASM would be any of the “compile to JS” options which are available, but JS lacks certain key features such as good array management and 64bit ints, so sometimes WASM is essential.
Having introduced WASM, Dave then demonstrated Visual Studio’s Blazor, a framework for building WASMs. Why would you need it? It adds extensive functionality enabling fuller bi-directional interaction between your website code and the WASM. It allows a programmer to write an entire website without any JS. The programmer writes HTML segments interleaved with Blazor/C# code and methods. I have included a few screen-grabs from Dave’s session showing this, and giving some insights into Blazor’s sytax.
Dave also showed some of Blazor’s third party libraries. One being BlazorDownloadFile, a suite of prewritten code to … you guessed it, Download Files.
Blazor is also designed to create multi-tier code, with client and server modules that can talk to each other. Very exciting for those of us building this type of application.
Members pointed out that DevExpress have now realised a set of Blazor visual components (high level items such as grids, charts, pivot-grids etc.) so if you are using DevExpress you can easily leverage these into a website app.
A really good session, I think we all genuinely learned a lot.

Amazon Webservices in Delphi & Docker – Conrad Vermeulen

Most members probably use AWS. It is a huge suite of products and services and in my limited experience they are all incredibly reliable. The main barrier to entry is the absurd range of products the ridiculous, names stupid ways in which product A requires service B, but then might (or might not) be optimized by using product C.
Conrad spent some time discussing the dreadfully inadequate provision of linkages to AWS within Delphi. Delphi has only a very few AWS related classes in the Data.Cloud.AmazonAPI libraries. These include TAmazonAuthenticationInfo, TAmazonStorageService and TAmazonQueueService.
Contrad reviewed these for a while, showing how to use them and discussing his work with Richard Hatherall (another member) to extend or replace them. Richard has a lot of experience of using code-libraries that reference AWS outside of Delphi and was vocal in expressing dissatisfaction with the tools we currently have in Delphi, which he says are poorly engineered and do not follow standards used throughout the industry.
Conrad then spent some time demonstrating the use of Docker, and integrating it with AWS.
Docker’s ability to create small threads of programatic work and link them together is well suited to working with AWS queues, which are a mechanism for parcelling out large-scale programatic work across numbers of servers. AWS includes a well developed Service / Task management service which allows deployment of multiple Docker apps using an “Infrastructure as a Service” model.
I have included a few screen-grabs of Conrad’s excellent talk, with some notes.

Development with XML Mapper – Jason Chapman

EMB are trying to engage with loyal customers (while there are still any of us left) by asking them to help re-write and re-engineer parts of the product. This is a good initiative, as there are many under-developed and neglected parts of the Delphi tool-set which, if improved, could be valuable for all of us.
Jason engaged in a project to rewrite Delphi’s XML Mapper, a tool that ships with Delphi as an external EXE, and which can be used to explore XML files and XML-file-style-sheets (XSD files?) in order to generate code to convert these into ClientDataSets.
The tool had been neglected since the early 2000s, and is an optional add-in to Delphi. However it is the starting point for something very useful indeed: A mechanism to inter-relate XML with Pascal, and perhaps do a whole lot more.
Jason’s project was international, with “a dozen or so” participants from all over the world. MVPs were the main people asked to contribute, and in typical EMB style were then bound under a ridiculously tight NDA, making it really hard for them to discuss the project in useful ways with other developers. If you are really going to embrace open-source it feels like this is perhaps not really the right way to go about it.
The project used Assembla for progress-management and GIT as a repo.
A lot of progress has been made and it is now possible to download the result of the project via GetIt (although Jason says it is still unfinished). Members did this live during the session, using GetIt and running the install. I would estimate that about 50% of the downloads succeeded, the rest failed with a variety of error messsages.
So not the finished article, but it seemed that the main issue was GetIt rather than XMLMapper.
We then adjourned for beer and chat … it had been a really good meeting.