FizzBuzz in C#

FizzBuzz in C#

The comments on this Hacker News post generated a bunch of opinions on the ability for developers to solve a FizzBuzz problem. Specifically in a coding interview. I’ve never actually seen what the FizzBuzz problem was, so I had to look it up. In this blog post I solve FizzBuzz in C#.

The FizzBuzz problem is a challenge for a developer to write a method, in any language, to return different parts of the word FizzBuzz.

It goes like this:

  • If a number is divisible by 3 or 5 => return FizzBuzz
  • If a number is only divisible by 3 => return Fizz
  • If a number is divisible by 5 => return Buzz
  • If a number is not divisible by 3 or 5 => return the number

Over twenty years of programming experience and I’ve never come across question in an interview so I thought it would be fun to jump onto .Net Fiddle to give it a try. In this function you take any number and check if it can be divisible by 3 or 5. The trick to this function is to use the % mod operator to check if a number is divisible by another number. The mod operator will return a number if there is a remainder after division between the two supplied numbers. If the number returned after division using the mod operator you will return zero – meaning there isn’t a remainder after division. This is what the function is all about. Here’s my FizzBuzz implementation I wrote this morning after reading the Hacker News post.

Simple FizzBuzz implementation in C#

public class Program
	public static void Main()
		int i = 0;
		while(i <=100)
			string fizzWord = GetFizz(i);
			i = i + 1;
	public static string GetFizz(int i)
		if(i % 3 == 0 && i % 5==0)
		  return "FizzBuzz";
		else if(i % 3 == 0)
			return "Fizz";
		else if(i % 5 == 0)
			return "Buzz";
		return i.ToString();

Worlds Colliding: Dr. Becky Kennedy on Armchair Expert and Our Journey with the Armchair Media Explorer

The recent episode of the Armchair Expert featured the Dr. Becky Kennedy, a renowned psychologist specializing in parenting, resonated deeply with us. It was a thrilling worlds colliding moment – the insightful world of Armchair Expert and the transformative parenting wisdom of Dr. Becky.

Armchair Expert: A Platform for Meaningful Conversations

We created the Armchair Expert Media Explorer (think all the movies, documentaries, shows and podcasts mentioned in each episode) to work along side the Armchair Expert podcast, hosted by Dax Shepard and Monica Padman, has always been a platform where candid, deep, and often surprisingly vulnerable conversations take root. The podcast has a unique way of delving into the human experience, bringing forth the raw, unfiltered aspects of various life facets – from celebrity struggles to expert opinions on psychological and social issues. It’s this unvarnished approach that makes each episode not just relatable, but also incredibly enlightening.

Dr. Becky Kennedy: A Beacon for Parents

Dr. Becky Kennedy has been nothing short of a lighthouse for parents wading through the complexities of raising children. Her approach, blending compassion with practicality, offers a fresh perspective in a field often muddied by conflicting advice. Her ability to articulate the challenges of parenting, while providing actionable strategies, has been a game changer for many, including us. Dr. Becky doesn’t just offer advice; she empowers parents to find their unique path in nurturing their children’s development.

Two Worlds Collide

The episode featuring Dr. Becky Kennedy was more than just another podcast – it was a meeting point of profound insights and practical wisdom. It provided a space for Dr. Becky to share her invaluable knowledge with a wider audience, offering parents easy access to expert guidance. This episode was a testament to the power of open conversation in breaking down complex topics like parenting into digestible, actionable advice.

Armchair Media Explorer: Enhancing the Experience

To complement such enriching content, we created the Armchair Media Explorer – a tool designed to help listeners delve deeper into the subjects discussed on the podcast. Recognizing how often books, movies, shows, podcasts, and articles are mentioned in episodes, we saw the need for a resource that neatly compiles these references. The Armchair Media Explorer does just that, allowing users to easily find and explore the media mentioned, enhancing their learning and enjoyment.

Dr. Becky’s Influence on Our Parenting Journey

For us personally, Dr. Becky’s insights have been monumental in our parenting journey. In these challenging times, where conventional wisdom often falls short, her advice has been a guiding star. She’s helped us navigate the often confusing and guilt-ridden landscape of modern parenting with grace and understanding. Her appearance on Armchair Expert not only amplified her reach but also brought her invaluable advice to an audience eager for grounded, practical parenting wisdom.

Conclusion: A Synergistic Impact

The collaboration between Armchair Expert and Dr. Becky Kennedy symbolizes a powerful synergy. It’s a fusion of thought-provoking dialogue with practical, life-changing advice. For listeners like us, who rely on both the enlightening conversations of Armchair Expert and the parenting wisdom of Dr. Becky, this episode was a milestone. It’s a vivid reminder of how the right voices, when given a platform, can profoundly impact our lives. The Armchair Media Explorer is our contribution to this ecosystem, hoping to make the journey of exploration and learning a bit easier for every listener out there.

Friday, November 17 2023

Friday, November 17 2023

Good morning. A few notes that I wanted to record for this lovely fall Friday.

  1. Near record warm has passed us and we’re back to normal cold fall. Should be great for saunaing.
  2. Made a fantastic oat milk cortado this morning. Using regular Oatly blend, normally I use the Barista’s version, but today’s turned out fantastic. I’d say top five of all time home made cortados.
  3. Driving T to school this morning he commented that so many people have black jackets. I replied saying they were a popular color. That brought up the question of what does “popular” mean. After I explained that it’s something that a lot of people like, for example Christmas, ice cream, soccer are all things that are popular because many people like them. When I asked him if he could think of something that was also popular, a few seconds passed and he replied “I know something that is popular for adults”. I asked what and he said “relaxing”. He got that right.
  4. The Armchair Media Explorer has been slowly gaining traffic among the fans of the popular podcast Armchair Expert. People love it, but I really need someone with a large following to help promote it. So this morning I emailed Dax, Monica and their producer Rob in hopes that they read my emails. Having them Tweet (X?), Instagram it or just promote it would go a long ways for the platform.
  5. Started a new project I’m calling the Radio Station Project. It’s going to contain a lot of radio station data and some nice data visualizations. More to come after I can collect some data.
Real-time FAA Flight Data Powering the JetTip Smart Alert System

Real-time FAA Flight Data Powering the JetTip Smart Alert System

Over the past year I’ve been working with JetTip to provide their smart alert system with real-time FAA flight data. We finally launched the service into production last month so I decided to write this blog post about the real-time FAA flight data powering the JetTip smart alert system. The collaboration between JetTip and me has led us to the creation of a cutting-edge software solution that has a direct connection to the FAA data stream which is now integral to the JetTip smart alert system.

I started working with JetTip a couple summers ago when they hired me to build the JetTip mobile app. The app has been downloaded by thousands of users for both iOS and Android mobile operating systems. The mobile app allowed JetTip’s users to move from a text messages based alert system to a push notification system. This update not only saves money via the loss of text messaging rates but allows more flexibility for the end users who can now pause and update their notifications much more easily via the app interface.

The mobile app project was just the beginning of what’s turned into a pretty rad relationship. Over the past couple years I’ve gotten to know Nick from JetTip quite well and even consider him a friend. When he came to me with the idea of creating a system to process the FAA data in real-time I was on board immediately. So, as flight data providers shifted their focus to enterprise clients and costs surged, we saw an opportunity to use our development backgrounds and data processing experience to create our own flight data processing product.

I’ve become pretty comfortable processing large amounts of data, so plugging into the FAA fire host wasn’t a huge overhaul. The biggest challenge was how to process all that data so fast and store it efficiently. Managing gigs and gigs of data is not a trivial thing, I quickly become pretty good at fine tuning MySQL databases and managing server resources. The core objective was to develop a system capable of ingesting and processing all of that FAA flight data accurately. This system was not just about managing data; it was about transforming it into actionable insights for all the aviation enthusiasts out there. But build in a way that we can utilize the data source in the future for more products.

This direct feed has revolutionized how JetTip subscribers receive information and opened up my mind to additional flight data products that we can develop in the future. Part of the new service that we’ve created is virtually instant diversion alerts, real-time notifications of international departures, and the ability to see flight plans well into the future were all made possible by this integration. Based on this information, I think there is room for more robust products that are just as good, or better, than some of the competitors out there that we can provide at a much lower cost.

Looking Ahead

I’ve been working on this product for the past nine months and have learned a ton about high transactional databases, Java Messaging and managing large databases. We’re excited about the future possibilities this data has in store. The feedback from the community has been pretty great and have spurred more thoughts about how to incorporating these insights into additional products. The goal is to not only maintain this data set, but grow the level of service provided and products to the plane spotting community and anyone else interested in real-time flight updates.

This blog post aims to provide a background to the JetTip announcement regarding their new in-house FAA data source. For more details on this exciting development, please refer to the original JetTip post.

How to Configure Cloudflare’s Load Balancer Monitoring When Health of the Pool is Critical

How to Configure Cloudflare’s Load Balancer Monitoring When Health of the Pool is Critical

I recently faced an issue where my Cloudflare managed API endpoint was functioning correctly—returning a 200 OK status when I hit the endpoint manually—but Cloudflare’s Load Balancer was reporting a “Critical” health status. After a lot of trial and error with some investigation, I found that the problem was with the Header Settings in the monitor health check. This post will outline the steps I took to get the health monitor check to return healthy.

Initial Troubleshooting

I created a simple endpoint in my API specifically for the health monitor. The endpoint was a simple GET and returned a 200 along with the server name as the body text. This endpoint was returning a 200 response code from Postman and through my browser, so I double checked that the monitor configuration was correct in Cloudflare:

  • URL: I made sure it was pointing to the correct endpoint that was returning 200 when I manually hit the url.
  • Method: Set to GET as my API was expecting.
  • Timeout and Frequency: Set to 60.

These checked out but the health of the monitor was still returning “Critical”. At first I didn’t think that I needed to set any additional headers, ignorantly thinking that Cloudflare would would set default headers of the monitor like Postman does, but that’s not the case. So I went to the next step and manually set the headers.

The Breakthrough: Header Settings

After further digging and reading troubleshooting posts on Cloudflare forums, I decided to manually set the headers under the Advanced settings for the monitor. Within the health monitor set up, I filled out the name, url and type of request. Then I clicked Advanced Settings and created the following header settings for the monitor.

  • Host: I set this to the domain that the health check was targeting, for example,
  • User-Agent: I set this to Cloudflare-Health-Check.
  • Authorization: Since my API was public I didn’t set this to anything.
  • Accept: I set this to application/json.

And would’nt you know it, my API health monitor started returning Healthy!

The How-To: Setting Up Headers in Cloudflare

Here are the steps I took to get the Headers set up in my Cloudflare load balancer health monitor.

  1. Log in to Cloudflare Dashboard: Go to the “Traffic” tab and locate the Load Balancer section. Click edit on the load balancer to edit.
  2. Click Monitors: Next to your Load Balancer, you’ll see the health check configurations. Click edit. Click Remove if you already have a monitor configured. Then create a new monitor.
  3. Add Default Options: Fill out the default name, Action and Url.
  4. Add Headers: Click advanced settings and scroll down to the section where you can add headers. Here, enter the key-value pairs for each header.
    • Key: Host, Value:
    • Key: User-Agent, Value: Cloudflare-Health-Check
    • Key: Authorization, Value: None or your Bearer access token if required
    • Key: Accept, Value: application/json
  5. Save and Test: Once all headers are added, save your changes. It’s a good idea to test the health check to make sure it’s working as expected.


The issue was resolved after correctly configuring the Header Settings in Cloudflare’s health check. If you ever find yourself in a similar situation, double-checking these settings could be the key to solving your problem.

Good luck!