AsyncLock: an async/await-friendly locking library for C# and .NET

One of the biggest improvements to C# and the .NET ecosystem in recent years has been the introduction of the async/await programming paradigm and the improvements it brings to both performance (no need to create thousands of threads if they spend most of their time blocking on IO) and productivity (no need to muck around with synchronization primitives or marshal exceptions between threads). While it takes a bit of getting used to, once you’ve gone async/await, you (literally) can’t go back.

Continue reading

Unicode.net: the Unicode (and emoji) library for .NET platforms

We are proud to present the latest addition to our open source portfolio, the Unicode.net library! We’ve extracted a number of encoding- and emoji-related namespaces and functions from a few of our projects going back many years and split them off to create Unicode.net: an open source library that can be used to aid in the safe processing and manipulation of (possibly) internationalized strings and non-ASCII characters (and then some).

Unicode.net is designed from the ground-up as a modern approach to text processing and text encoding, with only support for the most popular Unicode encodings: UTF-8, UTF-16, and UTF-32. Additionally, Unicode.net is designed to complement .NET’s existing (albeit extremely limited) Unicode support, instead of supplanting it, which primarily translates to embracing rather than shunning the System.String type wherever possible. Unlike many other text-processing libraries, Unicode.net does not want you to stop using the system types for string representation and to switch over to custom datatypes 😁.

Continue reading

System.Threading.Thread, Universal Windows Platform, and the fragmentation of .NET Standard

This post is chiefly directed at .NET developers and others involved in the various stages of .NET deployment, in particular, anyone that’s been keeping tabs on the situation with the new cross-platform, open-source .NET Core initiative or .NET Standard, which came about as Microsoft’s response to the increased fragmentation of the .NET Platform as a result of the myriad of different deployment targets now available. If you’re not into that kind of stuff, feel free to skip this post, or read on and we’ll try to explain things sufficiently as we go through.

When a new Microsoft, with Satya Nadella at the helm, first open sourced the .NET Platform on November 12, 2014 it became clear that they fully intended to put everything they had into the initiative and that great things and big changes were coming to the .NET Framework and its languages. But what it also signaled was the inevitable beginning of a new level of fragmentation for the Framework, which had thus far – by and large – resisted any major fragmentation for the past 12 years of its existence.1 But taking a framework that was cobbled together from parts old and new, built atop of WIN32, GDI, and various Windows-specific anachronisms meant that porting the .NET Framework as-is to other platforms was nigh-impossible — and that major changes would have to be made to support this gargantuan effort.

Continue reading


  1. There are notable exceptions to this, namely the .NET Micro Framework, the .NET Compact Framework, and Mono; however, these “members” of the .NET ecosystem – one not even by Microsoft – were never considered to be first-class .NET Targets within or without Microsoft. 

Meet $, your new best friend for WSL

We’ve raved about Microsoft’s latest take on a Linux subsystem for Windows, this time in the form of the oddly-dubbed “Bash on Ubuntu on Windows” Windows Subsystem for Linux — herein and forever after referred to only as WSL for the sake of our collective sanity — but as awesome as being able to type bash in a command prompt to get access to holy posix goodiness, we think we can do better. Meet $.

$, formally known as RunInBash, is a simple command line helper utility that simply runs whatever follows it under WSL rather than in the current (Windows) terminal. Here’s a picture to illustrate (click to expand):

Continue reading

Easy Window Switcher 1.1.0 with international keyboard support

Hello international users of EWS! We’re really happy to announce the immediate availability of Easy Window Switcher 1.1.0, which brings support for internationalized keyboards to EWS users worldwide!

For those that haven’t been keeping in touch, Easy Window Switcher is a nifty, tiny utility that boosts your productivity by adding the ability to “alt-tab” between windows of the same application only, with the keyboard combination alt` (on US keyboards), a shortcut that should be intimately familiar to anyone that’s used OS X for any length of time.

Continue reading

Easy Window Switcher 1.0.1

We’ve just released the inevitable bugfix build for any product launch with Easy Window Switcher 1.0.1, which adds the ability to cycle between maximized windows. Hat-tip to Chris Bollman for reporting this bug.

Upgrading EWS is very straight-forward, as soon as you download and run the new version of EWS, you’ll see a dialog like the following:

Continue reading

What happens when Imgur goes out of business?


Today, while browsing the internet and looking at some “old” guides from 2012 I came across a familiar sight: a forum thread with hundreds of inline images, all of them once hosted with ImageShack, now permanently inaccessible. For those of you too green to remember, ImageShack and PhotoBucket were the Imgurs of yesteryear. Free photo/image hosting/sharing services that stepped in to fill the void when users needed to share pics on sites that didn’t offer image uploading/hosting themselves.

Today, it is far more likely that users recognize the names of once-behemoths PhotoBucket or ImageShack not from their years of glory but from coming across images like this, the fossils that remain from the time when these two beasts ruled the image hosting world and roamed the interwebs unopposed:1

Continue reading


  1. If the images below give you pause or perhaps make your heart skip a beat – know that you’re not alone. It brings us much pain and no comic relief to un-ironically embed these “image not found” images in this post. 

Mac-like window switching on Windows with alt-`

Dedicated followers (and anyone making the switch from Mac to PC) – this Pi Day 2017 gift is just for you! A new day means a new free app for our favorite peeps on the internet. Meet Easy Window Switcher, our invisible window cycling utility that makes it ridiculously easy to jump between windows of the same application à la OS X with the alt` (alt-backtick) keyboard shortcut.

Easy Window Switcher (codename wincycle) imbues your Windows PC with the same superpowers that were once exclusively reserved for the ranks of Apple’s OS X users. With Easy Window Switcher, you don’t need to muck around with alt-tab trying to find the window you’re looking for amongst 40 or 50 others1 – just hold down the alt key and backtick away to your heart’s content. And moving backwards is as easy as 1, 2, 3 altshift` and done.

Continue reading


  1. What? You really don’t have that many windows open at once? What are you doing here reading this post!? 

rewrite: a rust-powered, in-place file rewrite utility

Let’s say you’ve got a terminal open and you want to sort the contents of a file before you email it to a friend. The file can contain anything and it could be of any length, it doesn’t matter. What do you do?

The obvious answer is to use sort. Sorting the file is as easy as sort myfile – except it doesn’t actually sort the file, it sorts the *contents* of the file and dumps them to the command line (via stdout). So how do you sort the file “in-place,” so-to-speak? Again, the obvious answer would be sort myfile > myfile,1 redirecting the output of the sort command back to the file you want to ultimately send sorted.

Continue reading


  1. Don’t do this! 

Full range of Lenovo T570 options revealed

Lenovo’s ThinkPad T570, the much-awaited, supposed MacBook killer that was first announced at CES in January, is now available for pre-order via Lenovo Hong Kong – meaning users can finally see what specs are available and (roughly) how much it’s going to cost them.

Let’s get this out of the way: disappointingly, once again, Lenovo doesn’t seem to have made available configuration options that feature Intel’s fastest mobile chips; the most powerful option available is the Kaby Lake-powered i7-7600U. This is almost certainly a conscious and thought-out decision, as 7600U is the highest you can go without a massive jump in TDP – the higher-spec’d 7700HQ and above all weigh in at 45W TDP, compared to the 7600U’s thrifty 25W TDP. Dell’s Precision (and possibly XPS15?) and HP’s ZBook lineups will likely be the only way to get more raw processing power for your next purchase – at the cost of greatly-reduced battery life, no doubt.

Continue reading