1. Preheat the oven to 170°C. Grease two 8-inch square pans and line the pans with parchment so that it comes up the sides as well.
2. Using electric beaters or in a stand mixer fitted with the paddle attachment, beat the butter until smooth, then add the sugar and beat until light and fluffy. Add the eggs one at a time and beating well after each addition, beat in the vanilla.
3. In a separate bowl, sift the flour, cocoa powder, baking soda, baking powder and salt. Add this alternately with the buttermilk, starting and ending with the flour. Stir the white vinegar and food colour together and add this to the cake batter on low speed, but mixing until blended in. Scrape the batter into the prepared pans and spread to level.
4. Bake the cakes for about 35 minutes, or until a tester inserted in the centre of the cake comes out clean. Cool the cakes in their pans for 20 minutes, then turn them out to cool completely.
5. For the frosting, beat the butter until fluffy, then beat in the cream cheese until well blended and smooth. Add the icing sugar in 2 additions, beating first on low speed and then increasing. Beat in the vanilla.
6. To assemble the cake, place the first layer of cake on your platter or plate and spread a generous amount of frosting on the top. Top this with the second cake layer and frost the top and then the sides. Use your spatula to create any swirls or patterns you wish, then chill for at least 2 hours before slicing to serve.
*For an alternative made without food colouring, replace 1/4 cup of the buttermilk with 1/3 cup of finely grated raw beets. Stir the beets in with the buttermilk and follow the recipe as above.
The cake will keep, refrigerated, for up to 3 days.