Digests » 366


The last CSV importer you'll ever build

Building your own data migration system means weeks of development cycles. That's dollars down the drain. Flatfile Portal integrates with your app in minutes to automatically validate and transform messy spreadsheet data. This slick import wizard guides users through an intuitive import flow and lets your users import their own data, securely, and with confidence. No Excel formatting, no custom import scripts, and no need to build vs. buy.

this week's favorite

Finding concurrency bugs in a .NET application using Coyote

Coyote is .NET library and tool designed to help ensure that your code is free of concurrency bugs. Concurrency bugs are hard to find and reproduce as they often depends on non-deterministics things such as timeout or message ordering. For instance, if multiple threads are waiting for a locked object, which one will acquired it first?

Asynchronous C#: Making a simple cup of tea

Years ago, programs ran sequentially, line by line and function by function. Only one task processing at a given unit of time. If a function relied on another function, it had to wait till it got the result from that function before continuing to process, even if it meant that the application's main thread would get blocked for an amount of time, waiting for some network call to return a response or for a piece of work that requires a heavy calculation to yield a result.

Benchmarking 4 reflection methods for calling a constructor

The typical way to create an object in .NET/C# is to use the new keyword. However it's also possible to create a new instance of an object using reflection. In this post I compare 4 different methods, and benchmark them to see which is fastest.

Aggregate design: Using invariants as a guide

How do you compose an aggregate? For me, aggregate design involves understanding the invariants. Invariants are business rules that must always be consistent. Understanding the invariants will guide your aggregate design. Everything I seemingly post ends up being about defining boundaries! Aggregates are yet another example of defining boundaries based on invariants and consistency.


C# REPL is a tool for rapid experimentation and exploration of C# expressions, statements, and NuGet packages. It provides a command line REPL for C# that supports syntax highlighting, intellisense, and type/method documentation.