In the bottom of a large Dutch oven, heat the olive oil over medium heat. Add the onion, celery, and carrots and saute for 2-3 minutes, stirring occasionally.
Add the potatoes and the chicken broth. Increase the heat, and bring the mixture to a boil. Cook uncovered over medium high heat for 8-12 minutes, or until the potatoes are tender.
Meanwhile, in another medium saucepan, melt the butter. Stir in the garlic and saute until fragrant, about 30 seconds. Whisk in the flour and cook until bubbly and thick. Slowly drizzle in the milk, whisking constantly. It will be clumpy and weird at first. Just keep whisking. Slowly whisk in the half and half. Heat for 3-4 minutes, whisking often, until mixture is thickened and coats the back of a spoon.
Stir the milk mixture into the potato mixture. Stir in the frozen peas and ham and heat until hot clear through, 2-3 minutes. Season to taste with salt and fresh cracked pepper. Serve with plenty of shredded cheese and chives or green onions.