Archives
-
A couple of links on recruitment
I've been a bit quiet over the past month due to starting a new role which has kept me thoroughly occupied with the usual "information brain-splosion". One of the things I'm going to have to do now I' …
-
Being more accessible: Highlighting images that don't have alternate text
I saw a tweet recently that showed a really cool trick you can use to highlight when images are either have missing, or empty, alternate text. As Wikipedia says (so it must be true!):
The alt …
-
Setting an O365 user to have no password expiry via PowerShell
If, like me, you're using Office 365 as your email solution you may have encountered the situation where you don't get emails landing from such things as blog comments because the password has …
-
Link Dump
Another assortment of links, of interest to me, that may be of interest to you!
The Rough History of MSBuild
This one's here really as a jumping-off point to the other posts in this guys blog. He's …
-
The dreaded coding / technical test
I've given, and taken, different flavours of coding/technical "test" which seem to fall into three main buckets
Write some code on a computer
Write some code on a whiteboard
Talk through a …
-
Using is instead of == to check whether an object is a null reference
A tweet yesterday by Bertrand Le Roy:
Something in C# I learned today: `if (a is null)` is not just prettier, it's also more robust than `if (a == null)`. thx @MadsTorgersen
— Bertrand Le Roy (@ …
-
Putting an "about me" blurb at the bottom of each post
By the time you read this, each of the posts in this blog (and the recipe blog) will come with an "about me" blurb at the bottom of the page, in no particular order, Scott Hanselman has one:
As …
-
Top 10 posts for October 2017
I put together the occasional "link dump" post where I drop a series of links that I've had open in tabs that are of interest to me, and that I think may be of interest to others. In a semi-related …
-
The simplest ASP.NET Core app that'll serve static content
NOTE: This post is targeting .NET Core / ASP.NET Core 2.0, not 1.x
I have a confession to make, I've not spent much time or energy looking into the ins and outs of .NET Core, ASP.NET Core, Entity …
-
Link Dump
Another collection of odds and ends, of dubious use to anyone but me, but perhaps of interest!
Proper Dependency injection in Azure Functions on function level with scoped services!
A blog post …
-
Loading the "admin" menu on a Core install of Windows Server
This post is mainly (ok, entirely) a reminder to myself that in order to load the "admin menu"
That is available in Windows Server core installs, the command to run is
sconfig
(This post will …
-
Storing metadata against Azure Storage Blobs
I've known for a while that you can associate aribitrary metadata with Azure Storage Blobs, docs.microsoft.com has Set and retrieve properties and metadata which gives an example of setting …
-
The PowerShell Out-GridView cmdlet
There's a PowerShell cmdlet that I've seen before, but it's never quite lodged itself in my brain sufficiently for me to remember it and use it. It's Out-GridView and it's something that won't be of …
-
Using the Azure Storage Emulator
As I'm gearing up to continue my series of posts on the subject of migrating an application to Azure, one of the things that occured to me was that the existing implementation has unit tests. …
-
Opserver - several different kinds of cool
A year or so ago I discovered Opserver, a monitoring system/solution built by the guys at Stack Exchange (i.e. those who built Stack Overflow and all its sibling Q&A sites) that can monitor a …
-
Installing code to Orchard directly from GitHub
I recently had a question land in the comments on my post about making the PJS.Bootstrap theme work with Orchard 1.10.x, where Abner asked:
I am new to orchard development so please mind the noob …
-
Migrating an application to Azure - Part 1: Introduction
Way back in the mists of time (ok, 2011 so not exactly the age of the dinosaur!) I built an employee recognition and reward platform for an FTSE 100 company. Why's that even remotely interesting, I …
-
Enabling Social Meta Tags in Orchard
I've been sharing some of the content I've written via LinkedIn, Twitter and Facebook - mainly reserving the recipes I've been putting together for Facebook and the more technical / professional …
-
Link Dump
Another of those very lazy posts where I'm sharing links to content by other people, other content that I want to be able to refer back to in the future, admittedly!
Using LinqPad to open SQL CE 4.0 …
-
Interviewing with Microsoft
As I made reference to in Who you know, versus what you know and My "Hit Refresh" moment, I interviewed with Microsoft a few months ago for an Application Development Manager role. This is a …
-
Making my images play nicely with mobile devices
It was pointed out to me earlier today that whilst the carousel on my home page scales and looks right on everything from desktops to mobile phones, the "top-hat" images I've been including in posts …
-
Guides to module building in Orchard
Since I added a carousel to my homepage, I've been working towards turning this into an Orchard module so that I can (a) share it with others, and (b) use it as an opportunity to learn how to put …
-
It's perfectly okay to say "I don't know, let's research this together."
This tweet:
As a senior engineer or a technical team lead, it's perfectly okay to say "I don't know, let's research this together."
— Celestine Omin (@cyberomin) October 3, 2017
Along with …
-
Bootstrapping a carousel onto my homepage
I've been very (very) aware that the homepage of my site is very text heavy, consisting of a list of the most recent blog posts from techy me and cooking me. Over the past couple of weeks I've poked …
-
A quick and dirty query to find titles of Orchard blog posts that match criteria in SQL
I noticed earlier today that the number of "structured data" items Googles Webmaster Tools was reporting it had found on my website had dropped. Given that I'm continually adding new recipes (albeit …
-
Orchard "shape tracing"
A very quick, and short, post to point to a feature of Orchard called "Shape Tracing" that allows you to work out how a page is composed, and what views you'd need to create (and indeed it will …
-
Adding a summary to Orchard blog posts - refining the code
After putting together my post yesterday about adding a Summary field to blog posts, Sébastien Ros dropped a comment pointing out a tidier way to access the Summary property, giving this:
post. …
-
Adding a summary to Orchard blog posts
One of the things I like about ths blogs hosted at MSDN is that the blog owner can elect to have something different displayed under each post in a listing, instead of the CMS just taking the first N …
-
Who you know, versus what you know
I've recently been reflecting on the past, no bad thing as there's a lot that can be learnt from looking back to what's gone before, after all there's that oft mis-quoted aphorism attributed to …
-
Link Dump
Quite how I end up with such an eclectic collection of open tabs, I'll never know, but this mixed bag may be of interest to someone else!
Dumping Git Data from Misconfigured Web Servers
This one's …
-
Backing up SVN to Azure Storage
Related posts:
Backing up SQL Server to Azure storage - doing it the long way round
Until such time as I finally get round to the item on my TO DO list that's all about replacing my on-prem SVN …
-
Restricting access to Azure resources with Virtual Network service endpoints & Firewall
So, there have been a couple of related announcements from the Azure peeps over the past few days:
Azure Networking announcements for Ignite 2017
Announcing Virtual Network integration for Azure …
-
Learning about Azure
As I alluded to in My "Hit Refresh" moment post, I've been making a concerted effort over the past while to gain a better handle on all the things that Azure has to offer, how they hang together and …
-
My "Hit Refresh" moment
This is Darcey, I've chosen a picture of her whipping me with her tail to accompany this post as (a) I like the picture, (b) Jeremiah had a pet picture, so I'm going to treat it as a pre-requisite, …
-
Creating a site-to-site VPN between Azure and a Ubiquiti UniFi Security Gateway (USG)
I've recently been steadily working my way through some of the training material available for 70-534 (Architecting Microsoft Azure Solutions), both by watching online training videos on Pluralsight …
-
Link Dump
Image Carousel using Twitter Bootstrap and Orchard CMS Projections
This looks like it'll give me the solution I'm after to "beautify" the home page of my site slightly. At the moment it's a fairly …
-
You can configure Azure/Office 365 to not require multi-factor authentication from your office
I've been working my way through the Architecting Azure Solutions (70-534): Infrastructure and Networking course on Pluralsight and discovered a useful nugget of information about the way you can …
-
If you're sending email via Exchange Web Services, cache the service URL for a while!
In my recent series of posts about sending emails through Office 365 from an Azure Function, triggered by a blob being uploaded to Azure storage, I noted that:
because of the amount of time Office 36 …
-
Creating an Azure function that triggers when a blob is uploaded - Publishing to Azure from Visual Studio 2017
Parts to this series:
Creating an Azure function that triggers when a blob is uploaded
Creating an Azure function that triggers when a blob is uploaded - Creating and running in Visual Studio 2017 …
-
Creating an Azure function that triggers when a blob is uploaded - Sending an email via Office 365
Parts to this series:
Creating an Azure function that triggers when a blob is uploaded
Creating an Azure function that triggers when a blob is uploaded - Creating and running in Visual Studio 2017 …
-
CsvHelper - a tidy package for working with CSV content
I needed to transform some CSV data recently and my Excel skills are somewhat lacking when it comes to the funky stuff, so I had a hunt around for a solution I could use to run up a quick and dirty …
-
Creating an Azure function that triggers when a blob is uploaded - Creating and running in Visual Studio 2017
Parts to this series:
Creating an Azure function that triggers when a blob is uploaded
Creating an Azure function that triggers when a blob is uploaded - Creating and running in Visual Studio 2017 …
-
Creating an Azure function that triggers when a blob is uploaded
Parts to this series:
Creating an Azure function that triggers when a blob is uploaded (this one)
Creating an Azure function that triggers when a blob is uploaded - Creating and running in Visual …
-
Check Azure storage pricing over the period you're going to store the data for
I know this one probably seems obvious, but it didn't really occur to me just how much the "headline" pricing hides the difference in cost between different Azure storage options and models. If you …
-
Copying/Moving a file in Azure blob storage
I was looking through the posts on weblogs.asp.net a few days ago and spotted this one, Corrupted File when using DownloadToStream in Azure blob, in which the author does what I do and realises …
-
Wouldn't it be nice if the IIS Website bindings window had a default sort
Or, "wouldn't it be nice if the IIS Website bindings window had a default sort that wasn't the order that the bindings were added to the site" to put it another way. I made an oops and created the …
-
Excessive whitespace
I was looking through the settings in Firefox earlier today and ended up clicking through to one of the help pages (Firefox's performance settings) which, IMHO, has a bit of excessive whitespace …
-
Putting files into Azure blob storage using AzCopy
One of my last blog posts was about copying data into Azure blob storage (specifically local SQL Server backups) and it turns ou that there's a command line app available that wraps up copying files …
-
Authenticating Ubiquiti UniFi VPN users against a domain using RADIUS
One of the things that annoyed me about the setup I had when I was using a DrayTek router was that the VPN didn't authenticate using my Active Directory credentials (yes, for reasons, I've got a DC …
-
Backing up SQL Server to Azure storage - doing it the long way round
So, as I can't seem to get the baked-in way of backing up to Azure Blob Storage to play ball, I've decided to do it the long way round for now, which isn't the end of the world as it gives me an …
-
Backing up SQL Server to Azure storage
I've been looking at using the baked-in backup SQL to Azure blob storage feature to, well, backup some databases and have been thoroughly stumped! :( The SQL I've put together is:
IF EXISTS (SELECT 1 …
-
Previewing content in Orchard
This is probably very obvious (and it should be - it's a clickable link in the Orchard UI!), but I had to go off and ask Google if there was a way to preview a blog post I'm writing. It turns out …
-
Replacing our home WiFi with Ubiquiti UniFi
TL;DR: Ubiquiti UniFi is the single best thing we've ever done for our home network / WiFi!
Up until very recently we've been using an ageing DrayTek 2830 series router, along with the modem …
-
Disabling the "System Recovery Options" window in Windows
Raymond Chen over at The Old New thing posted yesterday "Why did my systems reboot into the Recovery Environment and how do I prevent that from happening in the future?" where he explains (a) when/ …
-
Deserializing awkward JSON using Json.NET
Aside: I'm never quite sure whether every instance of a word which has a Z in it, that sounds like it could have an S in it, should have an S in it when it's en-gb instead of en-us. In this instance …
-
When is ALT-D not ALT-D, when it's en-gb :-(
I've been banging my head against the desk for the past week or so as the most recent Windows 10 Insider builds, 16278 if not before, have had the most frustrating (yes, first world problems!) bug. …
-
Using structured data to blog recipes
In my other blog I've been writing up recipes for years now, albeit with varying frequency, with a combination of recipes I've found and tweaked and recipes that I've created from scratch (the latter …
-
Link Dump
Things I've read recently that I want to keep track off, and perhaps comment on slighty.
PowerShell Tutorial – Try Catch Finally and error handling in PowerShell
I've recently been putting together …
-
Compressing directories to ZIP from PowerShell
A quick note to self about compressing folders using PowerShell, basically the trick is to use the ZipFile class from the System.IO.Compression.FileSystem assembly:
$directory = "C:\Path\To\ …
-
Documentation - the oft neglected step-child of a project
I've recently started contributing to the documentation for the Orchard CMS project (GitHub: https://github.com/OrchardCMS/OrchardDoc), my reasons for this are many:
I've been using Orchard as the …
-
There's more to console than .log
A tweet I saw reminded me that the Javascript Console object has more to it than just "log"
Protip: there are many siblings to console.log(), like .group(), .error(), .assert() formatting and much …
-
2017-08 update for Windows 10 Anniversary Update ("1607") breaks WSUS - WSUS gets a fix as well!
It looks like Microsoft are going all out to fix the issues introduced in the 2017-08 update for Windows 10 as an update to WUS has been released to resolve a single solitary issue (as well as the …
-
Link Dump
Easily extracting .nupkg files with WinRAR
I've had WinRAR installed on my work PC for years (November '13 if the created stamp on the folder it's installed into is to be believed) and for all that …
-
2017-08 update for Windows 10 Anniversary Update ("1607") breaks WSUS - FIXED
NOTE (Updated 30/08): Microsoft appear to have resolved this issue with a new update for WSUS as well, see here for details.
I previously blogged about how the 2017-08 update to Windows 10 ("1607" / …
-
Publishing a module to the Orchard Gallery
The steps involved in publishing a module to the Orchard Gallery, as documented, are somewhat out of date as trying to follow them didn’t match reality, unfortunately. As I’ve just gone through the …
-
Writing a custom Condition for Orchard - checking the tags on a page - published to GitHub and the Orchard Gallery
As promised in my first post about writing a custom Condition for Orchard, I've published the source code to GitHub and the Orchard modules gallery:
Source code on GitHub
Module in the Orchard …
-
Writing a custom Condition for Orchard - checking the tags on a page
I've previously written about how I've added a standardised warning banner to certain pages in Orchard, so that I can always show something like the text in the image below when I've written a post …
-
Age of Empires is being re-released into the Windows Store!
From: onmsft.com: Age of Empires: Definitive Edition Windows 10 pre-orders now open
Not a lot more to say, but Age of Empires and Command & Conquer (in nearly all its flavours) were and are two of …
-
Adding Google Analytics to Orchard
Google Analytics can show you all kinds of funky stuff about who's viewing your website, what they're viewing and how they're mooching from page to page, and it's very easy to add to your site as …
-
Escaping identifiers in SQL when building up commands in C#
I answered a question on Stack Overflow recently about how to "encode" identifiers so that they aren't a source of SQL injection. As it's something I'm likely to keep "in the bank" I wanted to put up …
-
Ensuring an action filter is only executed once per request
If you have a view that's composed of the result of more than one action, for example by having something like:
@Html.Action("PartialContentForHome", "Home")
in one view, to pull in the content for …
-
Blog spam from "essay captains"
Recently I've had some blog comment spam from https://essaycaptains.com/. I'm just putting this out there so that (yes, the link has a nofollow!) anyone that searches for them might see this and know …
-
Making the PJS.Bootstrap theme work with Orchard 1.10.x
The PJS.Bootstrap theme, along with several other themes and modules doesn't work when combined with Orchard 1.10.x, with the orchard-debug-YYYY-MM-DD.log files generated in ~/App_Data/Logs …
-
Using SQL Server CLR to add "earliest" and "latest" aggregate functions
Whilst there are undoubtedly very funky ways to achieve the same result, many moons ago I wrote a couple of SQL CLR aggregate functions for retrieving the earliest and latest values for a given …
-
Using MiniProfiler with a hybrid asp.net Web Forms / MVC application - Part 3
Previous parts:
Part 1 - Installing MiniProfiler and showing the UI
Part 2 - Hooking MiniProfiler into an MVC controller
Controlling when MiniProfiler is visible
More often than not, you won' …
-
Using MiniProfiler with a hybrid asp.net Web Forms / MVC application - Part 2
Part 1 covered creating a hybrid ASP.NET WebForms / MVC project, adding MiniProfiler to the project, showing MiniProfiler output on the WebForms page and adding an event to the MiniProfiler output. …
-
Using MiniProfiler with a hybrid asp.net Web Forms / MVC application - Part 1
If you've got an application, like we have, that uses asp.net Web Forms for the UI components and MVC (5) for the endpoints that are used by JavaScript to retrieve/save data, it's still posible to …
-
2017-08 update for Windows 10 Anniversary Update ("1607") breaks WSUS
NOTE: Microsoft appear to have resolved this issue with a new update for Windows 10, see here for details.
We've discovered that (now listed as a known issue in the Windows 10 Update History) the …
-
[Non-Tech] Usable instructions for descaling Sage "the Oracle" coffee machine
Totally non-techy post ahead:
The instructions in the provided manual for the Sage "by heston blumenthal" the Oracle cofee machine that are supposed to guide you through de-scaling the machine are …
-
Adding the "msvalidate.01" tag required by bing to Orchard
In order to validate my ownership for Bing Webmaster Tools, I need to add the tag
<meta name="msvalidate.01" content="CA6A83218C1ED72C9E6EF7298BA5549D" />
to the markup for my homepage.
After a …
-
Using postMessage to implement an inter-frame API
One of the products I work on allows users to host individual web pages inside frames within it. Whilst working on a proof-of-concept a while ago, I stumbled acros the postMessage method which …
-
A standardised warning banner in Orchard
In the posts I've written about creating a certificate authority and SSL certificates for use in a Dev/Test environment (part 1, part 2), I wanted to have a standard banner at the top of them that …
-
Trailing slashes in Orchard
Up until about 20 minutes ago, viewing this blog via http://robertwray.co.uk/blog would work, but viewing it via http://robertwray.co.uk/blog/ wouldn't. Logical, no?
The solution is to add a …
-
Getting a type value from the Request object
A little bit of boiler-plate code I've used in the past for retrieving a value from the asp.net Request object (when working with webform back in the day!) is:
/// <summary>/// Retrieve a value from …
-
A custom model binder for XML content
Most of the time the default model binder in MVC suffices and maps everything into your model cleanly. One thing that you can't do automatically is read XML into an XDocument. You could solve this …
-
Creating your own certificates for development/test environments - Part 2
Part 1 covered creating a Root Certificate and adding it to the Local Machine trusted store, as two discrete steps. That leaves the remaining two steps for this part:
Creating a certificate for …
-
Creating your own certificates for development/test environments - Part 1
So that HTTPS bindings can be configured in IIS in a development/test environment, there are a couple of options:
Use IIS to create a Self-Signed certificate
Create your own root certificate to …
-
Windows Forms marquee style progress bar that doesn't, well, marquee..
If you've got a progress bar where the Style is set to "ProgressBarStyle.Marquee" and the progress bar sits there blank, not scrolling and looking rather sorry for itself, one reason for this is that …
-
"Can't sign in to Skype for Business" - you've got Two Factor Auth setup!
This is as much a reminder to myself as anything else, but,.. If you're using Office 365 and have two factor authentication setup against your account, you'll need to use an "app password" for Skype …