Adam’s November 2019 Meeting Summary
Agenda
- Roll your own remote desktop support in Delphi – Dave Capps
- Working with RAD Studio and Android Things on Raspberry Pi – Glenn Dufke
- REST Services with MARS Curiosity REST Framework – Glenn Dufke
Adam’s Summary
A well attended meeting in North London – hosted by Jason.
News
Next year’s meeting dates have been announced , so put them in your diary. In the preliminary sessions, Andrew brought up B4X and B4A (https://www.b4x.com/), A RAD-oriented mobile phone/Android/iOs thin-client development platform which uses Visual Basic. Not everyone’s favorite language, but for a thin client with limited functionality perhaps interesting.
CodeRage 2019 was also discussed in some depth. Lots of video webinar-style sessions, being listed week-by-week under subject headings. Only accessible via a link that is circulated to registered users. Members commented that many of the videos were old, but there are some new ones, and there are plenty to choose from.
HTTP/3 was also discussed in a “what is it for” sort of way. Main comments were that it uses UDP rather than TCP, and is designed to allow more permanent server-style connections.
Roll your own remote desktop support in Delphi – Dave Capps
David then gave an excellent talk on the subject of “Roll your own RDP”.
Savoy Systems (https://savoysystems.co.uk/) have a Delphi-developed cinema till / ticketing software product and they need access to client computers desktops to provide help and support. Having faced ballooning costs for licences for this service from businesses like TeamViewer and LogMeIn, they decided to roll their own. The main takeaway was that the whole process was easier than expected. On the client side their own Delphi app can use ABitMap:= Screen.DeskTopRect to grab 10 screen-shots per second, and the Delphi TCursorInfo object to store mouse shape and position. This data is collected, but is massive, potentially 170meg per second in BMP format so impossible to push around the network. Reducing color to 16bit, using run-length-encoding and only sending one “full” frame every 5 seconds, with all intervening frames sent only as Deltas and then zipping the resulting data with the free Delphi library ZLib results in a more manageable 5 – 100k bandwidth requirement. This results in data-packets which can be reconstructed into the user’s screen content with reasonable fidelity. They then capture keyboard inputs on the server side using Delphi’s TInputStructure record, and pass this back allowing the remote support staff to interact with the client desktop. Finally they have bundled up a simple FTP-like tool to allow them to copy files back and forth between server and client.
The resulting system is particularly impressive when the relatively small amount of time spent developing it is taken into account. It is not a plush professional remote support software tool, but it is plenty good enough and is now built in and free for them to distribute within their software.
A good example of taking back control, rather than delegating provision of services to third parties. With the new tool Savoy no longer have to start any support call with “Ah, have you installed Teamviewer already?” they can kick off a support process with screen sharing directly within their own product.
Working with RAD Studio and Android Things on Raspberry Pi – Glenn Dufke
Glenn then spoke about using Delphi to develop software for Raspberry Pi.
Glenn runs the Delphi Developer Facebook group.
Google have released a version of Android called Android Things, targetting IoT devices with very limited processing power. The offer includes a Console which can be used to manage installation of software onto products.
Delphi is not designed to compile programmes which can run on these limited devices, but Glenn showed how it can be done (with several “this is not officially supported” caveats on screen). This session suffered from some hardware malfunctions as Glenn’s Pi refused to play-ball.
REST Services with MARS Curiosity REST Framework – Glenn Dufke
Glenn then gave a second session about the Mars Curiosity REST Server.
Mars Curiosity (https://github.com/andrea-magni/MARS, https://blog.andreamagni.eu/…/introducing-mars-curiosity-a…/) is an Open Source Delphi Library which wraps up extremely useful REST Services that interface cleanly to Delphi’s data-architecture. Widely readable JSON or encrypted data can be made available from a server in relatively simple steps.
The whole library is free, and offers functionality similar to more expensive products such as RADServer.
The library comes with a good set of demo projects, several of which Glenn showed to demonstrate creation of a REST end-point, and receiving JSON data on a client device. The library makes widespread use of RTTI decoration and attributes, and (in end-to-end mode, where you know that the receiving device understands the packet structures) allows transmission of complex object structures as well as raw JSON text.
Overall it was a good session, and great to see a decent number of faces, and to welcome a good international Delphi coder.
Last session of the year … so have a happy holiday everyone, and see you all in January.