When Your Customers Don't Pay; on time or AT ALL (a contractor's life pt. 2)
In my previous post I spoke about the difficulties of being a contractor and how sometimes you can be left high and dry when a customer doesn't pay. This can happen for a few reasons; They CANNOT pay...

Tuesday, 12 November 2024 06:30

//

11 minute read

Working on Legacy Codebases (or a contractor's life)
As a freelance developer one of the skill-sets you need to learn quickly is how to work on existing codebases effectively. I've been lucky to have built a bunch of from--scratch systems; this is a JOY...

Wednesday, 06 November 2024 22:30

//

17 minute read

On Logging in ASP.NET Applications (Part 1...probably)
Logging is OF COURSE a critical part of applications however I often see it misunderstood / misused in ASP.NET applications. This is part post and part manifesto on how to effectively log in ASP.NET...

Sunday, 27 October 2024 17:00

//

10 minute read

Blog Update
You may noticed my frantic frequency of posts (I was at two a day for a while month!) has slowed down of late so I thought I'd give a quick update. NOTE: Translation seems to have broken along the...

Saturday, 12 October 2024 14:40

//

2 minute read

Resume | Scott Galloway | .NET Developer | Remote
I'm a versatile and accomplished developer and lead with an over 25 year track record building teams and platforms and revitalising startups. Proficient in C#, ASP.NET, and modern web frameworks, with...

Sunday, 29 September 2024 22:30

//

6 minute read

A Copy Button For Highlight.js
In this site I use Hightlight.js to render code snippets client side. I like this as it keeps my server side code clean and simple. However, I wanted to add a copy button to each code snippet so that...

Saturday, 28 September 2024 14:15

//

5 minute read

Custom Config Section Extensions
It seems like everyone has a version of this code, I first came across this approach from Filip W and recently my old colleague Phil Haack has his version. Just for completion this is how I do...

Friday, 27 September 2024 06:20

//

4 minute read

A Newsletter Subscription Service Part 2 - Refactoring the Services (and a little Hangfire)
In part 1 of this series I showed you how I created a new Newsletter Subscription page. In this part I'll cover how I restructured the solution to allow for sharing of Services and Models between the...

Monday, 23 September 2024 10:45

//

7 minute read

A Newsletter Subscription Service Pt. 1 - Requirements and Subscription Page
While perusing other people's blogs I noticed a lot of them have a subscription service which allows users to sign up to have an email sent to them weekly with the posts from that blog. I decided to...

Saturday, 21 September 2024 19:06

//

11 minute read

Querying Postgres Data in Grafana
In a previous post I detailed how I added Grafana to my docker-compose to provide insights into performance for this site. As I have Umami on here AND self host the database for that in this post I'l...

Thursday, 19 September 2024 19:30

//

2 minute read

Freelancing and disappointment
IF YOU'RE LOOKING FOR A DEVELOPER / LEADER PLEASE CONTACT ME I've been a freelance developer for more than a decade now (since I left Microsoft really). For the most part it's been perfect for me. I...

Thursday, 19 September 2024 18:30

//

2 minute read

Using Grafana and Prometheus to Monitor ASP.NET Core 8+ Applications
Monitoring is an essential part of maintaining the health and performance of your applications. I already have this site monitoring user visits using Umami and exceptions and errors using Seq but now...

Wednesday, 18 September 2024 04:45

//

6 minute read

Simple Search Using HTMX & EF Core for ASP.NET Core
This is just a quick article as it builds on the others in the full text search series such as the typeahead dropdown and Postgres full text search. In this post, I will show you how to implement a...

Tuesday, 17 September 2024 17:36

//

9 minute read

A Smarter Search Dropdown with HTMX
In a previous post I showed you how to create a search dropdown using Alpine.js and HTMX then I showed how we could enable Cross-Site Request Forgery protection using the AntiforgeryRequestToken in...

Monday, 16 September 2024 22:30

//

5 minute read

HTMX (and a little Alpine.js) for a SPA-like experience in ASP.NET Core
In this site I use HTMX extensively, this is a super easy way to make your site feel more responsive and smoother without having to write a lot of JavaScript. NOTE: I'm not entirely happy with this...

Sunday, 15 September 2024 06:45

//

8 minute read

Using Polly For Retries
Polly is a critical part of any .NET developer's toolkit. It is a library that allows you to define policies for handling exceptions and retries in your application. In this article, we will explore...

Sunday, 15 September 2024 02:20

//

9 minute read

Using A Hybrid Approach To Blogging
I've blogged many times about how I use Markdown to create my blog posts; I really like this approach but it has one major drawback - it means I have to do a complete Docker build cycle to update a...

Saturday, 14 September 2024 00:30

//

10 minute read

Simple 'Donut Hole' Caching with HTMX
Donut hole caching can be a useful technique where you want to cache certain elements of a page but not all. However it can be tricky to implement. In this post I will show you how to implement a...

Thursday, 12 September 2024 16:00

//

4 minute read

Umami.Net and Bot Detection
So I've posted a LOT in the past on using Umami for analytics in a self-hosted environment and even published the Umami.Net Nuget pacakge. However I was having an issue where I wanted to track users...

Thursday, 12 September 2024 14:50

//

8 minute read

Using Umami Data for Website Stats
One of my projects since starting this blog is an almost obsessive wish to track how many users look at my website. To do this I use Umami and have a BUNCH of posts around using and setting up Umami....

Thursday, 05 September 2024 23:45

//

10 minute read

logo

©2024 Scott Galloway