Hello and welcome to my little nock of the internet. Here I have my blog which mainly contain posts about tech, the outdoors, cooking, and some times mead brewing.

A bit of background information before you step into my world of crazy. I am Lars, a.k.a. looopTools, a Software Engineer living in East Jutland, Denmark. I have 10+ years of experience from industry mainly through student positions, but also as self-employed consultant, or full-time employee. I mainly work in low-level user space, high-level kernel space, and storage systems in general. Besides research and software development, I also love the outdoors and try to go out as often as possible (not enough at the moment) and I am an aspiring author currently working on a few different novels. I also dabble in being a more advance home cook and baker, which you may see some posts about. Finally I like the ancient art of brewing mead, a.k.a. honey wine, and experiment with different flavour combinations and ageing times.

[QueryC++] Status Update and Apology

27 May 2023

Hello all, this is a status update on QueryC++ and an apology; I will start with the latter.

If you go to QueryC++’s Gitlab repository, you will see that the repository seems a little abandoned. There have been very few commits with minimal contribution from my end. There is an explanation for this, which I will provide now, followed by an apology. In mid to late 2022, a company contacted me about QueryC++; the company wants to remain nameless. They want to provide a developer who would spend 25% of the developer’s time working on QueryC++. I was very excited, I met with the developer, and I deemed the developer more than able to lift QueryC++ from just my project to a potent tool. It was agreed the developer would start working on QueryC++ in March of 2023. One month ago, I realised work had not started, which confused me. I got a little angry because I expected the company to continue the work in the repo and not make a fork. At least, this was what was agreed upon. In April, I contacted the company to find out what had happened (As I explained on Mastodon. Unfortunately, the developer fell sick with no quick recovery, and the company forgot to contact me, which is understandable. Sadly, this led me to contemplate if I should continue working on QueryC++ or abandon the project, and it has taken a while for me to conclude. Even though I promised that I would continue on Mastodon, which made me feel even worse. However, QueryC++ is important and can give many C++ developers an excellent way to work with SQL queries! Therefore, I have decided to spend more time on QueryC++ than I have been doing. I apologise for the limbo I have left the QueryC++ in, for the lack of information, and for promising something I might have gone back on. This will not happen again. In the future, I will provide clear information about the direction of QueryC++ and find better ways to get others involved.

So where does this leave QueryC++? Well, the fact that a company offered to provide a developer should tell you that it is used. In fact, it is used in production, which I am thrilled about. But what are the next steps? Well, the next steps are as follows:

  1. Focusing only on CMake
  2. Hardening the test process
    • Automatic integration test
    • Automatic unit test
  3. Better Documentation

Focusing only on CMake

From the beginning, I planned to provide QueryC++ with out of the box support for Waf, CMake, and Make. However, there are a few things that could be improved with this. First, maintaining three build systems is a pain in the buttocks. Secondly, I would like QueryC++ to be as self-contained as possible, meaning no external dependency management for the user. In my opinion, both Waf and Make fail phenomenally, with only CMake providing something nice like FetchContent. I am aware that Steinwurf ApS. provides a customised version of Waf, but I want to avoid introducing a custom version of a build system. Additionally, the more I have been looking at open-source projects, the more I realise how widespread the usage of CMake is. Finally, on this topic, I have been thinking about switching to xmake, but I have yet to see it shine. I have not seen the benefit of xmake over CMake, nor is anyone making the switch. I know of one project that attempted a switch but gave up, which does not present xmake in the best light.

Hardening the test process

First, what am I talking about? Right now, I have to run the unit tests manually to verify that things work before pushing, a thing which I need to remember. Therefore I would like to set up pipelines properly on Gitlab to ensure errors do not make it into QueryC++. This extends to the integration test, where I am currently working on making an integration test that tests query syntax and executes them against a PostgreSQL database. I want to thank Tibold Kandrai, CTO at Estaldo, for sparing and helping me set up a test Docker environment. The goal here is to reduce the potential amount of bugs and increase the trust level of QueryC++.

Better Documentation

Good documentation, even though people never read it, is vital for a library. Be it comments in the source code, examples, or a user manual. Right now, the documentation of QueryC++ is very segregated and not the best. Therefore, I would like to add more examples and a user manual using mdbook. This will lift the documentation of QueryC++ and make it more approachable.

Focus on Features

Right now, I would like to work on the above first before adding more features. However, I will add more and more features for PostgreSQL and, hopefully, MariaDB soon. But right now, the focus is more on the project’s structure.


Currently, QueryC++ receives no funding. At the moment, that is not a problem, but it may become in 6-8 months. Therefore, I will set up a Liberapay or alternative donation options. The reason for this is I will need to allocate some hardware for long-term testing, which I need access to right now.

I would like to invite all to provide suggestions for a QueryC++ log!

That was all for this time. I hope to give more regular updates from now on!


[Book Review] Watchdogs Legion: Day Zero

20 May 2023

[Personal note]: For this who do not know, I am a massive fan of the Watchdogs game series by Ubisoft and have for a long time desired to expand my immersion in a universe I love. However, for some reason, I did not discover that there are both books and comics produced set in the Watchdogs universe until the end of 2022 when I read the fantastic book Stars and Strips. It was a book I found captive, and the setting felt like watching Watchdogs 1. Because of this, I wanted to dwell even deeper into the book aspect of Watchdogs. The next book I decided the attack was Watchdogs Legion Day Zero, which this review is about.

We enter a dystopian London in a not-so-distant future, where unrest and chaos are simmering just below the surface, and it is about to blow up. Albion, a paramilitary force, wants to take over law enforcement from the local police and put in place a more draconian control of London. It is in this world we meet Ollie, who is pedalling like crazy to get to a meeting point with a nervous young lady called Hanna, who has information for the hacker collective DedSec. After a brief conversation, Ollie has to bring the information back home to DedSec. However, during the trip, he collides with another man, who, while they argue, gets shot. Ollie, of course, panics, but the AI Bagley gets him to focus and move. Move as fast as he can to get to the safe house.

This is the story’s beginning, which sees Ollie slowly uncovering who killed the man. Along the way, the brother and sister Danny and Rosemary get mixed into the story. The siblings are far from tight and far from good friends. Dannys is a retired soldier turned grunt for Albion, who, throughout the story, battles with the ethical aspect of Albion and how it operates. We are the fly on the wall for Danny, slowly turning away from Albion and more towards the philosophy of DedSec, though he never officially joins. Rosemary, or Roe, as she prefers, is also a soldier. But instead of being on the right side of the law, she is an enforcer for clan Kelly, the major crime syndicate in London. We see her battling how the Kellys deal with stuff internally, and she tries to clear her name to the clan. But it slowly leads towards DedSec, again like Danny, without fully joining. However, even though both (in particular Danny) fight their ethical and philosophical alterations, we slowly see them turn towards a more, almost, anarchistic and DedSec-aligned personal rule set. It is very well depicted how it affects both of them in similar ways. Still, for different reasons, it is quite an interesting spin. Although the book makes it easy to recognize early on, it is the end game. The authors should have obstructed this end-game topic more.

The book is well-written and showcases many of the game series’ ethical decisions. My only grievance with the book is the sometimes too fast switching between characters. It creates a chaotic distortion for the reader to follow along. Of course, this may have been the intention of the author to stay within the character mutability of the game Watchdogs Legion. Still, it is confusing from time to time.

I had the delightful benefit of listening to this book on Audible, where Sam Kusi narrates the book. This is one of the best castings I have listened to in a long while for a couple of reasons. Firstly, Sam Kusi is a Londoner. Still, he gets the dialect he uses in the narration fits the environment perfectly. For me, it made the experience even more immersive. Secondly, Sam Kusi brings the characters a livelihood that makes you feel with them. Finally, Sam Kusi’s voice fits exceptionally well with the director’s intended pacing of the book in its audio format. Sam Kusi is able to capture the speed, chaos, and paranoia in his voice, which is fantastic to experience.

James Swallow and Josh Reynolds write the book, and I can only say it is a book I have enjoyed immensely. I will look for another title by these two authors: collaborations and independent work. I truly appreciate that when authors collaborate, you can tell two minds have written the book. You cannot, in my opinion, here. The book appears as one mind wrote it, and that is refreshing in a world where collaborations often are revealed by style differences.

You can still easily read this book if you still need to play Watchdogs Legion. There are no significant spoilers, except for the tutorial mission.


I love email, and I am tired of pretending that I do not

02 March 2023

Within the last decade or so, we have seen increased usage of instant message applications, such as Slack and Microsoft Teams. Which, in many cases, have taken over for email, where before we had tools such as Skype, Google Talk, and others that were complementary to email. All these tools have benefits, yet I prefer email over all of them. In this post, I will elaborate on why this is the case. Before I continue, I find all the above tools use fool and good products.

First, Instant Message (IM), one of my biggest problems with IM solutions in my daily life is the IM part. Many tasks require me to dive deep into a system and dig my way back out when the walls have closed behind me. In these situations, distractions are not appreciated but enter IM. People write to me often, and I get notifications on my phone and work PC. This is an issue for me because it takes focus, and I have to quickly determine if I should react to the message or ignore it until I finish my task. More often than not, it falls in the last category. However, the brief context switch means I must backtrack a little to find out where I came from. If, instead, I need to act on the message. I will need to note how far and from where I came. Then do a complete context switch and come back later. Some say both cases are easy, but I do not find so. In addition, if I find a message less essential and do not respond, I sometimes will get follow-up messages such as “Did you see my message?” or “Why have you not responded yet”. The I part of IM is really invasive sometimes, and others and my judgement of what is essential are rarely the same. I want to note that I am guilty of sending the same follow-up messages. People seem to think that it is okay for it to take a while before you get a reply by email, and also, people think more about the response (high-quality text), which I like. Finally, at this point, many people say, “just disable notifications”. Well, I agree, but people do not expect an immediate response to an IM (for some reason)

I touched briefly on the quality of the message above. IM responses often need to be more concise and of a high enough detail granularity, and you will have to ask follow-up questions (here, I am also guilty). However, when you get an email reply, it is often well-formulated. It goes into detail where needed. Of course, sometimes details slip, or the quality reply could be better. But more often than not, I get and give better responses by email.

Next, the ability to delete messages is not a feature. It is a liability. So why do I say this? It has been a massive problem at my past employment of mine. Agreements would be made, then later deleted. It reached a point where others and I started screen-shooting conversations to have proof of an agreement because some found it a good idea to delete their messages. It led to some nasty confrontations. Furthermore, and in the same ballpark. Sometimes I want a backup of messages, which is fairly easy with email. But none of the IM tools that I know properly support this.

Then there is the whole issue of lock-in. Moving from Teams to Slack or the other way is nearly impossible. But with email, I can switch email clients, host providers, and domain providers. I can even self-host should I want it. You name it. It can be done. That is a feature I really love with email.

In extension to lock-in, there is always availability. As a consultant, some I interact with have Teams, some have Slack, some use Zulip, and others use something else. There is no good solution where I can access everything from a centralised place. Also, having Slack and Teams running simultaneously drains a battery fast (stupid Electron). With email, I can have my account at different companies readily available in one email client. Easy accessible with an excellent overview of messages and so on. Thanks to Apple Mail, Gnome Evolution, and Thunderbird for being awesome.

Then finally and one thing that is really big for me! Threads! EMAIL THREADS: Have you tried that and compared it to how any of the other tools do it? Email for life. You have a subject. You can reply all, reply one, reply some. You can even change the subject. OH, MY GODS, it is incredible! It works a million times better than Slack, teams, and Zulip combined! If we extend this to how hey.com works, email has no competitor.

There are a few other things like most email clients have better searches than their IM counterparts. But we will see a massive improvement in this, particularly in Slack, over the coming years.

So these are my reason for loving email.


Switching back to Visual Studio from Visual Studio Code

30 December 2022

A couple of months ago I updated Visual Studio 2022 which broke a lot of important things, like the save functionality. I had to look around for an alternative, and my first thought was Emacs, of course, sadly I could not get omni-sharp or omisharp-roslyn to work. So the next best option was Visual Studio Code, which I switched to.

Then an update was made to Visual Studio which fixed my problems or some of them, enough that I decided to move back. This blog post will describe why I moved back to Visual Studio. Before we continue for the rest of this blog post, VS will mean Visual Studio, and VSC will mean Visual Studio Code.

First, I want to say that VSC impressed me a lot. It was a lot snappier (this changed) than the first time around it, on my old blog I had a post about why I disliked both VSC and Atom and how slow both were (for the same reason… electron) was one of my main cavities with these two editors.
Also, I would like to amend that I only use VS and VSCode for C# and Blazor/MudBlazor, for everything else (JavaScript, Go, Python, …) I still use Emacs.

Project Dependencies and Nuget Management

One of the things I like the most about Rust and Ruby is dependency management. It is so simple compared to any other language, YES, I SAID THAT!!! With C# it is somewhat easy with Nugets and the UI in VS. However, the story is a little different in VSC. First of all internal project dependencies (if you have more than one project in a solution) is essentially handled by adding the dependency to the .csproj, which I have no issue with. But, there is an issue in VSC. By default there is (to my knowledge) no built-in way to do this other than adding the dependencies by hand to the .csproj file, which is pretty annoying. Yet there is a plug-in for this vscode-solution-explorer, it does other things too. But I have tried, more than once, that would end up with the .csproj file in a corrupt state and I would have to fix it by hand, ending up with just having done it by hand from the start being quicker.

Another issue comes with nuget packages, actually two issues. In VSC, you should be able to type Ctrl + Shift + P, and Select Nuget package Manager: Add Package, which I can and I can install Nuget packages. However, when I push to git all changes to the repo, colleagues get an error that reference to X is not found, where X is an element in the Nuget package. This is weird because if I run dotnet add <PROJECT> package <PACKAGE_NAME> with the options, I need (see stack overflow answer) then it works. I found on IRC that I am not the only one with this issue, but it seems like it fixes itself after certain updates. I just never hit one of those updates. Additionally, and this is not an issue with VSC but the Nuget command line tool (I think) getting access to private Nuget repos outside of VS just never worked for me, even though I had to configure it for VS with the command line tool. Maybe I missed something in the setup.


Now this one is probably the most significant problem, I could not get debugging to work. How you tried developing without the option of debugging, it sucks.

I have to be 100% honest. A colleague of mine does use VSC permanently and has debugging working. But we spent roughly 2 hours together trying to figure out what in the name of hell was wrong with my setup. But we simply could not find out what was wrong.
The debugger did seem to run, but breakpoints just never activated. From our point of view, it looked like there was a miscommunication between the debugger and VSC about where breakpoints were in the code. I do have a lead about where the issue might be, but I haven’t had the time to confirm it and fix it.

Could not find an alternative to Code Maid

Code Maid is a nifty plug-in to VS which allows you to clean up and format your code according to a specification. It is kind of similar to ClangFormat if you are familiar with that.

For some reason, I could not find an alternative to VSC, I am honestly surprised that there does not exist a port of Code Maid to VSC.

Code Maid is so nice and quickly removes unused imports and more, and I found that I really missed it in VSC as I spend quite some time removing unused imports.

Plug-In Configuration

Okay, this may be the plug-ins problem and not VSC, but it is still through VSC I experience the problem, so it is the first encounter with this issue. The issue is that some plugins require you to alter a JSON file to configure, others utilize drop-downs and text boxes, and even some use a mixture.

This is insanely annoying, first of all, because there is no coherence, and you have to remember which plug-ins that do it in which way. Some plug-ins do not inform the user that advanced configurations are only available in the JSON configuration. It is even hidden that the file exists at all. Granted a little bit of searching the web will reveal it, but for an editor that kind of beats the drums of easy-to-use, this is a letdown.

Mudblazor never worked properly

For frontend development in C# I use Mudblazor (this is not a recommendation), blazor/mudblazor is smart in theory, not always so much in practice. ANWYAYS this is a VSC post. In VS, the editor will most of the time, be able to find the MudBlazor tag you want. But for some reason, in VSC, every time I started a new .razor (Blazor/Mudblazor) file I would have to read-load the project for VSC to understand I wanted access to the Mudblazor components. The former mentioned colleague told me he has a similar issue. This is quite annoying, but it was a problem I could live with, if not for the other issues.

Weird CSV issue

I work with CSV’s a lot and have to be able to handle them, and here VSC failed me big time. For some stupid reason I could not figure out, visual studio kept adding CR LR pairs (\r\n) to the end of lines in CSV (Line Ending explanation). Now, this would be perfectly fine, if I had made the mistake of setting VSC to Microsoft’s (weird) default character encoding for Windows, but I have it configured to be default UTF-8 and VSC told me the pane was open with UTF-8. I could get as far as to identify that it was only an issue with CSVs, which is even weirder because I do not have a plug-in for CSVs installed. Additionally, neither Emacs, Sublime Text, Notepad++, nor VS has the issue.

If anyone can explain it, please reach out.

Resource usage and UI Stuttering

Now, we come to my probably biggest issue and a first-world problem with VSC. In the beginning, it was snappy and pretty sweet to use. However, as I added more and more plug-ins (10 in total), the UI started lagging, and I even experienced characters appearing long after I typed them, which is pretty frustrating. I type fast but not that fast. By enabling and disabling different plug-ins, I could conclude that it was not individual plug-ins but rather the amount. My work pc has 32GB of RAM and a 2.3GHz CPU this should not be a problem. For reference, and as stated in my post Stop using Electron, I find that VSC use around 1.3GB of RAM in Idle, and I have seen it use way over 12GB when I code (20+ files open simultaneously). That honestly worries me when VS, a fully-fledged IDE, uses way less (around 8GB) in the same situation. It was so annoying and got to a point where I sometimes found it took longer to close VSC than closing VS and shutting down windows combined.

Now I do have a suspicion about resource usage, and that is Electron. Yes, I am campaigning against it, but let us face it I use a lot of Electron because I have to (hello Signal my friend). But that aside, I do not have similar issues in Emacs with roughly the same configuration, nor do I have it in Vim. I guess it has something to do with how plug-ins are loaded/handled in VSC. But I cannot confirm it.


So this is why I have decided to move back to Visual Studio. Simply because I had a load of problems, nothing else. As an editor, Visual Studio Code is really solid, but as soon as you start fiddling a little bit with it, in particular adding plug-ins or doing more advanced stuff, it starts to fall apart, in my opinion. Please note, that I still find VS clunky, but there simply is no alternative for C# development besides VSC in my opinion. I would like to dive a little bit more into either using Vim or Emacs again at a later time. But for now, I am sticking with VS.

I would like to make the following closing remark: The VSC Community is by far one of if not the most welcoming editor communities I have ever entered, and I can only wish for the Emacs and Vim Communities to morph into something like the VSC community.


Why I prefer physical notebooks over software-based

18 October 2022

Most Software Professionals and Engineers take and keep notes in some form, which is an essential tool. This post will cover why I prefer physical notebooks over their software-based counterpart. Before I go into detail, I will say that I also keep notes on computers, and I am an avid Org Mode user. However, I find physical notebooks more suitable to my needs for a couple of reasons, which, as stated, I will cover here.

First portability! And your first question is probably what the heck is he talking hasn’t he heard about laptops, phones, and tablets? Well, of course, I have, but let me tell you a little secret, I have attended meetings where all electronic devices were disallowed in the room, even in buildings. Therefore, pen and paper was the only option for notes. In extension, I also find that I lose focus on the meeting or presentation given if I sit with a laptop, which I do not do when I only have a notebook. So many times, I will not bring a laptop to a meeting, and I will not pull out my phone.

Then there is the doodling. I have for decades used associative memory techniques without knowing it. During a meeting, lecture, or whatever, if I doodle at the same time next to my notes, I can recall almost all information from a meeting (I have scared people this way, it is fun) if I combine my notes and the doodles I make. Doing this allows me to scan my notes and get a map of what happened during the meeting. I can not do something similar in most note-taking tools on computers or tablets. The only app I found that comes close is GoodNotes for Apple’s iPad. Unfortunately, I do not have an iPad or an Apple Pencil, and for Android, I have not found an app that gets close to GoodNotes.

But my drawings are not just limited to doodles. I regularly draw up system diagrams and architectures as I research topics, new features, new products, etc. Thereby as I draw, I can visualise what my plan is, and I can have multiple designs easily side by side. It is super convenient. I also draw things like sequence diagrams or flow charts, which are very handy. Also, when I outline books or plan plots for stories. I draw maps where I plot the course of people or do other weirdness. It is convenient, and again for a software version, GoodNotes is the only close thing (I am guessing I should state by now that this post is not sponsored by GoodNotes, but it is fantastic).

Then there is flexibility in the workflow. For example, I keep multiple notebooks for different topics. Which can be quickly done in software and in physical form. But for some reason, context switching is easier for me when I swap physical items over changing a file or tab in the software. So to me, it is a more flexible workflow, and I know I am not the only one that has it that way.

Writing by hand enhances my recollection of the subject. I have for years and years aspired to have my notes electronically instead of on paper. But every time I have tried, I have realised that with notes I write by hand (using a pencil/pen), I can recall things better and easier. So another clear advantage for handwritten notes: GoodNotes is giving me some of the same benefits.

Finally, and a little bit funny, (joke) ENCRYPTION! I have the benefit of having handwriting which not even doctors can read.
This means people cannot just read me over the shoulders or upside down, that is pretty cool and something I like. Yes, I can read my own handwriting.

So this is basically why I prefer physical notebooks over software-based ones.