Preheat oven to 400°F. Heat the butter, water, milk, sugar and salt in a medium saucepan over medium heat. Bring to a simmer and then reduce heat to low.
Add the flour all at once and stir until it is completely incorporated and clumps into a ball. Continue to mash and stir the dough against the side of the pan for 2 minutes, cooking the flour. Remove from heat and add to the bowl of a stand mixer with a paddle attachment. Let it cool for 2 minutes.
With the mixer running on low speed, slowly add the eggs in 3-4 separate additions, making sure you mix for 30 seconds between each. The mixture will curdle but then come together. In the end, the dough will be sticky and firm enough to hold a stiff peak.
Line two baking sheets with parchment paper and lightly brush with some water, which helps create a humid environment.
Transfer the choux pastry to a piping bag fitted with a ½ inch piping tip. Pipe 28 puffs, each 1 ½” in diameter and ½” tall rounds about 1 inch apart. Press down the tip with wet fingers that they don't get too brown. Lightly brush each with some egg wash.
Bake 1 sheet at a time for 20 minutes at 400°F, then reduce oven to 350°F and bake for another 10-15 minutes or until golden brown. DO NOT open the oven or they won't puff. Remove and transfer to a cooling rack, letting them cool to room temperature.
Fill the cream puffs by cutting a little hole with the tip of a sharp knife in the bottom. Pipe the filling into the cream puffs. Dip each cream puff in ganache if using.