A site containing some of Morgan’s thoughts
Build Your First Neural Network: Part 3
This post is the third in a series introducing you to neural networks. Feel free to read Part I and Part 2 before diving...
The Difference Between IEnumerable and IQueryable Explained
This post is part of this year’s C# Advent Series. Which counts down to Christmas with two C# articles published e...
Benchmarking For Loop Variants
I read Thomas Levesque’s recent post about Using foreach with an index. I’ve definitely run into the problem...
Explaining Implicit Conversion Operators in C#
Sometime ago at work, I discovered a class that could automatically convert to and from a string whenever it was needed....
Under the Hood of C# Alias Types and Namespaces
C# has two different ways to refer to a lot of its fundamental types. String or string, Boolean or bool, Int32 or int, c...
EF Core’s AddAsync v. Add Method
Since learning about async programming with C#, if I’m presented with an option of async v. non-async method I&rsq...
Add Swagger to a .NET Core 3.0 API
If you’ve ever interacted with an API, you know that it can be messy. Does it support json or xml? How should I co...
How to Write a Brainfuck Interpreter in C#
I’ve always been somewhat interested in how programming languages are written. Last month I bought my version is i...
C# Design Patterns: The Visitor Pattern
My last article introduced expressions in C# and explained a bit why they were useful. Today I’m going to build up...
An Introduction to C# Expression Trees
Expression Trees are an interesting C# language feature that you might not have knowingly used before. Expression Trees ...
The Cost of Synchronous Async Methods
C# 5 introduced the async/await keywords and dramatically increased how easy it was to program asynchronously. The first...