April 9, 2018
Eat Your Ham By the Steak
HamGravy0333-2

Seeing an old cookbook through a clean lens, buffed after 15 more years of cooking, eating, and living.

I suspect that one luckless day a stern mob wearing crisp white aprons and pointy toques will rap on my front door with outstretched palms, insisting I surrender my food-writer membership card.

All because I am not a Francophile.

You know, the Francophile. The man who describes raw triple-cream cheese as enlightenment. The woman who extols the singular crackle and give of a great baguette. The people who proudly know the choicest spot in Paris for the most impeccable plateau de fruits de mer.

I like French food. I do. I sometimes even love it. But I generally prefer the spiced tumble of South Indian dosas and dal. Or the subtle char and zip of a Mexican platter of enchiladas en adobo. Or the fresh counterpoint of a bowl of Vietnamese bun thit nuong cha gio (vermicelli with grilled pork and imperial rolls).

The acute exception to my Gallic ambivalence is pork and juniper, two staples of French regional cooking. Combine the sweet versatility of sausages and cured pork belly with the resinous snap and funk of juniper-laced braised sauerkraut, as in the classic choucroute garnie of Alsace, and I will unfurl the vertical blue, white, and red and start belting “La Marseillaise.”

More than a decade ago, when I was both a fledgling writer and a fledgling gay, I went to a conference at the Greenbrier. The stately West Virginia property held an annual Symposium for Professional Food Writers. Cookbook legends and award-winning journalists were always in attendance. I thought if I were also there I might be able to, in time, be like them.

The year I attended, one of the panelists was James Peterson. He is a kind of cookbook creator that barely exists these days. The man wrote tomes, books that regularly topped 500 pages on single subjects like sauces, seafood, and soup. In my edition of his Splendid Soups, the ingredient list runs 29 pages and there are 51 recipes for single-vegetable soups alone. Peterson’s eclectic expertise, his terse opinions and pointed judgments, his sprawling grasp of cooking esoterica all reeked of gayness. I knew because I saw myself in him. That isn’t quite right. No, I saw in him a version of myself I was desperate to become. A me that could become consumed by similar minutiae.

I recall inserting myself into a dining situation with Peterson’s partner, Zelik, Peterson’s agent, Elise Goodman, and Peterson himself, dapper and gray-haired and then about the same age as I am now. Oh, time. Those opportunities seemed to happen constantly during the symposium. The attendees—plebes and experts alike—all stayed on the property in the town of White Sulphur Spring. I twitch now thinking about how obnoxious I was. How ill-informed, too. Peterson was kind. And awkward. He reeked of Manhattanite sophistication. That made me admire him all the more.

At the time, his most recent book was Glorious French Food, a 770-page attempt to inventory the breadth of French cooking. It spanned 50 recipe categories, from Assorted Vegetable Salads to Cookies and Candies with a detour through, of course, Baked Whole Truffles. Even the book’s physical dimensions eclipsed the standard: It was enormous. After our chance meeting, I cooked a little from the book, including a sublime version of oeufs en meurette, a homey dish of poached eggs in red wine sauce. I lodged the book on a shelf soon afterward, hesitant about its endless fussy recipes, equivocal about my indifference.

Then, the other week, I pulled the tome from the bookcase that runs down my hallway and paged through it. My eyes saw the book through a clean lens, buffed after 15 more years of cooking and, on my good days, living. Many of the recipes were less daunting than I remembered. A gaggle of pork dishes caught my interest, including one with ham draped in a cream sauce flavored with juniper berries and vinegar.

First, you make a roux. In south Louisiana, where gumbo reigns, making roux is as commonplace as boiling water. This I can do. Then you add wine and reduce it because this is French cooking, after all. Then in go finely chopped shallots, crushed juniper berries, black peppercorns, cream, and a wallop of vinegar to shock the richness. Smoked ham steaks, in another deeply French move, are fried in butter, then slicked with the sauce. Porky, rich, homey, sharp.

I write some. I might be more sophisticated than I once was; I’m not sure it matters if I am. But I cook a lot. Sometimes. I will likely never write a 770-page magnum opus on pretty much anything. I might have already become the very person I longed to catalyze all those years ago in West Virginia. Or maybe I will not ever be that version of myself, because that dreaming was a notion, an idea, never capable of being made flesh.

A Kitchen in New Orleans. Many years of eating, cooking, and writing about food have left Scott Hocker with many stories to tell. In this occasional column, he re-creates a dish tied to a distant, or sometimes recent, food memory.

RECIPE: Ham With Juniper-Cream Sauce

Scott Hocker

Scott Hocker is a writer, editor, recipe developer, cookbook author, and content and editorial consultant. He is currently the editor in chief of liquor.com and was previously the editor in chief of Tasting Table.

[email_signup id="3"]
<div class="email-subscribe exp-subscribe subscribe"> <div class="alert alert-success exp-success ga-etembed-success" style="display:none;"> Great! You've signed up successfully! </div> <div class="alert alert-danger exp-error" style="display:none;"> We are experiencing an error, please try again. </div> <form name="subscribe" id="email-signup" class="email-signup-form" action="https://www.tastecooking.com/wp-admin/admin-ajax.php" method="POST" target="_top" data-event-assigned="false"> <fieldset class="form-group form-inline email-submit-group"> <label for="email-address" class="sr-only">Email Address</label> <input id="email-newsletter" type="email" placeholder="your@email.com" class="email-newsletter text email form-control" name="email" value=""> <button type="submit" value="Subscribe" name="subscribe" class="btn btn-primary email-submit-btn ga-etembed-success"> <i class="fa fa-envelope"></i> Subscribe </button> </fieldset> <small class="exp-small terms" style=""> By clicking Subscribe, I acknowledge that I have read and agree to the Penguin Random House <a href="http://www.penguinrandomhouse.com/privacy/" target="_blank">Privacy Policy</a> and <a href="http://www.penguinrandomhouse.com/terms/" target="_blank">Terms of Use</a> and agree to receive news and updates from TASTE and Penguin Random House. </small> <fieldset class="field-group checkboxes" style="display:none"> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50501,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook General</strong></span> </label> </div> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50502,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook Promo</strong></span> </label> </div> </fieldset><!-- /.checkboxes --> <input type="hidden" name="data_acq_code" value="TASTE_POPUP_STATIC_ONGOING" /> <input type="hidden" name="data_programs" value="50501|505,50502|505" /> <input type="hidden" name="form_id" value="3" /> <input type="hidden" name="partner" value="" /> <input type="hidden" name="action" value="crown_email_signup_submit" /> <input type="hidden" name="ref_url" value="" /> </form> </div> <script> jQuery(document).ready(function () { var unassigned_forms; setInterval( function() { //Check for unassigned forms var forms = jQuery( '.email-signup-form' ); unassigned_forms = false; forms.each( function( index ) { if ( jQuery( this ).attr( 'data-event-assigned' ) === 'false' ) { unassigned_forms = true; } }); if ( unassigned_forms ) { forms.off( 'submit' ).on( 'submit', function ( e ) { forms.attr( 'data-event-assigned', 'true' ); e.preventDefault(); // Basic email validation var email = jQuery(e.target).find('.email-newsletter').val(), valid_email = false, groupEl = jQuery(e.target).closest('.email-subscribe'); if ( !!email && typeof(email) === "string" ) { var email_array = email.split('@'); if ( email_array.length === 2 ) { if ( email_array[1].split('.').length > 1 ) { valid_email = true; } } } if ( valid_email ) { jQuery('.alert-danger').hide(); // Show loading gif groupEl.find('.email-signup-form').hide(); groupEl.find('.email-submit-loading').show(); // Populate ref_url jQuery(this).find('input[name="ref_url"]').val(window.location.href); // Generate Payload var payload = jQuery(this).serializeArray(); jQuery.ajax({ url: jQuery(this).attr('action'), type: 'POST', data: payload, success: function (data) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display success msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-success').show(); jQuery(e.target).parent().find('#downloadbtn').show(); }, fail: function (err) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display failure msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-danger').show(); } }); } else { groupEl.find('.alert-danger').html('Please enter a valid email address.').show(); } }); forms.off( 'keypress' ).on( 'keypress', function ( e ) { if ( e.which === 13 ) { e.preventDefault(); jQuery( this ).submit(); } }); } }, 100); }); </script>
[email_signup id="3"]
<div class="email-subscribe exp-subscribe subscribe"> <div class="alert alert-success exp-success ga-etembed-success" style="display:none;"> Great! You've signed up successfully! </div> <div class="alert alert-danger exp-error" style="display:none;"> We are experiencing an error, please try again. </div> <form name="subscribe" id="email-signup" class="email-signup-form" action="https://www.tastecooking.com/wp-admin/admin-ajax.php" method="POST" target="_top" data-event-assigned="false"> <fieldset class="form-group form-inline email-submit-group"> <label for="email-address" class="sr-only">Email Address</label> <input id="email-newsletter" type="email" placeholder="your@email.com" class="email-newsletter text email form-control" name="email" value=""> <button type="submit" value="Subscribe" name="subscribe" class="btn btn-primary email-submit-btn ga-etembed-success"> <i class="fa fa-envelope"></i> Subscribe </button> </fieldset> <small class="exp-small terms" style=""> By clicking Subscribe, I acknowledge that I have read and agree to the Penguin Random House <a href="http://www.penguinrandomhouse.com/privacy/" target="_blank">Privacy Policy</a> and <a href="http://www.penguinrandomhouse.com/terms/" target="_blank">Terms of Use</a> and agree to receive news and updates from TASTE and Penguin Random House. </small> <fieldset class="field-group checkboxes" style="display:none"> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50501,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook General</strong></span> </label> </div> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50502,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook Promo</strong></span> </label> </div> </fieldset><!-- /.checkboxes --> <input type="hidden" name="data_acq_code" value="TASTE_POPUP_STATIC_ONGOING" /> <input type="hidden" name="data_programs" value="50501|505,50502|505" /> <input type="hidden" name="form_id" value="3" /> <input type="hidden" name="partner" value="" /> <input type="hidden" name="action" value="crown_email_signup_submit" /> <input type="hidden" name="ref_url" value="" /> </form> </div> <script> jQuery(document).ready(function () { var unassigned_forms; setInterval( function() { //Check for unassigned forms var forms = jQuery( '.email-signup-form' ); unassigned_forms = false; forms.each( function( index ) { if ( jQuery( this ).attr( 'data-event-assigned' ) === 'false' ) { unassigned_forms = true; } }); if ( unassigned_forms ) { forms.off( 'submit' ).on( 'submit', function ( e ) { forms.attr( 'data-event-assigned', 'true' ); e.preventDefault(); // Basic email validation var email = jQuery(e.target).find('.email-newsletter').val(), valid_email = false, groupEl = jQuery(e.target).closest('.email-subscribe'); if ( !!email && typeof(email) === "string" ) { var email_array = email.split('@'); if ( email_array.length === 2 ) { if ( email_array[1].split('.').length > 1 ) { valid_email = true; } } } if ( valid_email ) { jQuery('.alert-danger').hide(); // Show loading gif groupEl.find('.email-signup-form').hide(); groupEl.find('.email-submit-loading').show(); // Populate ref_url jQuery(this).find('input[name="ref_url"]').val(window.location.href); // Generate Payload var payload = jQuery(this).serializeArray(); jQuery.ajax({ url: jQuery(this).attr('action'), type: 'POST', data: payload, success: function (data) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display success msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-success').show(); jQuery(e.target).parent().find('#downloadbtn').show(); }, fail: function (err) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display failure msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-danger').show(); } }); } else { groupEl.find('.alert-danger').html('Please enter a valid email address.').show(); } }); forms.off( 'keypress' ).on( 'keypress', function ( e ) { if ( e.which === 13 ) { e.preventDefault(); jQuery( this ).submit(); } }); } }, 100); }); </script>