Cook the diced bacon in a Dutch oven or heavy pot until crispy.
Remove the bacon with a slotted spoon and place on a paper towel.
Remove all but 2 tbsp bacon grease in the dutch oven.
Add the onion and carrots and cook, stirring often, for a few minutes.
Add the minced garlic and cook, stirring constantly, for 1 minute.
Add the flour and stir until well combined.
Cook, stirring often, for 2 minutes.
Slowly add the milk and chicken stock to the Dutch oven.
Add the potatoes and season with freshly cracked black pepper and a touch of salt.
Side Note: Be careful with salt! The sharp cheddar, ham, and bacon bits are all super salty!!
Simmer, making sure it doesn't boil because the milk may curdle, for 45-60 minutes, or until potatoes are tender.
Blend with an immersion blender to your desired consistency OR leave as is.
Add the cheese and ham then stir to combine.
Allow to simmer for another few minutes then taste; season with sea salt and freshly cracked pepper, if needed.
Ladle into bowls then top with bacon bits, green onion, and a little more shredded cheese.
Serve and enjoy.