Preheat the oven to 350°F. Lightly spray an 8x8 baking dish with nonstick cooking spray (all of the cake ingredients will be mixed in the baking dish).
Add the flour, cocoa powder, sugar, baking soda, and salt to the baking dish. Whisk the dry ingredients together until well combined.
Using a dry ladle or small measuring cup, make 2 small round impressions and 1 larger impression in the dry ingredients.
Pour the vinegar into 1 of the small impressions. Pour the vanilla into the 2nd small impression, and pour the vegetable oil into the largest impression. Pour the water over all of the ingredients.
Use a wooden spoon to stir all the ingredients together, making sure to get into the corners. Stir until all of the ingredients are well incorporated, and no dry streaks are visible.
Bake the cake on the middle rack for 30 to 35 minutes or until a knife inserted comes out clean. Allow the cake to cool completely before icing.
If using a stand mixer, or a medium-size mixing bowl and a handheld mixer on medium-high speed, cream the butter and creamy peanut butter until no streaks of butter are visible.
Lower the mixer speed to low and add the vanilla and half and half. Mix for another 30 seconds.
Keeping the mixer speed on low, slowly add the powdered sugar ½ cup at a time. Once all powdered sugar has been added, increase the mixer speed to medium and mix until the icing is smooth, about another 45 seconds to 1 minute.
Using a silicone spatula, frost the cake.