Software development is difficult. Especially if you are working on a 25-year old enterprise software that has gone through multiple platforms, technologies, and has seen multiple generations of developers. All of which makes it hard to understand and difficult to develop. What can we do as developers? Turns out, a lot.
November 1, 2020
John Ousterhout, in his book 'A Philosophy of Software Design' talks about the problem with having too many classes.

He argues that the most important issue in designing classes and other modules is to make them deep, so that they have simple interfaces for the common use cases, yet still provide significant functionality.
Estimating how long a software project will take is a tricky business. Unless you have already worked on a similar project with the similar constraints, you are always guessing. In their book 'The Pragmatic Programmer', authors Andy Hunt and Dave Thomas provide useful tips to help software developers when the management asks how long it's going to take? 
In programming, garbage collection refers to the process of programmatically cleaning up the memory allocated to objects that is not correctly in use.

For a long time, I thought that the variables defined in a block or a function are garbage collected when the program control reaches the end of the block, or when that function returns. I was surprised to learn that it's not the case, while having a fresh look at the pointers in Go
Here are a few useful commands to set up an SQL Server instance on Docker. 
In an IaC environment, we don’t make changes to systems directly. Instead, we update the code and data that are used to create our environments. 
September 19, 2020
Earlier today, I was having problems trying to connect to an instance of SQL Server Express running inside a container from SSMS running on my host machine. 
August 24, 2020
Here's a brief description of how the event pattern works in .NET. 
Over the weekend, I have been writing a lot of Go code to automate some of the repetitive stuff I do at work, such as updating servers after grabbing the latest code from the trunk. This morning, I programmed for three hours straight from 5 to 8 am, and enjoyed every minute of it. 
Ever since Ad. Grace Murray Hopper found the first computer bug in the Mark ll computer's log book, programmers have been calling abnormal software behavior as bugs. 
August 7, 2020
When you are programming, you can have two types of understanding about what the code is doing. The first is the understanding in your head. This is fragile and temporary, residing in your short-term memory. You read code, you understand, but you forget about it a few days later. When you come back to the same code after some time, you have to again make an effort to understand the code. 
Though URLs are everywhere and part of every web developers day to day work, not many understand what they are actually made up of, including myself. So this morning I sat down and really tried to understand the parts that form a URL.  
A closure is one of those concepts that can seem very daunting, but is actually really useful once you really understand the fundamentals. Here is how a closure works in C#. 
John Ousterhout, in his talk at Google on 'A Philosophy of Software Design', talks about a special kind of programmers, called tactical tornadoes. 
It was not until I started learning Go, that I finally understood how pointers work. That opened new doors into how computer memory works, why strings are immutable in C#, the difference between Value Types and Reference Types in C#, and much more, which would have been next to impossible without learning pointers. Here's how they work in Go, one of my favorite programming language.