Preheat oven to 350 degrees F. Line a standard muffin/cupcake pan with liners.
On medium-high speed, cream the butter and sugar until light and fluffy, about 3 minutes. Turn the mixer to high and add the egg. Scrape down the bowl and beat until well incorporated.
In a separate small bowl, mix together the cocoa powder, vanilla extract and red food coloring to make a thick paste. Add to the batter and mix on medium speed until completely combined. You may need to stop the mixer to scrape the bottom of the bowl, making sure that all the batter gets color.
Reduce the mixer speed to low and slowly add half of the buttermilk. Add half of the flour and mix until combined. Scrape the bowl and repeat the process with the remaining milk and flour. Beat on high until smooth.
Again, reduce the mixer speed to low and add the salt, baking soda and vinegar. Turn to high and beat for another couple of minutes until completely combined and smooth.
Divide the batter evenly between the cupcake liners and bake for about 20 minutes, or until a thin knife or skewer inserted into the center of the largest cupcake comes out clean.
Cool for 10 minutes and then remove cupcakes from the pan and place them on a cooling rack to cool completely before frosting.
To make the frosting: Using the whisk attachment, whip the butter and cream cheese on high speed for about 5 minutes, scraping the bowl down as necessary. Reduce the speed to low and slowly add the powdered sugar until all is incorporated. Add the vanilla and mix to combine. Increase the speed to medium high and whip for a few minutes until the frosting is light and fluffy, scraping the bowl as necessary.
This recipe can be doubled to make an 8 or 9-inch layer cake.