Programming Rants

Windows Store Bundles Blunders
22 Apr 2015
Long, very technical story, interesting only to Windows Store programmers. Recording this mostly to document the experience. Scenario 1. We have a universal app that contains a Windows Store and a Windows Phone project for Windows 8.1. 2. I manually generated packages for both projects in Visual Studio 2013 Update 4. 3. Visual studio changed […]

Async/await: to sum it up
12 Apr 2015
async methods are not executed asynchronously: see Async/await FAQ, Does using the “async” keyword on a method force all invocations of that method to be asynchronous?). await task is not the same as task.Wait(): ibid, Is “await task;” the same thing as “task.Wait()”?. ExecuteSynchronously() may not actually execute synchronously. TaskScheduler.Current may be and frequently is […]

How “async void” actually works
29 Mar 2015
Let’s say I have this code (C#): void SomeFunc() { HandlerOne(); HandlerTwo(); } async void HandlerOne() { DoX(); await DoYAsync(); DoZ(); } In this case HandlerOne() will return to the calling functions the moment it hits its first await. The code is roughly equivalent to: void HandlerOne() { DoX(); Task t= DoYAsync(); t.ContinueWith(task=>DoZ()); } So, […]

Windows Azure: “user friendly” copy utility
25 Feb 2015
Story in a nutshell: I wanted to copy a huge Azure blob from one place to another. Since there are no convenient Azure management tools from Microsoft*, I used command line AzCopy utility. A minute or two into the process, I realized that a) The speed ain’t that great and the copy will take several […]

Windows Store Apps: Back to DLL Hell
04 Feb 2015
I was recently tasked with creating a Windows Store (Metro, WinRT) version of an existing app. This is my first WinRT project. Documenting my experience so far: 1. So called “universal apps” are not truly universal. They actually consist of several platform-specific projects that may share some code. There is no true binary or even […]

MySQL: you get what you’re paying for
22 Dec 2014
Long, long time ago in the galaxy not so far away I installed mySql 5.05 on my server. After some time I decided to upgrade to the current version, MySql 5.6. It turned out to be quite an ordeal. First of all, there is no easy upgrade path between different major versions of MySQL. Official […]

WPF user controls: do not use merged dictionaries for shared resources
24 Nov 2014
Resource dictionaries in WPF are not shared, unless they are part of App.xaml. That is, if you have a user control that loads (and uses) some resource dictionary, new instance of the dictionary will be loaded for each instance of the user control. This can (and does) lead to increased loading time and memory footprint. […]

Checksum program that actually works
06 Nov 2014
Often when I download files from the Internet I need to verify the checksum. That is, calculate actual checksum of the file and make sure it matches the expected value. I used checksum calculator from Codeplex (checksum.codeplex.com), but I could not make it to compare checksums for me; -c option simply did not work as […]

One more time about Resource vs. EmbeddedResource
30 Oct 2014
In Visual Studio you can set “Build Action” for a project item to ‘Resource’ or ‘Embedded Resource’, among other things. The difference between the two is confusing, and exact up-to-date documentation is hard to find. (This StackOverflow post is probably the best, but not 100% accurate.) Today I became confused one more time, so I […]

The Git language
03 Oct 2014
I came to realize that Git is not only a “fast version control”, but also a language (lingo, slang) that sounds very obscure to the non-initiated. This is exacerbated by the feature of the English language where every noun can be verbed and every verb can be nouned. I collected a number of quotes from […]