Lessons from the Fountain

Fountain is an iconic piece of ‘art’ produced by Marcel Duchamp [1], a white porcelain urinal with the words “R. Mutt 1917” scrawled on the side. While the original was lost (most likely thrown out after the exhibition) it has been the subject of controversy and discussion ever since. A small number of replicas were made during the 1950’s and In 1964 eight replicas were created by Duchamp. In 1999, one of these replicas sold at Sotheby’s for $1. »

Data-bound Tags with At.js and Knockout.js

I wanted to add an editor that supported tags to an existing web application that used knockout.js (I know, not what the cool kids are using but a full re-write just to add tags seemed ill-advised). After persevering with ProseMirror I decided it was too rich for what i wanted. All I needed was plain text + tags, not the full richness of ProseMirror. After doing a bit of investigation I found a nice little library called At. »

Migrating to a different blog platform

After over 5 years using DotNetBlogEngine I thought it was time to move on to something different. I was interested in a modern code-base that could run on linux. After a bit of searching around I settled on Hugo. I was initially tempted by Ghost, but wanted to try out life in the Go ecosystem for a little while, so Hugo fit the bill. Migrating Content Migrating my content was fairly straight-forward. »

Building ProseMirror

ProseMirror is another top-notch javascript library from Marijn Haverbeke, creator of CodeMirror and Eloquent Javascript author. Since ProseMirror is less mature than CodeMirror it currently doesn’t ship in a ‘built’ form, but instead as a mix-n-match set of modules (presumably as it matures it will be packaged differently). Since I’ve been out of the game a little bit with front-end development (or at least sticking with what I know) I wasn’t quite up with the tools I was going to need to compile ProseMirror. »

Proof of concept Asymmetric Encrypted Xml Trace Listener

.NET’s tracing infrastructure isn’t perfect, but it gives you access to some ‘internal’ things that it is otherwise hard to get access to (like network and WCF tracing). Sometimes the things you want to trace are sensitive in nature, and probably shouldn’t be left lying around on the file system, even on your servers. Additionally you don’t want to set up a centralised, secure, logging system, and don’t want the overhead of more network traffic for every trace write (which can be pretty verbose sometimes). »

My AWS Instance was pwn3d by eastern Europe, and all I got was this click-bait headline

This blog had been extremely quiet for several months while twitter has become my ‘go to’ vehicle for quick rants. Or so I thought, until I received 2 notices from AWS (my blog is hosted on an EC2 instance) saying that my instance had been reported for abusing the terms of service. The worst part about receiving news like this is the immediate reaction is to drop everything and dive in to investigate, however often other things supervene, and so after quickly cycling through ‘shock and denial’ and ‘pain and guilt’ I decided to turn off the instance to prevent further ‘damage’ arising from its misuse, and to fix it up at a later date. »

Questions and Beginnings…

A beginning is the time for taking the most delicate care that the balances are correct, and so it is also with the beginning of one’s stint on a software project. Here is a list of questions that, I have found, it is good to have answers too within the first week or so of starting on a software project. Sometimes the answers to one will make it obvious that a related question does not apply, and sometimes just by asking these questions you can begin to add value by uncovering things that need further consideration. »

No-longer a Windows Client Development MVP

Since 2007 every April (April 1st to be exact) I’ve received an email letting me know I’ve been recognized by Microsoft as a Microsoft Valued Professional (MVP) in client application development, primarily for my contribution to the Windows Presentation Foundation (WPF) community. It came as no surprise, but with a small amount of sadness, when I received no such email this year. I say “no surprise” because it has been about 2 years since I’ve done anything significant with WPF (and, as one of my colleagues said, it’s been a bit longer than that since Microsoft did anything with it, unless you count abandonment as “a thing”). »

The Future of M# and Organisational Politics

It’s new year’s eve, so naturally I’m at home by myself drinking Veuve Clicquot and thinking about software development. I was interested to read about the new research language announced by Joe Duffy, which he dubbed ‘C# for systems programming’ but which I’m calling M#. This resulted in a lot of comments, both on Joe’s blog and speculation around the web. Rather than focus on the technical aspects of the language, which is ill-suited to one who has ingested a bottle of Veuve Clicquot, I’d rather focus on the organisational politics surrounding the announcement of M#, and the future of Midori.

But first, a bit of history. Midori is a skunk-works operating system project that grew out of MSR’s Singularity operating system/tools project. It is managed code all the way, with the goal of being highly dependable and verifiable. It was made up of a small, but star-studded team. Joe Duffy, who wrote the original prototype of plinq in a week-end, Chris Brumme, the VM guru MS hired from Oracle back in the day for a signing bonus of $1M and a Porsche 911, who knew everything about the CLR and then ‘went dark’ about 9 years ago. WPF Maestro Daniel Lehenbauer, and quite a few others. Midori existed outside the normal Microsoft divisional structure, but was instead run by Eric Rudder who reported directly to Steve Ballmer.

Fast forward to now-ish. A few weeks ago Eric Rudder moved to the newly created role of Executive Vice President of Advanced Strategy, and Midori has been moved into Terry Myerson’s Unified Operating Systems Group, AKA the Windows Division. So far all of this is stuff you would have seen in Mary-Jo Foley’s excellent article on the subject, but the thing that MJF doesn’t say, and which I think is really key when considering the future of M# and Midori is the history of the Windows Division. The Windows Division HATE managed code. HATE, HATE, HATE. C++ and Javascript are the languages of the Windows Division. Every since they got burned by Managed Code in longhorn, and had to scrap a few years of development work, and re-set on top of the server 2003 code-base, the Windows Division has been strongly against managed code.

Lets also consider what Midori was setting out to achieve – replacing windows – something the folks on the Windows team are somewhat enamoured with.

From Mary-Jo’s Article:

Myerson’s OS group is going to be determining which parts of Midori have a place in Microsoft’s future operating-systems plans.

I suspect the conversation would be discussing the relative merits of suffocation with a pillow, or stabbing with a knife. I could be wrong here – Terry Myerson’s past in Windows Phone, which uses .NET heavily for its programming model, might make him more sympathetic to managed code, but I wouldn’t count on it.

Happy New Year


A Random List of Cool and Useful Stuff

http://visualping.io/ – I wanted to use this to check for the availability of the nexus 5, but due to the location google things the site is coming from the devices section doesn’t show up. Still, a cool idea.


http://tympanus.net/codrops/category/playground/ – a collection of cool HTML5 demos. Animating check-boxes, slide-down combo boxes, sidebar effects etc.


CLink – makes windows command-line better. Command-line probably doesn’t require a screen-shot.

HTML5 Admin Template – built on boot-strap, very slick-looking.


Exception Breaker – toggle on/off ‘break on all exceptions’ in VS quickly.