Skip to main content


Silly but useful stuff - Part 3 (UI)

Importance of UI in performance Simple UI tricks, such as progress bars, redirecting user's attention using animation, or placing slower loading sections at the bottom of a page or off-screen, can often ‘fix’ a performance problem without the need to tune the underlying code. These UI tricks are an important tool to have in your performance tuning toolbox and can be much quicker and easier than addressing the underlying issue. They can act as a holdover until you have the time to devote to the core problem. So, one should never underestimate the UI while tackling performance issues. Isn't it interesting :)

StringBuilder is NOT the answer for all string concatenation scenarios; String.Join could be

Yes, if you are in a loop and adding to a string, then a StringBuilder *could* be most appropriate. However, the overhead of spinning up a StringBuilder instance makes the following pretty dumb:      var sb = new StringBuilder();  sb.Append("This is "); sb.Append("not more efficient"); sb.Append(" solution."); var str= sb.ToString();   Instead, use String.Join , which is typically more performant than spinning up a StringBuilder instance for a limited number of strings. It’s my go-to concat option:             string myString = String.Join(" ", new String[] { "This", "is", "a", "much", "better", solution, "."});   The first variable of " " can just be set to "" when you don’t want a delimiter. For loops that do a lot of looping, sure, use a StringBuilder. But just don’t assume it’s the de facto solution in all, or even the majority of cases. My rule of thumb

Starting with Prism - Part 3 of n

Introduction  Continuing to my   Prism 2 of n series , in this article I am going to talk about how a communication happens between various application components, following Prism framework. Background  In earlier articles of this series, I already mentioned that Prism is all about loose coupling and modularity. So, in order to achieve both these aspects we divide our application into multiple modules. Now, when we are talking about modularity, first thing which strikes to our mind is communication. How will these module going to talk with each other, how they are going to communicate with each other, etc, etc. So, when we have a need of communication between modules, there are couple of approaches which we can take like Commanding, Event Aggregation, Shared Services, Region Context and probably there are many more. In this article, mainly I'll be taking these four concepts:    Commanding   Event Aggregation   Region Context  Shared Services      Now let's take

Const and Readonly keyword

Both these words play a very important role in defining constants in an application (C#). At one sight, it seems like, both are same but exactly it is not he case. Let's understand one by one to get the clear picture. The word const itself means, it will never change. If you are specifying any variable as a  const t hat means the value of the variable is never going to change inside the application. How we declare a constant is, by using a  const  keyword. Basically, one can define  const  only on the primitive types, like int, double, etc. One should make sure that the value should be assigned at the time of declaration itself and another important thing is whatever value is set for  const  variable, that value will be set at the compile time itself and this value will get stored inside a .dll or an .exe. In later part, I'll show u on how we can see this value inside a dll or an exe using an Ildasm. Sample code to define  const   variable is as: Another key

Silly but useful stuff - Part 2 (ASP.Net)

Using StartMode Attribute Every time we update our site, IIS must recompile it during the first request, so the initial request takes significantly longer than subsequent ones. An easy solution for this is to tell IIS to automatically recompile our site as part of the update process. And this can be achieved using the startMode attribute in the ApplicationHost.config file. In essence, we can say, by using startMode attribe, one can reduce the initial load time of an ASP.Net site. Hope it helps :)

Silly but useful stuff - Part 1 (.Net)

Collection and List Let's have a look at this snippet: In first sight, most of you might feel that both List and Collection will contain print numbers from 1 to 6. Am I right? But Alas! There is a hidden gotcha in it ;) Because the actual output is: What happen surprised??? If you have ever tried to get in depth of Collection and List, then you might know the answer. Well, the answer is pretty simple. MSDNdocumentation clearly states that "Initializes a new instance of the Collection class as a wrapper for the specified list" . And on the other hand, MSDN documentation states that "Initializes a new instance of the List<T> class that contains elements copied from the specified collection and has sufficient capacity to accommodate the number of elements copied." Hope now it is clear to you. So, the moral of the story is, one should be very cautious while using L

Converting a given string to Title Case

To convert string in title case is bit tedious and may require lot of code as there is no direct method available in C#.Net  in String class. So, here I am sharing a method, which will be the extension method for String class and can be used to convert given string to title case. Here I am using CultureInfo from Globalization and ToTitleCase method of TextInfo class. public static class StringExtensions {     public static string ConvertToTitleCase(this string input)     {         System.Globalization.CultureInfo cultureInfo =         System.Threading.Thread.CurrentThread.CurrentCulture;         System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;         return textInfo.ToTitleCase(input.ToLower());     } } Hope reusing this will save lot of your time :)