To make the waffles, in a large bowl, whisk together the flour, baking powder, and salt. In a separate bowl, whisk together the eggs, buttermilk, butter and vanilla until well incorporated. Make a well in the center of the dry ingredients and pour in the wet. Stir until just combined.
Preheat a waffle iron, grease with cooking spray and pour in about 1/3 cup of batter into each cavity. Cook the waffles until golden brown and crispy. Transfer the cooked waffles onto a wire rack and continue cooking the waffles until the batter is all used up. Allow the waffles to air dry at room temperature for about 1 hour.
Combine 1/2 cup of the chopped chocolate with the sugar, cocoa, and ¾ cup of half and half in a medium saucepan over low heat. Cook, stirring constantly, until The chocolate is melted and the mixture is smooth and has thickened, about 5 minutes. Transfer the mixture to a large bowl, and whisk in the remaining half and half. Whisk in the eggs, salt, and vanilla extract.
Tear up the waffles and toss together with the remaining 1/4 cup of chopped chocolate, cranberries and pistachios. Pour out into a greased 10-inch square baking dish. Pour the chocolate mixture over the top of the waffle cubes and let sit at room temperature for 30 minutes until the custard has been absorbed into the waffles.
Preheat oven to 325 degrees F.
Bake the pudding until puffed up and set, about 45 to 50 minutes. Remove from the oven and let cool for 15 minutes to allow the custard to fully set before serving. Slice and serve warm with whipped cream, ice cream or a dusting of powdered sugar. Cooking Note: You can use 2 (13.8oz) packages frozen Belgian Waffles, instead of making homemade waffles, if you’d prefer.