Blog
Azure SQL Failover Setup
Configure a replica of an Azure SQL database in another region to protect you from failures.
Blob Storage Client-Side Encryption
Transparently encrypt blobs in Azure Blob Storage at the Application level with client-side encryption.
Spend less on Azure
It is estimated that 30% of cloud spend is wasted. How do you avoid wasting 30% of your Azure spend? This talk takes you through the approach NewOrbit takes to...
Designing for scale in the cloud 101
15 minutes to teach two tips on how to improve scale and resilience in the cloud.
Migrate to the Cloud
I gave a talk at Leaders in Tech, Reading about Migrating to the Cloud
Log Analytics to the rescue
I love Application Insights, but sometimes you need to go a bit deeper
Azure SQL Private End Points with Pulumi
Configure Private End Points on Azure SQL Server with Pulumi
Azure Private End Points, VPNs and multi-site
Azure Private End Points, VPN clients and multi-region setups.
Retain team members - or not
Another way to think about the relationship between your company and your employees.
Azure Key Vault Secrets
Use Azure Key Vault to safely store secrets and passwords in Azure
Secure your Web App in Azure at DDD14
An overview of how to secure Azure Web Apps, touching on virtual networks, encryption, key vault and monitoring.
Can a SHA256 Hash have a "/" in it?
I was recently asked whether a SHA256 hash could have a "/" in it. If you know how hashes work, you probably know that the question doesn't make sense. But...
AI will fundamentally change how we build software
AI will change how we think about, design and build software. It's a revolution on par with the move to web.
Azure Security Talk at rg-dev
I did a talk on "How to secure your web-app in Azure" at rg-dev
Find SELECT N+1 with Application Insights
With ORMs it's very easy to write code that calls SQL many times to serve a single web requests, and it can be hard to find it. Application Insights can...
Everything I thought I knew about Async in C# was wrong
The way Async is being described, it sounds like it will make your code faster and more scalable, whilst solving all your problems and achieving world peace - all before...
Add new user to all my Azure subscriptions
Add a new user to all my Azure subscriptions using Azure CLI
Publish Nuget packages with Azure Dev Ops
Use GitFlow and Azure Devops to automatically publish Nuget packages with sensible version numbers
Hierarchy IDs for Fun and Performance
Storing hierarchies in a database is easy - but applying hierarchical security and configuration can be very difficult and a significant performance problem. Hierarchy IDs can alleviate this, at the...
GDPR for Software and how Azure can help
A video recording I made with Microsoft about how GDPR applies to Software development and how Azure can help.
CosmosDB token has wrong time
CosmosDB error "The authorization token is not valid at the current time" and how to fix it.
Securing your web app in Azure
A video overview of some of the Azure technologies that you can use to better protect your web applications in Azure - all depending on your required security level, of...
Azure Failover and Resilience
Azure provides a highly resilient hosting platform, with significant built-in redundancy, but it can be hard to understand what resilience you get automatically and what you might have to set...
Combine documents with other data in Azure Search
Azure Search has built-in support for indexing documents in blob storage, which works great. But what if you want to combine the documents with other data, for example if you are...
How many ways can I host a web app in Azure?
I got talking to a colleague about how many ways there are to host web apps in Azure and even managed to surprise myself by just how many ways I...
Find docs with no PartitionKey in Azure DocumentDb
When you are using Partitioned Collections in Azure DocumentDb you need to specify a Partition Key on each Document. At least, I thought you did. But, it turns out that...
Find Documents with missing properties in Azure DocumentDb with the .Net SDK
Azure DocumentDb stores documents as JSON. One of the effects of this is that sometimes you may end up with documents in the database that have missing properties and it...
Auto publish Azure Web Jobs with ASP.Net Core RTM
This is an update of my original post on how to do this with ASP.Net Core RC1At the time of this writing, there is no tooling to auto publish Azure...
InfoSec with SQL Azure
I've been using SQL Azure since 2011 and it's been a journey. One of the big problems I used to have was passing security audits from some of our clients;...
How React.js suddenly clicked
I've been working with Angular 1.0 for a few years and have been looking at other frameworks to move to in the last six months or so, including Angular 2.0,...
Azure DocumentDb Go-Faster button
"Premature optimisation is the root of all evil."That said, if you are using DocumentDb with the .Net client please do two things in your code right now. They are safe...
Auto deploy Azure Web Job with ASP.Net 5 and source control deploy
UpdateAn updated version of this post that targets ASP.Net Core RTM is now available.The content below here refers to RC1 which is not supported on AzureAt the time of this...
Playing with CORS
I recently had reason to get to understand CORS in a bit more detail and I wanted to share what I learned. I did this with ASP.Net 5 / MVC6...
BT Customer Service Epic Fail
I am posting this here as it may be a useful illustration of how overly optimising processes can lead to incredibly poor customer service. Or maybe I am just ranting....
Using Azure Management Libraries from Azure Web Jobs
In this post I will show how to set up an Azure Web Job to automatically reboot a worker role at certain times. It's just an example, you can schedule...
ng-dataList (working title) wish list
This post is primarily a set of notes to myself on what I would like to see in a new “data list” angular component. It’s here on my blog for...
Hitting the limits in SQL Azure
We use SQL Azure for most of our systems. For the most part, it “just works” and it is dead easy to get set up and start using. The main...
Continuous deployment to Azure Cloud Services
When you use Azure Websites you can do continuous deployment using Git, but with cloud services you can only do it from TFS. Luckily, it is quite easy to set...
Real-world Corporate Browser Stats
Paul Irish recently said on twitter “Very surprised how many developers actively support IE7 despite it's miniscule usage now. Let's move on!” referencing StatCounter showing IE7 having 0.64% usage. A...
Hard Windows Workflow Lessons from Azure
This post is about some issues we experienced with Workflows on Windows Azure after running successfully for over a year. We effectively had system down for several days until we...
Testing Web.Config Transforms with ApprovalTests
In this post I will show how you can write a test with your favourite unit test framework that will apply your web.config transformation and compare the result to a...
Using ASP.Net MVC without a MembershipProvider
Most people when they get to securing their ASP.Net MVC applications and managing users look to the MembershipProvider and the RoleProvider – or the new SimpleMembership. For many projects you...
Entity Framework Migrations, seeding and server farms
Entity Framework Migrations offers a way to evolve your database schema over time. The schema is fine, but what about your actual data? You may have configuration settings in the...
How to Mock RestSharp.ExecuteAsync
It took me a while to figure out how to Mock RestSharp’s ExecuteAsync method for unit testing purposes. Once you realise that ExecuteAsync takes a callback which is called when...
Windows Workflow Foundation 4 State Machine and tight loops
I am a big fan of Windows Workflow. Sure, there are a lot of barriers to get started and a lot of idiosyncrasies, but once you get past that, it...
Entity Framework Code First, Inheritance and ComplexType
In one of the applications we are working on, we have a pretty complex inheritance hierarchy which is mapped to SQL Server using Entity Framework 4.3 using Code First. We...
Moving TS Profiles and Home Drives to another server
I recently found myself in the situation of having to move the Terminal Server user profiles and the Home Drives directory from one server to another. There are similar challenges...
File Upload Failed
I have just migrated my blog from FTP publishing to a custom domain on Blogspot. I tend to use Windows Live Writer to write blog posts, but the image publishing...
.URL files and IIS
A client wanted the ability for his users to easily “put an icon on their desktop linking to the site”. Now, that is actually a bit more tricky than it...
New website for NewOrbit goes live
We have just developed and gone live with a new website for NewOrbit Ltd. NewOrbit is the company I run with Sean, where we develop custom-fit, web-based solutions for our...
First employee, first office
Today was a big day in the life of NewOrbit. Our first employee, Technical Director Pete Kendall, joined us and we moved into a joint office. Sean (co-owner of NewOrbit)...
Outlook 2007 stays "disconnected"
Sometimes I do these things just to try them out... For example, I recently got a new laptop and decided to install Vista 64-bit on it and Office 2007. I...
Why write a blog?
Ever since I left Denmark I've maintained a blog in Danish, on and off, to keep my friends and family back home updated on what I am up to. As...