Reading large XML files

Have you ever had a task to read and deserialize a large XML file? Like 500 MB or 2 GB, that is impossible just to read to the end into memory and parse it.

Assembly location in ASP.NET

An interesting note that I've found while updating the ConfigEx library: the assembly DLL file in the ASP.NET application might be located in a place different from what we expect. During runtime, it is actually not in the place where the application is hosted.

WPF Async Pack 1.0

WPF Async Pack is a small library for creating asynchronous WPF applications. It's not a framework, it was created mainly for the small applications where installing heavy frameworks is just overkill. It doesn't have any dependencies and contains such the most used classes as AsyncCommand and BaseViewModel.

Essential addons for Visual Studio 2015


My list of the essential add-ons that should be installed on Visual Studio 2015 to make work more comfortable and productive. Nothing extra, just a minimal list of features that are missing in the IDE by default.

ResX Translation Tool 1.1


I've released the first version of the helper application ResX Translation Tool that simplifies project localization and minimizes manual work with ResX files.

Open XAML without design editor in Visual Studio

A short post about Visual Studio setting that disables the design editor for XAML files.

Compilation directives for controlling XAML content

In C# in order to control what code should be executed we can use compilation directives #if, #else, #elif and #endif. For instance, we can compile certain code only in Debug mode and exclude one in Release.

The question is how to achieve the same in XAML.

Static extension in WPF XAML and public ResX files

For localization or some other reason you might want to access the static resources in ResX file from the XAML using Static extension.

Polymorphic serialization using Json.NET in HttpContent

Imagine a quite common client-server application where the server exposes REST methods and the client communicates using HTTP requests. Requests and responses are serialized in JSON format. There might be a problem if you try to send and receive a DTO that contains a collection of interfaces or abstract classes. I will talk about the usage of Web API and Newtonsoft Json.NET as its underlying serialization library.

Visual Studio doesn't update assemblies in the output directory

There can be an issue that you change something in the code, start debugging by pressing F5 and don't see the changes in the application. Visual Studio sometimes simply ignores them in a non-startup assembly.

Sublime Text 3 minimap viewport


The new version Sublime Text 3 is awesome! However, there is one small change that makes negative expression - minimap doesn't show the current position in the document.

Filling model properties using Reflection

In this post I'm going to show how to fill object properties using reflection no matter what types they are.

Skype Auto Recorder 1.3.4 released


Today I've released version 1.3.4 of Skype Auto Recorder!

Setting up system-wide hotkeys

You can see examples of global system-wide hotkeys almost in every application: media players, chats, different tray tools. The application can be minimized or even hidden, but you can control it by pressing hotkeys no matter what is in focus right now.

Unfortunately, .NET Framework doesn't contain convenient classes or methods for setting up global system-wide hotkeys. The only way to achieve this is to use the Windows API functions.

P4Merge integration

Perforce P4Merge is a great free diff and 3-way merge tool that has a very good visualization of differences and conflicts. In this post I'll show how to integrate it into the popular clients of version control systems and to the Visual Studio.

C# members accessibility

Recently I've found an interesting behavior of private keyword and how it actually works.

Only one application instance

Sometimes we need to disallow starting multiple instances of our application (for example, it make sense for music players, applications for Windows Tray, etc.). The easiest and, probably, the most proper way is to use Mutex - a synchronization primitive.

Limiting the number of threads

In our project we faced the problem of how to make running some calculations concurrently. We can simply start each calculation in a separate thread but the problem is how to limit the number of threads.

Skype Auto Recorder 1.2

The Skype Auto Recorder version 1.2 was released. It contains important bug fixes and finally can be treated as stable.

The source code is available on GitHub.