How to Make It
Heat oven to 350° F. Heat the oil in a large skillet over medium-high heat. Add the asparagus and shallot and cook until tender, 4 to 6 minutes; let cool.
In a large bowl, whisk together the eggs, half-and-half, ¾ teaspoon salt, and ½ teaspoon pepper. Fold in the baguette, Gruyère, ham, and the asparagus mixture.
Transfer the egg mixture to four 10-ounce ramekins, cover with foil, and refrigerate for 30 minutes. Bake on a rimmed baking sheet until set, 30 to 35 minutes. (Alternatively, transfer the egg mixture to an 8-inch square baking dish, cover with foil, refrigerate for 30 minutes, and bake until set, 35 to 40 minutes.) Uncover and cook until golden, 10 to 15 minutes more.