Terms of use
Nobody reads these. So here's the short version, in words instead of legalese.
These are my opinions
This is a personal blog. Everything on it is mine — my views, my mistakes, my bad jokes.
I'm freelance, so the usual "these views don't represent my employer" line gets a bit circular: I am the employer, and we're in complete agreement. My clients are a different matter. Nobody I work for has reviewed a word of this, none of them signed off on it, and none of them should be held responsible for what I think.
The code will break. Read the date.
There is nearly twenty years of code on this site. A lot of it targets product versions that no longer exist, in languages that have since changed, solving problems that Microsoft has since solved properly. It's all published as-is, with no warranty of any kind.
Look at the date on the post before you trust the code in it. And test it before it goes anywhere near production — which is advice I'd give you about my current code too.
Comments
Comment away. Disagree with me — the good comments here have always been the ones that told me I was wrong.
Your name and your comment get published. Your email address does not. It's never shown, never published, never sold, and never given to anyone — in fact I don't store it at all, only a one-way hash of it, so it can't be recovered from the database. Not by you, not by me.
Comments are held until I approve them. I'll remove anything abusive, and spam goes in the bin without ceremony. Bot filtering is Cloudflare Turnstile, which is why you don't have to identify traffic lights to talk to me.
When you post a comment, your name, email and website get saved in your own browser so you don't have to type them again next time. That stays on your device. It goes nowhere except along with a comment you deliberately post, and the "Not you?" link on the form wipes it.
Analytics, and why there's no cookie banner
I use Cloudflare Web Analytics. It's cookieless, it doesn't fingerprint you, and it can't follow you anywhere else. I can see that a page got read. I can't see that you read it.
There's no Google Analytics here, no ad network, no social pixels, no newsletter popup ambushing you at 40% scroll. That's also why there's nothing for you to click "accept" on.
Some links are dead. Sorry.
Twenty years of links, pointed largely at Microsoft documentation, which reorganises itself roughly as often as the product gets renamed. Some of them go nowhere now. I fix the ones I notice. And a link to someone else's site is a link, not an endorsement.
Copying
The writing is mine. Quote it, link it, argue with it in public, put it in your slides — just say where it came from. Don't republish whole posts as if they're yours, and don't feed the archive into something that reprints it with my name filed off.
If any of this matters to you legally
Then talk to a lawyer, because I'm not one and this page isn't a contract. It's a description of how I run a blog. If something here worries you, get in touch and we'll sort it out like adults.