Libraries · Optimization · Tips & Tricks · Uncategorized

An XML DOM with just 8 bytes per node

I present a small XML library that parses or creates XML documents with an extremely light-weight DOM that uses just 8 bytes per node. This post shows some of the interesting algorithms that make this possible. Another XML Library? I know what you are thinking: not another XML library! And you would be right, especially… Continue reading An XML DOM with just 8 bytes per node

Foundation · Patterns · Tips & Tricks · Uncategorized

Custom Managed Records for Smart Pointers

In this 3rd part in (what turns out to be) a series about Custom Managed Records, we take a look at how they can be used to create smart pointers. About Smart Pointers But first we have to get some terminology straight. Smart Pointers is an umbrella term behind different technologies for making it easier… Continue reading Custom Managed Records for Smart Pointers

Communications · Foundation · Libraries · Uncategorized

Using OpenSSL 1.1.1 with all Delphi target platforms

In this article we are going to discuss how to use the latest version of OpenSsl 1.1.1 with Delphi directly to create X.509 certificates, decode, verify, encode and sign JSON Web Tokens and generate random data. Additionally we will do this in a way that works on Delphi supported platforms including Windows, macOS, iOS, Android… Continue reading Using OpenSSL 1.1.1 with all Delphi target platforms

Foundation · Patterns · Tips & Tricks · Uncategorized

Automate Restorable Operations with Custom Managed Records

There are those common try..finally blocks that you write over and over again. For example entering and leaving a critical section to protect resources from multiple threads, or calling BeginUpdate and EndUpdate to efficiently bulk-update a FireMonkey control. These kinds of “restorable” operations can be automated with the new Custom Managed Records feature introduced in… Continue reading Automate Restorable Operations with Custom Managed Records

Libraries · Tips & Tricks · Uncategorized

Wrapping C(++) APIs with Custom Managed Records

Delphi 10.4 introduced Custom Managed Records. In this post we show how you can use this new language feature to wrap third party C(++) APIs in an easy to use model. We also compare this method to some other ways you may have interfaced with C(++) in the past. Ways to interface with C(++) For… Continue reading Wrapping C(++) APIs with Custom Managed Records

Optimization · Tips & Tricks · Uncategorized

Boost Mac performance with Metal and Delphi 10.4

Is your Mac app a little unresponsive or does it feel sluggish? Does your MacBook laptop turn into a lap-heater when running your app? Then the new Metal support in Delphi 10.4 may be just the thing for you and your customers! I have been given permission by Embarcadero to blog about this new feature… Continue reading Boost Mac performance with Metal and Delphi 10.4

Patterns · Tips & Tricks · Uncategorized

Mapping Delphi Types to Indices at Compile Time

Say what now? In this post I will show you how you can use generics and class variables to generate unique incrementing indices for any Delphi type. For example, the Integer type could map to index 1 and the TStream type to index 2 etc. The values of these indices will be determined (partially) at… Continue reading Mapping Delphi Types to Indices at Compile Time