Sign in

Damir Arh

@damirscorner.com
130 followers 155 following 71 posts

Microsoft MVP. Software architect and polyglot developer. Mobile apps. Development process optimization. Climbing and hiking with my dog in spare time.

PostsRepliesMedia
Damir Arh @damirscorner.com · 09/10/2026
I've been meaning to write about test refactoring. The tests from my previous blog posts are good candidates for that. www.damirscorner.com/blog/posts/2... #dotnet #unittesting
damirscorner.com
Refactor tests to make them more readable
The key role of tests is to ensure that the software under test behaves correctly. But there's also value in test code being easy to read and understand. When a test breaks you want to quickly see wha...
000
Damir Arh @damirscorner.com · 02/10/2026
I recently learned about request timeouts middleware and decided to give it a try in a use case I wrote about some time ago www.damirscorner.com/blog/posts/2... #dotnet #aspnetcore
damirscorner.com
Using request timeouts middleware in web API
Last year a wrote a blog post about restricting a REST API endpoint total response time but potentially continuing the processing in the background. I implemented it fully by hand without any external...
010
Damir Arh @damirscorner.com · 25/09/2026
I thought of a good real world case for union types and decided to give them a try www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Model variable JSON field types with unions
A while back I wrote a blog post about deserializing a JSON with a field of a variable type in .NET. At that time I used a custom serializer to achieve that. This scenario seems like a good fit for un...
010
Damir Arh @damirscorner.com · 21/09/2026
Slides and demo from my C# 15 talk at NT konferenca 2026 www.damirscorner.com/sessions/202... #csharp15 #csharp #dotnet #ntk26
damirscorner.com
What's new in C# 15
Since a new version of .NET is being released every autumn, C# has also adopted the same cadence. So, this November C# 15 is going to be released alongside with .NET 11. In this talk, we will take a l...
011
Damir Arh @damirscorner.com · 18/09/2026
As I was reading about labeled break and continue statements in C# 15, I realized I probably never used a goto statement in C# www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Labeled break and continue statements in C# 15
Goto statements have been a part of C# since the very first version, but at least I haven't seen them being used very often. In C# 15, labels can also be used in combination with continue and break st...
000
Damir Arh @damirscorner.com · 11/09/2026
I had a hard time getting extension indexers to work until I figured out they aren't supported for strings www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Indexer extension members in C# 15
Last year, extension members were the biggest new feature of C# 14. I wrote about them in detail in multiple blogposts. This year, extension indexers are being added to C# 15 which didn't make it into...
020
Damir Arh @damirscorner.com · 04/09/2026
I tried collection expression arguments, another C# 15 language feature. www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Collection expressions with arguments in C# 15
Collection expressions were introduced in C# 12. I wrote a blog post about them at that time. In C# 15, the syntax is being extended with the ability to provide additional arguments to the underlying ...
000
Damir Arh @damirscorner.com · 28/08/2026
I took a closer look at how union types are implemented and how I could implement a custom one myself www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Custom union types in C# 15
In the previous blog post I explored what union types bring to C#. But what does the compiler do under the hood? And do I need to know about that to fully take advantage of union types?
020
Damir Arh @damirscorner.com · 21/08/2026
Union types are an alternative to closed class hierarchies in C# 15 when dealing with unrelated classes www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Union types in C# 15
Continuing with the topic of switch expression exhaustiveness in C# 15, I chose union types as the next new language feature to explore.
000
Damir Arh @damirscorner.com · 14/08/2026
Closed class hierarchies in C# 15 improve switch expression exhaustiveness checking www.damirscorner.com/blog/posts/2... #csharp15 #csharp #dotnet
damirscorner.com
Closed class hierarchies in C# 15
The release of C# 15 is getting closer and its new features started to show up in the .NET 11 previews. That's a good time for me to take a closer look at what to expect. I'm starting with closed clas...
010
Damir Arh @damirscorner.com · 07/08/2026
It took me a while to notice the misconfiguration of my remote NFS repository for restic www.damirscorner.com/blog/posts/2... #backup #synology #restic
damirscorner.com
Switching restic backup from NFS to SFTP
For over a year, I've been using restic to back up my home lab server to a repository on a Synology NAS mounted locally using NFS. All this time, it worked for me without any issues whatsoever. Only w...
000
Damir Arh @damirscorner.com · 31/07/2026
How I managed to install .NET 11 SDK preview in CachyOS www.damirscorner.com/blog/posts/2... #linux #dotnet
damirscorner.com
Installing preview .NET SDK in Arch Linux
I'm in the process of switching from Windows 11 to CachyOS on my home machine. Of course, my setup also includes .NET development tooling. And with the upcoming .NET 11 release, I want to have access ...
000
Damir Arh @damirscorner.com · 03/07/2026
It's really easy to manually run a GitHub Actions workflow using GitHub CLI www.damirscorner.com/blog/posts/2... #github
damirscorner.com
Manually trigger workflow from non-main branch
As a part of migrating my blog to Azure Static Web Apps, I also had to modify my GitHub Actions deployment workflow. Usually, I only want the deployment to get triggered from the main branch but durin...
000
Damir Arh @damirscorner.com · 26/06/2026
All configured custom domains for an Azure Static Web App will be automatically redirected to the default one www.damirscorner.com/blog/posts/2... #azure
damirscorner.com
Apex domain redirect for Azure Static Web Apps
After reimplementing redirects in Azure Static Web App using managed Azure Functions, there was one last redirect I couldn't implement in this way and had to find another solution for: redirecting all...
000
Damir Arh @damirscorner.com · 19/06/2026
I implemented a set of unit tests in Jest for my Azure Function www.damirscorner.com/blog/posts/2... #unittesting #typescript #azure
damirscorner.com
Writing tests for HTTP-triggered Azure Functions
As I was implementing redirects in Azure Functions for my blog, I wanted to be able to test them as efficiently as possible. Although you can run and test an Azure function locally, and I did, I also ...
000
Damir Arh @damirscorner.com · 12/06/2026
How I implemented redirects for my blog in Azure Static Web Apps www.damirscorner.com/blog/posts/2... #typescript #azure
damirscorner.com
Regex based redirects for Static Web Apps
The biggest challenge of moving my blog to Azure Static Web Apps were the redirects. I still support permalinks from my previous blog engine and I previously used back-references in IIS rewrite module...
020
Damir Arh @damirscorner.com · 29/05/2026
The TypeScript template for Azure Functions in Azure Static Web Apps works correctly only for simple cases. www.damirscorner.com/blog/posts/2... #typescript #azure #visualstudiocode #github
damirscorner.com
JSON files in TypeScript Azure Functions
In the process of moving my blog to Azure Static Web Apps I had to troubleshoot a strange issue: according to logs the managed API Azure Functions have been successfully deployed, but according to Azu...
040
Damir Arh @damirscorner.com · 22/05/2026
I learned that there is a way to provide your own type definitions when importing JSON files in TypeScript www.damirscorner.com/blog/posts/2... #typescript
damirscorner.com
Importing JSON with custom types in TypeScript
When you want to embed some static data in your TypeScript application, it's very convenient to store it as a JSON file and import it directly in a source code file. The compiler even implies static t...
030
Damir Arh @damirscorner.com · 15/05/2026
How I learned about the PathMap MSBuild property www.damirscorner.com/blog/posts/2... #msbuild #visualstudio #dotnet
damirscorner.com
A reason VS debugger might not hit breakpoints
There's an open source application plugin written in .NET I occasionally contribute to. As a regular part of my workflow, I sometimes have to attach the debugger to the application with the plugin loa...
000
Damir Arh @damirscorner.com · 27/03/2026
I regularly backup my Bitwarden vault using a PowerShell script www.damirscorner.com/blog/posts/2... #bitwarden #powershell
damirscorner.com
My Bitwarden backup script
Inspired by a great post in Bitwarden Community Forums and the author's bash script I decided to create my own PowerShell script for backing up the contents of my Bitwarden vault to my existing restic...
000
Damir Arh @damirscorner.com · 20/03/2026
I moved sensitive information for my scripts to a file that's only accessible with elevated privileges www.damirscorner.com/blog/posts/2... #powershell
damirscorner.com
Secure scripts with secrets in Windows
My restic backup script on Windows relied on having the restic password stored in an environment variable, making it and the restic command accessible to any process running with my credentials. Befor...
000
Damir Arh @damirscorner.com · 27/02/2026
How I fixed failing Teams login for users without a license in their primary organization www.damirscorner.com/blog/posts/2... #teams #azure
damirscorner.com
Logging into Teams without a license
In the company I work for, we're not using Teams internally and our users don't have a license for it. But some of our customers do use Teams and pay for it. They also add users from our Entra ID whic...
000
Damir Arh @damirscorner.com · 02/01/2026
A simple feature flag to disable all endpoint in Quarkus www.damirscorner.com/blog/posts/2... #quarkus #java
damirscorner.com
Disable Quarkus endpoints with a request filter
I needed a simple way to disable all endpoints in a Quarkus application based on a configuration property. A request filter was the right tool for the job, but some care had to be taken to not also di...
121
Damir Arh @damirscorner.com · 26/12/2025
I use PowerShell scripts to switch between JDKs in Windows www.damirscorner.com/blog/posts/2... #intellijidea #java
damirscorner.com
Switching between JDKs in Windows
IntelliJ IDEA does a great at managing multiple different JDK versions and using the right one for each project. However, a different solution is needed for the command line. I tried vfox, but I could...
010
Damir Arh @damirscorner.com · 19/12/2025
How I configured a Git repository on a shared remote directory www.damirscorner.com/blog/posts/2... #git #visualstudiocode
damirscorner.com
Git repository on a network share
I recently played around with having some version-controlled files on a remote Linux server with SSH access. I still wanted to edit them locally in Visual Studio Code, so the Remote - SSH extension se...
000
Damir Arh @damirscorner.com · 14/11/2025
I use conditional includes to configure my email for all repositories in a folder www.damirscorner.com/blog/posts/2... #git
damirscorner.com
Per-folder git configuration
My work consists of writing code for multiple clients and for some of them I need to use a different email in my git commits. I recently learned that there is a better approach for handling this than ...
000
Damir Arh @damirscorner.com · 07/11/2025
I added another network interface to a Linux virtual machine I use for hosting Docker containers www.damirscorner.com/blog/posts/2... #linux #proxmox #docker
damirscorner.com
Adding a second NIC to Proxmox VM
As I'm adding more services to my home lab server, I reached a point at which I want to expose some of them to the internet but keep others available only in the internal network. To securely do so fr...
010
Damir Arh @damirscorner.com · 31/10/2025
Oh My Posh can be configured to automatically change tab titles in Windows Terminal www.damirscorner.com/blog/posts/2... #powershell
damirscorner.com
PowerShell Tab Title in Windows Terminal
I often have several tabs open in my Windows Terminal. And I like how I can easily identify the right one by its title if it's a tab for WSL or an SSH connection. Fortunately, PowerShell can also auto...
030
Damir Arh @damirscorner.com · 17/10/2025
I wrote about the process of getting my old Xerox printer to work in Linux www.damirscorner.com/blog/posts/2... #xerox #printer #linux
damirscorner.com
Installing 32-bit Xerox printer in Linux
With Windows 10 support officially ending, I decided to install Linux Mint on one of my older machines which isn't supported by Windows 11. The transition was really smooth for the most part with the ...
000
Damir Arh @damirscorner.com · 03/10/2025
I updated my NuGet package publishing GitHub Actions workflow to use trusted publishing www.damirscorner.com/blog/posts/2... #nuget #dotnet #github
damirscorner.com
Switching to NuGet trusted publishing
When the support for trusted publishing on NuGet was announced, I decided to try switching to it for my side project as soon as possible. The process ended up being very smooth.
010
Damir Arh @damirscorner.com · 26/09/2025
I created a PowerShell script to simplify adding new network routes www.damirscorner.com/blog/posts/2... #powershell #networking #windows
damirscorner.com
Selective VPN routing in Windows
I mostly work remotely and to gain access to many work resources, I need a VPN connection to my office. When you connect, all of your network traffic is routed through the VPN connection by default. T...
000
Damir Arh @damirscorner.com · 24/09/2025
Slides and demo from my C# 14 talk at NT konferenca 2025 www.damirscorner.com/sessions/202... #csharp14 #csharp #dotnet #ntk25
damirscorner.com
What's new in C# 14
Since a new version of .NET is being released every autumn, C# has also adopted the same cadence. So, this November C# 14 is going to be released alongside with .NET 10. In this talk, we will take a l...
000
Damir Arh @damirscorner.com · 19/09/2025
New options for overloading operators in C# 14 www.damirscorner.com/blog/posts/2... #csharp14 #csharp #dotnet
damirscorner.com
User defined compound operators in C# 14
Operator overloading has been a part of C# since its very first version. The functionality has remained the same until the introduction of generic math in C# 11 when some changes were made to shift op...
010
Damir Arh @damirscorner.com · 12/09/2025
Multiple extension members with the same signature can cause ambiguity when they are all in scope www.damirscorner.com/blog/posts/2... #csharp #dotnet
damirscorner.com
Disambiguation of extension members in C# 14
In my previous two blog posts, I wrote about extension members in general and generic extension members. But there's one more topic related to extension members I'd like to cover: how ambiguous extens...
000
Damir Arh @damirscorner.com · 05/09/2025
As you would expect, the extension everything in C# 14 works with generics as well www.damirscorner.com/blog/posts/2... #csharp #dotnet
damirscorner.com
Generic extension members in C# 14
I already wrote about extension members in C# 14 in my previous blog post, but I only covered the non-generic members. Since generics were fully supported in extension methods, they are of course also...
010
Damir Arh @damirscorner.com · 29/08/2025
The long awaited extension everything feature is finally here with C# 14 www.damirscorner.com/blog/posts/2... #csharp #dotnet
damirscorner.com
Extension members in C# 14
Extension members are the largest new feature of C# 14. We have been hearing about it for quite a while, also under the name of extension everything and extension types. It was expected to be released...
030
Damir Arh @damirscorner.com · 22/08/2025
There's a bug in .NET 8 version of Created() method www.damirscorner.com/blog/posts/2... #aspnetcore #dotnet
damirscorner.com
Buggy Created response in ASP.NET Core 8
After getting a bug report that an ASP.NET Core Web API endpoint is returning 204 (No content) instead of 201 (Created), it turned out that the bug wasn't in the application code but in .NET.
000
Damir Arh @damirscorner.com · 15/08/2025
The new field keyword in C# 14 can simplify your properties and improve their encapsulation www.damirscorner.com/blog/posts/2... #csharp #dotnet
damirscorner.com
Field keyword in C# 14
The next C# 14 feature I took a closer look at was the field keyword. Similarly to the null-conditional assignment, it can reduce some of the boilerplate code you need to write. But it's not just synt...
000
Damir Arh @damirscorner.com · 08/08/2025
Pros and cons of null-conditional assignment in C# 14 www.damirscorner.com/blog/posts/2... #csharp #dotnet
damirscorner.com
Null-conditional assignment in C# 14
As the release of C# 14 is coming closer and most of the features are already available in preview, I decided to try them out myself. I started with null-conditional assignment, a syntactic sugar feat...
021
Damir Arh @damirscorner.com · 01/08/2025
The OpenTelemetry plugin for Rider looks promising www.damirscorner.com/blog/posts/2... #opentelemetry #rider #dotnet
damirscorner.com
OpenTelemetry collection in Rider
When JetBrains announced the availability of an OpenTelemetry plugin for Rider, I decided to give it a try. I've examined the options for OpenTelemetry collection during development in the past and wa...
000
Damir Arh @damirscorner.com · 25/07/2025
.NET provides various tools to ensure a timely response from a REST endpoint www.damirscorner.com/blog/posts/2... #dotnet #aspnetcore
damirscorner.com
Limit web API response time
When an ASP.NET Core Web API REST service endpoint makes further calls to upstream REST services or interacts with other potentially slow resources, its response time strongly depends on the response ...
010
Damir Arh @damirscorner.com · 18/07/2025
Restic works just as good on Windows as it does on Linux www.damirscorner.com/blog/posts/2... #backup #synology #restic
damirscorner.com
Backing up my Windows workstation using restic
After I successfully configured restic backup for my Linux home lab server, I wanted to do the same for my Windows workstation.
020
Damir Arh @damirscorner.com · 11/07/2025
I'm happily using restic for backing up my Linux home server www.damirscorner.com/blog/posts/2... #backup #synology #restic
damirscorner.com
Backing up Linux home server using restic
Since I bought an ASUS NUC some months ago to act as my home lab server, I started to rely on a couple of applications running on it. That meant it was time to set up a proper backup as a safeguard in...
020
Damir Arh @damirscorner.com · 04/07/2025
I sleep better knowing that my Synology NAS is properly backed up. www.damirscorner.com/blog/posts/2... #backup #synology #hetzner
damirscorner.com
Backup setup for my Synology NAS
As I'm slowly replacing cloud services with self-hosted ones, I'm relying on my Synology NAS more and more. This encouraged me to rethink its backup strategy. I configured two separate backups: one to...
000
Damir Arh @damirscorner.com · 09/05/2025
There is no built-in file logger in .NET www.damirscorner.com/blog/posts/2... #logging #dotnet
damirscorner.com
Logging to file in .NET
Nowadays, it's common to send logs to your logging platform of choice either via a dedicated logger for that platform or via an OpenTelemetry exporter. But what if the logs have to be read from a file...
010
Damir Arh @damirscorner.com · 02/05/2025
I was late to the Oh My Posh PowerShell module deprecation www.damirscorner.com/blog/posts/2... #powershell
damirscorner.com
Oh My Posh update to non-module version
After my latest (not so) regular update of installed PowerShell modules, I was surprised by a breaking change in the Oh My Posh module. Fortunately, a link to an online migration guide was displayed d...
110
Damir Arh @damirscorner.com · 25/04/2025
My tab completion configuration in PowerShell www.damirscorner.com/blog/posts/2... #powershell
damirscorner.com
Tab completions in PowerShell
While learning about Fast Node Manager, I noticed completions for PowerShell being mentioned in the documentation. I wasn't aware of completions beyond filenames and cmdlets were even supported in Pow...
030
Damir Arh @damirscorner.com · 18/04/2025
fnm is a better NVM for Windows www.damirscorner.com/blog/posts/2... #nodejs #powershell
damirscorner.com
Using Fast Node Manager in Windows
When I visited the official Node.js download page after a long time, I noticed fnm (Fast Node Manager) listed as the default download option. I've been successfully using NVM for Windows as the versio...
030
Damir Arh @damirscorner.com · 11/04/2025
Why SourceLink debugging in VS 2022 might not work for some packages www.damirscorner.com/blog/posts/2... #visualstudio #visualstudiocode #rider #dotnet
damirscorner.com
Debugging libraries from NuGet
As I was troubleshooting my issues with Elastic logger configuration, I couldn't get the debugging in Visual Studio 2022 to work for the Elastic.Extensions.Logging NuGet package, although it appeared ...
010
Damir Arh @damirscorner.com · 04/04/2025
Documentation for Elasticsearch logger configuration could be better www.damirscorner.com/blog/posts/2... #dotnet #logging #elasticsearch
damirscorner.com
Elasticsearch log ingest config in .NET
When trying to get the logging to Elasticsearch from .NET to work in the production environment, I spent too much time configuring the logger. It was mostly due to missing and incorrect documentation.
010