This blog is now on ASP.NET Core

This blog is a static website compiled using Hugo. Up to this point, I built the website and packaged all of the assets into a Docker container with NGINX which was hosted on my dedicated server cluster.

This worked well and was simple, but I have an upcoming project that I’ll be announcing soon that required dynamic content that nginx + pure static files wasn’t easily able to implement with NGINX.

To fix this, I decided to migrate this blog from NGINX to ASP.NET Core. Here’s how and why.

Fixing common Hugo encoding problems

I posted a link to my blog on Slack and was greeted with HTML entities right in the website summary. I could see certain characters like the apostrophe being encoded as ’.

Here’s how I fixed this problem.

A screenshot from Slack of a post of this blog. The description includes HTML entities literally in the description: … they’ll … instead of they’ll

Email spam filtering with Rspamd on K8s

I’ve been running my own mail server for well over ten years now. It’s pretty old, so it’s hard to make changes to it, but it’s running in Kubernetes. I was using a mixture of Postfix, OpenDKIM, OpenDMARC, and Amavis for spam filtering with SpamAssasin, but it wasn’t very good at catching spam. Instead, its time move to rspamd. It’s much newer and encapsulates DKIM, DMARC, DNS based blacklisting, bayesian filtering, etc. all in one single tool.

Here’s my notes on migrating, what it took to get it going and some tweaks I made.

Lighting up the holidays with computers

This Christmas season, I decided I wanted to play with programmable light strings and see if I could create an interesting light show on the front of my house. I stumbled across xlights, an open source light show sequencing program and got to work.

More infrastructure doesn't fix using the wrong infrastructure

I work at AWS, and predictably we use a lot of AWS cloud services. In many cases, when an engineer looks for a computer platform, they’ll often go directly to AWS Lambda because “it’s Serverless” with the justification that it’s simple and the best option no matter what and not want to explore alternatives.

The FaaS (Functions as a Service) compute style is great for a certain category of system problems–ones in which you don’t need strict control over how it executes. AWS Lambda only exposes limited controls and depending on what your workload is like, you could run into unexpected scaling and failure modes. There are alternative compute environments that avoid those limitations that you should know about.