Sometimes in the course of software development it becomes best to start over from scratch. I’m taking this approach with my blog. I first joined Microsoft in 2000 as part of the Windows XP Embedded group. In 2004 I joined the Windows Driver Foundation group and created a managed (.NET) interface to the User Mode Driver Framework. That was also when I attempted my first series of blog posts which were going to describe how to write a driver in C# to control a small USB device. My management didn’t feel comfortable with blogging at the time and ‘encouraged’ me to discontinue the series. I left Windows and joined Microsoft Research in 2006 as part of the Foundations of Software Engineering group to work on model-based program analysis and Spec#. I still wanted to contribute to the blogging community, so I started a second set of blog posts that gave solutions to random problems I had solved that I thought may be helpful to others. There wasn’t any consistency among the topics and eventually the blog became stagnant again.
I’m currently an RSDE in the Human Interactions in Programming group in Microsoft Research. I’m responsible for the design, architecture, and implementation of applications and tools focused on the next generation of software development. Over the years I’ve accumulated a small but useful library which I call “stuff that should have been in System.dll”. For example I’ve defined simple things like Tuple<T1, T2> through Tuple<T1, …, T9>, utility things like a generic Cache<…> that uses weak-references, and more complex things like a ThreadQueue which schedules threads on the ThreadPool that can’t run in parallel or out of order. None of these things are rocket science but they prove to be useful time and time again. I’ll try to fill the gap in my blog by posting some of these and pre-dating them to match the date they were created. Thanks for reading!