Tear the day-old bread into 1” pieces, and spread them out on a parchment-lined baking sheet until dried out but not hard.
Liberally grease a baking dish with about 1/2 tablespoon of butter. Melt the remaining butter in a small saucepan or microwave. Allow the melted butter to cool slightly but not enough to solidify.
In a large mixing bowl, whisk together the eggs, half & half, vanilla extract, ⅔ cup of sugar, 2 tsp of cinnamon, and salt. Once combined, slowly stream in the melted butter, whisking constantly to incorporate.
Add the pieces of bread to the egg mixture a few handfuls at a time, tossing gently to coat in the custard. Once all the bread has been added to the bowl, let it sit for 1-2 minutes to soak up as much of the mixture as possible.
Transfer half of the soaked bread to the prepared baking dish. Sprinkle in the chocolate chips and any other mix-ins you’d like, and then cover with the rest of the soaked bread. Scrape any liquid left in the bowl on top of the casserole. Tuck in any mix-ins (especially chocolate) visible from the top of the bread pudding to keep them from burning in the oven.
Cover the filled casserole dish with aluminum foil and let it soak at room temperature for least 30 minutes (up to 2 hours), or refrigerate overnight.
Preheat the oven to 375℉. If the bread pudding was refridgerated, let it warm slightly before placing in a hot oven (especially if using a glass baking dish).**
Bake the bread pudding, covered, for 30 minutes. Meanwhile, mix sugar and cinnamon for the topping in a small bowl and set aside.
Remove the foil, and sprinkle the cinnamon-sugar topping evenly over the pudding. Continue baking, uncovered, for another 20-25 minutes or until the top of the casserole is crunchy and deeply golden brown.
* You can also substitute the half & half with 1 cup milk + 1 cup heavy cream ** Ice-cold glass dishes can crack or explode in a hot oven if the temperature change is too extreme.