For the rub: In a small bowl, stir together the rub ingredients, making sure to smooth out any brown sugar nuggets. Then, pour half the mixture over 1 side of the flank steak and massage into the meat. Turn the steak over and pour the other half over the meat and massage in. Set aside on the counter up to 2 hours to marinate. You could also marinate the meat overnight in the fridge.
For the compote: Heat the olive oil in a very large skillet over medium heat. Once the oil is shimmering (not smoking), add the onions, a pinch of salt, and stir to coat with oil. Cover and reduce the heat to low. Cook, stirring occasionally, until the onions turn a deep caramel color, about 45 minutes.
Warm your grill or grill pan over medium heat.
When the onions are caramelized, add the dates, vinegar, and water. Stir and cook, covered, for another 15 minutes.
Fold a paper towel in 4, pour a little vegetable or canola oil onto it, and wipe down your grill pan.
Once the grill pan is nice and hot (oil lightly smoking), throw your rubbed-down meat on. It should sizzle upon contact - if it doesn't, your pan wasn't hot enough. This is how you ensure a nice crust on the steak! After 5 minutes on 1 side, flip the steak over, and cook another 4 to 5. Check the temperature; I like my flank steak done medium-rare, so I pull it off as soon as the thermometer register 125 degrees F. Pull onto a chopping board, and tent with foil; allow your meat to rest for 5 minutes.
Slice the steak thinly against the grain on the bias; if you don't, your precious steak won't be incredibly tender and deeply unsatisfying! Serve with a dollop of onion compote on top.