Blog

Welcome to my blog, a bit about me...
By day, I lead the Cybersecurity and Fraud Data Science team at MassMutual, where we build systems to detect cyber threats. I also hold a PhD in Computer Science from the University of Vermont, with research in computational finance and cybersecurity. That said, you'll probably find me writing about completely unrelated side projects that caught my curiosity. Like building compilers and running a home-lab. I love exploring new technical challenges and sharing what I learn along the way.


When 5 + 5 Equals 11 Reflections on Writing a C Compiler, Part One

Posted on August 31, 2025 by John
Compilers ust Systems Programming Computer Science

How complex can a five character expression be? The seemingly innocent i + i++ produces different results on different compilers, exposing one of C's most insidious features: undefined behavior. In this post, I'll explore how something as fundamental as the order of expression evaluation became a minefield in C, why modern compilers still disagree on basic operations, and how I'm addressing these issues in my hobby compiler NCC. Along the way, we'll peek under the hood at compiler intermediate representations and discover why "simple" languages can be surprisingly complex.


A Subtle Python Threading Bug That Isn't About Threading

Posted on August 22, 2025 by John
Python Programming Languages Computer Science

I recently encountered a puzzling bug in code that uses Python's threading module for parallel processing. The code looks perfectly reasonable, but produces completely wrong results. Can you spot the issue?


Secure, Scalable Home Web Hosting with HAProxy, pfSense, Let's Encrypt & Cloudflare

Posted on April 3, 2025 by John
Networking Computer Security Web Development

In this article, I'll walk you through a comprehensive setup for self-hosting web applications. This configuration is ideal for both homelabs and small production environments, enabling you to host multiple websites on a single IP address and port. We'll focus on security, flexibility, and centralized management.

Using pfSense as our base operating system, router, and firewall, we'll leverage the ACME protocol for automated SSL certificate management, HAProxy for reverse proxying, and Cloudflare for DNS and CDN services.

I'll explain the role of each component and guide you through every step of the process-including how to avoid some common gotchas. By the end, you'll have a secure, scalable setup for hosting multiple services using domain and subdomain-based routing, with centralized SSL and traffic management.

Copyright ©2020-2025 John H. Ring IV. All rights reserved.
The content on this website is my own and does not necessarily reflect the views of my employer or any other party.