<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Albert Akhmetov</title><link>https://albertakhmetov.com/</link><description>Recent content on Albert Akhmetov</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 08 Jun 2026 12:00:00 +0500</lastBuildDate><atom:link href="https://albertakhmetov.com/index.xml" rel="self" type="application/rss+xml"/><item><title>How to Add an Existing SSH Key on Mac for Codeberg</title><link>https://albertakhmetov.com/posts/2026/add-ssh-key-mac-codeberg/</link><pubDate>Mon, 08 Jun 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/add-ssh-key-mac-codeberg/</guid><description>&lt;p&gt;Clone and push to Codeberg from your Mac using an SSH key you already have.&lt;/p&gt;</description></item><item><title>How to Set Up Commit and Tag Signing on Mac</title><link>https://albertakhmetov.com/posts/2026/setup-commit-signing-mac/</link><pubDate>Sun, 07 Jun 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/setup-commit-signing-mac/</guid><description>&lt;p&gt;Verify your commits on Codeberg with a green badge.&lt;/p&gt;</description></item><item><title>XX</title><link>https://albertakhmetov.com/posts/2026/xx/</link><pubDate>Sat, 06 Jun 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/xx/</guid><description>&lt;p&gt;Twenty years ago, on June 6, 2006, I defended my graduation thesis.&lt;/p&gt;</description></item><item><title>Windows API</title><link>https://albertakhmetov.com/posts/2026/windows-api/</link><pubDate>Sat, 25 Apr 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/windows-api/</guid><description>&lt;p&gt;My thoughts about using Windows API in apps.&lt;/p&gt;</description></item><item><title>Settings</title><link>https://albertakhmetov.com/posts/2026/settings/</link><pubDate>Sat, 18 Apr 2026 12:12:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/settings/</guid><description>&lt;p&gt;Today, let&amp;rsquo;s talk about settings.&lt;/p&gt;</description></item><item><title>Publishing NuGet Packages to Codeberg</title><link>https://albertakhmetov.com/posts/2026/publishing-nuget-to-codeberg/</link><pubDate>Sat, 11 Apr 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/publishing-nuget-to-codeberg/</guid><description>&lt;p&gt;I wrote about &lt;a href="../../2024/github-packages-as-the-private-nuget-repository/"&gt;NuGet on GitHub&lt;/a&gt;, now it&amp;rsquo;s time to publish to Codeberg.&lt;/p&gt;</description></item><item><title>Building a Desktop Host from Scratch</title><link>https://albertakhmetov.com/posts/2026/building-desktop-host-from-scratch/</link><pubDate>Sat, 04 Apr 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/building-desktop-host-from-scratch/</guid><description>&lt;p&gt;I&amp;rsquo;ve written about dependency injection in WinUI many times. Now we must go deeper.&lt;/p&gt;</description></item><item><title>Windows 11 Home Single Language</title><link>https://albertakhmetov.com/posts/2026/windows-11-home-single-language/</link><pubDate>Sat, 28 Mar 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/windows-11-home-single-language/</guid><description>&lt;p&gt;I&amp;rsquo;ve decided to try the simplest Windows 11 version.&lt;/p&gt;</description></item><item><title>Async Relay Command in C#: Handle Tasks Without Losing Control</title><link>https://albertakhmetov.com/posts/2026/async-relay-command-in-csharp-handle-tasks-without-losing-control/</link><pubDate>Sat, 21 Mar 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/async-relay-command-in-csharp-handle-tasks-without-losing-control/</guid><description>&lt;p&gt;RelayCommand is good. AsyncRelayCommand is better.&lt;/p&gt;</description></item><item><title>Signing Git Commits with GPG on Windows</title><link>https://albertakhmetov.com/posts/2026/signing-git-commits-gpg-windows/</link><pubDate>Sat, 14 Mar 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/signing-git-commits-gpg-windows/</guid><description>&lt;p&gt;I wanted to sign my code.&lt;/p&gt;</description></item><item><title>Moving to Codeberg - Just for Fun</title><link>https://albertakhmetov.com/posts/2026/moving-to-codeberg/</link><pubDate>Sat, 07 Mar 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/moving-to-codeberg/</guid><description>&lt;p&gt;I moved my blog to &lt;a href="https://codeberg.org"&gt;Codeberg&lt;/a&gt;. No big reason - just wanted to try something different.&lt;/p&gt;</description></item><item><title>Vibe Coding</title><link>https://albertakhmetov.com/posts/2026/vibe-coding/</link><pubDate>Sun, 18 Jan 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/vibe-coding/</guid><description>&lt;p&gt;I tried to create a small app using LLM. Here is what happened.&lt;/p&gt;</description></item><item><title>SkiaSharp with WinUI</title><link>https://albertakhmetov.com/posts/2026/skiasharp-with-winui/</link><pubDate>Sun, 11 Jan 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/skiasharp-with-winui/</guid><description>&lt;p&gt;In one of my projects, I used Win2D for graphics. This time, I decided to try SkiaSharp.&lt;/p&gt;</description></item><item><title>MenuFlyout and Data Binding</title><link>https://albertakhmetov.com/posts/2026/menu-flyout-and-data-binding/</link><pubDate>Sun, 04 Jan 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/menu-flyout-and-data-binding/</guid><description>&lt;p&gt;When a menu needs to be created based on changing data, the first thought is data binding. But then you remember: MenuFlyout does not support it. What should we do?&lt;/p&gt;</description></item><item><title>Introduction to Rx.NET</title><link>https://albertakhmetov.com/posts/2026/introduction-to-rx-net/</link><pubDate>Fri, 02 Jan 2026 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/introduction-to-rx-net/</guid><description>&lt;p&gt;I catch myself thinking that I know about all modern technologies only from their documentation at the time of their first release.&lt;/p&gt;</description></item><item><title>2026: Tools, Projects &amp; All Things Code</title><link>https://albertakhmetov.com/posts/2026/tools-projects-all-things-code/</link><pubDate>Thu, 01 Jan 2026 12:12:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2026/tools-projects-all-things-code/</guid><description>&lt;p&gt;It&amp;rsquo;s time to shake off the dust. Last year was about tinkering and prototypes. This year is about building them right — from the ground up. Let&amp;rsquo;s talk about the plan.&lt;/p&gt;</description></item><item><title>Create Icons with IcoApp</title><link>https://albertakhmetov.com/posts/2025/create-icons-with-icoapp/</link><pubDate>Sun, 13 Jul 2025 12:12:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/create-icons-with-icoapp/</guid><description>&lt;p&gt;Meet &lt;a href="https://github.com/albertakhmetov/IcoApp"&gt;&lt;strong&gt;IcoApp&lt;/strong&gt;&lt;/a&gt; – my simple icon tool!&lt;/p&gt;</description></item><item><title>Enhancing IHostedService support in WinUI apps</title><link>https://albertakhmetov.com/posts/2025/enhancing-ihostedservice-support-in-winui-apps/</link><pubDate>Sun, 06 Jul 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/enhancing-ihostedservice-support-in-winui-apps/</guid><description>&lt;p&gt;Today, we&amp;rsquo;ll look at enhancing IHostedService integration with built-in DI in WinUI apps.&lt;/p&gt;</description></item><item><title>Creating a custom control in WinUI</title><link>https://albertakhmetov.com/posts/2025/creating-a-custom-control-in-winui/</link><pubDate>Sun, 29 Jun 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/creating-a-custom-control-in-winui/</guid><description>&lt;p&gt;Today, we&amp;rsquo;ll look at the process of creating custom controls using a slider as an example.&lt;/p&gt;</description></item><item><title>Quick Look at the UI Internals</title><link>https://albertakhmetov.com/posts/2025/quick-look-at-the-ui-internals/</link><pubDate>Sun, 22 Jun 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/quick-look-at-the-ui-internals/</guid><description>&lt;p&gt;Today we&amp;rsquo;ll look at organizing the MusicApp interface.&lt;/p&gt;</description></item><item><title>WinUI application project structure</title><link>https://albertakhmetov.com/posts/2025/winui-application-project-structure/</link><pubDate>Sun, 15 Jun 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/winui-application-project-structure/</guid><description>&lt;p&gt;Today, I’ll explain the project structure I use when building WinUI apps.&lt;/p&gt;</description></item><item><title>Using MediaPlayer class in WinUI 3</title><link>https://albertakhmetov.com/posts/2025/using-mediaplayer-class-in-winui-3/</link><pubDate>Sun, 08 Jun 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/using-mediaplayer-class-in-winui-3/</guid><description>&lt;p&gt;Today, we&amp;rsquo;ll figure out how to use &lt;code&gt;MediaPlayer&lt;/code&gt; to play music in a WinUI app.&lt;/p&gt;</description></item><item><title>How to Build a Music Player for Windows from Scratch</title><link>https://albertakhmetov.com/posts/2025/how-to-build-a-music-player-for-windows-from-scratch/</link><pubDate>Sun, 01 Jun 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/how-to-build-a-music-player-for-windows-from-scratch/</guid><description>&lt;p&gt;Not exactly from scratch. We&amp;rsquo;ll use the &lt;code&gt;MediaPlayer&lt;/code&gt; class, but we&amp;rsquo;ll design the architecture so it can be replaced (if needed).&lt;/p&gt;</description></item><item><title>Creating a WinUI-Style Tray Icon Context Menu</title><link>https://albertakhmetov.com/posts/2025/creating-a-winui-style-tray-icon-context-menu/</link><pubDate>Sun, 30 Mar 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/creating-a-winui-style-tray-icon-context-menu/</guid><description>&lt;p&gt;Let’s bring some variety to the system tray menu &amp;ndash; create a WinUI-style popup!&lt;/p&gt;</description></item><item><title>Creating a Context Menu for Tray Icons in C# and WinUI</title><link>https://albertakhmetov.com/posts/2025/creating-a-context-menu-for-tray-icons-in-csharp-and-winui/</link><pubDate>Sun, 23 Mar 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/creating-a-context-menu-for-tray-icons-in-csharp-and-winui/</guid><description>&lt;p&gt;Today, we’ll explore how to add a native context menu to a tray icon.&lt;/p&gt;</description></item><item><title>Using NotifyIcon in WinUI 3</title><link>https://albertakhmetov.com/posts/2025/using-notifyicon-in-winui-3/</link><pubDate>Sun, 16 Mar 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/using-notifyicon-in-winui-3/</guid><description>&lt;p&gt;Learn how to use &lt;strong&gt;NotifyIcon&lt;/strong&gt; in WinUI 3 apps without third-party libraries.&lt;/p&gt;</description></item><item><title>Prevent Screen Sleep in C# WinUI Apps</title><link>https://albertakhmetov.com/posts/2025/prevent-screen-sleep-in-csharp-winui-apps/</link><pubDate>Sun, 09 Mar 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/prevent-screen-sleep-in-csharp-winui-apps/</guid><description>&lt;p&gt;Let&amp;rsquo;s consider how to keep your screen awake in WinUI apps using simple C# code.&lt;/p&gt;</description></item><item><title>Single Instance Apps in WinUI 3 with C#</title><link>https://albertakhmetov.com/posts/2025/single-instance-apps-in-winui-3-with-csharp/</link><pubDate>Sun, 02 Mar 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/single-instance-apps-in-winui-3-with-csharp/</guid><description>&lt;p&gt;In this article, we’ll look at how to restrict your WinUI 3 app to a single instance using C#.&lt;/p&gt;</description></item><item><title>How to Set a Minimum Window Size in WinUI</title><link>https://albertakhmetov.com/posts/2025/how-to-set-a-minimum-window-size-in-winui/</link><pubDate>Sun, 23 Feb 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/how-to-set-a-minimum-window-size-in-winui/</guid><description>&lt;p&gt;WinUI doesn’t support window size limits by default, but you can easily add this feature yourself.&lt;/p&gt;</description></item><item><title>Switching Between Dark and Light Themes in a WinUI App</title><link>https://albertakhmetov.com/posts/2025/switching-between-dark-and-light-themes-in-a-winui-app/</link><pubDate>Sun, 16 Feb 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/switching-between-dark-and-light-themes-in-a-winui-app/</guid><description>&lt;p&gt;In this note, we will look at how to switch between light and dark themes in a WinUI app.&lt;/p&gt;</description></item><item><title>How to properly use .NET build-in dependency injection with WinUI apps</title><link>https://albertakhmetov.com/posts/2025/how-to-properly-use-.net-build-in-dependency-injection-with-winui-apps/</link><pubDate>Sun, 09 Feb 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/how-to-properly-use-.net-build-in-dependency-injection-with-winui-apps/</guid><description>&lt;p&gt;This post is based on &lt;a href="https://albertakhmetov.com/posts/2024/using-.net-build-in-dependency-injection-with-winui-apps/"&gt;Using .NET build-in dependency injection with WinUI apps&lt;/a&gt; and represents work on the mistakes made in the design of the approach described there.&lt;/p&gt;</description></item><item><title>ContentDialog and MVVM in WinUI</title><link>https://albertakhmetov.com/posts/2025/contentdialog-and-mvvm-in-winui/</link><pubDate>Sun, 02 Feb 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/contentdialog-and-mvvm-in-winui/</guid><description>&lt;p&gt;Let&amp;rsquo;s use &lt;code&gt;ContentDialog&lt;/code&gt; in MVVM pattern style!&lt;/p&gt;</description></item><item><title>Mouse drag with Reactive Extensions</title><link>https://albertakhmetov.com/posts/2025/mouse-drag-with-reactive-extensions/</link><pubDate>Sun, 26 Jan 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/mouse-drag-with-reactive-extensions/</guid><description>&lt;p&gt;Let&amp;rsquo;s consider how to implement the ability to drag items with &lt;a href="https://github.com/dotnet/reactive"&gt;Rx.NET&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Place image pixels in a grid</title><link>https://albertakhmetov.com/posts/2025/place-image-pixels-in-a-grid/</link><pubDate>Sun, 19 Jan 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/place-image-pixels-in-a-grid/</guid><description>&lt;p&gt;Let&amp;rsquo;s draw a pixelated image separated by transparent lines in Win2D!&lt;/p&gt;</description></item><item><title>Win2D</title><link>https://albertakhmetov.com/posts/2025/win2d/</link><pubDate>Sun, 12 Jan 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/win2d/</guid><description>&lt;p&gt;Win2D provides the ability to use GPU-accelerated 2D graphics in WinUI 3 apps.&lt;/p&gt;</description></item><item><title>How to extract a specific image from the icon file. Pure C#</title><link>https://albertakhmetov.com/posts/2025/how-to-extract-a-specific-image-from-an-icon-file.-pure-csharp/</link><pubDate>Sun, 05 Jan 2025 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2025/how-to-extract-a-specific-image-from-an-icon-file.-pure-csharp/</guid><description>&lt;p&gt;In this note we are considering the image extraction from ICO files in pure C# (without Win32 or any other dependencies).&lt;/p&gt;</description></item><item><title>How to extract a specific image from the icon file</title><link>https://albertakhmetov.com/posts/2024/how-to-extract-a-specific-image-from-an-icon-file/</link><pubDate>Sun, 29 Dec 2024 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/how-to-extract-a-specific-image-from-an-icon-file/</guid><description>&lt;p&gt;In this note we are considering the image extraction from ICO files using the Win32 API.&lt;/p&gt;</description></item><item><title>How to compare the performance of different versions of the same library</title><link>https://albertakhmetov.com/posts/2024/how-to-compare-the-performance-of-different-versions-of-the-same-library/</link><pubDate>Sun, 22 Dec 2024 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/how-to-compare-the-performance-of-different-versions-of-the-same-library/</guid><description>&lt;p&gt;In this note I&amp;rsquo;ll show how to use &lt;a href="https://benchmarkdotnet.org/"&gt;BenchmarkDotNet&lt;/a&gt; to compare the performance of different versions of the same library.&lt;/p&gt;</description></item><item><title>Windows Tweaks</title><link>https://albertakhmetov.com/posts/2024/windows-tweaks/</link><pubDate>Sun, 15 Dec 2024 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/windows-tweaks/</guid><description>&lt;p&gt;Five Windows tweaks that make the system more usable (at least for me). The 3rd party apps aren&amp;rsquo;t required. Only (reversible) registry changes.&lt;/p&gt;</description></item><item><title>Using Windows natural order sorting in C#</title><link>https://albertakhmetov.com/posts/2024/using-windows-natural-order-sorting-in-csharp/</link><pubDate>Sun, 08 Dec 2024 13:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/using-windows-natural-order-sorting-in-csharp/</guid><description>&lt;p&gt;Windows Explorer sorts files with digits in a more natural way than build-in C# functions. It&amp;rsquo;s possible to use this sorting method in any app for Windows.&lt;/p&gt;</description></item><item><title>GitHub Packages as the private NuGet repository</title><link>https://albertakhmetov.com/posts/2024/github-packages-as-the-private-nuget-repository/</link><pubDate>Sun, 01 Dec 2024 13:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/github-packages-as-the-private-nuget-repository/</guid><description>&lt;p&gt;GitHub Packages allows to organize the private NuGet repository. In this note I show how to configure the private NuGet repository with GitHub Packages.&lt;/p&gt;</description></item><item><title>Visual Studio UI Refresh</title><link>https://albertakhmetov.com/posts/2024/visual-studio-ui-refresh/</link><pubDate>Fri, 22 Nov 2024 13:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/visual-studio-ui-refresh/</guid><description>&lt;p&gt;At &lt;a href="https://www.dotnetconf.net/"&gt;.NET Conf 2024&lt;/a&gt; some speakers used Visual Studio with a new UI. Is it the unannounced Visual Studio 2025? Nope. It&amp;rsquo;s just the updated UI for Visual Studio 2022!&lt;/p&gt;</description></item><item><title>ItemsControl and DataTemplateSelector in WinUI</title><link>https://albertakhmetov.com/posts/2024/itemscontrol-and-datatemplateselector-in-winui/</link><pubDate>Mon, 11 Nov 2024 23:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/itemscontrol-and-datatemplateselector-in-winui/</guid><description>&lt;p&gt;Sometimes even simple things can be confusing. Especially if you don&amp;rsquo;t encounter them every day. The funniest thing is if you&amp;rsquo;ve already solved this problem and successfully forgot about it after some time.&lt;/p&gt;</description></item><item><title>Using .NET build-in dependency injection with WinUI apps</title><link>https://albertakhmetov.com/posts/2024/using-.net-build-in-dependency-injection-with-winui-apps/</link><pubDate>Sat, 09 Nov 2024 12:00:00 +0500</pubDate><guid>https://albertakhmetov.com/posts/2024/using-.net-build-in-dependency-injection-with-winui-apps/</guid><description>&lt;p&gt;.NET has build-in dependency injection (DI). It&amp;rsquo;s used primarily for ASP.NET Core apps, but there&amp;rsquo;s no reason not to use it with WinUI apps too.&lt;/p&gt;</description></item><item><title>Let me introduce myself</title><link>https://albertakhmetov.com/posts/introduce/</link><pubDate>Wed, 27 Mar 2024 22:08:32 +0500</pubDate><guid>https://albertakhmetov.com/posts/introduce/</guid><description>&lt;p&gt;Hello everyone! My name is Albert and I&amp;rsquo;m a software developer.&lt;/p&gt;</description></item></channel></rss>