An Implementation of Lazy(T) with Invalidation

I am a big fan of using Lazy<T> as my go-to implementation of the Singleton pattern. It works well and the thread safety is easily adjustable . While I won’t go into the details of how to use it, all the information is in the Lazy<T> documentation. For what I needed, however, Lazy<T> fell a bit short. I essentially needed a cache of something that was expensive to create, and could be invalidated when the source object changed. In my case, I had a list that I needed to run some aggregate queries against. Running those queries is expensive, so…

Regular Expressions, Part 2: Positioning and More

Like riding a bike, knowledge of regular expressions will stay with you forever, allowing you to manipulate text quickly and easily. In this part of the series, Ondrej focuses in on groups, positioning and tools.

Create Windows Services Easily with Topshelf

Creating a Windows Service is trivial using Topshelf, a freely-available library that converts a console application to a Windows Service. In this article, you’ll create a simple notification app and integrate Topshelf.

Transactions in RavenDB

Before I get into the details regarding RavenDB, I’ll start with a quick overview of what ACID is. ACID ACID is a set of four “rules” that let us know that transactions are going to behave in the way we expect transactions should behave. The rules are that the transactions must be Atomic, Consistent, Isolated, and Durable. But anyone can tell you that. Here’s a quick break-down of what that actually means to us: Atomic: “all or nothing”. If a transaction represents multiple changes, all must happen or none can happen. A common example of this is in a banking…