Let me talk about my first experience with Ubuntu. But before that I had to state that my previous experience with Linux was somewhat limited. I did play a bit with Linux at around 2003. I also have couple of OpenWRT routers that are Linux based. I was able to do quite a lot with these routers.

Anyway, back to Ubuntu. We had quite old server that was running Ubuntu 16.04.5 LTS and I have to install exactly the same version and necessary software. At the beginning I couldn’t find 16.04.5, but I was able to find 16.04.1 and I decided to install it and then later upgrade it to 16.04.5.

Firstly, I accidently install regular Ubuntu with desktop etc.

Many .NET developers sooner or later will have to do interop with unmanaged world. Let’s say for example that you need to use some Dll written in C++. Passing integers or floats relatively easy, but things are much more complicated with strings. Many C++ Dll still uses ANSI strings, so let’s talk about them. Normally when you read Microsoft documentation you will be slightly confused. Some pages states that you have to use UnmanagedType.LPStr like it stated here: https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.unmanagedtype?view=netframework-4.8#System_Runtime_InteropServices_UnmanagedType_LPStr. And that looks like correct for ANSI strings. Moreover, you can try it and it works just fine.

Some pages stated that you have to use IntPtr: https://docs.microsoft.com/en-us/previous-versions/ms172514(v=vs.100)?redirectedfrom=MSDN and then manually prepare strings to pass

Last time I wrote that finally last feature I needed was added to Skype. It does not work as I expected but I thought with time they will fixed. Well, a lot of time passed, and nothing changed. Moreover, none of the existing bugs were fixed and new bugs were added. And now about this is details

Last feature I need is window per contact, so I can talk with few people, without constantly switching between them. Moreover, sometimes I actually need to see information from both contacts at the same time. Well Microsoft finally implemented that feature. But if somebody sent me message then instead of highlighting that window in taskbar, only main Skype window highlighted. So, I still

Recently I found interesting program called dnSpy https://github.com/0xd4d/dnSpy that allow to debug .NET application without need to install anything. It also can allow debug .NET applications without source code (including .NET framework itself), it allow to edit assemblies, allow to edit in C#, IL etc.

Highly recommended application and it should be in tools belt of any .NET developer.

Today I was viewing this video https://www.youtube.com/watch?v=gB7UfSsOEGk

In this video guys showing different public groups in Facebook where people trade other people’s private information to scammers. Like tech calls, refund scams, pharm scams etc. And this guy was surprised by this fact. It reminds me https://www.mirabulus.com/it/blog/2019/09/19/you-are-product-and-not-customer

Facebook does quite substantial segregation. First category of people is just ballast. Long time ago all ships have something heave at their bottom to prevent flipping when big wave hitting them. And even in such unlucky case, it will flip back. Extra weight is obviously bad, but in this case is necessary for safe sail. The same applies to this category of people. Nobody needs them, they are necessary evil, food for

Black Friday is coming and if you want to buy anything on AM4 platform I can watch this video to pick up motherboard: https://www.youtube.com/watch?v=ti38JS8RuPU

Just keep in mind that he is looking at motherboard from overclocking point of view. But if he says avoid this motherboard, then you should avoid it. Specially for B450 chipset.

In my opinion $160 is top for motherboards for regular folks who does not to do heavy overclocking. My last motherboard was B450 GAMING PRO CARBON AC and I’m quite happy with it. It did cost $129 and was really happy that I decided to buy it from Newegg because even 15 months later this motherboard cost $139. It has nice audio track even

Not sure how many people aware, but .NET runtime will terminate process when background thread raises exception that is not handled. Reason behind that if exception is not handled, then this situation was not tested and can lead to program corrupting its state and it is much better to just terminate it. This reason definitely has some sense and normally I would agree with it. Application will crash, mini dump will be created and sent to Microsoft. Then you can have access to these crash reports and analyze them. But this approach has some issues.

First issue. In reality, corruption is extremely rare. For example, in our application I never heard about corrupted files. Still possible, just very rate. But

As you may guess, this blog is hosted somewhere. I do occasional backups, but usually I do backup quite rare. Usually once per few months unless I deploy some changes. There are few reasons why it happens. Firstly, I wasn’t sure that I will do blogging, secondly, I kind of forget. I believed that I deployed my blog and hosting company will make sure that data is still there, and I totally forgot about it. I did backup in kind of habit but because I was busy it happens rarely.

And few days ago, hosting company became victim of ransomware. All files were encrypted. Moreover, because some critical OS files were also encrypted, I don’t even able to see name

Traditionally in Windows there is standard message loop that consist of GetMessage, TranslateMessage and DispatchMessage. There are variations but most cases it is like this. One popular case is to use PeekMessage instead of GetMessage. Usually this message loop is in center of your application and in many modern frameworks it is not even visible. It is mostly hidden from developer.

But in some cases, it is required to create your own message loop. There are many cases when it is beneficial to do. As result there is main message loop that processing messages and in a reaction on some message, second message loop is started. Then in reaction on