Category: code

OAuth2 scopes vs Roles

Scopes are typically used when an external application wants to gain access to the user’s data via an exposed API. They determine what the client application can do. Role (or group) based access is typically used within an application to determine what a user can do. See also: Read more →

Docker – from the beginning

Install Docker desktop Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException: solution: install Hyper-V VSCode Install the Remote – Containers extension Angular sudo apt update sudo apt install nodejs npm sudo npm install -g @angular/cli@10.2.3 ng serve 2nd Attempt found this Image – docker pull debian:10-slim Container – docker run –name debian-buster-slim -h 10-slim -e LANG=C.UTF-8 -it debian:10-slim /bin/bash -l Environment – apt update && apt upgrade… Read more →

Developer Productivity

SPACE Satisfaction (and well being) These qualities are often best captured with surveys. To assess the satisfaction dimension, you might measure the following: Employee satisfaction. The degree of satisfaction among employees, and whether they would recommend their team to others. Developer efficacy. Whether developers have the tools and resources they need to get their work done. Burnout. Exhaustion caused by… Read more →

What does Dependency Injection mean by saying it can inject at runtime?

The service type is defined at compile time. This is normally in the form of an interface or a (sometimes abstract) base class. The key point here is Liskovs substitution principle It states that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e., objects… Read more →


I saw a request a while ago asking for advice on some kind diagnostic logging (I can’t recall the details other than the person who asked). Worded another way the question is: how do apply a cross-cutting concern? When we: design our solutions around the ideas of queues, messages, events and streams & services (aka queries & commands) write code… Read more →

Exception capture in .NET Core

app.UseExceptionHandler(options => { options.Run( async context => { var error = context.Features.Get<IExceptionHandlerFeature>(); if (error is object) { Log.Error( “EXCEPTION {method} {url} {query} => {exception}”, context.Request.Method, context.Request.Path.Value, context.Request.QueryString.Value, error.Error); } }); }); Read more →

Debug XmlSerializer

var serializer = new XmlSerializer(typeof(<x>)); serializer.UnknownAttribute += (sender, args) => System.Diagnostics.Debug.Fail($”Unknown attribute { args.Attr.Name }=\'{ args.Attr.Value }\'”); serializer.UnknownNode += (sender, args) => System.Diagnostics.Debug.Fail($”Unknown Node: {args.Name}\t{args.Text}”); serializer.UnknownElement += (sender, args) => System.Diagnostics.Debug.Fail($”Unknown Element: { args.Element.Name }\t{ args.Element.InnerXml}”); serializer.UnreferencedObject += (sender, args) => System.Diagnostics.Debug.Fail($”Unreferenced Object: { args.UnreferencedId }\t{ args.UnreferencedObject.ToString() }”); Read more →