Indonesian recipes

In late February and early March I attended the GNOME Recipes hackfest in Yogyakarta, Indonesia. It was my second time visiting Indonesia, and food was a bit of a theme. The hackfest was about GNOME Recipes, so food, but also I love Indonesian food and I was eager to taste some more so I can improve how I cook it at home.

I haven’t contributed to GNOME Recipes. (Shamefully, not even a recipe yet!) So why was I going to a GNOME Recipes hackfest? It’s because on Endless OS we have a Cooking app, which in many ways is not as good as GNOME Recipes. It’s certainly less lovingly curated, and less community-oriented, than GNOME Recipes, and it allows recipe submissions by users while the Endless app is read-only.

However, there are a few things Endless’s Cooking app does better than GNOME Recipes: it is visually more appealing, it’s available in several languages (Arabic, Bengali, English, Portuguese, Spanish, and also a Spanish version customized for Guatemala), and it uses a better database backend (which also makes it fully offline.) It does these things using Endless’s “modular framework,” which if you want to know more about, I gave a talk two years ago at GUADEC. This modular framework is the product that I primarily work on at Endless, so a few of my team joined in the GNOME Recipes hackfest to see whether the two apps could share some technology.

It turns out that Matthias was eager to have somebody come along and make a database backend for GNOME Recipes, so the answer was yes, we could very well share some technology.

As an experiment, we made a recipes “lookalike” app using the modular framework technologies of which you can see some nice screenshots in Martin’s blog post.

We worked out some goals that we wanted to achieve by GUADEC in order to present our work, which you can see in the hackfest notes.

Outreach

There were also some goings on besides the hackfest. On the day before the hackfest started we did an outreach event for the students of AMIKOM University Yogyakarta, where the hackfest was held. We gave some talks on our work, and GNOME contributor and Endless Ambassador Siska closed the morning out with a very successful talk on how to get involved in GNOME.

After that I gave a live demo of how to make a GNOME app, the result of which you can find on GitHub here!

GNOME hackers and students seated around a table, watching a programming demo on a projector

This is me doing the live-coding demo of a GNOME app. Some of the students said I looked like Tony Stark.

 

Translation

One of the most interesting discussions we had was about how to internationalize GNOME Recipes. In different countries people cook very differently, so translating a recipe from one language into another is not enough. You also have to adapt the recipe to the ingredients that you can get in the country, and sometimes it’s not possible to get the same taste. For example, if I wanted to adapt my beloved pesto recipe from Marcella Hazan’s Classic Italian Cookbook, to Indonesia, first of all I’d probably have to substitute Thai basil which would change the taste entirely. Or to adapt Indonesian recipes to Canada, you have to go to some lengths to find ingredients like terasi (shrimp paste) and kemiri (candlenuts), and we just can’t get some of the same vegetables.

It can also be that when one language is used in two countries, the same recipe still won’t work for both. For example, in the UK, baking measurements are given by weight, and in Canada and the US they are given by volume. The metric system (ºC, kg, ml) is used in the UK and the imperial system (ºF, pounds, quarts, ounces, bushels, specks, caltrops, and jeroboams) in the US. To make matters worse, Canada uses the metric system for weight and volume measurements (kg, ml) but oven temperatures are given in Fahrenheit as in the US. All three countries cook with teaspoons and tablespoons, but teaspoons and tablespoons are metric in Canada and the UK (5 ml and 15 ml) but imperial in the US (4.93 ml and 14.79 ml).

We also discussed that many translation tools assume that the source language is always English since that’s the lingua franca of programmers, but it’s definitely not the lingua franca of cooking!

I would go so far as to say that all the existing translation infrastructure that we have for internationalizing GNOME is not going to be good enough to translate the recipes in GNOME Recipes.

Progress since then

In the time since the hackfest, I was able to make a little bit of progress on our goals. I worked on splitting out the code that handles data modelling into DModel, a separate library, so that GNOME Recipes could use it.

Food

I did get a chance to learn the flavors of Indonesian food more. When I lived in the Netherlands I already became familiar with some Indonesian food, but the Indonesian food in Indonesia is really much more delicious. In Vancouver we have only one Indonesian restaurant, which is kind of far away. And I found only one Indonesian store where I can buy ingredients like shrimp paste and candlenuts, which is even farther away.

Siska brought in packets of rendang spice paste for everyone to take home, for which I was especially grateful. Here’s a picture of my rendang that I made when I got back to Vancouver:

Beef rendang, still cooking down, next to a pot of rice cooking

Rendang and rice

I also tried to make the spice paste myself (because soon I will be out of the spice paste packets) but I haven’t got it figured out yet.

Some of the other dishes that I’ve made at home:

Yellow coconut curry in a bowl with kale and rice

Gulai curry (substituting kale for the cassava greens)
(The recipe is from Daily Cooking Quest which is a cooking blog from an Indonesian blogger who emigrated to the United States, and I’ve had good luck with those recipes because she uses ingredients that are possible for me to get in Vancouver, and she also gives the Indonesian names of the ingredients)

Fried noodles on a plate, with a fried egg and chili paste

Mi goreng

I am going to try making gudeg this week, which is a jackfruit curry, a specialty of Yogyakarta.

Acknowledgements

Sponsored by GNOME FoundationI’d like to thank AMIKOM University Yogyakarta for hosting the hackfest and giving us the opportunity to get some students interested in open source development, and the GNOME Foundation for sponsoring my travel and accommodations during the hackfest. Thanks also to Cosimo, Ekta, Elvin, Emmanuele, Haris, Jonathan, Kukuh, Martin, Matthias, Rama, Siska, and Umang, and also Kiki from Mozilla who joined on the last day, and Angky from Endless who helped arrange the hosting and logistics, for making the event a success!

Bibimbap for one (multiply for more)

Bibimbap is a Korean rice bowl. This is a fiddly recipe; not difficult at all, but it takes a lot of effort to put together. However, it looks awesome and contains all the flavors that characterize delicious Korean food: chili, garlic, sesame oil, and sweetness.

The very best bibimbap occurs when you heat up a serving-sized stone bowl, drizzle a little sesame oil in it, then put the rice in the bowl and let it sizzle and get crispy on the bottom while you put the rest of the ingredients on top. This is called dolsot bibimbap. However, if you’re making this at home for the first time, you likely won’t be able to do that on account of not having stone bowls. I certainly don’t, and so I enjoy it all the more when I go to a Korean restaurant where they do have stone bowls.


Bibimbap for one
All the amounts given here are for one person.
Since it’s really a bunch of tiny dishes all put together in one bowl for each person, it doesn’t really make sense to make enough for leftovers, because you’ll end up with a bunch of tiny containers in your refrigerator. Just multiply the amounts by the number of people you are feeding.

Buy gochujang, rice vinegar, sesame oil, soy sauce, and dried shiitake mushrooms at an Asian grocery store. (If you use dried mushrooms, don’t forget to soak them in water for eight hours before.)

Gochujang is chili paste that is usually sold in a red plastic container with a flip top (I call it a “treasure chest.”) That will be way more than you need for this recipe, but you can always use it up in tteokbokki.

Spicy sauce

  • 1 tbsp gochujang (Korean chili paste)
  • 2 tsp rice vinegar
  • ½ tsp honey
  • ¾ tsp sesame oil

Mix the ingredients together and let it sit while you prepare the rest of the meal.

Rice

  • ¾ cup water
  • ½ cup basmati rice (short-grain rice would be more authentic, but it’s more expensive where I live)

Boil the water in a pan. When it boils, add the rice. Lower the heat, cover, and leave, stirring occasionally, for 20 minutes while you prepare the rest of the meal. After 20 minutes, remove from heat.

Marinade

A note here: this is usually done with beef strips but, in a shocking departure from the usual, I actually prefer deep-fried tofu here, because it soaks up the flavors quite nicely, and most grocery-store beef is not good enough quality to be able to pull this off. If you use beef, make sure it’s good beef. You can get pre-fried tofu at an Asian grocery store, or deep-fry it yourself.

  • 1 garlic clove
  • 1 cm piece of ginger root
  • 2 tsp soy sauce
  • ½ tsp sugar
  • ¼ tsp toasted sesame seeds
  • ½ tsp sesame oil
  • ground black pepper
  • 40 g deep-fried tofu puffs or beef strips

Whack the garlic clove with the side of a knife blade and then chop it finely. Peel the ginger and grate it. Mix the garlic, ginger, soy sauce, sugar, sesame seeds, oil, and pepper in a bowl. Slice the tofu into strips and coat them in the sauce and leave it while you prepare the rest of the meal.

Raw vegetables

  • one-sixth large cucumber or ½ snack cucumber
  • ½ small carrot
  • 2 tsp powdered sugar
  • 2 tsp rice vinegar

Slice the cucumber very thinly. Slice the carrot into matchsticks. Put the carrots and cucumbers in a bowl, but don’t mix them together. Mix the sugar and vinegar and pour it over the vegetables. Leave it while you prepare the rest of the meal.

Mushrooms

  • 2 shiitake mushrooms
  • ½ tsp vegetable oil
  • pinch of salt
  • pinch of ground black pepper

Slice the mushroom into strips. Heat the oil in a frying pan. Fry the mushroom with the salt and pepper.

Sautéed vegetables

  • 1 tsp sesame oil
  • 1 tsp honey
  • 1 tsp soy sauce
  • 2 spring onions
  • 50 g spinach, washed and de-stemmed

Mix the oil, honey, and soy sauce. Chop the white and light green parts of the spring onions into thin slices, and chop the dark green parts into 3 cm sections. Fry the spinach until it just turns dark green, then add half the sauce mixture. Stir briefly and remove to a bowl. Put the chopped spring onions in the same pan and fry them, then add the rest of the mixture. Stir briefly and remove to another bowl.

Assembly

By this time the rice should be done. Put it in an individual-sized bowl, and arrange the cucumbers, mushrooms, spring onions, carrots, and spinach in pie-chart sections on top of it, leaving space for the marinated tofu (or beef). Stir-fry the tofu over medium heat for 2 minutes; if using beef, do it for 3 to 5 until the meat is brown. Put it on top of the rice.

Egg

  • 1 egg
  • ½ tsp toasted sesame seeds

Fry the egg until the white just starts to bubble. Flip it over and fry the other side, but not too long — the yolk should still be liquid inside. Put the egg on top of the ingredients in the bowl, in the center. Drizzle the spicy sauce on top. Sprinkle the sesame seeds on top.

It looks very aesthetically pleasing now, but to eat it, you should mix it all together, breaking the egg yolk and letting it coat everything. Eat it with kimchi on the side.

(Adapted from emagasia.com and a now-defunct recipe in The Independent.)

Faux Korean Noodles

In order to use up ingredients for Korean food, I improvised a hybrid of bibim guksu (spicy noodle salad) and japchae (stir-fried noodles) this evening. Unfortunately I forgot to take a picture, but you can catch a glance of very similar food at the 3:22 mark of Gangnam Style.

Vegetables

  • 1 tablespoon vegetable oil
  • 1 teaspoon sesame oil
  • 1 red onion, sliced
  • 4 small carrots or 1 large carrot, cut into matchsticks
  • leftover kimchi, chopped
  • lemongrass fake chicken leftover from who knows when, sliced (optional)
  • any other vegetables or meat you want to use up, sliced

First put a pot of water on to boil. In a wok, heat the oils. Fry the onion. When it starts to get translucent, then add the carrots. When they start to brown, add the kimchi and the fake chicken. Add any other ingredients at the appropriate times. When the vegetables are tender, turn down the burner until later.

Sauce

  • 2 cloves minced garlic
  • 1 teaspoon sugar
  • 2 teaspoons sesame oil
  • 2 teaspoons rice vinegar
  • 1 tablespoon toasted sesame seeds
  • 4 tablespoons liquid from kimchi
  • 8 tablespoons gochujang (red pepper paste that comes in a little plastic treasure chest thingy)
  • 1 tablespoon leftover bruschetta from an appetizer the other day (optional)

For the kimchi liquid, use the juice from whatever kimchi you used in the vegetables. If you don’t have enough, just make it up with water. Mix all ingredients together in a small bowl and set aside.

Garnishes

  • 2 eggs
  • 2 baby cucumbers, cut into matchsticks
  • 1 green onion, sliced coarsely
  • a few sprigs of cilantro, de-stemmed and chopped

By this time, the water should be boiling. Boil the eggs for 10 minutes. Meanwhile, chop the other ingredients and set aside. When the eggs are done, add the noodles (see below) to the pot immediately. Rinse the eggs with cold water, peel them, and cut them in half. Set aside.

Convergence

  • 250 g dangmyeon (sweet potato starch noodles)

Boil the noodles for 6 minutes, then drain and rinse thoroughly with cold water. Add the noodles to the wok, turn the heat up again, and stir-fry them for about 3 minutes, tossing them with the vegetables and/or meat. On each plate, put a helping of noodles, then garnish with the garnishes and spoon the sauce over the top.

Serves 3.

Adapted from Maangchi’s japchae and bibim guksu.

Mexican Sushi

A while ago I thought up the idea of combining Mexican food with sushi. I thought I probably wasn’t the first one to come up with that idea, and Google confirmed that I was right. But still, the Google hits for “Mexican sushi” ranged from not sushi at all (basically burritos sliced into chunks) to rolls served at actual sushi places. One was even a recipe on a vegan blog which started out with a rant against both eating out and eating animals, which I refuse to link to. However, if non-sushi and vegan Mexican sushi recipes can get in the top Google results, then I figured I at least had to try to improve upon them.

Mexican Sushi

Photo credit: Remco van Bree

I was even so convinced that it would be tasty, that I decided to try it out on a guest for the first time. In fact, a discerning dinner guest. My friend Remco (who has already twittered pictures of this, of course) also likes to cook and neither of us has any reservations in mercilessly critiquing food. On the evening itself, my housemate Tom also decided to join in.

What I’d planned on was probably more Tex-Mex than Mexican, but minus all the deep-frying. The fillings would be guacamole, something with chorizo, and black bean chili. I ran out of time for the chili so I made something simple instead: seared strips of beef, red pepper, and onion.

I figured I’d make a variety of dipping sauces to replace the soy sauce and/or wasabi: salsa, enchilada sauce, and sour cream. The guacamole filling also worked well as a sauce.

How did it work out? I thought the nori worked quite well with the fillings. The fillings all had a lot of flavors in common though, so next time I would definitely go for the black bean chili, and perhaps add something else that was different, like migas. Also, there was no cheese involved whatsoever, which is a little strange for Mexican food.

Here are the recipes I used. Most of them are originally based on Internet recipes. As I make this dish again, I’ll go back and update them.

Sushi rice

  • 250 g sushi rice
  • 250 ml water
  • 2 tablespoons rice vinegar
  • 2 tablespoons sugar
  • 1 teaspoon salt
  • 2 teaspoons cumin
  • 2 teaspoons coriander

Rinse the rice and bring it to a boil in the water, in a pan with plenty of room for expansion. Once it boils, turn the heat down, cover, and leave for 15 minutes. Remove from heat and leave for another 10 minutes.

Mix the remaining ingredients and pour them over the rice. Mix well and leave in the refrigerator until needed.

I originally wanted to leave out the sugar, since I thought it wouldn’t combine well with the cumin and coriander. I didn’t know, however, that rice vinegar is really rank! It needs the sugar to make it palatable. I made the mixture without sugar first, but it smelled nasty, so I panicked and mixed in the sugar, hoping I could save it. I probably ended up putting in too much, but after that it tasted OK.

GuacamoleGuacamole

  • pulp of 1 avocado
  • juice of 1 lime
  • 1/2 teaspoon salt
  • 1/4 onion, diced
  • 1/2 roma tomato, diced
  • 1 tablespoon cilantro, chopped
  • 1 clove garlic, crushed and minced

Mash the avocado pulp with the lime juice and the salt. Mix in the other ingredients.

Chorizo fillingChorizo filling

  • 1 chorizo sausage, chopped
  • 1 teaspoon olive oil
  • 1 onion, diced
  • 1 clove garlic, crushed and minced
  • 1 Roma tomato, diced
  • 1 tablespoon cilantro, chopped

Sauté the chorizo in the olive oil, then add the onion and garlic. When the onion gets soft, add the tomato and cilantro and keep on the heat for 5 more minutes.

Seared beef, pepper, onions

This isn’t really a recipe, just something I improvised. Take strips of beef, strips of red bell pepper, and sliced onions, and sear them in a frying pan on high heat.

SalsaSalsa

  • 1 1/2 Roma tomato, chopped
  • juice of 1 lime
  • 3/4 onion
  • 1 tablespoon cilantro, chopped
  • 1 clove garlic, crushed and minced

Mix everything together and let sit in the refrigerator.

Enchilada sauceEnchilada sauce

  • 3 tablespoons sunflower oil
  • 1 tablespoon flour
  • 25 g chili powder
  • 250 ml tomato puree
  • 1 teaspoon oregano
  • 1 teaspoon cumin
  • splash of Tabasco sauce

Make a roux of the oil and flour. Add the chili powder. Then add the rest of the ingredients, stir, bring to a boil, turn heat to low, and cook for 15 minutes.

This was originally an Emeril recipe. I’m not sure I like it so much, so I’ll be looking for a different one next time. It had a nice texture, but it turned out extremely spicy even for me, and therefore almost inedible for my Dutch guests. Aside from the heat it didn’t have much taste. Also, the “cook for 30 seconds” instruction in the original seems kind of ridiculous.

Sour cream

  • 250 ml sour cream

This was the easiest sauce.

Putting it all together

  • 1 package of nori wrappers

I’m not going to reprint instructions on how to roll sushi here, either you already know or you can Google it. At this point in the proceedings, Remco and Tom came in, so we had a good time rolling the sushi together. In some of the rolls we combined the chorizo and beef fillings — I’m not sure it added anything, but it certainly made all the ingredients come out even with the number of wrappers.

Mexican Sushi arranged on a plate

Guacamole rolls on the left; combined chorizo-beef rolls on the right

Mexican Sushi

Chorizo rolls on the left; beef-pepper-onion rolls on the right

The table

What it looked like just before we ate it

All in all, I’d say the experiment was a success, with room for future improvements.