C++ R&D Software Engineer at Luciad

I was a member of the Luciad CPillar team. CPillar is an SDK for visualizing and managing geospatial data. This data can be in the form of images in a raster layer (such as satellite imagery divided in tiles), or a feature layer (e.g. points of interest in a map application). The visualization can be done in both 2D and 3D.

Recently it was rebranded to Octave Alto Universal. The first two images on that page are from my demos for the launch events, the first one simulating a shipping accident in the Waddenzee, The second about a fire situation in the Palais Brongniart.

View Image

While most of the codebase is in C++17, we also had the API available in C# and Java (for Android) using SWIG bindings. So, while most of my development experience at Luciad was with C++, I also worked with C#, Java and Kotlin for the creation of automated tests, samples and demos.

Even as a junior I had a wide list of responsibilities. For my tasks I had to (depending on its size):

  • Make a design proposal to the team, including diagrams if helpful.
  • The implementation (and sometimes research) work.
  • Writing unit tests, and sometimes for new features write test plans for the regression tests.
  • Have all code reviewed (and review other people's code).
  • Make SWIG bindings (and in some cases, new SWIG macros) for public API.
  • Write clear documentation, and articles or tutorials for our users.

In some cases more was involved. For example, when I upgraded our samples from Qt5 to Qt6 I also had to take care of the test infrastructure (with assistance from the release engineering team) and look which libraries had to be updated as well. In another case I had to also write a benchmark, as we were specifically optimizing font rendering for a potential customer.

Some of the features I worked on include:

  • GeoPackage editing: adding, deleting or updating features in an existing GeoPackage file (which are actually Sqlite databases underneath)
  • GeoPackage encoding: In a later release, I added the creation of new GeoPackage files. As this was the first time CPillar could write new files, the design was extra important. It also had to be efficient while not loading an entire existing model (possible giant) all at once into memory.
  • Qt5 to Qt6 migration: updating all the samples where necessary, improving the uniformity in the process. As mentioned, this also involved the test infrastructure.
  • NuGet Package: The C# version was available as .dll, I made it also available as NuGet package, since native code and some resource files are involved, this meant creating msbuild .target scripts to automatically put things in the right place. For the automatic generation of the NuGet Package itself I modified the build scripts.
  • Custom font support and font caching.
  • Layer busyness notification events, illustrated by a busyness spinner icon in the samples (which used some timer logic to avoid flickering).
  • Cubic Bezier curves and sample code for creating and editing Bezier curves.

Every year there are two major releases with their own launch event. For the 2023.1 release I presented the CPillar part, which you can see here from 24:53-27:48 The demo itself was made by me and a colleague.

Besides development, I was also the maintenance and support responsible for Raster layers and Android (level 2 support). This means that if any bugs were found in code related to these topics, I had to handle it, and that I had to handle all related customer questions and problems. Furthermore, I was in the rotation for the level 1 support role (checking incoming support emails and putting them in the right queue, or first asking for more clarity if they’re vague).