HAM: Add 1/2 tablespoon olive oil to a large cast-iron pot over high heat. Once the oil is shimmering, add in the chopped ham and sauté for 1-2 minutes until lightly browned. Remove to a paper-towel-lined plate. Quickly dry the pot and return to the stove top.
VEGGIES: Over high heat, add the remaining 1/2 tablespoon olive oil and once shimmering, add the 1 cup diced onion, heaping 1/2 cup carrot, and heaping 1/2 cup celery. Sauté for 4-5 minutes until the onion is translucent. Add in the 1 and 1/2 teaspoons garlic and stir for another minute.
THICKEN: Add the butter to the pot and stir until melted. Once melted, sprinkle in the flour. Stir for 1 minute to cook off the raw flavor of the flour. Add the seasonings: the 3/4 teaspoon dried thyme, 3/4 teaspoon dried oregano, and 1/8 teaspoon cayenne pepper (if desired). Season to taste with salt and pepper. Stir seasonings for 30 seconds. Pour in 1 cup of milk and whisk until it starts to thicken (~1 minute); then pour in the remaining two cups of milk. Whisk until it thickens (~2-3 minutes) and then add in the 1 and 1/2 cups chicken stock. Whisk until slightly thickened (another ~1-2 minutes). (See Note 2)
POTATOES: Bring the soup to a boil, slightly lower the heat to medium, and add the potatoes to the soup. Cook for 8 to 12 minutes, stirring often. The soup will thicken as it cooks and the potatoes should be fork tender after 8-10 minutes. (If the soup has thickened too much, add in a splash of additional chicken stock; I usually add up to 1/2 cup extra.)
HAM AND CORN: Once the potatoes are fork tender, stir in the corn and the ham you set aside earlier. Heat through. Decrease the heat to low and add in the freshly grated cheese. Stir until just melted and then taste for seasonings. Remove from heat.
SERVE: Serve bowls of soup garnished with fresh thyme or parsley, if desired.