Welcome to my blog, a bit about me...
By day, I'm a Principal Data Scientist at MassMutual focusing on Cybersecurity and Enterprise Technology. I lead the Cybersecurity & Fraud Data Science Team and drive enterprise-wide AI transformation initiatives.
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.
I recently reached a major milestone in the development of my hobby compiler Not Completely C.
In this post, I share the journey that brought me here, demonstrate how NCC can compile non-trivial programs,
and provide a detailed walkthrough of the compiler's architecture; from lexing source code to emitting machine code and linking executables.
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.
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?
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.