For years I assumed Qt being the first choice for user interface development in a C++ environment. It was used in a lot of embedded systems and looked like it would gain some traction in the mobile market as well. Open source applications were being ported over from GTK to Qt (e.g. Wireshark, subsurface,…). Large applications like Spotify and Autodesk Maya made use of it. So what’s wrong with Qt? Advancements in web technologies, licensing trouble, available engineers on the market and other factors have made alternatives attractive.
Vcpkg certainly has gained a lot of traction in the C++ community. Next to conan it is one of the most frequently used dependency and build-script management tools. Nevertheless, when initially investigating this topic for a larger enterprise application I worked on at the time, I jumped onto the conan bandwagon. I had the opportunity to briefly talk to with Diego Gonzalez, one of its creators at Meeting C++ 2019 in Berlin. This was also around the time when JFrog started to financially back conan. These facts and the technical aspects have been reason enough to choose conan over its alternatives. Since then a few years have gone by and I wanted to check the current state of vcpkg. Today it’s got a vibrant community and has expanded it’s feature set significantly.
Writing this article while listening to Falco’s Vienna Calling brought up some memories of the software projects nurturing my interest in software optimization. The open source mp3 audio encoder lame is one of those and serves as a good motivational example for today’s topic. Made possible thanks to - at the time - innovative algorithms and a considerable amount of software optimization. More modern examples include projects like OpenCV, compiler frameworks like llvm or video decoders like dav1d. All of these projects have in common that they would be much less useful without optimization. In this blog post I’d like to share some of my thoughts on optimization approaches and the possibilities (GPU programming, vector instructions, parallelization, …) at our fingertips.
Last year I wrote an article about the OnePlus Nord I had acquired. Initially quite excited about the amazing bang for the buck ratio I noticed a few shortcomings throughout the last few months. Based on those I decided to give the Pixel 4a a chance to shine. Ron Amadeo over on arstechnica.com quite clearly calls the OnePlus Nord the better option and recommends it over the Pixel 4a. I think that’s not telling the whole story. The Pixel 4a has a few unique aspects which might make it preferable to some and offer an overall worry-free package.
Recently an eagerly expected parcel has shown up at my doorstep. Within: an amazing piece of Lego for grown-ups. Or to be more specific an assembly-kit for the
Prusa Mini+ 3d printer.
A few months ago the ISO C++ standard committee has completed the newest revision of the C++ programming language and it’s companion the standard template library. As per usual they followed the mantra “good things take time” and focused on including well thought out extensions and improvements. Fortunately, a lot of these new additions have been in the making for many years, in which they were debated, refined and iterated upon. This has allowed C++20 to become a fantastic release, probably the largest one since 2011 - which marked the beginning of what we call modern C++.