This article outlines a collection of discoveries made this year that I’m quite fond of. A few of these are applications I use daily; others are reference projects that improved my understanding of the tools I use.
I would like to share this with my future self and anyone else who discovers it.
Tools
Desktop Applications
LinqPad
LinqPad is a desktop app for testing C# snippets. I discovered this when I got tired of waiting a few minutes just to write a C# snippet in Rider.
RoslynPad
RoslynPad is also a desktop app for testing C# snippets and a great complement to LinqPad. It doesn’t have as many features as LinqPad but it has intellisense and is open source.
I stumbled on RoslynPad when the free version of LinqPad didn’t let me use NuGet packages in my snippets.
WinDirStat
WinDirStat is one of the best disk usage statistics viewers for Windows I’ve ever used. It’s helped me understand better how a few other apps like WSL and Docker _(volumes, disk e.t.c) _ work by describing the files in addition to their sizes.
I discovered WinDirStat when I started to suspect WSL was munching on storage in my C drive.
Autoruns
Autoruns is a Windows application that displays which programs are configured to run during system boot-up or login. I’ve been able to reduce the start-up time of my Windows installation with its help.
I found this while browsing through the sysinternals docs on Microsoft Learn.
UniGetUI
UniGetUI is a Windows application that lets you interact with the most common CLI package managers through a GUI. It helped me realize just how much space packages occupy, in addition to highlighting duplicate packages.
In a strange turn of events, I found the source code for UniGetUI before the application itself. I was looking to practice building desktop applications from source and UniGetUI seemed like a great example.
NuGet Package Explorer
On the surface, the Nuget Package Explorer lets you work with the NuGet package manager via a GUI. However, it also has an assembly explorer as a consequence of its core application.
While the app’s feature set is also present in Rider, I found an isolated assembly explorer to be a good complement to RoslynPad when running experiments.
I sought, and found, this when I realized how much metadata was missing from a published package of mine.
Web Applications
Compiler Explorer
Compiler Explorer does what it says on the tin: display the compiler output for source code.
I discovered this when I got curious about the IL generated for C# while working through the Crafting Interpreters book.
Python Bytecode and AST Explorer
A web application that lets you view Python bytecode, Python Bytecode and AST Explorer also lets you view the AST generated from the source code.
I stumbled on this when I was looking to copy be inspired by Python’s module system for my
custom interpreter and I couldn’t figure out how to do this in Compiler Explorer.
React Compiler Playground
The React Compiler attempts to optimize React code based on React’s rules and the React Compiler Playground is a way to view the different passes by the compiler. It helped me understand the structure of React code much better.
I found this when I first learnt of the React Compiler being open-sourced.
Online 3D Viewer
A simple inspector for 3D files that runs in the browser, Online 3D Viewer accepts a wide range for 3D file formats. It’s a quick way to inspect a 3D file’s properties and learn what kind of information the different file formats present.
I am working on a similar, but not identical, application and discovered this during my ‘potential competitor’ research phase.
Libraries
Testcontainers
Testcontainers provides lightweight instances of apps that can be run in a Docker container and, like the name suggests, these instances are excellent for application testing.
I was looking to avoid mocks for one of my projects and found this when I sought possible alternatives.
NLua
NLua provides a bridge between Lua and .NET, allowing the usage of Lua from C#.
I was looking to add a ‘mods’ system to a project and NLua to be the easiest to understand and use.
Meshlib
Meshlib is a mesh processing library with SDKs in C#, Python and C++.
Documentation & Source Code
Reference projects
Cal.com
calcom/cal.com is the source code for an open-source alternative to Calendly, a scheduling app. It’s built with Next.js and saves data to a PostgreSQL database via Prisma. It’s an excellent reference for working with Next.js.
Jint
sebastienros/jint is a Javascript interpreter for .NET. It’s a reference for language interpreters built in .NET.
I discovered this when looking for a similar application to lox but for .NET.
Bitwarden
bitwarden/server is the source code for the OSS version of the Bitwarden infrastructure/backend. It’s written in C# using .NET Core with ASP.NET Core and the database is written in T-SQL/SQL Server. It’s an excellent reference for an industrial ASP.NET Core application.
Bitwarden Client
The bitwarden/clients repo hosts the source for the web, browser extension, desktop and cli clients for the Bitwarden server. I learnt the most from the web client written in Angular.
MeshIO
MeshIO is a library in pure C# that allows reading and writing of 3D files in multiple formats. It’s relatively easy to read and use.
I stumbled on this while looking to learn to interpret 3D files in C# code.
Documentation
curl.se
I only learnt this year that an online, easier to read, version of the curl documentation existed at curl.se . It’s surely improved my curl-fu.
Azure Cloud Design Patterns
Although it’s listed under Azure, the Cloud Design Patterns documentation is applicable to all cloud platforms. It’s been a great way for me to improve my understanding of system design.