In a 1 quart, heavy-bottomed, non-reactive pot, combine sugar, cornstarch and salt. Mix thoroughly with a spoon, pressing out any lumps with back of spoon. In a small cup, beat egg yolk and 2 tablespoons milk with a fork. Add to cornstarch mixture; stir to mix thoroughly, pressing out as many lumps as possible. Heat remaining milk and cream until very hot, then gradually add hot liquid to cornstarch mixture, stirring constantly.
Place pot over medium heat. Stir constantly until mixture comes to a boil. (Just before boiling, the mixture will lump and look terrible. As it boils, if you keep stirring, it should thicken and smooth out.) Boil one minute, stirring constantly. Remove from heat. Add butter and vanilla. Let stand for a minute, then stir gently. Divide evenly among wineglasses. Let stand at room temperature or chill while preparing chocolate pudding.
In a 1 quart, heavy bottomed, non-reactive pot, combine sugar, cocoa powder, cornstarch and salt. With a small whisk, mix thoroughly to combine, getting out as many lumps as possible. In a small cup, combine egg yolk and 2 tablespoons milk and beat well with fork. Add to cornstarch mixture; stir in well with whisk (mixture will be thick). Heat remaining milk and cream until very hot, then gradually add hot liquid to cornstarch mixture, stirring constantly with whisk.
Place pot over medium heat. Prepare in the same way as the vanilla pudding. Strain through fine strainer into heatproof container of at least 1-1/2 cup capacity. This pudding will be much thicker than the vanilla pudding. Spoon or gently pour chocolate pudding on top of vanilla pudding, dividing evenly among wineglasses.
Chill pudding until set, at least two hours. Eat within 24 hours of making. If desired, garnish with lightly sweetened whipped cream and shaved semisweet chocolate just before serving.