Add 5 cups water to a small pot. Season with 2 teaspoons salt. (Not the salt called for in the frittata). Bring the pot to a boil.
In an 11 inch cast iron skillet, heat the olive oil over medium heat. Add the chopped onions and cook until translucent, 5-8 minutes. If the onions are finished cooking before you are ready to add the rest of the ingredients, turn the burner off.
Add the broccoli florets to the water when it's at a rolling boil. Immediately cover with a lid and set a timer for 3 minutes. No peeking! When the timer goes off, drain into a colander right away. Don't rinse.
In a mixing bowl, whisk together eggs, milk, 3/4 teaspoon salt, cayenne pepper, and black pepper.
Preheat your broiler. Move the rack to about 5 inches from the flame.
When the onions are cooked, spread the broccoli in the pan. Top with the chopped ham. Sprinkle the chunks of cheese over the top.
If you have turned the burner off, turn it on to medium. Make sure the pan is hot before adding the egg mixture.
Pour the egg mixture over the top. Don't stir. Cook for 7-9 minutes, or until the edges are starting to set.
Transfer the pan to the broiler. Broil for 2-5 minutes. Don't walk away! Check it every 1 minute. The frittata is done when the top is brown and the eggs are set (not wiggly).