Preheat oven to 350 degrees F. Lightly grease a large, rimmed 12×18-inchbaking sheet (aka a half sheet pan).
Cake:
In a large bowl, whisk together the ¡our, sugar, baking soda, and salt. Set aside.
In a saucepan over medium heat, combine the water, butter, and cocoa powder and bring to a boil, stirring to make sure there are no lumps.
Pour the chocolate mixture over the dry ingredients and stir until combined.
Add the buttermilk (or sour cream, see note), eggs, and vanilla, and mix until combined. You can do this with a hand mixer to make sure there are no lumps.
Pour the batter into the prepared pan and spread in an even layer. Bake for 18-20 minutes until the cake springs back lightly to the touch and has barely started to pull away from the sides of the pan. Do not over bake!
Icing:
When the cake is almost done baking, start to make the icing. In a medium saucepan over medium heat, combine the butter, cocoa powder, milk, and salt.Heat, stirring constantly, just until the mixture comes to a simmer.
Immediately remove from heat and add the vanilla, then whisk in the powdered sugar until the icing is smooth. Stir in the chopped nuts. If the cake isn’t ready yet, keep the icing warm and stir it every so often so it doesn’t harden on top.
Let the cake cool for 10-12 minutes, then pour the hot icing over the warm cakeand spread it evenly with a spatula. Let the frosting set for 20 minutes before cutting the cake into squares. The frosting will completely set after 1-2 hours.
Serve the cake warm or at room temperature.