Preheat the oven to 400°. Grease and flour an 18x13 cookie sheet with sides at least 1 ½ inch high and set aside.
In a medium bowl combine the flour and sugar.
In a medium sauce pan bring the butter, cocoa powder, shortening and water to a boil over medium heat.
Pour the hot mixture over the flour and sugar mixture and use a hand mixer or stand mixer on low to combine. Add the vanilla, buttermilk, baking soda and salt and mix until combined. Add the eggs and mix well.
Pour the batter onto the prepared baking sheet and tap the pan on the counter a few times to pop some of the larger bubbles in the batter. Bake for 20 minutes, or until the center of the cake springs back when gently pressed.
Allow the cake to cool completely before frosting. Top with nuts if desired.
Use the same sauce pan that the cake batter was made in (no need to clean it if you don’t want to) combine the milk, butter and cocoa over medium heat until just boiling. Be careful not to burn it!
Remove from the heat and transfer to a medium bowl. Use a hand mixer or stand mixer to add the powdered sugar, vanilla, and salt. Mix until completely combined.
Allow the frosting to cool to room temperature before pouring over the cooled cake.