I took a brief de-tour to learn Go programming language in May. It was an exciting experience leaving the comforts of a general-purpose, managed programming language like C#, and learning a systems programming language like Go.

Now that I am back to C#, I have a much better understanding and appreciation for the higher-language features offered by the .NET CLR and C#. Last week I finished reading C# in Depth by Jon Skeet, deliberately choosing the first edition of the book, which was published in 2008, as it nicely explains the evolution of C# from version 1 to version 2 and 3, gradually introducing Language Integrated Query (LINQ). It's a fun exercise to see how various features evolved over time and also to write C# 1.0 code and replace it with the elegant constructs introduced in C# 2.0 and 3.0.

After finishing the first edition, I was going to start with the second edition, but I came across another book, called C# 8.0 in a Nutshell, which was published last month and I thought why not jump from C# 1.0 to C# 8.0, just because it's fun. It's a huuuge book, and covers almost everything that you might need if you are a C# programmer. Not only the basics, but also diving deep into the CLR, Base Class Libraries, and Framework. I am very much enjoying reading this book. This book is on C# 8.0 and .NET Core 3, which I am finding more and more exciting as I learn more about it.

By the way, did I mention you can download the entire source code of .NET Core from Github? Not only the Runtime, but also the ASP.NET Core framework? I downloaded both of them, which comes to about a gig and a half, but is definitely worth it. I enjoy reading code from other developers, and it's great to read code written by framework designers themselves. Not only am I learning how to write idiomatic C#, but also best practices and patterns for writing good, solid code. What more could a .NET developer could ask?

“The life so short, the craft so long to learn.”

- Hippocrates