Wednesday, March 6, 2019

How to disable xunit parallel tests?

Why would you want to run your tests in a single thread?

In my case I was doing integration tests which involved provisioning and destroying CosmosDB databases and collections. Obviously if one thread destroys the database while another is relying on it, then tests will fail.

So here is how to force xunit to run in a single thread:

1. Create a file in the root of your Visual Studio project named: xunit.runner.json

2. Ensure it's properties are set to "Copy to output directory".

3. Add the following:
    "parallelizeTestCollections": false,
    "maxParallelThreads": 1

4. Now build your project, and run: dotnet test

Dang Easy!

More info here:

Saturday, March 2, 2019

Cannot close Start Window on Visual Studio 2019 for Mac - How to close it!

This is a painful bug.

Even though you can click the window, you can't close it.

Here's how to close it:

This brings the window back into focus so you can actually click on it and use the close button!

That's it! I hope they fix this.

Thursday, February 28, 2019

Duplicate file listing in Visual Studio 2019 for Mac - Solved!

This i just a quick post to help people resolve a duplicate file listing in Visual Studio 2019 for Mac.

As you can see, I have an annoying problem:

The solution is to open your .csproj file and comment out this 1 online of XML:


The result is the following:

As you can see, the .csproj is no longer in the list. If you wish to include it then you can add the following:

    <None Include="Application.Func.csproj" />

That's it! So Dang easy! 

Crisis over.

Saturday, January 21, 2017

Using Technology to Avoid Reading A Long-winded Rent Contract

If you live in the UK like I do, you have probably seen some pretty dumb clauses in rental contracts.

These 2 are my favourite so far...
"Any obligation upon the Tenant under this Agreement to do or not to do anything shall also require the Tenant not to permit or allow any licensee or visitor to do or not to do that thing."


"If the Premises are vacant for a period of over two weeks, the Tenants should allow the water to run from all outlets in the Premises for one minute before consuming or otherwise using the water."

Each year, some more dumb clauses are added. What's more, the agency (Keatons) told me that they outsource their contract writing to another company, so I cant have any modifications.

So I've had enough of reading the 150+ clause contracts. I decided to use Technology to help. Since the agency uses Ecosign, the answer was simple. DIFF!!!!

So this year I did the following:
  1. Open the 2015 and 2016 contracts in Beyond Compare
  2. Disable all trivial differences (eg. whitespace)
  3. Only read the lines which are different.

There was a slight problem with this method, as the contract slipped a few clauses in the middle, so each numbered clause was out of sync beyond a certain point. But Beyond Compare is smart enough to show you that the line is actually the same, and only highlight the number of the clause. So for each line, a quick eye-ball shows that nothing else is different. So if it was the same, I didnt bother reading it.

I managed to reduce the 2hrs of painful reading down to a handful of minutes.

The moral of the story

You can probably find a way around most mundane tasks. Don't let life's bullshit slow you down.

Tuesday, May 5, 2015

Why developers who use Windows should buy a Mac

Let me say firstly, I dislike Apple as a company. I think that the fanaticism that it drives among the sheep who line up to throw away their money is ridiculous. I kind of respect their ability to do that though. But I still don’t want to be caught with an Apple logo.

Anyway, this article is about why developers who use Windows should buy a Mac.

Reasons for NOT buying a Mac

- I hate Apple
- I’m happy with Windows
- I develop on Windows, so I don’t have any use for a Mac
- The function key is in the wrong place
- I have 20 years of muscle memory, and don’t want to re-learn what the Alt/Ctrl/Apple key does.

They are fair enough reasons if you are: 
- Pig headed
- Complacent
- Want to bury your head in the sand because you don’t want to learn new technologies. 

I’m here to tell you that I used to be all of those. But then I realised that I was just being a douche. I also came to the conclusion that even though I think that I’m adaptable, I had never properly used to Mac OSX. I could probably the total time I used a Mac in terms of minutes. So how adaptable was I really?

Reasons to buy a Mac

- It will force you out of your comfort zone
- You’ll inevitably learn some Linux/Unix command line stuff, which is good for you
- You can run Windows in a VM or Bootcamp
- It will expose you to a tone of new technologies
- Frontend technologies are driven by developers using Macs. If you’re using Windows ports of these technologies, then you’re behind the curve.
- The Apple Mac Book Pro is a premium quality laptop. It is by far the best laptop I’ve ever had. Nothing else comes close.
- Every technology you learn will help you learn new ones in the future. 
- Learning to use a Mac will help keep your mind flexible

That all said, there’s ways to make the transition easier. Before I even got the Mac, I spent a month watching Youtube tutorials for Mac newbies. I also Googled for Mac equivalents of everything I do in Windows - keystrokes, applications, optimisations, customisations, personalising etc. Once you’re mentally prepared for the learning curve, it’s not as bad as you dreaded. It’s actually just learning. If you don’t want to learn new things, then why are you a developer? You’re probably still using Cold Fusion, Classic ASP, or WebForms in VB.Net. ***I just threw up a little in my mouth***

To Summarise

So whether you’re an Apple hater, complacent, or just afraid of change, I’m going to say this… Get over it, and stop being a dick. If you want to be any good at your job, then you need to play with all types of technologies - even ones you hate! 

ps. Yes the first thing I did was put a sticker over the Apple logo. Yes I did that before I even powered it on the first time.

Thursday, March 21, 2013

How to delete dot net temporary files

Sometimes you need to delete your .net temporary files. Here is a quick little batch file to help you do it. Just double-click!

set net2_32="C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\*"
set net2_64="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\*"
set net4_32="C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\*"
set net4_64="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\*"

REM stop iis
net stop w3svc

REM delete .net temp files
FOR /D %%i IN (%net2_32%) DO RD /S /Q "%%i" DEL /Q /F %net2_32%
FOR /D %%i IN (%net2_64%) DO RD /S /Q "%%i" DEL /Q /F %net2_64%
FOR /D %%i IN (%net4_32%) DO RD /S /Q "%%i" DEL /Q /F %net4_32%
FOR /D %%i IN (%net4_64%) DO RD /S /Q "%%i" DEL /Q /F %net4_64%

REM start iis
net start w3svc


Sunday, January 20, 2013

50 Ways to Avoid, Find and Fix ASP.NET Performance Issues

I contributed to a free book that got launched last week. It's a book about quick tips and tricks for performance:

50 Ways to Avoid, Find and Fix ASP.NET Performance Issues

My tip:
"Projects that use multiple levels of cache often demonstrate a misunderstanding of why caching is required in the first place. Caching is not synonymous with performance. Your code should already be efficient. Caching should only be used as a last resort, after you’ve made all possible (and sensible) code optimizations."
It sounds obvious doesn't it. But how many projects have you come across where caching was hiding inherent performance problems?

Anyway, the book is part of a marketing campaign for Red Gate Performance Profiler. So even though it is free, you may be contacted by Red Gate via email. There's no such thing as a free lunch now is there.

In any case, if you're a .net programmer then you should definitely have a read. It gives you 50 quick bits of useful knowledge. Most of which, you should definitely be aware of if you're a .net programmer.

Get it here: