Cook the diced bacon in a large Dutch oven until browned and crispy. Remove the bacon with a slotted spoon and place it on a paper towel. Set aside for serving.
Remove all but about 2 tbsp of bacon grease from 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 cook, stirring constantly, for 2 minutes.
Slowly whisk in the milk and chicken broth into 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 salty!!
Simmer, making sure it doesn't boil because the milk may curdle, for 45-60 minutes, or until potatoes are tender.
Blend a cup or two of the soup mixture with an immersion blender or a blender to your desired consistency, OR leave as is.
Add the cheese and ham, then stir to combine.
Simmer for a few minutes, then taste and re-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.