Grease a 9 x 13 baking dish with oil or butter. Set aside
Slice and cube the stale bread into approximately 1.5-inch (3.8cm) pieces and place into a large bowl.
Beat the eggs and combine with milk, cream (or non-dairy alternatives), Dijon mustard, thyme, garlic powder, and salt and pepper to taste. Mix until the savory custard is well incorporated.
Pour the savory custard over the cubed bread slices and let them soak for 15 minutes.
While the bread is soaking, sauté the ham until lightly caramelized in a little oil. Set aside.
Assembly: In the the greased 9 x 13 dish, add ½ of the soaked bread. Add the sauteed ham over the bread. Then sprinkle on ½ of the grated cheese. Add the remaining half of soaked bread. Finish by sprinkling the remaining grated cheese on top.
At this point, you can choose to either cover and refrigerate overnight or bake, (If refrigerated overnight, remove savory bread pudding from the refrigerator for 30 minutes before baking)
Preheat the oven to 375°F (190°C). Bake the ham and cheese bread pudding uncovered in a 9 x 13 pan for approximately 30 to 40 minutes. Look for cues like a puffed-up egg casserole, a golden-brown top, and edges pulling away from the sides. To check doneness, insert a toothpick; it should come out clean with no liquid savory custard at the bottom. If the top of the bread pudding is getting brown but is not yet cooked though, cover with aluminum foil for the remainder of the baking time.
Remove from over and allow to sit for 10 to 15 minutes before serving. Enjoy!