That time I had to patch the Universal CRT
I just finished a blog post where I replaced almost the entire Microsoft build toolchain for our Windows software with open-source alternatives better suiting our needs. Except for the Visual Studio C runtime library, nowadays called Universal CRT (shortened to UCRT or just CRT). The CRT had been performing without any trouble, and I didn’t expect this to change, considering that our software was mostly using modern C++ constructs. Things took an unexpected turn though when I witnessed a huge memory leak in one of our applications that was creating and terminating multiple std::threads in a row.
Targeting 25 years of Windows with Visual Studio 2019
Adapted EnlyzeWinCompatLib Project on GitHub Adapted Wizard-2020 Project on GitHub Our method to build software compatible down to Windows 2000 using Visual Studio 2017 served us well for several months. And trust me, I had really hoped that Windows 2000 would be as low as we ever had to go. But the world of industrial manufacturing surprises you every day. So at some point, we inevitably stumbled upon industrial control systems that were still running Windows NT 4.
Modern Visual Studio meets ancient Windows
Project on GitHub In my previous blog series, I have shown how to write Win32 applications in 2020 using the amenities that modern C++ brings. Writing an application in 2020 doesn’t mean that we have to forget about 2000 though: The unrivaled compatibility of the Win32 API makes it possible to run your modern application even on Windows 2000 and older Windows XP versions – in theory at least!
Writing Win32 apps like it's 2020: A DPI-aware resizable wizard
This is the third part of a three-part series on Win32 development: Introduction Helpers for a modern C++ world A DPI-aware resizable wizard Example Project on GitHub User interfaces in 2020 need to consider many more details than those of previous generations. One of the biggest changes of the last decade is certainly the introduction of HiDPI displays, displays with much higher resolutions together with software using more pixels per GUI element.
Writing Win32 apps like it's 2020: Helpers for a modern C++ world
This is the second part of a three-part series on Win32 development: Introduction Helpers for a modern C++ world A DPI-aware resizable wizard Example Project on GitHub We are now going to get into the nitty-gritty details of Win32 and how modern C++ can help us here. Pointers that free themselves Universal C++ containers String resources without regrets Mastering the handle mess Gracefully failing constructors The only WndProc you’ll ever need Conclusion Pointers that free themselves If you are coming from the C world, you have been managing all your resources manually so far.
Writing Win32 apps like it's 2020: Introduction
This is the first part of a three-part series on Win32 development: Introduction Helpers for a modern C++ world A DPI-aware resizable wizard Example Project on GitHub Let’s start with the obvious question right away: Why should anyone write a new application using ‘90s technology like Win32 API in 2020? Well, if you are working at a company like ENLYZE, there are plenty of good reasons to do so:
Fun with Decorators, Protobuf and Apache Beam
As somebody who had the
burden pleasure to work with Apache Beam’s Java SDK, I really enjoyed the parametrized nature of pipeline transforms. Besides making it easy reason about inputs and outputs of individual steps of a pipeline, Beam also takes care of (de)serialization.
In this post, we explore a similar approach for Apache Beam’s Python SDK to the Java SDK using decorators.
How to build an Embedded Bootloader: Introduction
This is the first post in a series about how to build a bootloader to deliver OTA updates to embedded devices such as an STM32 microcontroller. First, we will outline what’s important and then lay out the concept for what we’re going to build.
Allow us to introduce ourselves
In this very first post of the ENLYZE blog, Deniz gives you a high level overview over the technological landscape that ENLYZE is operating in. This post aims to provide you some insight into our everyday challenges so you can decide whether this blog is worth following.