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.

Please Stop using Electron

19 June 2022

Just stop, that is it, that is the tweet.

That is a tweet I see a lot in particular when it comes to people criticising both Node.Js and Electron. If anyone criticise these two technologies online in particular on Twitter and LinkedIn, immediately a horde of developers with jump in and defend these two technologies or simply tell people to stop criticising both of them. However, in both cases I find critique is in order and in particular when in comes to requesting people to stop using either of them. In this post I will focus on Electron and why I believe we should stop using it. I would also like to credit Nick host of The Linux Experiment on YouTube who made this video ELECTRON: Why people HATE it, why devs USE it for inspiring this post. Also any resource stats I list here is from a Mac, but I have seen roughly the same numbers on Windows and Linux as well.

Let us get started, with What is Electron? Electron is (at its core) a framework that allows developers to build application across multiple platforms in JavaScript, HTML, and CSS. With intention and promise of making it possible to make application for all platforms easy and trouble free, which to its credit it actually does. But wait is JavaScript, HTML, and CSS not web programming/markup languages? Well yes and this is why Node.JS (from here I will just call it Node) is involved in these shenanigans. Node allows you to run JavaScript “outside” of a browser on (almost) any platform, yes it is a JavaScript runtime. Okay that sounds all good, doesn’t it? We develop one application and then it runs everywhere, simple, inexpensive, and expands the amount of customers we can reach as Linux, MacOS, and Windows is within our grasp from the start. Well yes, but there is a dark side.

If you use Google Chrome you will know that it eats system resources (RAM, CPU, etc.) for breakfast, lunch, and dinner, and if you have 16GB of RAM or less it literally sucks as a browser (it sucks for other reasons to but I do not want to get into that here). Why is this relevant? Well technically a Electron App is not a standalone app as for instance Apple Pages or Microsoft Word is, an Electron App runs within a Chromium instance and Chromium is what is in the stomach of Google Chrome (from an abstract perspective). Therefore, apps based on Electron is based on chromium and is just as resource eating happy and that is a problem, because they use resources for no good reasons. As a developer I have had to use Visual Studio Code (VSCode), Slack, and Microsoft Teams all at the same time for work and with Signal and Spotify running as well. Common for all of these apps is that they are electron apps and for VSCode alone, the app start with a memory usage of roughly 800MB which increases with usage and multiple document tabs. Then I add addons/extension for the languages and tools I need, plus spell control and I end up with an idle RAM usage between 1.3 and 2GB which is insane! Emacs for a comprasion with all the plugins I have (similar to what I use in VSCode) in idle runs at between 90mb - 180mb depending on the files I have open. That is 1344.44% increase in resource consumption in IDLE for VSCode compared to Emacs for the best case scenario. Spotify is even worse with a best case idle consumption of 1.5GB and I have seen none idle reach up to 8GB. Eight GB of RAM just to play music useless. So that is just two apps, I will now list the apps with their lowest idle memory consumption I have seen:

  • VSCode (with plugins): 1.3GB
  • Spotify: 1.5GB
  • Slack (with three work groups): 617MB
  • Signal: 578MB
  • Microsoft Teams (with one team): 800MB

That is a grand total of 4795 MB (or 4.7GB) of RAM. In a pretty standard home system with 16GB of RAM that is a bit over 1/4 of the system resources or a 1/8 of a pretty normal developer machine with 32GB of RAM. Just running 5 Electron apps in idle mode, now let us say we add Hyper and assume it use something like Signal, that will bring us over 5GB of idle memory use. It is literally stupid, the amount of memory usage Electron Apps use. Even worse what if you are at the same time a Google Chrome / Chromium or other blink based browser user. Well your memory usage is just going up, up and up for no good reason. Other than some developer/company was to lazy, cheap, or both to actually develop apps for each platform, which is not really a good reason. I would like to inject here I really love all the above apps with the exception of Spotify, which can go die in Swedish forest.

BUT RAM IS CHEAP!!!! Yes RAM is cheap, but that is no excuse. Knowingly using something that is this useless in terms of handling its resource consumption should be a dead give away that a producent of the software don’t care about the user, only the bottom line.

As if the memory consumption alone is not a sway to stop using electron for development there is another which Nick from the Linux Experiment focused a lot on and that is UI inconsistency. Electron apps looks like the developer wants it, not like the system wants it. Therefore a electron app can look (and most do) really out of place on a Mac or Gnome based Linux distribution and it is honestly really weird how users just accept this, in particular mac users. By not having a common design language (similar to what Apple enforce on iPhone and Mac through the app store) we are seeing apps that looks really weird and not in a good way. They may look normal on Windows but on other system they look crap and are confusing for the user. It is pretty impressive we let developers get away with it.

So What can developers and companies do to avoid this? Well for starts stop using Electron, it will cost the company more money and it will take longer time but you will get apps that are better for users and hopefully get you better customer satisfaction. But how to stop using electron? Well first of all right what you can in a cross platform language most are these days, I of cause recommend C++ because I am addict, but Rust is also getting there. This will allow you to create shallow apps on top in Swift for iOS and MacOS, GTK for Gnome, QT for KDE, UPF (or whatever it is called on windows), and Kotlin for Android. You will need UX people for it on all platforms but gods be damned you should have already done that with the Electron version. If you have an app that is mostly based on Web Api calls you can build that in whatever language you want and then again just have the shallow apps client side. It is not rocket science to make good native apps.

Learn to cook, just do it

19 June 2022

One of my most cherished passions is cooking, and I can be in the kitchen for hours and hours, not noticing time past. It serves as a sort of meditation for me, and (most often) lovely food comes out in the end. Now I do not expect everyone to love cooking nor to do it every day, but in this post, I would like to explain why it is my honest belief that everyone should learn to cook a little bit. I mean beyond the extent of boiling pasta and frying an egg.

So why should you learn to cook? Well there are quite a few reasons to cook yourself in my opinion, here are some of them

  • You understand seasons better
  • You will get to understand food origins better (what ingredients it is made of)
  • You save money
  • You will learn that you may like things you did not know about
  • Meal prep
  • You might like it

Understanding the seasons better

When you go grocery shopping and go around the fruits and vegetables, you will realise that some of the shop’s inventory or quality changes. For example, it is pretty hard (depending on the region) to get fresh local strawberries in December; the same goes for other berries and fruits. Root vegetables like beets also come and go, particularly the pretty heritage (a.k.a rainbow) once most often is available in my area in mid-to-late autumn and until the end of March. One ingredient that is available all year round in my region is carrots. However, when they first are available, they are vibrant orange (unless you buy heritage versions) and so sweet. To me, it is almost candy. Later in autumn they will turn bigger, lose a bit of their flavour but still be really nice. Then in late January, they will turn sad, get soft, at least one in a 1 kilo pack will be rotten, and in general, they are just sad. You can still cook with them, but I think you should eat them raw at this stage.

Notice how I describe and know, and when the carrots change, it is the same for other ingredients. One I keep a sharp eye on is sellery, as I love them when they are crisp and (in my area) salty and later, they will go soft and sad, turning almost watery. By knowing this, I know what ingredients I should plan to use in my dishes and what alternatives I may need to look for. If you are a salad person who loves spinach, the latter often get sad in late October.

Additionally, this also tells you that if you go into a restaurant and they claim this locally grown <Insert ingredient>, you have some idea if they are bullshitting you or not. I have personally tried, where the waiter told me that I was having an outdoor grown freshly harvested spinach salad in late December, where we had a good solid two weeks of frost.

Understadning food origin better

Where does a bolognese come from? The jar? By making the food yourself, you will start to realise what ingredients go into a dish, and you will start to realise that it is flipping how much stuff is ready to eat. I am, personally, still confused about why some pasta sauces contain palm oil and curry in one very strange case. Additionally, you know what you put in your body, and you have higher control over it, which can (I do not promise anything) lead you to have a more healthy life. Reduced sodium intake is often a side effect of starting to cook yourself.

Additionally, when it comes to meat, I am honestly horrified at the number of people who have no clue where different cuts come from on an animal. First, knowing just a bit of animal anatomy can give hints about how to cook the meat. Tenderloin sees no work should be soft and tender (if it is not, something is wrong). It should be cooked carefully and not for that long. Hardworking muscles will be tough and need longer preparation time. Often these cuts are ideal for stews. See simple guidelines that make it easy to cook and if you have problems, remember to write it down, or like there are plenty of small books on this.

As you cook, you will realise that your knowledge grows and that it becomes easier to cook, almost with every meal. I have been cooking since I was 12, so like 21 years now, and I still feel like I am learning about ingredients every time I cook.

You save money

In most cases cooking yourself will save you money. That is the section. Compare the price of ready meals or eating out to the cost of cooking yourself, and you will see quite the difference. It is stupid how expensive some ready-to-eat meals are.

You will learn that you may like things you did not know about

One of the things I have done over the years while grocery shopping is to look at something unfamiliar and go, uh, that looks interesting and buy a small amount and taste it. That has taught me that things I either thought I did not like or things I did know what was is now some of my favourite ingredients. Sellery is an example of this. The school I went to destroyed the flavour of this for me for over a decade, and now because I know how to treat it, it is one of my favourite vegetables on stews.

Additionally, as I have gotten better at cooking, I have also started looking at more recipes, which has made me explore different food cultures from around the world. Which has allowed me to explore dishes I never knew and find new favourites.

Meal prep

So I do not do this much more because I get lunch at work. But as a student, I used to meal prep a lot on Sundays for a few reasons.

  • Food in the canteen was expensive, and the skills of the chef were expensive
  • The food in the mall close by was expensive as well
  • I had food both for the evening and lunch if needed
  • Less stress

Throughout college and university, I would spend Sundays doing homework, cleaning (yea, right) and preparing food for at least 4 out of the five weeks. I would cook some protein, mainly pork, chicken, or beef, for 2-3 days. I would cook one batch of rice and one of pasta. Then I would make two base dishes. Then for Monday, I would have rice and dish one, no protein, day two pasta dish two and protein and then mingle it around. This ensured I would not get bored with the food, and I could quickly bring it to the university and throw it into the microwave. It was, in short awesome, and I saved money. Additionally, I would cook enough to have enough rice and pasta for dinner as well, and I could throw together a quick salad, fix up a quick soup and mix rice or pasta through either. Also, if I had leftovers of dishes one and two, I would put them in the freezer for a rainy day when I did not have time to cook in the evening. It saved me a lot of money, gave me healthy food, and removed a lot of the stress.

You may like cooking

I know quite a few people who said, “Oh I do not like cooking”, or “It takes too long”. But after starting to cook, they first realised it does not take as much time as they thought and discovered that during cook time of stews and stuff, they could do homework, read, or play a video game. Then after some time, most of them would say, “huh, I actually like cooking now”. To be honest, all but one came back with a similar reaction.

So in conclusion, learn to cook.

./Lars

[Book Review] Nocturnal Blood by Villimey Mist

14 June 2022

This is the first real book review on my blog. However, I do hope more will come in the future, as I do enjoy reading. I will not focus so much on plots and storylines but rather on the experience the book gives me.

Before I start, I would like (to ensure complete transparency) to note that I was sent the book Nocturnal Blood alongside the two following books for free by the author Villimey Mist. Furthermore, I consider Villimey a friend, even though we have never met in person. But I was not paid for this review, and Villmey did not ask for it. So I am doing this review on my own initiative.

We meet Leia (yes, like the princess), a young girl in College suffering from OCD and anxiety; apparently, three little claps can solve a lot. She is, apparently, friendless with her only real friend (Sophie) disappearing to Canada and the completely. One night Leia makes the mistake of walking down the wrong alleyway, but she is saved by Sophie, who now is turned vampire. Short after, the couple is thrown into real problems due to Sophie breaking a law of the vampires, which sees them on the run from all vampires and their familiars. This is the base setup for the story and all we need to discuss the book.

Even before the girls are on the run, we see Leia having to deal with her only friend being a vampire. Additionally, her only friend has killed in front of her. The gore shakes her to the core, and she has to make decisions about her friend no one should ever have to make. But after all, Sophie killed for her, to protect her. After Sophie breaks the vampire law, they must go on the run, a desperate dash for Seattle. As they run, we understand that the bond between the two girls changes, but not just that. We also see Leia change, and changes are made to her core.

Leia is in the beginning, in denial. But, I mean, would you not be if you find out vampires are real from one day to the next, and because someone else broke the law, you need to get the hell out of your home? I would. But she is not just in denial. She is mentally weak in the sense that she is a push-around. It is easy for Sophie to get Leia to do what she wants just because Leia wants to please her, and it makes her happy to please others. Additionally, Leia trusts others or rather trusts the goodness of others. This is both her greats weakness but also strength. However, throughout their journey, this gets her and Sophie in trouble on multiple occasions. One would think she would learn, but clearly, she does not grasp the concept of reinforced learning. This first comes into full play when Leia, tired doing daytime, needs a rest and seak out a motel and by pure chance, they run into a vampire familiar who wants to please Sophie by providing her blood from, eh, known sources. Leia’s trust facilitates all this, even though, on multiple occasions, Sophie warns her from seeking out Motels and civilisation at large as vampires have multiple sauges (familiars) all over. Here Villimey hints that no place is safe, which is good advice even in our boring world of reality. This experience leaves Leia’s trust devastated and shattered. In extension, she also disappointed Sophie by seeking out a motel, even though she forbade it.

However, although this ordeal should have taught Leia a lesson, we see the first significant change in her. She is no longer such a push-around. She starts setting demands for Sophie, she argues, and the duo begins to have equal footing, which at this time in the story is quite refreshing as otherwise, I would have asked for Leia to be killed. Throughout the story, Sophie is psychologically abusing Leia, or so one may think, but it becomes clear that it is not her intent. She is using her own brand of tough love to harden Leia, something she desperately needs at the start of the story.

After the motel, they are back on the road, but Leia realises that the car is low on gas. She decides to go for a quick fuel up and some food, and to be honest, like a goldfish, she checks into another motel, seemingly forgetting the last events that transpired at a motel. This is all due to a guy who turns out to be, well, not nice. At this time, however, Leia’s trust has already been shattered enough, and she does not totally lose it but instead seems to expect it, so why did she trust the guy in the first place? That is weird a leaves some questions about her mental features in terms of denial versus reality. But at least she is learning on the job and after this is pretty much not trusting anyone else for the remainder of the story, all though she learns to trust one more vampire than Sophie. To me, at least, it seems like she is moving towards a good equilibrium in terms of blind trust compared to blind distrust.

As the story progress, we experience the respect between the young women blossoming, and by the end, they reach a form of mutual respect. In particular, this is facilitated by Sophie, who slowly needs to apply her tough love less and less, and starts to recognise that Leia has gotten tougher and stronger, less OCD-like, granted who has time for OCD with blood, vampires, and bastard humans at every corner? We see Leia turn from a girl to a young woman in terms of maturity, and we see Sophie soften up and become more human. In Sophie’s defence, before our story starts, she has been through things no being should ever experience. I thoroughly enjoyed following these young women’s development and how they end out as closer friends but the second to last story arc.

I believe that Villmey has created characters you, as a reader, can understand, even when they seem cold and/or broken. I find it refreshing to see a book in this style that does not try to hide the horrific parts of being a vampire from the reader and does not shy away from showing human cruelty when a human desires something.

However, although I enjoyed Nocturnal Blood and its characters, I have a few minor grievances regarding how the book is written, and I think it is important that I address these. First, speed. I find that the jump between scenes, which I feel in the book acts more like sub-story arcs, is too quick. In particular, at the beginning of the book, after the first motel, it settles down and becomes a smooth ride. That being said, the quick jumps in the beginning, made me a little confused. I cannot say if this is because Villmey wanted to jump-start the storyline and dive deeper I am not sure. But the contrast is a little weird to me. One arc of the book, where meet the character Kenji (Nice jab a Twilight Valley), also seems rushed to me like he is being plugged in for supporting reasons, a little like Mouning Murdle in Harry Potter and the Goblet of Fire. Although the character is given “prime time” later in the story. Secondly, not diving deep. After some of the encounters with “baddies”, I felt a little let down, and the gory details were too shallowly described. For an author who enjoys horror herself, I am surprised that we are not painted a more gory picture of the aftermaths of incidents. However, the last scene in the book, including both Sophie and Leia, is nicely framed, and the same goes for the ally way at the beginning of the book. Finally, I have a bit of an issue with how Sophie’s back story is presented. It is not bad. It is great. But I feel like too little of her life between being turned and meeting Leia again is being revealed regarding the relationship between Sophie and her ward. I would have liked to have seen even more unveiled as the story progressed. Again here Villmey Although this is partially rectified by Sophie describing memories with Kenji.

But even with these minor grievances, I find Nocturnal Blood entertaining to read from an author who surely will produce magnificent vampire and other fantasy-related novels in the future. Based on the fact that this is Villmeys debut novel, I can only have high expectations for Nocturnal Farm, the next instalment in this series.

I recommend this book to any interested in vampire stories thoroughly and who wants to follow, what I expect to be, one of the next excellent vampire novelists.

./Lars

P.s Do not read this book in an emergency room. People look at you weird for some reason.

QueryC++: Requesting input for the design of multi table queries

03 June 2022

On twitter, I introduced QueryC++ to the C++ community there and I said I would like input on the design process. This let me to create an issue on Gitlab for the design of multi-table queries. However, I did not get any response yet. Therefore, I am turning to my blog in the hopes I can get a bit more traction.

Please go to https://gitlab.com/looopTools/querycpp/-/issues/50 and leave your comment.

./Lars

[DRAFT] The risks of side loading... Apple is sort of right

24 April 2022

In my last post; Why I don’t think The Digital Markets Act will matter too much… for Apple. I talked about The Digital Markets Act and why I do not believe it will have an enormous effect on Apple overall. In that post, I mentioned the term sideloading [1,2], which is the main thing Apple seems to “fear” with the digital markets act. The reason Apple fears it (they claim) is the threat to the security and privacy of their customers. In particular, the latter is an area Apple has been championing for years to differentiate itself from Google and the likes. But is there any hold to these claims? Well, sort of yes, and in this blog post, I will outline what the threats (that I know of) are and why Apple is sort of right. Before we continue, I do like the intent of the digital markets act, and I do not like the monopoly Apple has on App distribution for iOS and iPadOS.

What is sideloading?

Sideloading is the approach of loading data (Apps, media, etc.) onto a device following none conventional ways or ways not approved by the device manufacturer. For iPhones and iPads, that could be installing an App without going through Apple’s App Store. Again for iPhones, an example of this is Cydia.

Sideloading on Android is quite common, and F-Droid has existed for a long time now, serving as an alternative to the Google Play store (or whatever Google/Alphabet calls it now). The scene is very different on iOS and iPadOS for the simple reason that it requires the user to jailbreak (see: Why I don’t think The Digital Markets Act will matter too much… for Apple which makes it significantly more challenging to sideload apps.

What is the problem with sideloading, and why Apple is sort of right?

Let us, for a second, imagine a world where iOS and iPadOS were more open and allowed for sideloading. What would be the issue with this? Well, nothing on the surface, really, not to the end-user, but Apple would lose money as they do earn a lot from the App Store. But below the surface, many problems can start to materialise, which can later be exposed to the end-user. What am I talking about?

Since day one of the App Store launch, Apple has run checks (in one form or the other) of the Application a developer submits to the store. These checks are performed even across versions. As a result, it is not uncommon to hear a developer complain that the newest version of the developer’s App is being rejected, even with “minor” changes. These checks include, but are not limited to:

  • UI checks
  • Uphold privacy rules
  • Resource usage
  • Malicousesness

The first check is meant to look at the Application and identify if it looks and behaves according to Apple’s design guidelines. Unfortunately, I know quite a few Apps that have failed this check in the past. This may seem like nitpicking from Apple, but the purpose is 100% valid; Provide our users with a similar user interface across all Apps, and they will feel more at home. With this check, Apple ensures that they can control this and provide (in some opinions) a better overall experience when using an iOS or iPadOS unit. Personal note: As someone who occasionally has to use Android, I wish this was a thing on Android.

The second is to ensure that a third party does not steal your data against your will. I do not think I need to go into details about why this is important. But this is also one of the reasons I do not really like Apps developed in Flutter and other alternatives, as they can trick this check.

Resource Usage, Apple have some standards for how an App should behave, and they have a test that evaluates the Apps behaviour over time and under different loads. This is meant to ensure that Apps behaviour nicely and (hopefully) do not drain your battery in no time (looking at you WhatsApp) or hug all your phone resources. These tests are less strict for a game as games require more resources.

Finally, maliciousness. Apple has never fully stated what this check includes, and I believe they never will. Additionally, I can only provide half a guess towards what the check may do and test, so I will not do that. But the purpose of the check is to avoid viruses, malware and so on being deployed on iOS and iPad devices, which is a good thing.

Clearly, these steps are all a good thing that Apple do. However, if you sideload an app, Apple has no way of performing this quality assurance, which is their most prominent argument against sideloading. The “problem” for people who want to open up the Apple ecosystem and allow for sideloading is that it is a damn valid point. There are fewer viruses and malware reported for iOS and iPadOS than on Android, and my guess is that is partly due to the App Store and how difficult it is to get a malicious app on the store and for people to download it. So even though I would like to see officially supported sideloading on iOS (I would not use it, though), I fully understand Apple, and they are sort of right.

./Lars