• Unit-testing file I/O in .NET

    File I/O looks like one of those things that cannot be unit-tested properly. A method that reads directories, scans files, compares extensions, and deletes files seems tied to the real machine where the test is running. That creates all the usual problems: tests become slow, fragile, dependent on local paths,…

  • Fixing Git pull errors in SourceTree

    If you encounter the following error when pulling a repository in SourceTree: VirtualAlloc pointer is null, Win32 error 487 it is due to to the Cygwin system failing to allocate a 5 MB large chunk of memory for its heap at the fixed address 0x68570000, while only a hole 2.5…

  • Castle on the hill of crappy audio quality

    As the yearly dynamic range day is close (March 31st), let’s have a look at one of the biggest audio massacres of the year, Ed Sheeran’s “Castle on the hill”. First time I heard the song, I thought my headphones just got broken, it’s really that bad. So let’s measure…

  • Testing private methods in C#: when it is a necessary evil

    Testing private methods is often debated among developers, as they typically represent implementation details and should not be directly tested. However, there are scenarios in legacy code where testing privately for safety before refactoring is necessary. The preferred approach is to test public behavior or extract complex logic into separate…

  • I am right and you are wrong

    Have you ever convinced anyone that disagreed with you about a deeply held belief? Better yet, have you changed your mind lately on an important topic after discussing with someone else that did not share your point of view? Let’s face it, if the topic of the discussion is not…

  • Windows Forms smells funny, but…

    In the “2016 .NET Community Report” just released by Telerik, the answers to the question “What technology would you choose if building for Windows Desktop?” were as follows: So roughly half of new desktop developments would be based on Windows Forms, a technology declared dead multiple times. The Telerik report…

  • Say goodbye to “it does not happen on my PC!” with Azure

    It is not easy to monitor how our code behaves on a vast array of different machines. A myriad of different configurations can lead to errors that are difficult to reproduce and even more difficult to anticipate. And when the customer calls complaining about a crash, provided information on what…

  • Parallel loops in the AltaLux kernel

    The AltaLux plugin for IrfanView is now open-source (here is the GitHub link) and it is worth analyzing the different methods used for parallelizing the computational kernel. The filter factory, contained in the CAltaLuxFilterFactory files, can create one of four possible instance types (actually there’s a fifth one that you…

  • Transient objects with IoC containers like Castle Windsor

    Dependency Injection (DI) and Inversion of Control (IoC) are popular patterns in modern software development that reduce coupling among modules and so improve the testability of the sames. As this article is not meant to be an introduction to DI / IoC, please refer to numerous introductory articles on the…