I've been a vegetarian for around thirteen years. Naturally when eating with others, people want to know why I don't eat meat. So I've already had a lot of opportunities to practice explaining my vegetarianism. Usually I said something like '為了動物福利', so something like 'for animal welfare'. But I always felt that this does not fully explain my reasoning. Therefore…
This post is about using data to understand how the software engineering community sees DevOps. We analyze these questions: Do developers value DevOps only once they have it? How does having DevOps impact job satisfaction? How is sentiment distributed across company sizes? But first, let's review what DevOps is. What is DevOps? Wikipedia defines it like this: DevOps is a set of practices that…
Like most Mandarin learners, the first transliteration system I learned was Pinyin. From the beginning, I had difficulties with it. Some transliterations just didn't make sense to me. The biggest issue for me was that Pinyin uses Latin letters. Whenever I opened Pleco, my eyes were drawn to familiar characters, which made it harder to focus on Chinese characters. After spending time in…
Ever since I started learning Mandarin, I have been using Pleco . For most Mandarin learners I've met, it's the most important learning tool. Apart from its dictionary, I use Pleco for learning flashcards. The way I use the flashcard feature evolved over time, and this setup currently helps me learn new words faster. In this post you'll learn: the different test profiles I use how I…
In this post, we talk about dependency management in C++. In particular, we introduce FetchContent , a CMake feature that deserves more attention. Dependency management options in C++ Git submodules In the past, my default was adding each dependency as a git submodule. For dependencies with a modern CMake setup, this is usually enough to make them available. What I disliked about this approach is…
This post follows up on Building a Face Detector with OpenCV in C++ . In this post we build on that code and detect face key points. Since we work with a relatively new OpenCV version (4.2.0), you may want to revisit the first post for installation details. The code is available on GitHub: blog-post-2 branch . Detecting face key points After detecting faces, we now want to detect key points. We…
Hi everyone! In this blog post, I explain how to build a face detection algorithm with the machine learning components in OpenCV . We will use OpenCV to read an image from a camera and detect faces in it. You can find all code for this blog post on GitHub . Installing OpenCV We use parts of OpenCV and the OpenCV_contrib module. The most convenient way to make sure you have access to these modules…
When learning Mandarin, I often encounter vocabulary with an identical English translation. As an example, Pleco gives "frugal" as the meaning of 節省, 節儉, and 節約. Yet, native speakers use these words in different contexts. How can you find out where the differences are? And when should you use which word? Below I'll share my answer to these questions. Google it in Mandarin To keep it short, my…
Hi, my name is Benjamin Wagner! This blog is my personal notebook for things I learn along the way. I write about practical programming topics and language learning workflows that helped me make steady progress in Mandarin. Most posts are focused on one concrete problem: understanding a concept clearly, building something useful, and sharing a setup that others can reuse. If you enjoy hands-on…