stevehocking.co.uk
About stevehocking.co.uk Categories
AI from scratch: How to start a project using GitHub SpecKit
AI from scratch: How to start a project using GitHub SpecKit

From zero to ai hero.

Mar 18, 2026

ai dotnet
Updating WSL on Login
Updating WSL on Login

It's not a better way, it's just a different way

Aug 26, 2025

wsl2 powershell
Compendium of Knowledge and Helpful Things - Unattended Upgrades
Compendium of Knowledge and Helpful Things - Unattended Upgrades

Stay secure, install and configure `unattended-upgrades`

Jul 23, 2025

compendium-of-knowledge helpful-things unattended-upgrades
Lightly scratching the surface of JSON deserialization in dotnet
Lightly scratching the surface of JSON deserialization in dotnet

Deep dives are so passé

Jun 25, 2025

dotnet json deserialization
A little light performance validation
A little light performance validation

Is this a string value, or... Never mind!

Jun 4, 2025

dotnet8 benchmarkdotnet list switch performance-testing string int
Testing the configuration of an AWS API Gateway in a CDK deployment
Testing the configuration of an AWS API Gateway in a CDK deployment

Unit testing IaC? Really...

Mar 1, 2025

aws cdk api-gateway unittest
Share SSH Keys between multiple WSL2 Distributions
Share SSH Keys between multiple WSL2 Distributions

Because why stop at one distribution?

Jan 15, 2025

docker ssh ssh-keys wsl2 keychain
Using Docker Compose with a Dev Container in VS Code
Using Docker Compose with a Dev Container in VS Code

Docker can run more than one container at a time? 🤯

Sep 16, 2024

docker docker-compose vscode plantuml
The incredible power of cleaning house
The incredible power of cleaning house

How to have AWS Elastic Container Registry (ECR) automatically expire your old images for fun, savings and security

Sep 3, 2024

aws awscli docker elasticcontainerregistry ecr security
Bash: Bulk rename some files recursively
Bash: Bulk rename some files recursively

How to 'just' rename some of the files in a directory in a bash shell (and in the child directories)

Jun 16, 2023

bash while-loop mv sed find
AWS: Using the AWS CLI to search within files in an S3 Bucket - Part 2 - the Search Script
AWS: Using the AWS CLI to search within files in an S3 Bucket - Part 2 - the Search Script

How to 'just' search for a file in an S3 bucket

Jun 2, 2023

aws awscli s3 cloudshell jq grep
AWS: Using the AWS CLI to search within files in an S3 Bucket - Part 1 - Cloudformation
AWS: Using the AWS CLI to search within files in an S3 Bucket - Part 1 - Cloudformation

When setting up infrastructure is more straightforward than the 'simple' task you need to perform

Jun 1, 2023

aws cloudformation awscli sns sqs lambda s3
Evolving Architecture: Adding value with each change
Evolving Architecture: Adding value with each change

Not just change for changes sake

Jan 31, 2023

evolving-architecture aws s3 lambda sqs typescript
Evolving Architecture [short]: Unit Testing a Cloudfront Function
Evolving Architecture [short]: Unit Testing a Cloudfront Function

It is time to do the right thing

Jan 7, 2023

evolving-architecture aws cloudfront-function js javascript typescript jest
Evolving Architecture [short]: Fixing a Cloudfront Distribution with a Function
Evolving Architecture [short]: Fixing a Cloudfront Distribution with a Function

What?!? There's no such thing as a default file?

Dec 27, 2022

evolving-architecture aws aws-cdk cloudfront distribution function
Evolving Architecture: Publishing a Jekyll site to AWS using GitHub Actions and AWS CDK
Evolving Architecture: Publishing a Jekyll site to AWS using GitHub Actions and AWS CDK

Moving forward, one step at a time

Dec 22, 2022

evolving-architecture aws aws-cdk github github-actions
Unit testing HttpClient consumers
Unit testing HttpClient consumers

Testing your code that uses HttpClient may not be as hard as you thought

Aug 12, 2021

dotnet dotnetcore httpclient ihttpclientfactory xunit unittest
Not all changes to your React components result in events
Not all changes to your React components result in events

Your expectation may be being matched by mistake

May 10, 2021

javascript react material-ui
React Higher Order Components (HOC) - Unknown Event Handler Property - Solved!!!
React Higher Order Components (HOC) - Unknown Event Handler Property - Solved!!!

Unknown event handler property... will be ignored 👀

May 3, 2021

react javascript
Compendium of Knowledge and Helpful Things - Friday 8th January, 2021
Compendium of Knowledge and Helpful Things - Friday 8th January, 2021

A run down of the things that I have found to be helpful and interesting this week

Jan 8, 2021

compendium-of-knowledge helpful-things
Run Jekyll in a VS Code Dev Container
Run Jekyll in a VS Code Dev Container

WSL2, docker, linux, ruby, jekyll, my! my! my!

Sep 22, 2020

docker wsl wsl2 jekyll
Build and Deploy an Azure Function using Github Actions
Build and Deploy an Azure Function using Github Actions

Free CI/CD

Jun 10, 2020

azure function azure-function github github-actions
Create a Docker Layered Build .net core Applications
Create a Docker Layered Build .net core Applications

I feel the need, the need for speed!

Jun 4, 2020

docker netcore layers unittest
Build and Deploy a React App to Azure Blob Storage using Github Actions
Build and Deploy a React App to Azure Blob Storage using Github Actions

Free CI/CD

Jun 2, 2020

azure blob-storage azure-blob-storage static-content react github github-actions
Use the connection string
Use the connection string

I am a developer. I am one with the connection string, and the connection string will guide me.

Apr 19, 2020

connectionstring sqlserver eventstore mongodb
Stop! You may not want to squash and commit...
Stop! You may not want to squash and commit...

Yes it gets rid of cruft, but so does rebase

Apr 5, 2019

git hg mercurial
What is event sourcing?
What is event sourcing?

Why shoud I care? And will it make me tea and toast in the morning?

Feb 24, 2019

event events eventstore eventsourcing
Events events events!!!
Events events events!!!

What even are events?

Feb 14, 2019

event events eventstore
Docker Networking - create and connect
Docker Networking - create and connect

When localhost, 127.0.0.1 or ::1 just aren't good enough

Feb 13, 2019

docker localhost container
Spin up k8s and run your Docker image
Spin up k8s and run your Docker image

You got your Docker image into Azure, now you have to run it in a container for it to be actually of use...

Jan 30, 2019

docker azure
Use Edge In-Private from Visual Studio
Use Edge In-Private from Visual Studio

What Microsoft giveth with one hand occasionally makes you facepalm.

Jan 25, 2019

vs visualstudio edge inprivate
Bulk updates to files using Powershell
Bulk updates to files using Powershell

Sometimes you just have to do some bulk updating on some files.

Jan 7, 2019

powershell bulk
Deploying a docker image to Azure
Deploying a docker image to Azure

You've made something useful, now make use of it!

Dec 19, 2018

docker azure
Useful docker commands
Useful docker commands

Some useful commands when working with docker

Dec 12, 2018

docker
Dockerize an ASP.NET Core Blog
Dockerize an ASP.NET Core Blog

Setting off on the way to exploring some cloud services

Oct 23, 2018

aspnetcore docker
Using Powershell to interrogate xml
Using Powershell to interrogate xml

What to do when confronted with 100,000 lines of technobabble

Oct 5, 2018

powershell xml xpath
Building an interactive service with .NET Core 2.1
Building an interactive service with .NET Core 2.1

Exploring whats new with .NET Core 2.1 whilst also exploring how to make services a bit friendlier

Jul 20, 2018

dotnet-core autofac serilog rabbitmq app-metrics ihostedservice http
The Pit of Success
The Pit of Success

Because the Guided Busway to Success isn't as emotive or intriguing, also it's not just for developers!

Jun 1, 2018

pit success guidance teams
How not to write SQL statements
How not to write SQL statements

Your TSQL statements might be around a lot longer than you expect...

May 11, 2018

legacy maintenance sql tsql
Are you the best developer, or the lead developer?
Are you the best developer, or the lead developer?

There is a difference, but not everyone realises it.

May 8, 2018

team leadership
Building a Windows Service to run scheduled tasks the more sensible way - The long awaited Part 2!
Building a Windows Service to run scheduled tasks the more sensible way - The long awaited Part 2!

Adding in Quartz.Net and doing some actual scheduling! What a time to be alive!

Mar 27, 2018

topshelf quartz.net autofac serilog
Building a Windows Service to run scheduled tasks the more sensible way - Part 1
Building a Windows Service to run scheduled tasks the more sensible way - Part 1

Topshelf, Quartz.Net, Autofac and Serilog; Oh My! What a time to be alive!

Dec 9, 2016

topshelf quartz.net autofac serilog
Enabling Jenkins to build GitHub Enterprise Pull Requests
Enabling Jenkins to build GitHub Enterprise Pull Requests

Taking some of the load out of code reviews

Oct 13, 2016

github github-enterprise jenkins pull-request
How to destroy the performance of an SQL query, and then bring it back
How to destroy the performance of an SQL query, and then bring it back

But it's only a FLAG!!!

Sep 9, 2016

sql-server query performance
Running Jekyll on Windows Subsystem for Linux
Running Jekyll on Windows Subsystem for Linux

Yuh, Jekyll, on Windows, without errors!

Sep 7, 2016

jekyll windows bash-on-windows susbsystem-for-linux
Implementing an AverageTimer32 Performance Counter in .NET
Implementing an AverageTimer32 Performance Counter in .NET

Use just one performance counter to monitor performance, not with new AverageTimer32 Performance Counters

Dec 8, 2015

dotnet csharp perfmon performance-counter averagetimer32
Authentication and Authorization: Integrating Active Directory
Authentication and Authorization: Integrating Active Directory

Who are you? You want to do what? Why should I believe you?

Nov 18, 2015

legacy authentication authorization authorisation active-directory ad ldap dotnet
Managing updates to legacy system databases
Managing updates to legacy system databases

Change log? Model? It's all about the tools!

Nov 13, 2015

legacy maintenance database tools
Dealing with emergency fixes on poorly understood legacy systems
Dealing with emergency fixes on poorly understood legacy systems

If these things were easy everyone would be doing it

Nov 5, 2015

legacy maintenance
Why am I getting a 500.19 from IIS when my xml isn't malformed?
Why am I getting a 500.19 from IIS when my xml isn't malformed?

What? These URLRewrite rules?

Nov 2, 2015

android pwdgnr8r preferences app
PwdGnr8r: Android password generation app - Preferences
PwdGnr8r: Android password generation app - Preferences

Expressing an Android Preference

Sep 23, 2015

android pwdgnr8r preferences app
Setting up keychain for bash on a linux server
Setting up keychain for bash on a linux server

Because it's nice to not enter your SSH passwords everytime you log on.

Sep 23, 2015

ubuntu linux bash keychain ssh
Creating an Android app that uses dynamic fragments
Creating an Android app that uses dynamic fragments

When running before you've learned to walk, make sure to have as many scissors in your hands as possible.

Jun 15, 2015

android dynamic fragments
Using JSPM with the Visual Studio (VS) 2015 Release Candidate (rc)
Using JSPM with the Visual Studio (VS) 2015 Release Candidate (rc)

Because sometimes it's good to use the stuff that isn't available by default.

May 1, 2015

javascript jspm vs2015 visualstudio
Why is my Javascript RegExp doing that?! The g flag...
Why is my Javascript RegExp doing that?! The g flag...

Some people, when confronted with a problem, think 'I know, I'll use regular expressions'. Now they have two problems.

Apr 29, 2015

javascript regexp
Setting up aliases in bash
Setting up aliases in bash

Aliases, they make life so much simpler, use them!

Apr 16, 2015

jekyll chocolatey linux bash
'Cloning' an object in javascript
'Cloning' an object in javascript

Sometimes you need an exact copy of a javascript object, here is one way to do that.

Mar 24, 2015

javascript
Mocking a fluent interface 'automatically' in Moq
Mocking a fluent interface 'automatically' in Moq

Fluent interfaces and objects can be useful and self documenting in certain situations, e.g. builders. However setting up a mock in a unit test can be very painful.

Nov 20, 2014

.net moq
Setting up an Ubuntu Server VM in Windows 8 Hyper-V
Setting up an Ubuntu Server VM in Windows 8 Hyper-V

Configuring Hyper-V, setting up the vm, installing Ubuntu Server, and finally configuring the server.

Jul 13, 2014

windows-8 hyper-v ubuntu

subscribe via RSS

stevehocking.co.uk

  • stevehocking.co.uk
  • steve@stevehocking.co.uk
  • /steve-codemunkies
  • /stevenhocking
  • /stevehocking