[Code Index] by Mike Marynowski

programming for work and fun

Fastest Possible Thread-Safe Lock-Free Lookup Dictionary (CopyOnWriteDictionary)

I have been writing a ton of code lately that involves permanently caching objects of various types: generated type schemas, compiled expression queries, reflection lookups for MethodInfo or PropertyInfo, etc. Usually these are updated infrequently in quick bursts, i.e. at application startup, when a new assembly loads, or when a new operation is invoked for the first time that makes use of items that haven't been cached yet. I always felt like the existing options were lacking in usability and/or performance and we could do much better - CopyOnWriteDictionary is the culmination of that pursuit and represents what I consider the ideal dictionary implementation for use cases like this. [More]

Value Type Box Cache

We've recently been building a .NET object database that necessarily stores a lot of data in object[] arrays. Most of the values in these arrays are default values (i.e. 0 for numbers), small integers, boolean values or enums. On a loaded instance there can be many millions of these boxes values sitting in memory and they are constantly being created and collected, which got me thinking...we could probably cache and reuse the boxes for a lot of these values, and thus the BoxCache was born! [More]

A Modern Smartphone "iPhone-ish" Shape for Microsoft Visio

The lack of a good looking modern smartphone shape in Visio has been a pet peeve of mine for a while so I gave in and made my own, painstakingly mimicking the look and feel of the built-in network diagram shapes in Visio. [More]

Ontario Driver's Handbook PDF (Mobile and Regular)

If you want to study for your Ontario driver licensing exam offline or on your mobile device, here's your solution. [More]

Updated Ultimate WPF Event Method Binding

After we started using our MethodBinding, we quickly ran into a few use cases that it could not accommodate very well so we ended up changing it a bit. This isn't going to be a long post, it is just going to cover the changes we made since the original article was posted. [More]

Getting Rid of Ugly TransformGroup Blocks in WPF

If you're obsessed with beautiful and clean XAML code like I am, a real thorn in your side is seeing large ugly TransformGroup blocks in your code. Here's how to fix that. [More]

Building the Ultimate WPF Event Method Binding Extension

Seeing that .NET 4.5 added support in WPF for markup extensions on events, I looked around to see what was out there in terms of method binding support. I couldn't find anything that quite did everything I needed, so I set out to build the ultimate method binding extension. [More]

WPF Visibility Binding with Design Time Control (and more!)

Designers don't want to worry about how to modify view models when designing a UI. They just want to show and hide elements to see what they look like, and occasionally test out a few different values to make sure it still looks correct. The current methods are too complicated to setup or to cumbersome to work with for simple tasks. Here's an alternate approach. [More]