Stuart Greig

@stuartgreigdev
0 Followers
0 Following
9 Posts
Software Developer | Exploring AI & modern CMS | Building things at http://stuartgreig.dev 🦡

Container stuck in CrashLoopBackOff?

Running kubectl logs <pod> usually shows nothing because the new container hasn't crashed yet.

The real hero:
kubectl logs <pod> --previous

See exactly why the last one died.

#Kubernetes #K8s #DevOps

Kubernetes Secret Store gotcha that caught me out this week.
Updating a secret in Azure Key Vault doesn't automatically update your Pod. It'll cache the old value forever unless you:
1️⃣ Enable --enable-secret-rotation
2️⃣ Use 'Reloader' to trigger a rolling restart
Stop manual restarts!

#Azure #K8s

Giving the @Optimizely CMS 13 Preview a spin. 🎡

First impressions:
✅ Smooth upgrade path from v12
✅ Clean modernization of the stack
✅ Docs are already spot on

Jump in early:
https://docs.developers.optimizely.com/content-management-system/v13-Pre-Release/docs/upgrade-cms-12-to-cms-13-pre-release

#CMS13 #Optimizely

Upgrade CMS 12 to CMS 13 (Pre-release)

Walk through migrating a CMS 12 Alloy starter site to CMS 13 and understand the considerations when migrating from CMS 12 to CMS 13.

Content Management System

Stop blindly trusting reCAPTCHA v3 success: true.

That only tells you the token is valid, not that the user is human.
To kill the bots, your backend needs to:
Check the score (0.0-1.0)
Verify the action name
Set your threshold to 0.5 and adjust.
#dotnet #webdev #security #reCAPTCHA

Stop using OrderBy(x => Guid.NewGuid()) to shuffle arrays

In .NET 8+, Random.Shared.Shuffle() is the native, zero-allocation way to handle it. Faster, cleaner, and built-in. #dotnet #csharp

Converting human-readable durations to ISO 8601 format in C#. Handles "2.5 hours" → "PT2H30M", "3 days" → "P3D". Perfect for Schema course durations, video metadata, or API responses that need proper duration formatting #csharp
Simple extension to validate absolute URLs vs relative paths. The file scheme check prevents false positives from file:// URIs on Linux systems.#csharp #dotnet #webdev
I have been using keyset pagination lately instead of skip and take in EF Core. The performance boost on large datasets is massive because it avoids the overhead of processing skipped rows. I usually stick to offset for small lists or jump to page UI. #dotnet #efcore
Migrating to .net Core Identity without forcing password resets?
Use a FallbackPasswordHasher which extends PasswordHasher<TUser> to
> Verify legacy HMACSHA512 hashes
> Return SuccessRehashNeeded for auto-upgrade
> Seamlessly migrate users on next login
No need to reset passwords