Last weekend a friend of mine told me an interesting story. Some software on a build server had stopped working unexpectedly. It turned out the software in question expired after 10 years! Yep, you read it right. On top of this as it turned out the company that made the software does not exist anymore. …
Monthly Archives: November 2012
Why do we need profiling tools?
Every project is defined by its requirements. The requirements can be functional and non-functional. Most of the time the developers are focused on functional requirements only. This is how it is now and probably it won’t change much in the near future. We may say that the developers are obsessed by the functional requirements. In …
Enumerate managed processes
If you ever needed to enumerate managed (.NET) processes you probably found that this is a difficult task. There is no single API that is robust and guarantees correct result. Let’s see what the available options are: GetVersionFromProcess. This function has been deprecated in .NET 4 ICLRMetaHost::EnumerateLoadedRuntimes. The MetaHost API was introduced in .NET 4 …
Explaining Design Patterns
From time to time I have to explain design patterns to junior developers. There are many excellent books and web sites on this topic that I recommend. However, it turns out that often the developers cannot relate a particular design pattern to a real world scenarios. In such cases I try to give an example implementation …
Ramblings on code refactoring
As a Telerik employee I use Visual Studio and JustCode (JustCode is a Visual Studio productivity tool which provides code analysis, navigation, refactoring and other goodies). I often refactor my code with the help of JustCode. However over the years I had become more careful and in a way more reluctant to code refactoring. I …
Garbage collection – part 1 of N
Recently I deal a lot with memory problems like leaks, stack/heap corruption, heap fragmentation, buffer overflow and the like. Surprisingly these things happen in the .NET world, especially when one deals with COM/PInvoke interoperability. The CLR comes with a garbage collector (GC) which is a great thing. The GC has been around for many years …
Introduction
Hi. My name is Mihail Slavchev, welcome to my blog! Twelve years ago I was a rookie software engineer. I started my journey as a C++ developer, then did Java for a while and finally I landed into .NET world. Today, I think I am still a rookie, exploring new and amazing territories. Feel free …