The Whole Enchilada: A C++ Template Recipe

Tortilla press / Prensa para tortillas

Most likely you’ve had enchiladas, but have you ever heard of entomatadas? They’re a great alternative for those that don’t like “fire in the belly” during/post eating enchiladas and they follow the same process, except that instead of chili you use fresh tomatoes.

The secret to a good plate of enchiladas/entomatadas is in the sauce. While at home we use home-made corn tortillas, you’ll be just fine with regular corn tortillas. If you leave nearby a Mexican food market (such as Cardenas in Southern California), or a corn-tortilla factory, the tortillas will be of better quality. Just saying.

The following are two recipes that you can enjoy at home without spending too much or going out. Accompany with Mexican rice and refried beans (recipes not included).

And of course, there’s some C++ involved.

Enchiladas

Ingredients

  1. Two bags of dry Anaheim or Pasilla red-chili peppers with approx. 10 chili pods will give you a good 10 enchiladas
    Make sure they’re not the skinny chilis (chile del árbol), those are very, very hot. You’ll thank me.
  2. Cheese to you heart’s content.
    Monterey, cheddar/monterey mixed, queso fresco, grated cheese
  3. Olive oil or any oil of your preference. As you may have heard in a movie, “olive oil caresses your insides, leaving nothing but its essence.”
  4. A teaspoon of flour
    The flour will be used to cook the chili sauce and help it thicken. Don’t use corn starch.

Procedure

  1. Grate the cheese, set it aside.
  2. Trim the stem of the chili pods, take out the seeds by simply shaking the chilis and wash them.
    Sometimes chilis have some dust on them.
  3. Soak the chilis in warm water for approximately 1 hour
    This softens the inside of the chili and it let’s out its “meat”.
  4. Blend the chili in a blender with a little bit of the water used to soak the chilis.
    Make sure you don’t use too much water in the blender, otherwise you will end up with watery sauce. You’ll have to guess how much water to use, but it’s best to start with a little bit.
  5. Strain the sauce in the blender with a fine strainer. Place the strained sauce in a container.
    If you don’t use a fine strainer, you may end up with chili husk in the sauce.
    Press the chili in the strainer with a spoon to get as much sauce as possible.
    If there is still sauce that can be extracted, return the chili husks to the blender, add a bit of water to the blender, and repeat the previous step, then strain again.
  6. Heat a teaspoon of oil in a sauce pan to medium heat. Then add a teaspoon of flour and cook it until it’s light brown. Add the enchilada sauce and cook in low heat until it comes to a boil, then set aside.
    The sauce pan has to be large enough where for you to soak a corn tortilla through the pan.
  7. Add oil to a skillet or pan where you can fry the corn tortillas.
    You need to have enough oil to deep-fry a few corn tortillas.
  8. Fry the tortilla (15-20 seconds per side)
    Make sure it’s neither too soft nor too hard. If it’s too soft, it’ll come apart in the sauce pan. If it’s too hard, you can “soften” it by leaving it some extra time in the sauce pan or reheating in the microwave once it goes through the sauce.
  9. Extract the tortilla and soak it in the sauce.
  10. Place in a large plate and add cheese on top.
  11. Repeat from step 8.

Enchiladas Montadas

You may have heard of enchiladas montadas. It’s basically a topping of your choice. Typical choices are an over-easy egg (huevo estrellado) or tuna with lemon/lime juice and tiny bit of salt.

Simply top your stack of enchiladas with one of those toppings.

Entomatadas

Ingredients

  1. 4-6 fresh, medium steak tomatoes will give you a good 10-12 entomatadas.
  2. A small can (1 cup) of tomato sauce for color and thickness.
    Make sure it’s not tomato paste.
  3. Cheese to you heart’s content.
  4. Olive oil or any oil of your preference.
  5. A teaspoon of flour
    The flour will be used to cook the chili sauce and help it thicken. Don’t use corn starch.

Procedure

  1. Grate the cheese, set it aside.
  2. Boil the tomatoes until they’re soft. Usually a few minutes after they come to a boil.
    Don’t wait until they come apart from over-boiling.
  3. Peel the tomatoes and blend them with a little bit of salt.
    Unlike the enchiladas recipe, you don’t need to add water. Tomatoes are already watery.
  4. Heat a teaspoon of oil in a sauce pan to medium heat. Then add a teaspoon of flour and cook it until it’s light brown. Add the sauce in the blender and the tomato sauce and cook in low heat until it comes to a boil, then set aside.
    The sauce pan has to be large enough where for you to soak a corn tortilla through the pan.
  5. Add oil to a skillet or pan where you can fry the corn tortillas.
    You need to have enough oil to deep-fry a few corn tortillas.
  6. Fry the tortilla (15-20 seconds per side)
    Make sure it’s neither too soft nor too hard. If it’s too soft, it’ll come apart in the sauce pan. If it’s too hard, you can “soften” it by leaving it some extra time in the sauce pan or reheating in the microwave once it goes through the sauce.
  7. Extract the tortilla and soak it in the sauce.
  8. Place in a large plate and add cheese on top.
  9. Repeat from step 6.

Optional

If you like your entomatadas spicy, just boil one or two jalapeño chilis along with the tomatoes and blend them together. Furthermore, you can also have entomatadas montadas by adding the toppings mentioned above.

Given the ingredients and procedure, it is evident that once you’re done with the sauce, the procedure is the same. Let’s add a function template for the algorithm to cook the enchiladas/entomatadas:

#include <chrono>
#include <stack>

// T is either chili or tomatoe. No time to use enable_if
template<typename T, typename Oil, typename Cheese>
std::stack<T> make_it(std::stack<corn_tortilla> tortillas, Sauce<T> sauce, Oil oil, Cheese ch) {
  static_assert(cheese.is_grated(), "Grate the cheese, por favor!");
  
  std::stack<corn_tortilla> plate;

  stove s{}; // generic stove

  // Sauce and oil act on objects imbued (stove, pan),
  // that way we can refer to "heat the oil"
  sauce.imbue(s);
  sauce.imbue(pan{});
  sauce.heat(heat_level::medium);
  sauce.heat(heat_level::none); // turn off the heat

  oil.imbue(s);
  oil.imbue(pan{}); 
  oil.heat(heat_level::medium);

  while (!tortillas.empty()) {
    tortilla = tortillas.top();
    tortillas.pop();

    using namespace std::chrono_literals;
    tortilla.fry(oil, 15s);
    tortilla.flip();
    tortilla.fry(oil, 15s);
    sauce.soak(tortilla, 10s);
    
    plate.push(tortilla);     // move the enchilada/entomatada to the stack
    add_cheese(tortilla, ch); // implementation-defined
    
  }
} // Oil object will call heat(heat_level::none) in the dtor.


Enjoy. Stay safe. Stay healthy.

This entry was posted in software and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s