Place baby potatoes in a large stock pot and fill with water so it just covers the potatoes. Salt the water generously.
Place on stove and turn heat on high, bring the water to a boil, turn heat down to medium heat and continue to cook for about 15 minutes. You want the potatoes to be fork tender but not falling apart. Depending on the size of your potatoes it can take anywhere from 15 to 20 minutes, or so.
Drain the water from the potatoes with a colander, and rinse them. Place the potatoes on the cookie sheet once they've cooled slightly. That way they can be handled without burning your hands.
Take the underside of a water glass and lightly press it down on each potato until you break the skin and slightly flatten each one. Continue until all the potatoes are "smashed". I've tried a bunch of ways to smash them and I find a nice, heavy water glass with a flat bottom works perfectly.
Pour olive oil over top of the potatoes evenly. Toss onions around the pan too. Then drop small pieces of butter randomly around the potatoes. Toss salt and pepper over top of the potatoes evenly as well.
Place the cookie sheet in the preheated 400°F oven and cook for about 15 to 20 minutes, flipping halfway through the cooking process, when you flip them at the halfway mark you can then add the garlic. This also helps move around the onions so they crisp on all sides. Remove from the oven when the potatoes are golden brown and crispy around the edges.
Remove the potatoes from the oven and transfer to a platter or serving bowl. Toss with more salt and pepper if desired and even more butter if you're feeling a bit naughty. Naughty is fun!