Samsung's wireless charger, equipped with a UV sterilizing function, stands out for its competitive pricing and innovative features. Although it doesn't quite match the original PhoneSoap products in some respects, it compensates with excellent compatibility. Unlike PhoneSoap, which struggles with the high camera island of devices like my Pixel 8 Pro, Samsung’s charger accommodates my Pixel without issue. However, the charger does have a significant drawback—it emits a loud beep after completing its 10-minute disinfection cycle. This can be particularly annoying since my routine involves setting my phone to charge and disinfect right before sleep, aiming for a fully charged and sanitized phone by morning. Unfortunately, there is no built-in option to disable the beeping sound, although it’s not too difficult to manually disable the speaker within the device.
I needed to share some settings sections between my Blazor WASM application and the ASP.NET Core app that was hosting it. I didn't want to copy paste these sections to both appsettings.json files and then maintain two copies. This is how I solved it.

Create PID file in ASP.Net Core

It is very useful for Linux services to write their process ID into PID files. This helps other applications easily check if there is any instance of given application running. Such files are also used by monitoring tools (e.g., monit) to monitor applications.
I have recently migrated all (~15) my OTP tokens from Google Authenticator to KeePass database. Thanks to that I keep all my tokens secured by KeePass strong encryption and far away from uncle's Google always watching spying eye. The method is fairly easy and straightforward but requires some work to be done.
This guide assumes you followed the official guide on how to install ownCloud or Nextcloud servers and now you are trying to connect to your MySQL or MariaDB database using TLS/SSL connection. As a result you get "Exception occurred while logging exception: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2002]" or "SQLSTATE[HY000] [1045] Access denied for user 'nextcloud'@'localhost' (using password: YES)" error message.

ZFS health check script for Monit

When setting up your own home server then proper monitoring system is the one of most important things you want to do. Monit is a monitoring tool I decided to use. It's easy to configure but still very powerful. I also decided to use ZFS filesystem on my server. It's a bit more advanced than ext4 or ntfs thus there is more things to check regarding your pools health.

Thankfully I found very cool ZFS health check script on Calomel.org that sends email if something is wrong with any of the pools. I decided to adjust it a bit to work well with Monit.

How to create .NET Core desktop app and run it under Linux

Along with first .NET Core version Microsoft opened the framework and made it cross-platform. Thanks to this .NET developers can now easily run their websites and APIs on Linux, Android, Mac and so on. Unfortunately there is nothing like WinForms or WPF for .NET Core but that doesn't mean we can't create the front-end in a different framework.

I decided to give ElectronJs technology a try. It is successfully used in popular apps like Visual Studio Code, Slack and Tidal. It uses local Node.js runtime to host a website and displays it in Chromium. As a front-end library I used Angular 4 which is one of the most popular MVVM frameworks and has great support for shared services.

In this article I’m going to show, step by step, how I managed to setup an Angular 4 application which use locally hosted .NET C# Core 2.0 backend microservices run in Electron technology. Working example code can be found on my GitHub

HBase and Thrift in .NET C# Tutorial

You can learn here how to connect to and retrieve data from HBase using C# Thrift library. This article doesn’t cover methods of inserting and updating rows. This article assumes that you already have HBase set up and running along with Thrift node configured.