Grease an 11 X7 baking dish with butter and set aside. Cut French stick into 1 inch cubes and arrange in prepared dish. Set aside.
In a medium skillet, warm your butter over medium heat until it foams. Add your shallots. Sprinkle with a pinch of salt and pepper and saute until they soften, about 3 minutes.
Add garlic and cook until fragrant, about 1 minute.
Add diced ham and allow it to lightly brown on the edges, about 3 - 4 minutes. Remove from heat and set aside.
In a large bowl, whisk your eggs, milk, half and half, dijon mustard, gruyere, parmesan, thyme and salt.
Stir in your ham mixture.
Pour egg mixture over top of bread. Stir to coat all th cubes of bread and press down to ensure all bread is submerged. Cover in plastic wrap and place in the refrigerator for at least 3 hour or overnight.
Preaheat oven to 375 and arrange oven rack in the middle.
Bake in the oven for 35 - 40 minutes, or until bread is puffed up and browned and the bread pudding is bubbling. Remove from the oven and allow to cool before servings.
Bread pudding will keep in the refrigerator in an air-tight container for 5 -7 days.