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.
What Programming Languages do I use?
First let me explain why I am making this post. I have seen a lot of posts on LinkedIn, Mastodon, Twitter/X, Reddit, and other social medias over the years where new developers/engineers (I will use developers from her) ask what programming language(s) other people use. The purpose of these post is to get a grasp of what languages they should learn or can expect to be asked to learn in the industry. Additionally, there is a certain amount of hope from new developers that they will only have to learn one language (I find this sad). So therefore in this post I will talk about what programming languages I use on a (semi) daily basis and will touch a little bit on why.
First up C#. So the company I work for is mainly a Windows shop and most of the products we offer are written in C#. Additionally the consultancy work we do is often in C# as well, requested by customers. There is no technological reason for C# other than at one point it was (still is) significantly better than Java and therefore won.
Next Python, some of the customers I work do a lot of data analysis and here Python is king. Python can, due to magic libraris such as SciPy, Numpy, and Matplot lib quickly create a good foundation for advance data analysis and handling. Additionally, for the above reason a lot of people provide libraries to interact with god forsaken file formates which previously required propritary software.
Then there is Go. This was simply a requirement from a customer. They need continued development on an internal project which was written in Go. So I continued it in Go. A note here, I have a couple of times now developed in Go professionally. I really like the language, but I would really love something simlar to Crates from Rust or Gems Ruby rather than what there is now for package management.
Those are the languages I currently develop in for my employeer. Then there is my leisure time languages. Which includes Go and Python. So I do leetcode, to keep my skills up to date with data structures and problem solving in areas I may not get tickled during my workday. This I do in C, C++, Go, Python, and Ruby. So why do I do it in these languages. Well first of all I would like to be better a Go, Ruby, and Python (even though I do not like the latter). C and C++ I use to keep my skills here up to date, I really like both languages and I think they get a lot of bashing for bashings sake. Then private projects. Here I mainly use C++ and Ruby. For each language I have my reasons. C++ is by now the language I know this best and is most familiar with and therefore I use it as much as I can. Additionally I find that its one of the languages I see moving in a direction I like. Basically every new C++ standard release I think, wow the language just got better… unlike for instance C# (I hate experssion bodies and all that they stand for). The Ruby. Ah my true love. Ruby is to me everything Python should have been. It is not indentation based, (for me) it is way easier to read than Python, it is elegant, and I find that code flows so effortlessly in Ruby compared to a lot of other languages. I quite frankly do not under how it has not gotten more popular or rather retained its popularity. And just to clarify no I do not mean Ruby on Rails, just the base language Ruby… Although Rails is nice to.
So basically these are the languages which I use on a semi daliy basis, with a little bit of reason as to why. I hope you found it interesting.
./Lars
Why I think the iMac Pro is dead
This post is purely my speculations and thoughts on the matter. Additionally this post should be seen from a developers point of view. Ever since Apple came out with their new M series chips, I have been expecting a iMac Pro to come out. However, what instead seems to have happend is… it disappeared. Then this “bombshell” was dropped TechCrunch: Apple says it’s not planning a 23-inch iMac, which has been repeated by other medias. So what happend?
Well honestly, I think Apple kind of fucked up. So what did they fuck up? Two things actually and they are from two different categories. First fuck up, the MacBook Pro 16 inch. The machine is an amazing power house (sadly I have only had the pleasure a couple of times), which greatly outperform similar classed machines (looking at you Dell XPS). But that cannot stand alone. Yet, it is not just powerful, it has a bigger screen compared to 15 inch pre M era. It is really light and very portable, and it has (grabs my pearls) an HDMI port. This basically means it can be connected to any display or project without a flipping dongle. This means that now, you can buy a very nice screen cheaper and MacBook Pro and stay portable. Which makes an iMac Pro less desirable. Then you also have the fact that creators like MKHB have stated (I could find the exact youtube video) that video editing can now be done in high resolution on the MacBook Pro. Again decreasing the desirability of an iMac Pro. Because before you had the iMac Pro and Mac Pro.
But the MacBook Pro does not even come close to the second fuck up. The Mac Studio. I am old enough to remember the PowerMac Cube G4! Which was introduce as a midpoint between the consumer grade iMac and the PowerMac power house. brief side note: For those to young, the PowerMac was the Mac Pro before Macs where Intel based. Note that introduce as the mid point between iMac and PowerMac. Think about it for a second, what was it replaced with? Well the Mac Mini, but the Mini was really a midpoint between iMac and Mac Pro. It was a “competitor” to iMac, where you could bring your own peripherals. What came instead a much later was the iMac Pro. This was the true midpoint between iMac and Mac Pro. Then fast forward a few years what happend? The flipping reintroduced the Power Mac Cube, it was just called Mac Studio instead. It gave you an option to bring your own peripherals effectively making it a competitor to the iMac Pro (if it had not be discontinued). That means that if they reintroduce the iMac Pro, it will not be competing against other brands, it will be competing against the Mac Studio. Therefore, Apple would be quite stupid, if they where to reintroduce the iMac Pro as it either will not sell or it will cannibalise the Mac Studio. Another thing in the favour of a Mac Studio over an iMac Pro. It is freakishly portable and can be hooked up to any screen, keyboard, and mouse! So why would you lob around a 27 inch monitor with a computer? When you can just bring a cute little cube?
So I basically think Apple either accidentally or intentionally killed the iMac Pro market. Now, there is actually another factor which Apple had zero control over and that is the increase in working from everywhere. It has become so common an normal that many companies have stopped offering desktops to their employees and instead only offer laptops. This has been a trend for a while and I think apple may have seen the writing on the wall and decided to focus so much harder on their laptop lines than desktops. With the Mac Studio and Mac Pro being focused on video creation (editing, animation, etc) and everything else being focused on other customers. Like developers, photographers, and so on.
So do I think the iMac Pro is permanently dead? That is actually a good question. My honest answer is yes… until the day they may kill the Mac Studio. If that happens (I doubt it at the moment) then they may reconsider it.
./Lars
[QueryC++] Status Update and Apology
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:
- Focusing only on CMake
- Hardening the test process
- Automatic integration test
- Automatic unit test
- 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.
Funding
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.
Logo
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!
./Lars
[Book Review] Watchdogs Legion: Day Zero
[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.
./Lars
I love email, and I am tired of pretending that I do not
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.
./Lars