May 28, 2019
Home Is Where My Fermented Greens Are
MustardGreens0030

Having a stash of briny and salty greens in your fridge opens up all sorts of home cooking adventure. Here’s how to make it.

“Scott, that’s very you.” That is a phrase I have heard my loved ones say endless times about my meals. My ex-boyfriend. My best friend in Los Angeles. When the statement or some variation of it is spoken, my people are always referring to two ingredients: cooked greens and fermented, pickled produce.

The type of greens: collards sliced dental floss–thin and sauteed in a 100-meter sprint with olive oil and garlic until they buckle; tatsoi tossed around a ripping-hot wok without fat, then dressed with salt and chile oil. The pickle variations: pickled watermelon rind, snappy and tart, alongside a lunchtime sandwich; sweet and vinegary Vietnamese shallots adjoining a sausage link and kicky mustard.

The unifying apotheosis of those greens-and-pickles cravings, I discovered, is fermented greens. Dua chua in Vietnamese, suan cai in Mandarin, phak kat dong in Thai: Mustard greens pickled or fermented in salt. Sometimes the dreams we have yet to dream come true before we even dream them.

I found the greens in many restaurants. Their verdant funk galvanizing bowls of canh, a breed of clear Vietnamese soups, in San Francisco, and grounding the fiery, punchy stir-fries of Hunanese and Sichuanese restaurants in New York. I bought them in slippery compact plastic bags at Asian markets to toss in soups and rice at home. The packaged greens’ singular bite had allure, despite the tinny aftertaste and porn-store neon-yellow hue. I never considered fermenting mustard greens at home.

Then I saw them in James Syhabout’s Hawker Fare. His book and namesake restaurant are an admiring ode to the Thai and Laotian cooking of his Northern California family. Syhabout’s recipe for Fermented Chinese Mustard Greens in Rice Brine is detailed but far from labor-intensive. It requires time, not energy. I bought the specific mustard greens recommended: gai choy or jie cai, the pale whorled cabbage heads available in most Asian markets. I assumed the more common flat, dark-green mustards ubiquitous across the supermarkets of my home city of New Orleans would not suffice.

I rinsed and chopped the greens, stems and all. I layered them with whole peeled garlic cloves and fresh Thai chiles in a 4-quart Cambro container. Meanwhile, a small amount of leftover cooked white rice was soaking in nearly two quarts of salted water. After half an hour, I strained the rice brine over the greens mixture and covered the greens and brine well with plastic wrap—extremely well, knowing air is the downfall of room-temperature fermentation. Greens, good. Mold, bad. I set a hefty plate on top of the plastic-covered greens to help keep the greens drowned in their saline bath, then covered the container with another sheet of plastic wrap. I shoved the greens under my kitchen sink and waited for 48 hours.

The recipe recommends adding a hint of MSG, but does not stipulate when to do so. I unwrapped the greens after two days of fermentation and sprinkled them with the recommended teaspoon of MSG. One day later, I noticed the greens’ fresh brightness had turned army-green. I fished out a piece and tasted. Soft with a bit of heft. Musty and funky and savory like Parmesan, with the telltale punch of fermentation and lick of MSG bite.

After I ate my way through that batch, adding the greens to fried rice and stir-fried pork and even accompanying a very American breakfast of over-easy eggs and Jimmy Dean sausage patties with them, I went rogue. I bought giant bundles of regular ole big-leafed mustard greens from a nearby Winn-Dixie. I suspected my American mustard greens, after fermentation, would decay into a mess of slimy mush during the fermentation process.

Months later, that same batch is still in my fridge, intact, in its original improvised fermenting crock. Well, what is left of the batch is. Each time those fermented greens appear in a photo on Instagram, or I talk about a recent meal featuring them, the response from the people who know me best is some form of “Oh wow. That’s so you.” All any of us wants to be is seen.

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: Fermented Mustard Greens

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>