commit: 65c8b56207f37ae4ebb8645915e677e9e8373c48
parent 1adaa457784ebdf10bdf04bd758174f9fd61e97c
Author: neauoire <aliceffekt@gmail.com>
Date: Fri, 23 Oct 2020 12:38:06 -0700
Added RSS feed
Diffstat:
5 files changed, 1178 insertions(+), 271 deletions(-)
diff --git a/links/rss.xml b/links/rss.xml
@@ -0,0 +1,728 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1/'>
+<channel>
+<title>Grimgrains</title>
+<link>https://grimgrains.com/</link>
+<description>The Nataniev Library</description>
+<lastBuildDate>Fri, 23 Oct 2020 00:00:00 +0900</lastBuildDate>
+<image>
+ <url>https://grimgrains.com/media/services/rss.jpg</url>
+ <title>The Nataniev Library</title>
+ <link>https://grimgrains.com/</link>
+</image>
+<item>
+ <title>quick flat bread</title>
+ <link>https://grimgrains.com/site/quick_flat_bread.html</link>
+ <guid isPermaLink='false'>quick_flat_bread</guid>
+ <pubDate>Sat, 04 Apr 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/quick_flat_bread.jpg'/>
+<p>A quick no-yeast flat bread recipe, ideal when you want bread but don't want to wait. The flat bread is ready in under 45 minutes (includes resting time), and it's possible to prepare under 15 minutes — I do this a lot — if necessary (without the resting time).<br /><br />Allowing the dough to relax after kneading makes it easier to work with, but if you skip that step it's still possible to roll it out, it'll just be a bit harder to do.<br /><br /><b>Substitutions:</b><br /><br /><b>Flour:</b> Switching whole wheat flour for spelt, or all-purpose won't affect the dough.<br /><br /><b>Fat:</b> Fat is necessary in this recipe, it helps to create a smooth, rich and pliable dough. Using other types of oil, like canola or sunflower oil, is fine. It's possible to use vegan butter, but it'll have to be softened and mixed in with other liquids first. If using vegan butter, measure out 50 g.<br /><br /><b>Liquid:</b> For an even richer, and even MORE pliable dough, substitute water for plant milk. I recommend using soy, as it is richer than rice or oat milk. On the boat, I tend not to use milk because I rarely keep any (lacking a fridge).<br /><br /><b>Add-ins:</b> I sometimes like to add seeds, like sesame, flax or sunflower, to my breads. Add the seeds after adding water, folding them into the dough.<br /><br /><b>Sourdough discard:</b> to make this recipe with <a href='sourdough_starter.html'>sourdough discard</a>, measure 190 g (1 1/4 cups) of whole wheat flour and 113 g (1/2 cup) of the discard. You'll have to reduce the water, depending on the hydration level of your starter. I only added 130 ml of water instead of the full 180 ml. The sourdough won't provide much leavening or taste, this is just a way to add extra nutrition and to use discard.</p>]]>
+ </description>
+</item>
+<item>
+ <title>roasted eggplant dip</title>
+ <link>https://grimgrains.com/site/roasted_eggplant_dip.html</link>
+ <guid isPermaLink='false'>roasted_eggplant_dip</guid>
+ <pubDate>Mon, 06 Mar 2209 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/roasted_eggplant_dip.jpg'/>
+<p>A simple roasted eggplant dip recipe. Roasted the garlic is optional, but it gives the dip a deeper, more complex flavor, while diminishing the pungency of the garlic.<br /><br />This recipe is ideal when served with flat bread or raw vegetables, it's also good if served with <a href='crackers.html'>crackers</a>. Optionally, you can add roasted green peppers and other vegetables to further augment the flavor and nutrition of the dip.<br /><br /><b>Add-ins : </b> Add 20 g (~1/2 cup) of chopped parsley and/or 2 diced tomatoes for extra texture and flavor. For a more complex (and sweet) taste, add 45 ml (~3 tbsp) of pomegranate molasses. You can also use grape molasses.<br /><br /><b>Garlic : </b> The garlic doesn't need to be roasted, you can use it fresh. If you do this, you will have to use ~4-5 cloves instead of the whole head. Use a mortar and pestle to crush the peeled garlic into a paste before adding it to the rest of the ingredients.</p>]]>
+ </description>
+</item>
+<item>
+ <title>anise bread with sweet pear sauce</title>
+ <link>https://grimgrains.com/site/anise_bread_with_sweet_pear_sauce.html</link>
+ <guid isPermaLink='false'>anise_bread_with_sweet_pear_sauce</guid>
+ <pubDate>Sun, 14 Jun 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/anise_bread_with_sweet_pear_sauce.jpg'/>
+<p>I love baking with the mini silicone pans I bought, I've been making mini everything. This time, I made some anise bread topped with a sweet sauce, and loaded with caramelized pear chunks.<br /><br />My bag of anise seeds has been sitting in my pantry, for way too long, begging for purpose. The taste of anise pairs very well with pears.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>arame soba</title>
+ <link>https://grimgrains.com/site/arame_soba.html</link>
+ <guid isPermaLink='false'>arame_soba</guid>
+ <pubDate>Tue, 12 Jan 4016 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/arame_soba.jpg'/>
+<p><b>Recipe location:</b> Montreal, QC. Canada<br /><br />We cook a lot of Japanese-style food, not just because we lived there for a few years, but because we appreciate the subtle flavors and aesthetics of Japanese cuisine.<br /><br /><b>Soba</b>: In this recipe I used pre-packaged buckwheat noodles (そば soba), but it is possible to prepare from scratch using a 1:0.5 mixture of buckwheat and whole wheat flour. Making juwari soba 十割そば (100% buckwheat noodles) is very difficult to master, and is best left for the patient, which I am not, and the experienced, which I also, am not.<br /><br /><b>Arame</b>: <a href='arame.html'>Arame</a> is a species of kelp of a dark brown color, it has a mild, semi-sweet flavor and a firm texture. It can be reconstituted in about 5 minutes, and can be added to many kinds of dishes. It is high in calcium, iodine, iron, magnesium and vitamin A. This recipe used to include <a href='dried_hijiki.html'>hijiki</a>, but I've since removed it because it contains potentially toxic quantities of inorganic arsenic. Arame seaweed doesn't share this toxicity, and is a good substitute in both texture and taste.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>balsamic banana ice cream</title>
+ <link>https://grimgrains.com/site/balsamic_banana_ice_cream.html</link>
+ <guid isPermaLink='false'>balsamic_banana_ice_cream</guid>
+ <pubDate>Sat, 05 Sep 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/balsamic_banana_ice_cream.jpg'/>
+<p>Banana ice cream is a simple alternative to dairy or coconut based desserts. It's a no-fuss recipe, that requires little preparation and waiting time.<br /><br />Making it is easy, and only requires putting bananas in the freezer. While waiting for them to harden up, prepare your balsamic coulis. If you've ever boiled balsamic vinegar, you know that it can sting your eyes. Making a balsamic vinegar reduction makes it thick and syrupy, and works well as a topping. I like the contrast of the bananas and vinegar.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>black sesame brittle</title>
+ <link>https://grimgrains.com/site/black_sesame_brittle.html</link>
+ <guid isPermaLink='false'>black_sesame_brittle</guid>
+ <pubDate>Sat, 06 Dec 4014 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/black_sesame_brittle.jpg'/>
+<p>Sesame brittle looks impressive when served over desserts, like pieces of black coral. If you like the nutty taste of sesame seeds with a bit of sweet, you will love this recipe.<br /><br />It's simple to make, but requires all of your attention. The sugar syrup becomes solid when cool, which means every step needs to be done quickly. These are no-bake, and are ready to eat almost instantly.<br /><br />These should be served over desserts that aren't too sweet, the sweet of the sesame brittle can be a bit much. I suggest serving it with fruit, or <a href='#kanten_powder.html'>kanten</a> (agar agar based desserts).<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>black sesame rice pancakes</title>
+ <link>https://grimgrains.com/site/black_sesame_rice_pancakes.html</link>
+ <guid isPermaLink='false'>black_sesame_rice_pancakes</guid>
+ <pubDate>Thu, 26 Mar 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/black_sesame_rice_pancakes.jpg'/>
+<p>Black sesame rice pancakes, for those who share my love of sesame.<br /><br />Photo is with a generous dollop of <a href='mango.html'>mango</a>, because sometimes I need a break from maple syrup — okay. No I don't, but here's something different anyway. The real reason I added mango, was because I enjoyed the contrast of colors. Most times, I top my pancakes with <a href='maple_syrup.html'>maple syrup</a>.<br /><br /><b>Substitutions:</b> For matcha pancakes, omit the black sesame seeds and add 15 ml of matcha powder.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>black sesame syrup</title>
+ <link>https://grimgrains.com/site/black_sesame_syrup.html</link>
+ <guid isPermaLink='false'>black_sesame_syrup</guid>
+ <pubDate>Wed, 01 Jul 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/black_sesame_syrup.jpg'/>
+<p>I like making syrups, or juice reductions a lot. It's simple, and you can use it in many other recipes afterwards! Reductions that aren't sweetened with sugar, you can use as add-on to sauces, or alone as a 'glaze'.<br /><br />I used a technique by the cook <a href='https://discoginferno.wordpress.com/tag/sesame-seed-syrup' target='_blank'>Mike Case</a>, he made a white sesame syrup to use in cocktails. I liked not requiring a blender to make it, blending sesame seeds into a smooth liquid is hard, my immersion blender can't grind seeds finely. Boiling the seeds, and then straining them out is simple. And since you can re-use the seeds afterwards, there's no waste! The fact the seeds are toasted beforehand helps to bring out the nutty flavour, so whatever you do, don't skip that step!<br /><br />This syrup pairs well with ice cream, especially those with subtle flavors like coconut and vanilla. It's also delicious on fruit ice cream. To make fruit ice cream, slice fruit of choice thinly. Lay a sheet of parchment paper over a plate, and lay your fruit overtop (this will keep the fruit from sticking). Let them freeze for a few hours, then run them through an immersion blender. You can use almost any fruit to make it, but it works especially well for <a href='mango.html'>mango</a> and <a href='bananas.html'>bananas</a>.<br /><br />You can use the left-over seeds to bake into desserts, or to add as an extra topping.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>breaded chickpea tofu fingers</title>
+ <link>https://grimgrains.com/site/breaded_chickpea_tofu_fingers.html</link>
+ <guid isPermaLink='false'>breaded_chickpea_tofu_fingers</guid>
+ <pubDate>Thu, 30 Apr 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/breaded_chickpea_tofu_fingers.jpg'/>
+<p>Was in the mood for some baked veggie fingers, didn't have tofu, but what I did have... was a jar full of chickpea flour. I prepared a batch of spicy, green scallion 'chickpea tofu' and coated it with breadcrumbs. With this, I prepared some baked chickpea fingers!<br /><br />The lemon juice adds flavour to the crumbs, no need for eggs or flour.<br /><br />I had these with sambal oelek, it's spicy but works well with the dish. I've been pairing this condiment with a lot of my foods lately, I'm sure these would also be good with a sweet mustard dip!<br /><br />Left-over breading will keep for weeks if stored in an airtight container.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>brownies</title>
+ <link>https://grimgrains.com/site/brownies.html</link>
+ <guid isPermaLink='false'>brownies</guid>
+ <pubDate>Fri, 24 Apr 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/brownies.jpg'/>
+<p>To make great brownies, you need to pay a special attention to how you treat the eggs and sugar. These two ingredients need good whipping to add heft to the batter. How do you know you've got the whipping right? If you lift your whisk after mixing, the eggs will dribble in thick ribbons which hold their shape on top of the batter for a few seconds. This is what bakers call the <b>ribbon stage</b>. This ability of eggs to swell is the basis of great pastries and desserts, for leavening they don't need baking powder or baking soda and instead rely on the air held in place by the whipped eggs.<br /><br />These properties aren't unique to chicken eggs. It's possible to get good ribboning with both flax seeds and aquafaba (liquid from chickpeas), but aquafaba yields better results in baking.<br /><br /><b>Substitutions</b><br /><br /><b>Fat :</b> Use 90 ml of canola oil instead of vegan butter. To make your own vegan butter, look for the recipe in <b>The Homemade Vegan Pantry by Miyoko Schinner</b>. It's possible to use less fat, but you can only substitute half the amount of fat before it affects the texture. For example, you can use 45 ml (1/8th cup) of vegetable oil (canola, sunflower) with 60 g (45 ml) of pumpkin puree.<br /><br /><b>Chocolate : </b>Use <a href='unsweetened_cocoa_powder.html'>unsweetened cocoa powder</a> instead of bar chocolate, for every 30 g (1 oz) of chocolate add 15 g (3 tbsp) of cocoa powder plus 15 g (1 tbsp) of vegan butter.<br /><br /><b>Tip : </b>To prevent burning the bottom of your brownies, place the pan on a preheated cookie sheet. Brownie tips courtesy of <a href='http://www.kitchenproject.com/history/Brownies/BrownieTips.htm#Mixing' target='_blank'>the kitchen project</a>.</p>]]>
+ </description>
+</item>
+<item>
+ <title>carrot kinpira onigirazu</title>
+ <link>https://grimgrains.com/site/carrot_kinpira_onigirazu.html</link>
+ <guid isPermaLink='false'>carrot_kinpira_onigirazu</guid>
+ <pubDate>Mon, 31 Aug 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/carrot_kinpira_onigirazu.jpg'/>
+<p>An onigirazu is a Japanese rice ball sandwich, or a 'lazy onigiri'.<br /><br />The word onigiri (or nigiru) means to press into shape using your hands, while "razu" means the opposite. Free form onigiri! This is perfect for people who have a hard time making rice balls, as is the case for me. Onigirazu has the same great taste, without the fear of imperfection.<br /><br />This recipe is perfect when you don't have the right type of rice available for onigiri. You can use just about any type, I tested it out a few different kinds. The seaweed wrapping will keep it together, thus eliminating the need for sticky rice.<br /><br />The rice was seasoned with miso for added flavour, and was filled with carrot 'kinpira' — 'Kinpira' means "sauteed" (usually with a mixture of mirin soy sauce and chili peppers.) It's a sweet and spicy dish that is often served in bentos.<br /><br /><img src='../media/recipes/carrot_kinpira_onigirazu_2.jpg'/><br /><br />You should try and make your own version of onigirazu at home! As I said, it's no-fail.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>cheese</title>
+ <link>https://grimgrains.com/site/cheese.html</link>
+ <guid isPermaLink='false'>cheese</guid>
+ <pubDate>Tue, 09 Jul 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/cheese.jpg'/>
+<p>I used to have a cheese recipe on this website, but it failed me a few times after making it, which made it a poor recipe indeed. This time, I've experiemented a lot more, removing and adding ingredients.<br /><br />This is a basic cheese recipe, that you can add onto if you want different flavors. It's simple to prepare, and ready under an hour. Another great thing about it is that it's completely nut-free!<br /><br />This cheese can be grated, it holds its shape well enough so it can be used as a topping on pizza — yay!<br /><br />In this recipe I use <a href='kanten.html'>kanten</a>, which is similar to <a href='agar_agar.html'>agar agar</a> except that it's made from a different type of red algae (tengusa). It can be swapped 1:1 in a recipe, although the resulting texture will not be the same. Adding agar agar will make the cheese softer, so I highly recommend using kanten if available.<br /><br />In this recipe, you can omit the sunflower seeds and 240 ml of water, and replace it with 240 ml of soy milk instead. This will result in a lighter cheese.</p>]]>
+ </description>
+</item>
+<item>
+ <title>cheese and spinach ravioli</title>
+ <link>https://grimgrains.com/site/cheese_and_spinach_ravioli.html</link>
+ <guid isPermaLink='false'>cheese_and_spinach_ravioli</guid>
+ <pubDate>Thu, 10 May 4018 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/cheese_and_spinach_ravioli.jpg'/>
+<p><b>Recipe location:</b> Whangarei, New Zealand.<br /><br />We have arrived in New Zealand, the land of plenty. All of the foods that we like and miss are here. Foods like nutritional yeast, miso and soba (to name a few). With a fully re-stocked pantry, I started to make faux-cheese again, a recipe from <b>Vegan Richa</b> that is simple to make and that I love. The recipe is for a cheese that can be cut into wedges, or that can be grated over pizza. I had an idea to use this recipe to make filling for ravioli, the difference being that I won't add any agar agar (a seaweed based powder that makes liquids gellify). Making your own dough is simple, the whole process will take you less than 40 minutes.<br /><br /><img src='../media/recipes/cheese_and_spinach_ravioli_1.jpg'/><br /><br />I got the idea to make ravioli from an old 70's book about the cooking of Italy. This book is one of many that we found in a thrift shop here in Whangarei, we bought all the ones that we could find. Devine & I like picking through them, drawing inspiration from the images and ingredients.<br /><br /><img src='../media/recipes/cheese_and_spinach_ravioli_2.jpg'/><br /><br />A lot of the recipes in these books use meat and dairy, but it's easy to swap these ingredients out for something else. In New Zealand, the groceries are plentiful and finding everything we need is a breeze. We hope you enjoy this recipe, and that you try and make <a href='http://www.veganricha.com/2014/08/almond-milk-pepper-jack-cheese-vegan-glutenfree-recipe.html' target='_blank'>Richa's original pepper jack cheese recipe</a> too.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>Choco peanut blondies</title>
+ <link>https://grimgrains.com/site/choco_peanut_blondies.html</link>
+ <guid isPermaLink='false'>choco_peanut_blondies</guid>
+ <pubDate>Mon, 02 Dec 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/choco_peanut_blondies.jpg'/>
+<p>A recipe that's ideal when you've got chickpea left-overs, which happens to me a lot when cooking from dry beans. Sometimes I'll prepare chickpeas for this recipe, and use the rest as part of another meal, something like a <a href='chickpea_salad_sandwich.html'>chickpea salad sandwich</a> or <a href='spicy_stirfry_chickpeas.html'>spicy stir-fried chickpeas</a>. What's even better, is that the cooking liquid from the chickpeas is re-used in the same recipe as a binding and leavening agent. When whipped at high speeds, chickpea cooking liquid (or <a href='aquafaba.html'>aquafaba</a>) triples in size and acts as an egg replacer.<br /><br />I don't recommend re-using the liquid from cans of chickpeas, as it's technically the soaking liquid which ought to be discarded. Substituting canned chickpeas from home-cooked beans is fine, but if you do this, discard the liquid and use either a <a href='flax_seed_eggs.html'>flax egg</a> or ground and soaked chia seeds. These two ingredients can help bind ingredients, but aren't effective when it comes to leavening.<br /><br />It's possible to omit the cocoa powder, or to use double the quantity of peanut butter to 135 g (1 cup) instead of adding chickpeas. If you decide not to use chickpeas, be sure to add an egg replacer (chia or flax egg, as suggested above).</p>]]>
+ </description>
+</item>
+<item>
+ <title>basic black bread</title>
+ <link>https://grimgrains.com/site/basic_black_bread.html</link>
+ <guid isPermaLink='false'>basic_black_bread</guid>
+ <pubDate>Wed, 11 Feb 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/basic_black_bread.jpg'/>
+<p>Introducing, my basic black bread recipe. This bread is super light and fluffy, it's great great for morning toast or sandwiches.<br /><br />I've been reading up a lot about bread, there's so many kinds out there. I wanted to understand how the ingredients we add, can change the texture of the bread. Also read about the differences in temperature, to knead or not to knead etc.<br /><br />Truth is, it depends on the type of bread you want.<br /><br />I wanted to make a sandwich bread with a light crumb, the kind that bounces back when touched.<br /><br />The one I made this time has more fat, which in turn makes it softer and fluffier. The fat that you use will also change the texture/taste of the bread. A lot of people wont like the idea of adding 'fat' to a recipe, know that fat isn't synonymous with unhealthy. Too much of it can be bad, but in moderation there really isn't anything to worry about. It also depends on what fat you choose, there are good and bad kinds of fat.<br /><br />There are many things you can do to help soften your bread, like brushing the outside with a little oil or fat. Do this as soon as you take it out of the oven, it will make the outside less crunchy. You can also substitute nut milk for the water, if you want a richer taste. There are so many different things to think about when baking!<br /><br />I made this loaf for a brunch I had with friends, we wanted to have fondue with a set I got as a gift during the holidays. We cut the loaf into cubes, and dunked them in! Soft bread is perfect for fondue!<br /><br />So there you have it! A basic black bread!<br /><br /><b>Burger buns:</b> Repeat steps 1 to 6 in the recipe below. Instead of forming into a 'cigar' shape at step 7,divide into 8 pieces and shape into a tight ball. Sprinkle baking sheet with some cornmeal and put buns on top. Cover and let rise for another 45 minutes in the warmed oven. Take buns out of oven, brush lightly with 15 ml (1 tbsp) of coconut oil (for browning) and put white sesame seeds on top. Bake uncovered for 20 minutes at 180 °C (350 °F). Let cool on a pile of towels or cooling rack.<br /><br /><b>Hot dog buns:</b> Repeat steps 1 to 6. Divide through into 15 pieces and shape into small cylinders (or general elongated hot dog shape). Sprinkle baking sheet with some cornmeal and put buns on top. Cover and let rise for another 45 minutes in the warmed oven. Take buns out of oven, brush lightly with coconut oil. Bake uncovered for 20 minutes< at 180 °C (350 °F). Let cool on a pile of towels or cooling rack.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>basic toothpaste</title>
+ <link>https://grimgrains.com/site/basic_toothpaste.html</link>
+ <guid isPermaLink='false'>basic_toothpaste</guid>
+ <pubDate>Mon, 05 Dec 4016 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/basic_toothpaste.jpg'/>
+<p>I've always liked making things from scratch, especially when cooking. I enjoy the process. Making it myself means that I control the quality and quantity of each ingredient. In the last couple of years, I've removed most pre-made cleaning and hygiene products from my life. I make my own shampoo, deodorant, toilet cleaner, kitchen cleaner, and I also make my own toothpaste.<br /><br />Chances are you already have all of the ingredients at home to make it. The recipe consists of <a href='baking_soda.html'>baking soda</a>, <a href='coconut_oil.html'>coconut oil</a> and <a href='peppermint_oil.html'>peppermint oil</a> (also food grade).<br /><br />You can also brush your teeth with a simple baking soda and water paste. Baking soda is abrasive enough to remove accumulations on teeth and rinses completely clear with only a very slightly salty taste. For those who dislike brushing with a salty taste, adding coconut and peppermint oil helps to smooth down both the taste and texture.<br /><br /><b>NOTE</b>: In colder climates your toothpaste will solidify and scraping some onto your toothbrush can be a challenge. Put the jar near a heater for 5 minutes or so to help soften it down.<br /><br />Toothpaste is only as good as your brushing (which should last for a min of 2min). It is more important to brush your teeth thoroughly than to use toothpaste, especially after eating sweets.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>beer bread</title>
+ <link>https://grimgrains.com/site/beer_bread.html</link>
+ <guid isPermaLink='false'>beer_bread</guid>
+ <pubDate>Thu, 20 Oct 4016 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/beer_bread.jpg'/>
+<p><b>Recipe location:</b> Sidney, BC. Canada.<br /><br />The idea of making beer bread came from a book written by Lin Pardey called "The Care and Feeding of the Offshore Crew". In this book, Lin talks about cooking at sea and has an entire chapter dedicated to baking onboard. In this chapter, the author talks about the many ways to make fresh bread while sailing, including a quickbread recipe that uses 3 basic ingredients: flour, sugar and beer.<br /><br />Beer bread you say? Right up my alley! The next day I gave it a try, the result is fantastic — surprising given the little effort it takes to make it.<br /><br />The best thing about this bread, is that it can taste different everytime. Using different beer, will change the taste and color of the bread. I tried baking with an IPA (21st amendment), a Hefeweizen (Sunriver brewing co) and a brown ale (Hobgoblin).<br /><br />If you have self-rising flour, you can omit the baking powder and salt. You can use even less ingredients if you have a craft beer that has live yeast sediment at the bottom of the bottle. If you have a beer like that only flour, sugar and beer will do. Have fun experimenting with beers in your bread!<br /><br />We made a video of the beer bread-making process, check it out <a href='https://www.youtube.com/watch?v=ppASJRVcXmM' target='_blank'>here</a>.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>breadfruit gnocchi</title>
+ <link>https://grimgrains.com/site/breadfruit_gnocchi.html</link>
+ <guid isPermaLink='false'>breadfruit_gnocchi</guid>
+ <pubDate>Thu, 10 May 4018 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/breadfruit_gnocchi.jpg'/>
+<p><b>Recipe location:</b> Vava'u, Tonga<br /><br />We are about to leave Tonga, the tropics and the land of bountiful <a href='breadfruit.html'>breadfruit</a>. This versatile fruit can be cooked into fries, eaten with <a href='coconut_milk.html'>coconut milk</a>, made into chips, or like this recipe suggests, it can be made into gnocchi.<br /><br />Breadfruit has a taste and texture that resembles that of <a href='potato.html'>potato</a>, and so it makes sense that it too can be made into gnocchi. The flesh of the fruit can be kneaded with ease, especially if the fruit is very ripe. I have tried to knead it when half-ripe, it works too, but requires added moisture and more kneading - not to mention that it doesn't have as much flavor. Ripe breadfruit develops a sweet taste. It can be difficult to catch it at the right moment, like avocados they have a tendency to overripen overnight. Because we like it so much, we've bought many and have had time to better tell when it can be eaten. The outside becomes soft to the touch, but only just.<br /><br />We serve these with a light sauce, to better taste the gnocchi. A sauce that we enjoy, is minced garlic and chili peppers cooked in olive oil. The sauce is poured overtop and sprinkled with bits of shredded nori.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>breadfruit pasta</title>
+ <link>https://grimgrains.com/site/breadfruit_pasta.html</link>
+ <guid isPermaLink='false'>breadfruit_pasta</guid>
+ <pubDate>Mon, 10 Dec 4018 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/breadfruit_pasta.jpg'/>
+<p><b>Recipe location:</b> Suva, Fiji.<br /><br />Yes, another <a href='breadfruit.html'>breadfruit</a> recipe! This fruit is one of the most versatile ingredients I've ever cooked with, it's cheap and pairs well with just about anything. When we returned to the south pacific last june, you can be sure that the first thing we went looking for at the market was this lovely green wonder. It's become a staple for us, a treat and food we are excited to cook and eat.<br /><br />While in a grocery store in Fiji, we spotted breadfruit flour! A company called <b><a href='http://friendfiji.com' target='_blank'>Friend's Fiji style</a></b> sells it in bags of 300g. It's a good alternative if the fresh kind can't be found. It's something we'll stock up on when we leave, so we continue to have breadfruit in our diet (in some form).<br /><br /><img src='../media/recipes/breadfruit_pasta_1.jpg'/><br /><br />Making pasta from scratch requires your hands, a knife and a rolling pin (or bottle, whatever works). Making pasta by hand that is even and thin is a challenge, it's easier to opt for thicker 'udon-style' noodles. Expert soba chefs in Japan can cut noodles thinly, but this requires experienced hands. We have a good blade, but lack the patience as well as the desire to cut even noodles. We're very okay with imperfect noodles.<br /><br /><img src='../media/recipes/breadfruit_pasta_2.jpg'/><br /><br /><b>Tricks for cutting pasta evenly:</b> Roll the flattened piece of dough and cutting it cross-wise is the key, the details on how to do this are in the recipe instructions below.<br /><br />If you come to Fiji and like to make pasta from scratch, try and find some breadfruit flour. That same company also produces cassava flour.<br /><br /><img src='../media/recipes/breadfruit_pasta_3.jpg'/><br /><br />We like to eat breadfruit pasta with garlic, chilis and bitter melon, sauteed in olive oil with some shredded nori on top- simple, and tasty. Alternatively, to make regular pasta, just sub the breadfruit flour for 85 g of <a href='whole_wheat_flour.html'>whole wheat flour</a> or 75 g <a href='spelt_flour.html'>spelt flour</a>.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>buckwheat tea</title>
+ <link>https://grimgrains.com/site/buckwheat_tea.html</link>
+ <guid isPermaLink='false'>buckwheat_tea</guid>
+ <pubDate>Mon, 06 Jan 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/buckwheat_tea.jpg'/>
+<p>A friend from Japan gave us some soba cha <b>そば茶</b> last month, it's something we've had before but that we never thought of making ourselves. It's a type of tea that is served in some soba shops, as a companion drink to buckwheat noodles. It has a subtle nutty flavor, and is perfect to drink after dinner or later at night as it doesn't have any caffeine.<br /><br /><img src='../media/recipes/buckwheat_tea_1.jpg'><br /><br /> I like to roast the groats as I need them, but it's possible to prepare a larger batch ahead of time. The roasted buckwheat groats will store for a few months if kept in a cool and dry place. <br /><br /><b>Roasting a larger batch:</b> When roasting a larger batch, use a larger pan so that the groats don't sit atop of each other. The groats must be in a single layer so they can cook evenly.<br /><br /> <b>Re-using the softened groats:</b> It's possible to re-use the softened groats by pouring more water onto them, although the flavor will not be as strong. If you like to minimize food waste, it's possible to incorporate the soft groats in other meals. For example, you can mix it into rice, cookies, breads etc.<br /><br /> <b>Cooking groats using oven:</b> You can roast your buckwheat groats in your oven. Roast them at 180 °C (350 °F) for 50 minutes, while stirring on occasion.</p>]]>
+ </description>
+</item>
+<item>
+ <title>chickpea salad sandwich</title>
+ <link>https://grimgrains.com/site/chickpea_salad_sandwich.html</link>
+ <guid isPermaLink='false'>chickpea_salad_sandwich</guid>
+ <pubDate>Thu, 18 Feb 4016 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/chickpea_salad_sandwich.jpg'/>
+<p><b>Recipe location:</b> Sidney, BC. Canada.<br /><br />I recently ordered ingredients from BC Kelp, a company in northern Canada that grows their own seaweed. A lot of the food I make these days has either nori, wakame, bull kelp or bladderwack whole tips in it.<br /><br />I'd like to see more people cooking with sea vegetables. You can snack on dried seaweed, or add it to soups and salads. The powdered version I'm using in this recipe, adds a lot of umami and color to meals.<br /><br />You can order your own bull kelp powder from the <a href='http://www.bckelp.com/index.html' target='_blank'>BC Kelp website</a>, they have a wide range of quality seaweed to choose from.<br /><br /><b>Recommendations</b><br /><br />Adding a bay leaf, a bit of onion or a clove or two of garlic to the cooking water add a subtle seasoning to the chickpeas and boost flavor.<br /><br /><b>Substitutions</b><br /><br />If you don't have access to <a href='bull_kelp_powder.html'>bull kelp powder</a>, you can use 5 ml capers or dulse flakes. These needs to be added to create a briny no-tuna taste.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>chocolate chip cookies</title>
+ <link>https://grimgrains.com/site/chocolate_chip_cookies.html</link>
+ <guid isPermaLink='false'>chocolate_chip_cookies</guid>
+ <pubDate>Mon, 06 Jan 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/chocolate_chip_cookies.jpg'/>
+<p>I've been making chocolate chips cookies for a while, but never thought it worthy of a recipe because there are so many online already. In the interest of posting absolute basic recipes though, I felt it deserved to be written down, especially because cookie chemistry is difficult. Slight differences in moisture content, altitude, fat content and sugar content can alter the look and texture of a cookie. There are reasons for the quantities and choice of each ingredient, all interact with each other to give cookies their sweet and soft texture.<br /><br />This recipe is a good base. Substitutions are possible, but changing ingredients — depending on the ingredient — can mess up your recipe. In my suggestions I give examples of good substitutions, and how to modify the recipe to get a good result.<b class='head'>Substitutions</b> <b>Flour:</b> If you choose to use spelt flour, a more nutritious alternative, add 5 ml (5 ml) of baking powder to help it rise.<br /><br /><b>Fat:</b> The fat in cookies is a big part of their structure. I've added vegan butter as it behaves like actual butter, it helps create baked goods that are more tender by shortening gluten strands. When fat coats flour, it slows down the process of gluten formation creating a more tender product <a href='https://bakerbettie.com/function-of-butter-in-baking/#The_Function_of_Butter_in_Baking'>ref</a>. To make your own vegan butter, look for the recipe in <b>The Homemade Vegan Pantry by Miyoko Schinner</b>.<br /><br /><b>Sugar:</b> Sugar is important in cookies, it helps with the flavor, color and texture. The oven temperature causes the sugar to react with the proteins, this is what gives baked goods their brown color. Brown sugar is important in this recipe, as it adds moisture to the dough. If you use 100% granulated sugar the cookie won't spread as well, not unless you add more moisture. You can sub granulated sugar with whole cane sugar or coconut sugar.<br /><br /><b>Add-ins:</b> If you have a sensitivity to caffeine use <a href='carob_chips.html'>carob chips</a> instead of chocolate chips. Switching to carob won't affect the cookies. <b class='head'>Troubleshooting</b>"I followed the recipe, but my cookies don't look the same as yours!" The quirkiness of different ovens makes it difficult to give accurate cooking times. Having a thermometer in your oven is the best way to read the temperature accurately.<br /><br /><b>Help! Cooking spreading too much!</b> If your cookie is spreading too much, you may have added too much sugar. Sugar is hygroscopic, it absorbs liquid but once it bakes it releases that and if there's too much, then it keeps spreading. Oven temperature is another factor. The hotter the oven, the more quickly the fat melts before the cookies have time to set. Depending on your oven, you may need to bake cookies longer but at a lower temperature.<br /><br /><b>Help! Cookie not spreading!</b> One of the most common reasons why cookies don't spread is because there's too much flour in the dough. Try using less, and consider increasing the brown sugar by a few tablespoons. This will add slightly more moisture and help the cookies spread. Be sure you're also using room temperature ingredients, especially butter, to promote the best spread and texture.<br /><br />Read more about <a href='https://www.kingarthurflour.com/blog/2016/03/14/cookie-chemistry-2'>cookie chemistry</a>. Recipe inspired from <a href='https://www.kingarthurflour.com/recipes/chocolate-chip-cookies-recipe'>this one</a>. </p>]]>
+ </description>
+</item>
+<item>
+ <title>coffee jelly</title>
+ <link>https://grimgrains.com/site/coffee_jelly.html</link>
+ <guid isPermaLink='false'>coffee_jelly</guid>
+ <pubDate>Mon, 25 Mar 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/coffee_jelly.jpg'/>
+<p>Coffee jelly is a popular dessert and drink (you could say) that is served in coffee shops in Japan. It is very simple to make, it doesn't require refrigeration to become jelly and it is delicious!<br /><br />The key ingredient in this recipe is kanten, or agar agar, a gelling agent that is algae based and that is widely available in asia. It is available in powder form, and also in sheets. Sheets can be melted in a liquid the same way as the powder form. Agar agar has no calories, and imparts no flavour.<br /><br />You can use instant coffee as well for this recipe, using 30 ml of instant coffee per cup.<br /><br />On Pino, we sometimes make the mix without a sweetener, and pour a spoonful on top afterwards.<br /><br /><b>Quick soy pudding</b><br /><br />You can eat the coffee jelly as is, or you can add the cubes in another recipe like a coconut or soy milk pudding. It can also be used as a garnish for other desserts.<br /><br />Also, I sometimes make a quick 'soy pudding' by heating some soy milk in a pan with some arrowroot starch. The mixture will thicken, it becomes pudding-like and is delicious over coffee jelly.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>corn dumplings</title>
+ <link>https://grimgrains.com/site/corn_dumplings.html</link>
+ <guid isPermaLink='false'>corn_dumplings</guid>
+ <pubDate>Thu, 08 Mar 4018 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/corn_dumplings.jpg'/>
+<p><b>Recipe location:</b> Alofi, Niue.<br /><br />I found an old vegetarian cookbook in a book-sharing shelf. I must have spent an hour reading through it, the recipes were fantastic, the title read "The Farm Vegetarian Cookbook". The cookbook had an entire section dedicated to cooking with corn. It's in there that I found a recipe for masa dumplings.<br /><br />Masa is corn that is simmered and ground into a paste and is the base for many recipes. You can make Mexican-style tortillas with it, that, or you can use it to make dumplings! I don't have access to fresh corn, nor do I have the space or the time to make my own masa, but I used <a href='corn_semolina.html'>corn semolina</a> instead and it worked! The only difference is that you need to add boiling water so you can roll the mixture into balls. If you were to use masa, you wouldn't need the added moisture.<br /><br />The texture of the dumplings is fun and chewy. The outside is soft, but the inside is like that of dense cornbread.<br /><br /><b><b>Recommendations</b><br /><br />Devine & I enjoy eating it with tomato sauce or with a spicy apricot sauce. Instead of apricot jam, you can add apricot juice to the mix (orange will taste wonderful too). I added jam because I didn't have any juice on the boat, and besides, it works well in this recipe.<br /><br />Adding extra spices, like cumin, chili flakes and turmeric will add a nice flavour to the dumpling mix.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>crackers</title>
+ <link>https://grimgrains.com/site/crackers.html</link>
+ <guid isPermaLink='false'>crackers</guid>
+ <pubDate>Tue, 29 Jan 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/crackers.jpg'/>
+<p><b>Recipe location:</b> Majuro, Marshall Islands.<br /><br />Making crackers is simple. There are no downsides to knowing and in a bind it's a useful skill. What's great about a basic recipe is that you can swap ingredients with little consequence (most times) and you can add to it to suit your needs and cravings.<br /><br />Devine & I love to eat crackers as snacks, usually between breakfast and lunch, a cracker with some peanut butter to quiet our stomachs. We rely on crackers a lot during long passages at sea.<br /><br />You can make these crackers without extras with just the 'cracker' portion of the recipe. They're just as delicious that way, but you can add seeds and spices for added flavour and nutrition. I like to add seeds to mine, like <a href='pumpkin_seeds.html'>pumpkin seeds</a>, <a href='flax_seeds.html'>flax seeds</a>, <a href='sesame_seeds.html'>sesame seeds</a>, or <a href='sunflower_seeds.html'>sunflower seeds</a>. I recommend adding <a href='black_pepper.html'>black pepper</a>, or <a href='chili_pepper_flakes.html'>chili pepper flakes</a>, these are also delicious if you sprinkle some salt over the top of them.<br /><br /><b>Substitutions :</b><br /><br /><b>Oats : </b> Instead of oats processed into powder, you can use 20 g (1/4 cup) of <a href='chickpea_flour.html'>chickpea flour</a> or 30 g of <a href='buckwheat_flour.html'>buckwheat flour</a>. Sometimes I make crackers that are 100& spelt flour.<br /><br /><b>Buckwheat groats reuse: </b> Whenever I brew a batch of <a href='buckwheat_tea.html'> buckwheat tea</a>, I end up with some wet groats which I use in this cracker recipe. The groats will add extra moisture to the recipe, so be careful when adding water, you'll need a lot less.<br /><br /><b>Oil :</b> You can use any kind of oil, but prioritize mid-neutral oils like olive (like in the recipe) or aromatic oils like sesame and chili oil. Adding sunflower oil or canola is fine, but since these crackers are very basic, adding an strongly-flavored oils will improve the taste. If you're adding plenty of spices, adding aromatic oils isn't as crucial.</p>]]>
+ </description>
+</item>
+<item>
+ <title>fresh pesto pasta</title>
+ <link>https://grimgrains.com/site/fresh_pesto_pasta.html</link>
+ <guid isPermaLink='false'>fresh_pesto_pasta</guid>
+ <pubDate>Thu, 22 Oct 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/fresh_pesto_pasta.jpg'/>
+<p>Summer is over, temperature in Montreal started to dip into the lower 20's. Colder times means collecting the remaining fresh herbs from my balcony garden. This year, I'm happy to say that my plants have thrived.<br /><br />My basil plant was a real beauty, I harvested all I could from it and made pesto. With it, I made this recipe.<br /><br />The combination of carrots and zucchinis look beautiful on a plate. To complete the dish, I added some roasted pumpkin seeds, and topped it off with cherry tomatoes. For bulk, I added cavatappi pasta to this dish. Cavatappi pasta (or scoobi-doo) happens to be my favorite pasta cut (I'm a sucker for shapes)<br /><br />See how to roast your own <a href='roasted_pumpkin_seeds.html'>pumpkin seeds</a>.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>halloween pumpkin cookies</title>
+ <link>https://grimgrains.com/site/halloween_pumpkin_cookies.html</link>
+ <guid isPermaLink='false'>halloween_pumpkin_cookies</guid>
+ <pubDate>Tue, 10 Nov 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/halloween_pumpkin_cookies.jpg'/>
+<p>Been a while since I've baked cookies. It being pumpkin season, the choice was obvious - pumpkin cookies it is.<br /><br />These are not very sweet, namely because of the addition of coconut sugar which has a subtle and more complex taste. Coconut sugar will make your cookies a darker shade of orange, almost brown, and I think it fits nicely with the toned-down color of the pumpkin seeds. If you want a bold orange color, use white cane sugar instead.<br /><br /><b>Left over chocolate:</b> This recipe makes more chocolate than is needed for the recipe. If you want to keep it for later, pour it in a chocolate mold or shallow container and put it in the freezer. It will become solid and you'll have delicious homemade chocolate on the side for later times! Once it's solid, pop it out of the mold and put it in a closed container. Keep it in the freezer until you're ready to eat it!<br /><br />Pumpkin puree how-to: Remove seeds and stringy flesh from pumpkin. Cut the pumpkin into large chunks and place on a baking sheet. Preheat oven at 180 °C (350 ºF). Roast pumpkin for ~45 minutes until pumpkin is soft and tender. Let cool. Remove skin, and process into a food processor or use a handstick blender. If pumpkin puree is too wet, strain liquid through cheese cloth, if too dry, add a bit of water. The puree keeps for 3 days in the fridge, and up to 3 months frozen.</p>]]>
+ </description>
+</item>
+<item>
+ <title>veganaise</title>
+ <link>https://grimgrains.com/site/veganaise.html</link>
+ <guid isPermaLink='false'>veganaise</guid>
+ <pubDate>Mon, 06 Jan 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/veganaise.jpg'/>
+<p><b>Recipe location:</b> Montreal, QC. Canada<br /><br />Making mayo is easy. This is a basic recipe that doesn't take long to prepare, and that requires few tools.<br /><br />It's possible to add other spices and ingredients to augment the flavor, like smoked paprika, garlic or fresh herbs. This recipe lends well to substitutions:<br /><br /><b>Substitutions</b><br /><br /><b>Oil :</b> It's possible to use other neutral oils like sunflower oil, but I wouldn't recommend using olive oil as it will impart too much flavor.<br /><br /><b>Traditional mayo :</b> This recipe uses less oil than the average mayo recipe. I used soft tofu to have a thicker mixture to avoid adding extra oil, for a richer veganaise you can use soy milk or other plant milks. To do this, mix your ingredients in the order listed in the recipe (switching the tofu for 250 ml or 1 cup plant milk), then pour 350 ml to 595 ml (1 1/2 to 2 1/2 cups) of oil in a slow, and steady stream with the blender running. The mayo will thicken after ~4-5 minutes of blending.<br /><br /><b>Mustard : </b>Instead of using <a href='dijon_mustard.html'>prepared mustard</a>, you can sub with 5 g (1 tsp) of mustard powder. If you have a spice grinder or a coffee grinder, you can grind your own mustard powder from whole mustard seeds. In this recipe, I used old style <a href='dijon_mustard.html'>dijon mustard</a> with mustard seeds, which explains the texture present in the veganaise. If you want to know how to make old-style dijon mustard, check out <a href='#mustard_from_seed.html'>my recipe</a>.<br /><br /><b>Sweetener : </b>If you prefer sweeter venagaise, add 5 g (1 tsp) of a sweetener.<br /><br /><b>Vinegar :</b> Substitute lemon for apple cider vinegar, using equal amounts.</p>]]>
+ </description>
+</item>
+<item>
+ <title>hop ice cream</title>
+ <link>https://grimgrains.com/site/hop_ice_cream.html</link>
+ <guid isPermaLink='false'>hop_ice_cream</guid>
+ <pubDate>Tue, 28 Jul 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/hop_ice_cream.jpg'/>
+<p>Me and Devine like craft beer a lot. To help satisfy our evergrowing craving, I decided to try and make hop flavoured ice cream.<br /><br />This ice cream is definitely for people who love the smell and taste of hops (as well as cold summer dairy-free treats).<br /><br />I wasn't sure how to 'infuse' the hops into the ice cream base, we tried making hop tea by infusing it overnight in the fridge, but the taste wasn't strong enough. Felt we would get better results and better flavour if the hops were heated. The pouch method worked pretty well, the ice cream base was perfect! Full of delicious bitterness! Devine suggested to make a concentrate with the hops first, and then mix it into the base next time.<br /><br />The hops used in this recipe are an American variety called "Colombus". We got them from <a href='http://www.choppeabarrock.com' target='_blank'>La Choppe a Barrock</a> on Villeneuve and Coloniale in Montreal. Every time we make home brews, we pick up the ingredients there! You can buy a wide variety of hop buds there, you can even get the pellet kind.<br /><br />It was my second time using the ice cream maker, I got it from the 'Free stuff Montreal' group on facebook. It looks like a little red pail — super cute. The woman I got it from even had the manual! You can make ice cream without a machine, although having one helps with the churning process. It saves a lot of time and effort. If i hadn't gotten that ice cream maker for free, i dont think id have one now, but since it's here might as well use it!<br /><br />If you too, are having too many beers these days, try and cook with hops instead. Same taste, different format!<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>houjicha overnight oatmeal</title>
+ <link>https://grimgrains.com/site/houjicha_overnight_oatmeal.html</link>
+ <guid isPermaLink='false'>houjicha_overnight_oatmeal</guid>
+ <pubDate>Sat, 04 Oct 4014 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/houjicha_overnight_oatmeal.jpg'/>
+<p>Oats are made better with the nutty and earthy flavour of houjicha. If you're not familiar with houjicha, visit a tea shop and ask for it, it's a Japanese roasted tea that is often served with sweet and savoury dishes. It's a good low-caffeine alternative to most teas, and adds just the right amount of flavour to oatmeal without overpowering it.<br /><br /><b>Suggestions</b><br /><br />If your nut milk is sweetened, you may not need an added sweetener. It's also possible to use a tea strainer instead of a cloth bag by putting the loose leaves in it, and letting it sit in a shallow pan. Just keep an eye on it to make sure it doesn't tip!</p>]]>
+ </description>
+</item>
+<item>
+ <title>red lentil stew</title>
+ <link>https://grimgrains.com/site/red_lentil_stew.html</link>
+ <guid isPermaLink='false'>red_lentil_stew</guid>
+ <pubDate>Sun, 18 Oct 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/red_lentil_stew.jpg'/>
+<p>A recipe I've prepared several times on long ocean passages, it's a one-pot recipe that is very versatile, filling and quick to prepare.<br /><br /><b>How to serve</b><br /><br />We sometimes just eat it as is, or serve it on top of pasta (as a sauce) or <a href='basmati_rice.html'>basmati rice</a>. We also like to serve it with <a href='quick_flat_bread.html'>flat bread</a>. This dish is also delicious with <a href='chili_pepper_flakes'>chili pepper flakes</a>. Another alternative is to serve it as a side dish, to omit the lentils, add more vegetables and to cook them with the same spices in a pan. <br /><br /><b>Substitutions</b><br /><br />The recipe works well with most vegetables, it's easy to adapt and won't affect the taste or cooking time of the dish. Take note that adding red cabbage instead of green will alter the colour of the dish. Cooking the lentils with water instead of vegetable broth is possible, the spices add enough flavor. I also sometimes add konbu dashi as a more neutral base.<br /><br />For a more complex taste, add cardamom, fenugreek seeds and cinnamon.<br /><br />Only use shelled lentils, as whole lentils take longer to cook and the vegetables will soften too much.</p>]]>
+ </description>
+</item>
+<item>
+ <title>lentils with roasted beet sauce</title>
+ <link>https://grimgrains.com/site/lentils_with_roasted_beet_sauce.html</link>
+ <guid isPermaLink='false'>lentils_with_roasted_beet_sauce</guid>
+ <pubDate>Mon, 02 Mar 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/lentils_with_roasted_beet_sauce.jpg'/>
+<p>This recipe is especially good and filling with lentils, but it's also possible to serve it on other grains or even pasta. I used beluga lentils, because they hold their shape better than <a href='brown_lentils.html'>brown lentils</a>.<br /><br />Beets make any dish beautiful, but it can stain your skin. Not to worry though - it doesn't stay, you'll just look like you've just killed something.<br /><br />Fresh peppermint is key in this recipe, don't omit it. If you have a fresh supply at home, that is perfect, otherwise store-bought stalks are fine. You can keep store-bought stalks longer if you do these simple steps: first, tear off any wilted leaves, wash the mint gently, and then put the stalks in a glass with a bit of water and a bag over the top. Then, store it in the refrigerator.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>mason jar bread pudding</title>
+ <link>https://grimgrains.com/site/mason_jar_bread_pudding.html</link>
+ <guid isPermaLink='false'>mason_jar_bread_pudding</guid>
+ <pubDate>Sun, 08 Feb 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/mason_jar_bread_pudding.jpg'/>
+<p>Growing up bread pudding was my favourite dessert. After the holidays, my aunt would give my mom a bag of crusts, left over from the sandwiches she'd make for xmas. She used these to make bread pudding.<br /><br />I asked my mom for her recipe, because I wanted to learn. She smiled, "Watch me do it". My mom cooks by feel, always has. She never writes anything down. I stood by her as she made it, taking notes of the approximate quantities and various steps.<br /><br />My mom comes from a big family of 7 girls, she grew up cooking for the family. When cooking for my sisters & I, she'd always prepare a basin-load of food. Her bread pudding recipe is no different. My dad has no trouble going through all of it.<br /><br />Devine & I are a good eaters, but there's no way we can eat that much dessert, so I reduced and reduced, until it fit a wide-mouth 1/4 l(1 cup) mason jar.<br /><br />If ever you have some leftover crusts try and make this, it's easy, delicious and comforting.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>mustard from seed</title>
+ <link>https://grimgrains.com/site/mustard_from_seed.html</link>
+ <guid isPermaLink='false'>mustard_from_seed</guid>
+ <pubDate>Mon, 21 Jan 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/mustard_from_seed.jpg'/>
+<p><b>Recipe location:</b> Majuro, Marshall Islands.<br /><br />We always try our hardest to buy as few packaged foods as we can, and if we do buy pre-made goods we aim for glass, this too through isn't always possible.<br /><br />We ran out of mustard the other day, and couldn't find any at the store that wasn't packaged in plastic. We decided then that it was better to make our own. It requires few ingredients, little time to prepare (25min for prep, few days for soaking), and is inexpensive.<br /><br />First, you need some mustard seeds. You can choose between yellow, brown and black seeds, the color affects the 'heat' of the mustard. A dark seed imparts more flavour than the lighter variety, and is what we used in this recipe. The seeds are then soaked in a mixture of water and <a href='apple_cider_vinegar.html'>apple cider vinegar</a>, although you can also use beer and white wine as a base. The water should be room temperature or cold, because using hot liquids denatures the enzymes that create the 'heat' in mustard.<br /><br />We don't have <a href='tools.html'>tools</a> onboard that require electricity, so to grind and crush seeds and herbs we use a <b>heavy ceramic mortar and pestle</b>.<br /><br />After the mustard is ground, it is stored in a glass jar at room temperature. Because of its antibacterial properties, mustard <b>does not require refrigeration</b>.<br /><br /><img src='../media/recipes/mustard_from_seed_1.jpg'/><br /><br />The best thing about making it yourself is that you can vary the quantities and base ingredients according to your personal preferences. If you don't like having a strong vinegar taste, you can lessen the amount of apple cider vinegar and add more water instead. You can also add spices and sweeteners. For traditional 'yellow mustard', all you need to do is add turmeric (for color) and a sweetener.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>no knead bread</title>
+ <link>https://grimgrains.com/site/no_knead_bread.html</link>
+ <guid isPermaLink='false'>no_knead_bread</guid>
+ <pubDate>Tue, 12 Feb 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/no_knead_bread.jpg'/>
+<p><b>No knead bread</b> is the easiest kind of artisan-style bread you can make at home - it requires little effort and absolutely no kneading whatsoever.<br /><br />This forgiving recipe allows for substitutions and additions of ingredients without altering the final texture of the bread. If you bake a whole wheat loaf, you might want to add 5 g of <a href='gluten_flour.html'>gluten flour</a> to help it rise.<br /><br />The bread can be left to rise overnight. I usually mix it at around 9pm, and bake it early the next morning at 8am. Unlike a lot of bread recipes, there is no second rise, and you don't need to knead or monitor it at all, because the gluten develops on its own. It's a recipe that is very hard to fail at, and you'll get good bread every time!<br /><br />We sometimes add spices to the dough, like <a href='chili_pepper_flakes.html'>chili</a> and <a href='garlic.html'>garlic</a>, or we make a more hearty bread by adding <a href='pumpkin_seeds.html'>pumpkin seeds</a> or <a href='sunflower_seeds.html'>sunflower seeds</a>. Experiment with it!<br /><br /><b>Baking without a dutch oven</b><br /><br />If you don't have a cast-iron container with a lid, you can use a baking pan with foil. This is the method I use, because I lack a good lid. While the bread doesn't have a hard top crust, the result is still great (the bottom will be tougher than the top). Coat the bread pan with <i>15 ml (1 tbsp)</i> <a href='olive_oil.html'>olive oil</a>, and sprinkle the inside of the pan with some <a href='cornmeal.html'>cornmeal</a> (enough to cover it all in a thin coat). The cornmeal will keep the dough from sticking to the pan. Bread pans don't keep their temperature as well as cast-iron cookware, so the bread will stick due to lack of heat. Oiling the pan is necessary.<br /><br /><b>Sourdough version</b><br /><br />To make sourdough no-knead bread, replace the commercial yeast with a little less than 170 g (3/4 cup) of healthy, well-fed <a href='sourdough_starter.html'>sourdough starter</a>. Give the dough an extra long rise and then transfer the proofed dough into a hot cast-iron pot with a lid</p>]]>
+ </description>
+</item>
+<item>
+ <title>okonomiyaki</title>
+ <link>https://grimgrains.com/site/okonomiyaki.html</link>
+ <guid isPermaLink='false'>okonomiyaki</guid>
+ <pubDate>Thu, 21 Mar 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/okonomiyaki.jpg'/>
+<p><b>Okonomiyaki</b> (meaning, 'grilled as you like it') is a Japanese dish, similar to the American omelette, but the main difference is the variation of ingredients. Typical okonomiyaki are made with eggs, and often include meat or fish, because of this it's not something we would make at home. Making it without meat is simple enough, but without eggs? Back when we lived in Tokyo, our experience in cooking with plants was limited, but now we've been doing it long enough that we can think of alternatives with ease.<br /><br />The key ingredient? <a href='chickpea_flour.html'>Chickpea flour</a>. We make chickpea pancakes, and <a href='scrambled_chickpea_flour.html'>scrambled chickpea flour</a> (resembles scrambled eggs) at home all the time. Chickpea flour is a staple on Pino, and works very well for okonomiyaki.<br /><br />If you're in a place were nagaimo (or yamaimo) is available, we highly reccommend adding it to the dish. It makes a fluffier pancake. Although we've made okonomiyaki without nagaimo before, so if you can't find it know that it will work and be very delicious anyway. It imparts little flavour, all it does is add nutrition and texture. Nagaimo, unlike most potatoes, can be eaten raw. However, it is best to handle the nagaimo with gloves, or to soak the peeled tuber in a vinegar-water solution to neutralize irritant <b>oxalate crystals</b> found on their skin. Nagaimo are low-calorie, high in protein, and have potassium, zinc, vitamin C and more. The texture of grated nagaimo can be off-putting, it looks like a regular tuber when whole, but when grated it becomes slime, almost liquid. This sort of texture is well-liked in Japan and referred to as being 'neba neba' (slimy). This texture present in many other foods like okra and nattou. This texture makes it an ideal egg alternative, it can be used to make deserts when baking. I'm thinking it too, could make a good faux-cheese pizza topping.<br /><br />Aonori is another obscure ingredient - again, it can be omitted, although it tastes really amazing with it. We made okonomiyaki without it when we were in Majuro, because it simply wasn't available, so we used finely cut nori instead. Obviously, this isn't a perfect substitution, because aonori is very sweet and tastes nothing like nori. However, nori is still very delicious and pairs well enough with the okonomiyaki.<br /><br /><b>How to make true okonomi sauce</b><br /><br />In this recipe, I don't use true 'okonomi sauce'. Why? Because I don't use many pre-made sauces, I prefer to make my own. Okonomi sauce requires many ingredients, and honestly, the sauce I've made works really well in this recipe and makes a good okonomi sauce alternative.<br /><br />If you want to make your own, you can mix 7g (1 1/2 tsp) <a href='#whole_can_sugar.html'>sugar</a>, 45g (3 tbsp) <b>ketchup</b> and 45g (3 tbsp) of vegan <b>worcestershire sauce</b>. If you are like me, and don't care to buy pre-made sauces but want to avoid buying both ketchup and worcestershire sauce, you can make these too:<br /><br /><b>Worcestershire sauce:</b> combine <a href='apple_cider_vinegar.html'>apple cider vinegar</a>, water, <a href='soy_sauce.html'>soy sauce</a>, <a href='#whole_cane_sugar.html'>sugar</a>, <a href='#mustard_seeds.html'>mustard powder</a>, onion powder, garlic powder, <a href='cinnamon.html'>cinnamon</a> and <a href='black_pepper.html'>black pepper</a> in pan, bring to a boil and cook for a minute, then let cool.<br /><br /><b>Ketchup:</b> Using some <b>fresh tomato sauce</b> may be enough, otherwise add a bit of <a href='#whole_cane_sugar.html'>sugar</a> and <a href='apple_cider_vinegar.html'>apple cider vinegar</a> to it.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>pandanus fruit bread</title>
+ <link>https://grimgrains.com/site/pandanus_fruit_bread.html</link>
+ <guid isPermaLink='false'>pandanus_fruit_bread</guid>
+ <pubDate>Mon, 10 Dec 4018 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/pandanus_fruit_bread.jpg'/>
+<p><b>Recipe location:</b> Majuro, Marshall Islands.<br /><br />We arrived in the <a href='https://100r.co/pages/the_promise_of_pancakes.html' target='_blank'>Marshall Islands 3 weeks ago</a>. We are settled in, but one thing remains difficult for us: finding fresh produce. The vegetables in Majuro are imported from either Guam, or Hawaii by cargo ship, and because they spend much time at sea they are frozen. Freezing fresh whole vegetables is never a good idea, the vegetables rot before they make it onto the shelves. When possible, we opt for local produce. Majuro has few native fresh vegetables, but they do have some fruit and among these is <b>the pandanus fruit</b>.<br /><br />Pandanus, or <a href='https://en.wikipedia.org/wiki/Pandanus_tectorius' target='_blank'>Pandanus tectorius</a>, bears a fruit that look like a giant pinecone, it is made up of little wedge-like phalanges, commonly referred to as 'keys'. Each fruit has about 40-80 keys, the part of the keys that is attached to the core is soft, and a bright orange colour. In the Marshall Islands, people suck on the orange part which is sweet and tastes of cane sugar. The soft part can also be cut, and processed into juice. It is possible to make the juice yourself, this <b><a href='http://www.cuisinivity.com/globalfeast/pacific/Marshall_Islands/2012/Pandanus.php' target='_blank'>blog post</a></b> explains the process at length.<br /><br />I don't have the space, nor the tools to prepare pandanus juice, but a store in Majuro sells frozen purée. This is what I used to prepare this pandanus fruit cake and the topping that goes with it. What does it taste like? It is similar to mango, sweet, but also bitter.<br /><br />I bought a generous portion of frozen pandanus purée, and couldn't use most of it in the bread so I used the rest to make a topping. The chia seeds don't act as a thickener and can be omitted, but they add nutritional value to the meal.<br /><br />If you ever come across some pandanus fruit, please try it! Making pandanus juice from scratch requires some muscle and serious dedication, but in places where it grows, chances are you'll also find a 'processed' version.<br /><br />Pandanus Tectorius photo credit: U. S. Geological Survey, USGS /Forest & Kim Starr.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>pan fried breadfruit</title>
+ <link>https://grimgrains.com/site/pan_fried_breadfruit.html</link>
+ <guid isPermaLink='false'>pan_fried_breadfruit</guid>
+ <pubDate>Thu, 03 Aug 4017 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/pan_fried_breadfruit.jpg'/>
+<p><b>Recipe location:</b> Huahine, Society Islands. French Polynesia.<br /><br />Breadfruit trees are everywhere in French Polynesia, but sometimes the fruit aren’t mature enough to pick. To make things more difficult, grocery stores don’t sell them (they don’t sell fruit at all). The Polynesians don't buy fruit, they don't have to! They have plenty growing on their property. Getting our hands on a breadfruit was no simple task, on every island we would ask the locals, but again the fruit weren’t ready to pick off just yet.<br /><br />Devine and I had breadfruit when we first arrived in Nuku Hiva, the owner of Snack Vaeki prepared some for us. The chef cooked it outside, over hot coals. The taste is hard to describe, it's very potato-ey. We had the cooked breadfruit with some fresh coconut milk - extracted from a fresh coconut before our very eyes. Since then, we’ve been looking to cook it ourselves.<br /><br />Then finally we got our chance! We bought a breadfruit at the Fare street market in Huahine. The seller at the fruit stand gave it a few knocks, and told us it was ready to eat! It was delicious with coconut milk, but we wanted to try something different. We cut the breadfruit into wedges and pan-fried it. We then served it with some button mushrooms, coated with sweetened soy sauce.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>papaya bruschetta topping</title>
+ <link>https://grimgrains.com/site/papaya_bruschetta_topping.html</link>
+ <guid isPermaLink='false'>papaya_bruschetta_topping</guid>
+ <pubDate>Mon, 20 Aug 4018 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/papaya_bruschetta_topping.jpg'/>
+<p><b>Recipe location:</b> Nuku Hiva, Marquesas. French Polynesia.<br /><br />Before we arrived in the Marquesas, people made a point of telling us how difficult it was to find vegetables there. We heard that if we wanted tomatoes, we would need to get up at 4am to get them at the market. Devine & I are early risers, but we lack the will to take the dinghy to shore in the dark. It's just as well, because others we met who had tried, came back empty-handed. In the Marquesas, most vegetables are brought in by supply ships, you can never be certain of what you're going to get. Potatoes, cucumbers, cabbages and eggplants we had plenty of, but vegetables like tomatoes, pumpkins, bok choy and salad greens were like rare pokemon.<br /><br />We'd only ever made bruschetta topping with tomatoes, never thought of changing it for anything else. But then I thought, what looks like tomatoes? Papaya! They have a similar reddish tint, comparable texture too. Papaya is something Nuku Hiva has plenty of, and as it turns out, we prefer it over tomatoes now. Papaya is more firm and sweet, and pairs well with balsamic vinegar. I imagine it would taste great with mangoes too, it's something I may try when I get a craving again.<br /><br />If something isn't available, or is too expensive where you are (hunting for raspberries in Japan comes to mind), swap it out for something else. Not every ingredient will work, but it's fun to try isn't it?<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>pate chinois</title>
+ <link>https://grimgrains.com/site/pate_chinois.html</link>
+ <guid isPermaLink='false'>pate_chinois</guid>
+ <pubDate>Fri, 10 Apr 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/pate_chinois.jpg'/>
+<p>Whenever I ask Devine what he wants to eat, he'll always say pasta. I don't always say yes to this, not unless I want to eat pasta everyday. Second, he'll ask for Pâté Chinois. It's hard for me to say no to that, it's one of my favourite childhood meals, so I succumb, peek into the fridge and see what variation of it I can make. It's a super versatile dish, my recipe has layers consisting of tofu and burmese tofu, green peas, sweet potato and cauliflower.<br /><br />Pâté Chinois is very much like Shepherd's pie, I'm not sure how it got that name, I've researched it but no one knows its true origins. Quotes from Wikipedia: '...one possible explanation for the Chinese reference is that it was introduced to Canadian railway workers by Chinese cooks during the building of the North American railroads in the late 19th century'. I guess we'll never know.<br /><br />My mom made this all the time when I was a kid - she would make the traditional meat version with creamed corn. My meals, as you know, are always meatless, and I now have an aversion to creamed corn, but the spirit of the dish remains. It inspires the same kind of comfort.<br /><br /><b>Substitutions:</b><br /><br />I've made versions of this dish with just cauliflower, or just using tofu, or just potatoes too. I've made it so often, I've gone through every possibility. All in all, it consists of a protein layer (tofu, burmese tofu, lentils etc) veggie layer (corn or peas), and topped with a doughy vegetable (potatoes, pumpkin, parnisps, cauliflower etc).<br /><br />I've also made a version which consists of cubed, cooked potatoes (or pumpkin), with scrambled chickpea flour and corn — as I've said, it's always good and can take on different forms!<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>quick sunflower seed parmesan</title>
+ <link>https://grimgrains.com/site/quick_sunflower_seed_parmesan.html</link>
+ <guid isPermaLink='false'>quick_sunflower_seed_parmesan</guid>
+ <pubDate>Tue, 11 Feb 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/quick_sunflower_seed_parmesan.jpg'/>
+<p>A simple recipe, for people (like me) with an allergy to tree nuts. Sunflower seeds come apart well and like cashews or other nuts, create a pleasant texture and taste.<br /><br />I made this parmesan to use over lasagna, it adds a bit of crunch to the top layer. It would also be delicious if used over pasta.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>raisin beet bread</title>
+ <link>https://grimgrains.com/site/raisin_beet_bread.html</link>
+ <guid isPermaLink='false'>raisin_beet_bread</guid>
+ <pubDate>Tue, 20 Jan 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/raisin_beet_bread.jpg'/>
+<p>If like my dad you like raisin bread, you will love this sweet raisin beet bread. It's halfway between a cake and bread. Adapted from one of my mom's old cookbook by Margo Oliver <b>les menus de margo oliver</b>.<br /><br />It's simple to make, and you can replace the raisins with currants or cranberries. If you make my recipe, just be sure to add plenty of raisins on top! I emptied a bag on it, without regret. They'll get super crispy, and will develop a sweet crispy caramelized taste. Was hard to keep myself from picking them off, Devine hates it when I do that.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>roasted carrots with beluga lentils</title>
+ <link>https://grimgrains.com/site/roasted_carrots_with_beluga_lentils.html</link>
+ <guid isPermaLink='false'>roasted_carrots_with_beluga_lentils</guid>
+ <pubDate>Tue, 25 Nov 4014 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/roasted_carrots_with_beluga_lentils.jpg'/>
+<p>My oven has been working overtime these days - I've been baking and roasting food almost everyday. I picked up a pack of heirloom carrots at the market last weekend, threw them in the oven with a bit of oil, and served them over a bed of beluga lentils! I also topped it with a delicious spicy peanut butter sauce.<br /><br />Roasted carrots are sweet, a nice change from eating them raw. I could have easily eaten all 8 carrots myself, but I also need to feed Devine.<br /><br />Beluga lentils aren't the cheapest kind you can get, but I like them because they hold their shape well.<br /><br /><b>Credits:</b> The idea to make a recipe with beluga lentils was inspired by Meike Peters' <a href='https://eatinmykitchen.meikepeters.com/beluga-lentil-salad-with-pear-blue-cheese-and-thyme/' target='_blank'>beluga lentil salad recipe</a>.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>roasted pumpkin seeds</title>
+ <link>https://grimgrains.com/site/roasted_pumpkin_seeds.html</link>
+ <guid isPermaLink='false'>roasted_pumpkin_seeds</guid>
+ <pubDate>Wed, 18 Feb 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/roasted_pumpkin_seeds.jpg'/>
+<p>Pumpkin seeds can be prepared in many ways, one of the best ones is oven-roasted! It doesn't take a lot of time, and it makes a nice snack or add-on to soups or other meals.<br /><br />I don't buy raw shelled pumpkin seeds often, because they're expensive. It helps to buy them in bulk, you pay less in the end.<br /><br />Roasted pumpkin seeds are delicious with almost anything, the sweet of the maple syrup with the spicy taste of the paprika is perfect. Subtle, but very good.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>scrambled chickpea flour</title>
+ <link>https://grimgrains.com/site/scrambled_chickpea_flour.html</link>
+ <guid isPermaLink='false'>scrambled_chickpea_flour</guid>
+ <pubDate>Thu, 25 Jul 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/scrambled_chickpea_flour.jpg'/>
+<p>An ingredient that is important in my galley, is <a href='chickpea_flour.html'>chickpea flour</a>, also known as garbanzo flour, gram flour and besan flour. It is not an essential ingredient, but I really love it. It helps to give my meals variety, plus it has a long shelf life due to the low-moisture and low-fat content.<br /><br />Chickpea flour has a texture and taste that is ideal for savoury pancakes or faux-omelettes. As this recipe suggests, it also makes a very good alternative to scrambled tofu.<br /><br /><b>Flavors</b><br /><br />You can add extra flavourings, like chili pepper flakes, curry powder, cumin, smoked paprika or liquid smoke for an extra kick.<br /><br /><b>Recommendations</b><br /><br />I like to eat scrambled chickpea flour with a side of sliced avocado, topped with a drizzle of sambal oelek or <a href='sriracha.html'>sriracha</a>. Sometimes when I make meal salads, I add it for bulk. Another meal I enjoy with this recipe is a sort of ovenless deconstructed <a href='pate_chinois.html'>pate chinois</a> (quebec-style sheperd's pie), I eat it with mashed potatoes, corn and sambal oelek. You can also make this with cooked chickpeas by smashing them with a fork and mixing them up with nutritional yeast, salt and other flavourings.</p>]]>
+ </description>
+</item>
+<item>
+ <title>spicy brownies with pomegranate syrup</title>
+ <link>https://grimgrains.com/site/spicy_brownies_with_pomegranate_syrup.html</link>
+ <guid isPermaLink='false'>spicy_brownies_with_pomegranate_syrup</guid>
+ <pubDate>Fri, 24 Apr 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/spicy_brownies_with_pomegranate_syrup.jpg'/>
+<p>A brownie recipe with a kick, topped with a chili-infused pomegranate syrup.<br /><br />I put a LOT of chili pepper flakes in these. You can omit the chilis in the batter, but I recommend keeping it in the pomegranate syrup. It's delicious and won't be the same without it.<br /><br />You can vary the fruit juice for the topping. Making reductions of fruit juices is very easy, it adds a touch of fancy without too much effort.<br /><br /><b>Substitutions</b><br /><br /><b>Fat :</b> Use 60 g (~1/4 cup) vegan butter instead of oil. If you do this, you'll have to heat the cocoa powder, butter, salt, sugar and spices in a double boiler or any small pan placed over a pot of gently simmering water. When you mix the chocolate/butter mix with the flour, beat vigorously (40-50 strokes) with a spatula so that the fat doesn't separate when baking. Alternatively, you can use coconut oil, but it will alter the base flavor of the brownies in a big way. It's better to use neutral oils, like sunflower. A final option is to use 100% vegan butter, if you want to do this add 145 g (~10 tbsp) to your recipe instead of the canola oil and pumpkin.<br /><br />Final tip: To prevent burning the bottom of your brownies, place the pan on a preheated cookie sheet. Brownie tips courtesy of <a href='http://www.kitchenproject.com/history/Brownies/BrownieTips.htm#Mixing'>the kitchen project</a>.</p>]]>
+ </description>
+</item>
+<item>
+ <title>stovetop choco oat cookies</title>
+ <link>https://grimgrains.com/site/stovetop_choco_oat_cookies.html</link>
+ <guid isPermaLink='false'>stovetop_choco_oat_cookies</guid>
+ <pubDate>Tue, 10 Nov 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/stovetop_choco_oat_cookies.jpg'/>
+<p>These days, I've been experimenting with baking without an oven, as I've switched to a 2-burner alcohol stove. This limits what recipes I can make, but also gives me plenty of opportunities for learning how to do things differently.<br /><br />I prepared the 'dough' on the stovetop, using a cast-iron pan. Any kind of pan will do, I just really like cast iron. The resulting texture is very moist compared to a traditional cookie, but it is very delicious and requires few tools to prepare.<br /><br /><b>Recipe notes:</b><br /><br /><b>Oats:</b> Only use quick-cooking oats, as <a href='rolled_oats.html'>rolled oats</a> or steel-cut oats will not absorb the moist ingredients as quickly, and the cookies won't hold together. Making your own quick-oats is easy, just pop some rolled oats in a blender, or pulverize with a mortar and pestle. Don't overblend, as you'll end up with oat powder!<br /><br /><b>Vegan butter:</b> Cookies aren't cookies without fat. Butter adds flavor. It's possible to substitute with coconut oil, but it will alter the flavor. To make your own vegan butter, look for the recipe in The Homemade Vegan Pantry by Miyoko Schinner.<br /><br /><b>Cocoa powder:</b> If you have a sensitivity to caffeine use <a href='carob.html'>carob powder</a> instead. Switching to carob will alter the flavor of the cookie — in a good way.<br /><br /><b>Sugar:</b> You can substitute with any other kind of sugar, but if you choose to add brown sugar reduce the added water content (a little).<br /><br /><b>Soy milk:</b> I make this recipe with just water often, but adding soy milk (or any other nut milk) makes for a richer flavor.<br /><br /><b>Peanut butter:</b> I like peanut butter a lot, so I add it in everything. I use 100% peanut butter. If you use a sweetened variety, you can use less sugar.</p>]]>
+ </description>
+</item>
+<item>
+ <title>cheesy sunflower seed sauce</title>
+ <link>https://grimgrains.com/site/cheesy_sunflower_seed_sauce.html</link>
+ <guid isPermaLink='false'>cheesy_sunflower_seed_sauce</guid>
+ <pubDate>Sun, 16 Aug 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/cheesy_sunflower_seed_sauce.jpg'/>
+<p>I'm allergic to tree nuts, but this doesn't mean that my choices of 'vegan cheeses' are limited. Seeds can be used interchangeably and produce a similar result, just as creamy and just as nutritious.<br /><br />To soften the seeds, it's possible to quick-boil them. This makes it easier to grind down into a sauce. If you've got the time, soaking them for 1-2h is a better option (<a href='https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4325021/' target='_blank'>ref</a>).<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>sweet mock eel nigiri</title>
+ <link>https://grimgrains.com/site/sweet_mock_eel_nigiri.html</link>
+ <guid isPermaLink='false'>sweet_mock_eel_nigiri</guid>
+ <pubDate>Tue, 24 Mar 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/sweet_mock_eel_nigiri.jpg'/>
+<p>Burmese tofu is not really tofu, I know it's confusing. Burmese tofu is made with chickpea flour, one of my staple foods. The cool thing about it, is that it takes 10 minutes to make and sets under 1 hour. It's a great soy-free alternative, and the texture is comparable to that of soft tofu.<br /><br />The original recipe for chickpea tofu, I believe, was sourced from a book called <a href='http://www.amazon.com/gp/product/0871317680/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0871317680&linkCode=as2&tag=girl07-20' target='_blank'>The Burmese kitchen</a> by Aung Thein. This recipe will use up about half of the burmese tofu, which means you'll have a whole other half to use in other meals.<br /><br />I thought the chickpea tofu would be well-suited as a 'mock unagi kabayaki', and that it would look especially striking atop some black rice.<br /><br /><img src='../media/recipes/sweet_mock_eel_nigiri_2.jpg'/><br /><br />The sauce served over unagi (eel) kabayaki is sweet, with hints of caramel. Most Japanese sauces are easy to make, and usually require around 3-4 ingredients, these almost always include: soy sauce, sake, mirin, or Japanese rice vinegar. If you want to cook Japanese food, having these around is a must.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>teriyaki veggie patties</title>
+ <link>https://grimgrains.com/site/teriyaki_veggie_patties.html</link>
+ <guid isPermaLink='false'>teriyaki_veggie_patties</guid>
+ <pubDate>Tue, 17 Mar 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/teriyaki_veggie_patties.jpg'/>
+<p>Taking the time to cook good food is important, someone said this to me ages ago, never forgot it. It took me a while to understand, I didn't always care about what I ate. I now take the time, because food matters.<br /><br />Cooking isn't just about getting your hunger pangs to go away, it's also a time to be creative.<br /><br />With this recipe, I wanted to make something nutritious that would look nice on a plate. I didn't have to go out to get special ingredients, I just looked in my fridge and used items I had on hand. The result was fantastic!<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>tzaziki</title>
+ <link>https://grimgrains.com/site/tzaziki.html</link>
+ <guid isPermaLink='false'>tzaziki</guid>
+ <pubDate>Mon, 06 Jan 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/tzaziki.jpg'/>
+<p>Making tzaziki is easy. This is a basic recipe that works well enough with all kinds of substitutions, depending on dietary restrictions.<br /><br /><b>Substitutions</b><br /><br />It is possible to use <a href='sunflower_seeds.html'>sunflower seeds</a> and <a href='tofu.html'>tofu</a> to replace the hemp seeds. In this recipe, I used half hemp and half soy, because hemp, while being nutritious, is not cheap. Using just <a href='shelled_hemp_seeds.html'>shelled hemp seeds</a> is very possible.<br /><br />If using sunflower seeds, you should pre-soak them for 1-2h prior to blending. If using only tofu, you may not require extra water in the recipe.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>seitan</title>
+ <link>https://grimgrains.com/site/seitan.html</link>
+ <guid isPermaLink='false'>seitan</guid>
+ <pubDate>Fri, 08 Feb 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/seitan.jpg'/>
+<p><b>Seitan</b> (say-tan) or <b>wheat meat</b>, can be made into a variety of meat-like foods using a variation of spices and other seasonings. It is the base of Buddhist vegetarian cooking, and has been documented in China since the 6th century. It's an ingredient that is also present in Japanese cuisine, for <b>Shojin Ryori</b> (vegetarian cooking) - an important term to remember if you don't eat meat and are traveling the country. Seitan takes on a different name there - it is known as <b>Fu</b>, and can be found in two forms, raw (nama-fu) or dry-baked (yaki-fu, which looks like bread).<br /><br /><img src='../media/recipes/seitan_2.jpg'/><br /><br />Seitan, or Fu, can be produced at home, but it's very labor intensive. Making it requires kneading wheat flour with water to rinse out the starch from the wheat, what remains is a sticky mass of pure gluten protein. If your plan is to make it from scratch, good on you, but otherwise, <a href='gluten_flour.html'>gluten flour</a> (or vital wheat gluten) is your best bet. The basic ingredients for seitan are gluten flour and water, but it's best to flavour it with other ingredients - it is rather bland on its own. The amount of liquid that you use to make your dough will also affect the chewiness of your seitan, less waters means more chewy with a harder texture, and more will make it tender.<br /><br />In this recipe, I added chickpea flour for added nutrition. Wheat gluten proteins are deficient in lysine (an essential amino acid for good health), adding a lysine-rich food like chickpea flour to the mix makes up for this deficiency.<br /><br />When preparing seitan, it's important to flavour both the inside and outside of the dough. Adding a variation of ingredients to the dough mix such as <a href='ginger.html'>ginger</a>, <a href='garlic.html'>garlic</a>, <a href='onion_powder.html'>onion powder</a>, <a href='tomato_sauce.html'>tomato sauce</a>, <a href='soy_sauce.html'>soy sauce</a> and so on will make it extra flavourful, the same goes for the broth. Adding vegetable broth and <a href='soy_sauce.html'>soy sauce</a> as a base, and roughly chopped <a href='onions.html'>onions</a>, <a href='garlic.html'>garlic</a> and <a href='ginger.html'>ginger</a> will season the outside of the dough.<br /><br /><img src='../media/recipes/seitan_4.jpg'/><br /><br />There are <b>3 ways</b> to cook seitan: <b>boiling, steaming or baking</b>. In this recipe, I used the boiling method. Steaming requires wrapping the dough in foil or some other wrapper to help it keep its shape, then steaming it in a steamer basket over a pot of boiling water for 30 minutes or so. Baking the seitan, means flattening or stretching the dough to fit the baking dish, adding seasonings overtop, and baking it for an hour. All methods are good, but some are better for certain kinds of meals.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>shichimi togarashi crackers</title>
+ <link>https://grimgrains.com/site/shichimi_togarashi_crackers.html</link>
+ <guid isPermaLink='false'>shichimi_togarashi_crackers</guid>
+ <pubDate>Sat, 14 Feb 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/shichimi_togarashi_crackers.jpg'/>
+<p>I like making my own crackers, and to play around with different flavors. I enjoy the taste of the Japanese spice mix <b>Shichimi Togarashi</b>, which translates to '7-flavour chili pepper'.<br /><br /><b>How to make your own spice mix:</b><br /><br />If you have a well-stocked spice rack, you can easily make it yourself. Mix together: 30 g chili flakes, 15 g sanshou (sichuan peppercorns), 15 g <a href='dried_orange_peel.html'>dried orange peel</a>, 5 g <a href='black_sesame_seeds.html'>black sesame seeds</a>, 5 g <a href='white_sesame_seeds.html'>white sesame seeds</a>, 10 g ground ginger and 30 g <a href='aonori.html'>aonori</a>.<br /><br />Some people substitute sichuan peppercorns for black peppercorns - I don't reccommend doing that. They're not interchangeable, sichuan peppercorns are what makes it taste awesome. It's a numbing pepper, with a really distinctive taste and aroma. If you eat one peppercorn, you'll notice right away that it numbs your tongue and alters your sense of taste.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>spicy stirfry chickpeas</title>
+ <link>https://grimgrains.com/site/spicy_stirfry_chickpeas.html</link>
+ <guid isPermaLink='false'>spicy_stirfry_chickpeas</guid>
+ <pubDate>Thu, 25 Jul 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/spicy_stirfry_chickpeas.jpg'/>
+<p>If someone was to ask me which food I could eat forever without stopping, I'd answer chickpeas. There's a TON of different ways to prepare them, and all of these ways are delicious. They can be baked, squished, pureed, ground, sprouted and baked. Their versatility make my life easier, I can eat them everyday and it doesn't ever get boring.<br /><br /><b>Nutrition</b>: Legumes is an important part of the diet, and one of the best plant sources of <b>lysine</b>, one of 9 essential amino acids required for good health. Protein is necessary for muscles, bones, hormones, digestive enzymes, to absorb nutrients and to rebuild cells. If you eat 1/2 cup dry beans a day, your daily protein needs are covered.<br /><br />Another plus is that dry chickpeas keep a long, long time. If you keep them in air-tight containers they will last even longer, because moisture and oxygen is the enemy of all beans. Oxygen makes the bean oils rancid overtime. You can store them for 5+ yrs if you add oxygen absorbers (packet consisting of powdered iron oxide) to the containers. I like to buy them in bulk and cook them as needed. An advantage of buying them dry is that it is cheap, and they taste better (honest). Read about <a href='https://extension.usu.edu/foodstorage/howdoi/dry_beans' target='_blank'>storing dry beans</a>.<br /><br /><b>Recommendations</b><br /><br />Adding a <a href='bay_leaf.html'>bay leaf</a>, a bit of <a href='onion.html'>onion</a> or a clove or two of <a href='garlic.html'>garlic</a> to the cooking water add a subtle seasoning to the <a href='chickpeas.html'>chickpeas</a> and boost flavor.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>spinach oatmeal cookies</title>
+ <link>https://grimgrains.com/site/spinach_oatmeal_cookies.html</link>
+ <guid isPermaLink='false'>spinach_oatmeal_cookies</guid>
+ <pubDate>Sat, 13 Dec 4014 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/spinach_oatmeal_cookies.jpg'/>
+<p>When making green cookies, spinach is an obvious choice. It adds colour, nutrition, and doesn't alter the flavour of the food.<br /><br />I've been having a lot of baking failures as of late, I needed something simple to make that didnt involve flour.<br /><br />This recipe also doesn't take very long to make. It makes 5 small cookies, it's easy and doesn't make a mess. I never bake huge batches of desserts, but if you want more you can double or triple the recipe easily.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>stovetop popcorn</title>
+ <link>https://grimgrains.com/site/stovetop_popcorn.html</link>
+ <guid isPermaLink='false'>stovetop_popcorn</guid>
+ <pubDate>Fri, 08 Dec 4017 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/stovetop_popcorn.jpg'/>
+<p>Making popcorn on the stovetop is not a recipe perse, it's a reminder that it's easy to do and that it doesn't require any specialized tools or ingredients. It doesn't require a microwave, just a pot and source of heat (stove).<br /><br />When I was a kid my family used Jiffy Pop, unpopped kernels, oil, and flavoring agents that come in a heavy-gauge aluminum foil pan. I enjoyed seeing the foil rise up into a dome as the kernels started to pop. Then later, my family adopted microwavable bags. These products — while easy and fun — cost more and create unecessary waste. Because I grew up with packaged popcorn, the idea of trying to pop my own kernels only occurred to me MUCH later in life.<br /><br />So, again, this is a reminder that there are conveniences in life that we just don't need.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>sweet and sour lentils</title>
+ <link>https://grimgrains.com/site/sweet_and_sour_lentils.html</link>
+ <guid isPermaLink='false'>sweet_and_sour_lentils</guid>
+ <pubDate>Tue, 02 Jul 4019 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/sweet_and_sour_lentils.jpg'/>
+<p>In my galley I have a few recipes that I consider staples, that I'm always in the mood to eat. I usually rotate these throughout the week, adding maybe a new recipe or two to change things up. This sweet and sour lentils recipe is one of these, a favourite of ours.<br /><br />You can eat the lentils as is, or scoop it up with crackers. Devine & I enjoy eating it wrapped in salad or cabbage leaves.<br /><br />We've cooked sweet and sour lentils often on long passages, it's a simple one-pot meal. It's also my go-to recipe during pot lucks - even people who don't like lentils will enjoy it (I've never had any complaints, not yet).<br /><br /><b>Substitutions</b><br /><br />It's a versatile recipe, so if I don't have any carrots or daikon I'll sometimes put brocoli or fresh green peas instead. For a heartier meal, adding sweet potatoes is also delicious. Sometimes, if I'm out of peanut butter I'll use tahini instead, the flavour is very similar and doesn't change much in the recipe (also nice for those with peanut allergies). This recipe only works with whole lentils, because there's still a bite to them, halved lentils will soften too much and the resulting texture won't be as pleasant.<br /><br />Enjoy this humble, but delicious recipe.</p>]]>
+ </description>
+</item>
+<item>
+ <title>uzumaki hummus bites</title>
+ <link>https://grimgrains.com/site/uzumaki_hummus_bites.html</link>
+ <guid isPermaLink='false'>uzumaki_hummus_bites</guid>
+ <pubDate>Fri, 29 May 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/uzumaki_hummus_bites.jpg'/>
+<p><b>Uzumaki</b> means 'spiral' in Japanese, it is also the name of my favourite Junji Ito story. I thought this to be a good name for these savoury beet hummus bites.<br /><br />Making tortillas at home is damn easy, it doesn't require a lot of waiting time or preparation. The only thing I had trouble with, was making them into nice circular shapes. The easy way is to use a tortilla press, or it just requires lots of practice.<br /><br />Making the tortillas black is optional, but it adds a nice contrast to the beet hummus.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>vegemite caramel</title>
+ <link>https://grimgrains.com/site/vegemite_caramel.html</link>
+ <guid isPermaLink='false'>vegemite_caramel</guid>
+ <pubDate>Tue, 27 Oct 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/vegemite_caramel.jpg'/>
+<p>Vegemite is very salty, and i thought would pair well with something sweet.<br /><br />I used deglet noor dates for this recipe (because it's what I had). Feel free to use medjool dates instead. Medjool dates are great, but you don't have to use them. They're expensive, and their cheaper counterpart works just fine.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>vege pate</title>
+ <link>https://grimgrains.com/site/vege_pate.html</link>
+ <guid isPermaLink='false'>vege_pate</guid>
+ <pubDate>Mon, 20 Jan 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/vege_pate.jpg'/>
+<p>Végé pâté is Quebec staple food. It's great with veggies, on crackers and in sandwiches. Purchasing it pre-made can be expensive, and not all brands are good. <br /><br /><b>Substitutions</b><br /><br />A lot of végé pâté recipes call for whole wheat flour, I've made pâté with it before with great results. If you don't have oats, you can use whole wheat flour instead.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>wakame bites</title>
+ <link>https://grimgrains.com/site/wakame_bites.html</link>
+ <guid isPermaLink='false'>wakame_bites</guid>
+ <pubDate>Mon, 13 Oct 4014 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/wakame_bites.jpg'/>
+<p>Seaweed bites, a great snack packed with your a good dose of <b>iodine</b> - necessary for good health. These are highly addictive and sweet — beware.<br /><br />I went all out this time, and used my fancy cookie cutters, but most times I just cut the sheets of dough into small squares with a regular knife. Using cookie cutters is longer, because I want to use every bit of the dough and that means re-using the bits around the cut outs.<br /><br />The cookies were adapted from a recipe by <a href='http://www.food-sommelier.jp/recipe/R0123/173155.html' target='_blank'>Kiuchi Yuki-san</a><br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>wasabi swirl chocolate cookies</title>
+ <link>https://grimgrains.com/site/wasabi_swirl_chocolate_cookies.html</link>
+ <guid isPermaLink='false'>wasabi_swirl_chocolate_cookies</guid>
+ <pubDate>Thu, 18 Jun 4015 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/wasabi_swirl_chocolate_cookies.jpg'/>
+<p>Black sesame chocolate cookies with a wasabi glaze, it's surprising how well these two things go together.<br /><br />I wanted to mix the wasabi directly in the cookies at first, but after reading a lot about baking wasabi, I decided to apply it after in the form of a glaze because the taste of wasabi fades significantly when heated.<br /><br />It doesn't taste too strong, and adds just the right amount of kick.<br /><br /><b>Quick Yogurt:</b> To make quick yogurt or sour milk, add apple cider vinegar to soy milk. The vinegar makes soy curdle and thicken, and adds sourness that makes it taste more complex.<br /><br /></p>]]>
+ </description>
+</item>
+<item>
+ <title>golden bread</title>
+ <link>https://grimgrains.com/site/golden_bread.html</link>
+ <guid isPermaLink='false'>golden_bread</guid>
+ <pubDate>Sat, 14 Mar 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/golden_bread.jpg'/>
+<p>In Quebec we call french toast 'pain doré', which translates to 'golden bread'. A fitting name. Pain doré is best made with older, and softer bread. My mom used to make some for the family when I was a kid. Her recipe differs from mine in the way that she would use dairy and eggs. Substituting eggs in recipes is never easy, but not impossible. I've tried many alternatives over the years and finally ended up using chickpea flour. It's an ingredient I already use in many recipes to mimic eggs, like in <a href='okonomiyaki.html'>okonomiyaki</a> and <a href='scrambled_chickpea_flour.html'>scrambled chickpea flour</a>. When heated, chickpea flour thickens and crisps up while keeping its yellow color. I don't recommend using bananas as an egg replacer in this recipe. It's what I used to do, but I find it imparts too much flavor and makes it too sweet.<br /><br /><b>Oven version :</b> Preheat oven at 180°C. Grease a baking dish, add sliced bread and pour the left-over milk mixture overtop. Cook until golden.<br /><br /><b>Bread :</b> In this recipe I used some spelt sandwich bread.<br /><br /><b>Milk : </b> Adding vinegar to plant milk makes it curdle and taste sour, it's a simple trick used to make dairy-free buttermilk. In recipes, buttermilk adds sharpness and flavor. You're welcome to use other types of plant milk, but some varieties (like rice milk) won't curdle as well.</p>]]>
+ </description>
+</item>
+<item>
+ <title>sourdough starter</title>
+ <link>https://grimgrains.com/site/sourdough_starter.html</link>
+ <guid isPermaLink='false'>sourdough_starter</guid>
+ <pubDate>Sat, 16 May 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/sourdough_starter.jpg'/>
+<p>Sourdough bread has been arounds for a long time. People are still making it today, even with the existence of baker's yeast.<br /><br />The fermentation required to prepare it improves the flavor of the dough, and makes it easier for the body to absorb the <a href='nutrition.html#zinc'>dietary minerals</a> present in the grains.<br /><br />Making sourdough bread begins with a sourdough starter. The starter is a fermenting mixture of flour and water containing microorganisms which include wild yeast and lactobacilli. The yeast produces carbon dioxide which leavens the dough, and the lactobacilli produce lactic acid which contribute flavor. The process is simple, it requires more waiting than active cooking time. I've made a summary of common questions and concerns when it comes to making a starter.<br /><br /><b><a id='discard'>WHY DISCARD?</a></b><br /><br />Discarding starter is necessary as it quickly builds up in a jar and becomes difficult to manage. The discard works well in a variety of baked goods.<br /><br /><b>ADAPTING YEAST RECIPES</b><br /><br />There are some key aspects to converting yeast recipes to sourdough, like hydration level and yeast. <a href='https://www.culturesforhealth.com/learn/sourdough/hydration-sourdough-starter/' target='_blank'>Hydration level</a> is the ratio of water to flour in a starter. You can maintain or adjust the hydration level with each feeding based on the ratio of water to flour you feed your starter. Aiming for 100% hydration, or equal weights of flour and water, is recommended.<br /><br />To calculate how much added yeast is necessary, first you have to know that the rising power of 7 g of yeast (1 packet) is roughly equivalent to 226 g (1 cup) of sourdough starter.<br /><br />With this information it's easy to approximate the amount of added water, flour and yeast in a recipe.<br /><br /><b>FEEDINGS</b><br /><br />The starter needs feedings at <b>12 h intervals daily</b> in the first week, and <b>once a day afterwards</b>. As long as this starter culture is fed flour and water regularly it will remain active.<br /><br /><b>I forgot to feed my starter!</b> Forgetting to feed the starter isn't a big deal, feed it as soon as you remember. Feedings of longer than three days acidify the dough and may change the microbial ecosystem.<br /><b>Did i feed my starter too much?</b> Feeding the wrong amount won't kill it, but it may make it appear too dry or too wet and may not rise as expected. You can correct the feeding by adding either more flour or water, it will right itself.<br /><b>What's the liquid on top of my starter?</b> This liquid is the alcohol given off as the wild yeast ferments. This doesn't mean it's going bad, it indicates that your starter is hungry.<br /><br /><b>FLOUR</b><br /><br />Using wholemeal instead of processed flour for your starter is a good idea because it provides a variety of organisms and minerals.<br /><br /><b>FILTERED WATER</b><br /><br />Using filtered (carbon filter) or distilled water instead of plain tap ensures good fermentation, as sourdough relies on microorganisms that chlorine inhibits. Leaving tap water uncovered for 24 h will allow the chlorine to dissipate.<br /><br /><b>Can my starter go bad?</b> Starters require more attention on the initial 6-10 days it takes to create a healthy mature starter. It hasn't yet developed defenses that characterize a mature starter. Mature starter cultures are stable because of their pH level and the presence of antibacterial agents, this helps prevent colonization by unwanted yeasts and bacteria. Sourdough breads keep fresh longer than regular bread for this reason too. The ideal temperature for starters is 21 °C, but a bit higher and lower won't hurt it. Yeast dies at 60 °C. If you see an pink or orange streak on your starter, this is a sure sign it's gone bad, discard and start over.<br /><br />Good luck with your starter, and be sure to give it a name! Mine is called Tikki.</p>]]>
+ </description>
+</item>
+<item>
+ <title>soybean hummus with jalapenos</title>
+ <link>https://grimgrains.com/site/soybean_hummus_with_jalapenos.html</link>
+ <guid isPermaLink='false'>soybean_hummus_with_jalapenos</guid>
+ <pubDate>Tue, 10 Mar 4020 00:00:00 +0900</pubDate>
+ <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>
+ <description>
+<![CDATA[<img src='https://grimgrains.com/media/recipes/soybean_hummus_with_jalapenos.jpg'/>
+<p>While in Japan, we didn't have access to chickpeas and so we started to make hummus with soybeans. The result is amazing, and both of us now prefer this version. Soybeans have a rich, creamy texture, and a neutral flavor.<br /><br /><b>Recommendations</b><br /><br /><b>Acid:</b> I sometimes add lime, or apple cider vinegar if I don't have access to lemon. Doing this doesn't alter the flavor.<br /><br /><b>Soybeans</b>: It is possible to make hummus with any bean, but the taste and texture will differ. I have a preference for chickpeas and red lentils. If using chickpeas, if you want a very smooth hummus take the skins off prior to blending.<br /><br /><b>Miso:</b> I used a miso (米こうじみそ) that is characterized by the mellow sweetness of the rice. Using a darker variety would overwhelm the dish. If sensitive to soy, try and find chickpea miso.<br /><br /><b>Toppings:</b> Jalapeno peppers add kick, it makes this dish rather spicy and can be omitted. If you're not a fan of spicy, try adding roasted red peppers instead.<br /><br /><b>Garlic:</b> We like to put raw nira (Japanese garlic chives) as a topping, or instead of garlic. Nira is very mild, and pairs well with soybeans.</p>]]>
+ </description>
+</item>
+</channel></rss>+
\ No newline at end of file
diff --git a/media/services/rss.jpg b/media/services/rss.jpg
Binary files differ.
diff --git a/src/.clang-format b/src/.clang-format
@@ -0,0 +1,19 @@
+AlignAfterOpenBracket: DontAlign
+AlignEscapedNewlines: DontAlign
+AllowShortBlocksOnASingleLine: Empty
+AllowShortCaseLabelsOnASingleLine: true
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: TopLevel
+BinPackArguments: false
+BinPackParameters: false
+BreakBeforeBraces: WebKit
+IndentCaseLabels: false
+TabWidth: 4
+IndentWidth: 4
+ContinuationIndentWidth: 4
+UseTab: ForContinuationAndIndentation
+ColumnLimit: 0
+ReflowComments: false
+SortIncludes: false
+SpaceBeforeParens: false+
\ No newline at end of file
diff --git a/src/build.sh b/src/build.sh
@@ -1,6 +1,11 @@
#!/bin/bash
-rm ../site/*
+# Lint
+clang-format -i main.c
+
+# Cleanup
+rm -rf ../site
+mkdir ../site
cc -std=c99 -DDEBUG -Wall -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla -g -Og -fsanitize=address -fsanitize=undefined main.c -o main
diff --git a/src/main.c b/src/main.c
@@ -1,142 +1,242 @@
#include <ctype.h>
#include <stdio.h>
#include <string.h>
+#include <time.h>
#define STR_BUF_LEN 64
+#define NAME "Grimgrains"
+#define DOMAIN "https://grimgrains.com/"
+
+/* Types */
enum RecipeType {
- maindish,
- sidedish,
- sweet,
- toppings,
- snack,
- basic,
- tropical,
- lifestyle
+ maindish,
+ sidedish,
+ sweet,
+ toppings,
+ snack,
+ basic,
+ tropical,
+ lifestyle
};
-void to_lowercase(char *str, char *target, size_t tsize) {
- for (size_t i = 0; i < tsize; i++) {
- target[i] = str[i];
- if (target[i] == '\0') {
- break;
- }
- if (target[i] == ' ') {
- target[i] = '_';
- } else {
- target[i] = tolower(target[i]);
- }
- }
- target[tsize - 1] = '\0';
-}
-
typedef struct Ingredient {
- int id;
- char *name;
- char *description;
- struct Ingredient *parent;
+ int id;
+ char *name;
+ char *description;
+ struct Ingredient *parent;
} Ingredient;
typedef struct {
- Ingredient *ingredient;
- char *quantity;
+ Ingredient *ingredient;
+ char *quantity;
} Serving;
-Ingredient create_ingredient(char *name, char *description) {
- Ingredient a;
- a.name = name;
- a.description = description;
- a.parent = NULL;
- return a;
+typedef struct {
+ char *name;
+ int instructions_len;
+ char *instructions[16];
+ int servings_len;
+ Serving servings[16];
+} RecipePart;
+
+typedef struct {
+ char *name;
+ enum RecipeType type;
+ char *portions;
+ char *description;
+ int date;
+ int time;
+ int parts_len;
+ RecipePart *parts[10];
+} Recipe;
+
+/* Helpers */
+
+int
+slen(char *s)
+{
+ int i = 0;
+ while(s[i] != '\0' && s[++i])
+ ;
+ return i;
}
-Ingredient create_child_ingredient(Ingredient *parent, char *name, char *description) {
- Ingredient a;
- a.name = name;
- a.description = description;
- a.parent = parent;
- return a;
+int
+clca(int c)
+{
+ return c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c;
}
-Serving create_serving(Ingredient *ingredient, char *quantity) {
- Serving a;
- a.ingredient = ingredient;
- a.quantity = quantity;
- return a;
+char *
+scpy(char *src, char *dst)
+{
+ int i = 0;
+ while((dst[i] = src[i]) != '\0')
+ i++;
+ return dst;
}
-void print_ingredient(Ingredient *ingredient) {
- printf("%s\n", ingredient->name);
+char *
+slca(char *s)
+{
+ int i;
+ for(i = 0; i < slen(s); i++)
+ s[i] = clca(s[i]);
+ return s;
}
-typedef struct {
- char *name;
- int instructions_len;
- char *instructions[16];
- int servings_len;
- Serving servings[16];
-} RecipePart;
+char *
+scsw(char *s, char a, char b)
+{
+ int i;
+ for(i = 0; i < slen(s); i++)
+ s[i] = s[i] == a ? b : s[i];
+ return s;
+}
-typedef struct {
- char *name;
- enum RecipeType type;
- char *portions;
- char *description;
- int date;
- int time;
- int parts_len;
- RecipePart *parts[10];
-} Recipe;
+void
+to_lowercase(char *str, char *target, size_t tsize)
+{
+ for(size_t i = 0; i < tsize; i++) {
+ target[i] = str[i];
+ if(target[i] == '\0') {
+ break;
+ }
+ if(target[i] == ' ') {
+ target[i] = '_';
+ } else {
+ target[i] = tolower(target[i]);
+ }
+ }
+ target[tsize - 1] = '\0';
+}
+
+void
+fpRFC2822(FILE *f, time_t t)
+{
+ struct tm *tm = localtime(&t);
+ char *days[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
+ char *months[12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+ fprintf(f, "%s, %02d %s %d 00:00:00 +0900", days[tm->tm_wday], tm->tm_mday, months[tm->tm_mon], tm->tm_year + 1900);
+}
+
+time_t
+intdate(int date)
+{
+ struct tm str_time;
+ int y = date / 10000;
+ int m = (date / 100) % 100;
+ int d = date % 100;
+ str_time.tm_year = (2000 + y) - 1900;
+ str_time.tm_mon = m;
+ str_time.tm_mday = d;
+ str_time.tm_hour = 0;
+ str_time.tm_min = 0;
+ str_time.tm_sec = 0;
+ str_time.tm_isdst = 0;
+ return mktime(&str_time);
+}
+
+/* Generics */
+
+Ingredient
+create_ingredient(char *name, char *description)
+{
+ Ingredient a;
+ a.name = name;
+ a.description = description;
+ a.parent = NULL;
+ return a;
+}
+
+Ingredient
+create_child_ingredient(Ingredient *parent, char *name, char *description)
+{
+ Ingredient a;
+ a.name = name;
+ a.description = description;
+ a.parent = parent;
+ return a;
+}
+
+Serving
+create_serving(Ingredient *ingredient, char *quantity)
+{
+ Serving a;
+ a.ingredient = ingredient;
+ a.quantity = quantity;
+ return a;
+}
+
+void
+print_ingredient(Ingredient *ingredient)
+{
+ printf("%s\n", ingredient->name);
+}
char recipe_type_names[20][32] = {
- "main", "sidedish", "sweet", "toppings",
- "snack", "basic", "tropical", "lifestyle"};
+ "main", "sidedish", "sweet", "toppings", "snack", "basic", "tropical", "lifestyle"};
int recipes_by_types_len[lifestyle + 1] = {0, 0, 0, 0, 0, 0, 0, 0};
char *recipes_by_types[lifestyle + 1][100];
-void categorize_recipe(char *name, enum RecipeType type) {
- recipes_by_types[type][recipes_by_types_len[type]] = name;
- recipes_by_types_len[type]++;
+void
+categorize_recipe(char *name, enum RecipeType type)
+{
+ recipes_by_types[type][recipes_by_types_len[type]] = name;
+ recipes_by_types_len[type]++;
}
-Recipe create_recipe(char *name, enum RecipeType type, char *portions, int date, int time) {
- Recipe a;
- a.name = name;
- a.type = type;
- a.portions = portions;
- a.date = date;
- a.time = time;
- a.parts_len = 0;
- categorize_recipe(name, type);
- return a;
+Recipe
+create_recipe(char *name, enum RecipeType type, char *portions, int date, int time)
+{
+ Recipe a;
+ a.name = name;
+ a.type = type;
+ a.portions = portions;
+ a.date = date;
+ a.time = time;
+ a.parts_len = 0;
+ categorize_recipe(name, type);
+ return a;
}
-RecipePart create_part(char *name) {
- RecipePart a;
- a.name = name;
- a.instructions_len = 0;
- a.servings_len = 0;
- return a;
+RecipePart
+create_part(char *name)
+{
+ RecipePart a;
+ a.name = name;
+ a.instructions_len = 0;
+ a.servings_len = 0;
+ return a;
}
-void set_description(Recipe *r, char *description) {
- r->description = description;
+void
+set_description(Recipe *r, char *description)
+{
+ r->description = description;
}
-void add_instruction(RecipePart *p, char *instruction) {
- p->instructions[p->instructions_len] = instruction;
- p->instructions_len++;
+void
+add_instruction(RecipePart *p, char *instruction)
+{
+ p->instructions[p->instructions_len] = instruction;
+ p->instructions_len++;
}
-void add_serving(RecipePart *p, Ingredient *i, char *quantity) {
- p->servings[p->servings_len] = create_serving(i, quantity);
- p->servings_len++;
+void
+add_serving(RecipePart *p, Ingredient *i, char *quantity)
+{
+ p->servings[p->servings_len] = create_serving(i, quantity);
+ p->servings_len++;
}
-void add_part(Recipe *r, RecipePart *p) {
- r->parts[r->parts_len] = p;
- r->parts_len++;
+void
+add_part(Recipe *r, RecipePart *p)
+{
+ r->parts[r->parts_len] = p;
+ r->parts_len++;
}
char *html_head = "<!DOCTYPE html><html lang='en'><head><meta charset='utf-8'><meta name='description' content='Grim Grains is an illustrated food blog, it features plant-based (vegan) recipes.'><meta name='viewport' content='width=device-width, initial-scale=1.0'><meta name='twitter:card' content='summary'><meta name='twitter:site' content='@hundredrabbits'><meta name='twitter:title' content='Grimgrains'><meta name='twitter:description' content='An illustrated food blog.'><meta name='twitter:creator' content='@hundredrabbits'><meta name='twitter:image' content='https://grimgrains.com/media/services/icon.jpg'><meta property='og:title' content='Grimgrains'><meta property='og:type' content='article'><meta property='og:url' content='http://grimgrains.com/'><meta property='og:image' content='https://grimgrains.com/media/services/icon.jpg'><meta property='og:description' content='An illustrated food blog.'><meta property='og:site_name' content='Grimgrains'><link rel='icon' type='image/x-icon' href='../media/services/favicon.ico'><link rel='icon' type='image/png' href='../media/services/icon.jpg'><link rel='apple-touch-icon' href='../media/services/apple-touch-icon.png' /><title>GrimGrains — %s</title><link rel='stylesheet' type='text/css' href='../links/main.css'></head><body class='%s'>";
@@ -145,192 +245,245 @@ char *html_header = "<header><a id='logo' href='home.html'><img src='../media/in
char *html_nav = "<nav><ul><li class='home'><a href='home.html'>Home</a></li><li class='recipes'><a href='home.html#recipes'>Recipes</a></li><li class='about'><a href='about.html'>About</a></li><li class='tools'><a href='tools.html'>Tools</a></li><li class='nutrition'><a href='nutrition.html'>Nutrition</a></li><li class='right'><a href='https://merveilles.town/@rek' target='_blank'>Mastodon</a></li></ul></nav>";
-char *html_footer =
- "<footer><a href='about.html'>Grimgrains</a> © 2014—2020<br><a "
- "href='http://100r.co/' target='_blank'>Hundred "
- "Rabbits</a></footer></body></html>";
-
-void build_recipe(Recipe *recipe) {
- // New strings
- char filename[STR_BUF_LEN];
- to_lowercase(recipe->name, filename, STR_BUF_LEN);
- char filepath[STR_BUF_LEN];
- snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
- FILE *f = fopen(filepath, "w");
-
- fprintf(f, html_head, recipe->name, "recipe");
- fputs(html_header, f);
- fputs(html_nav, f);
-
- fputs("<main class='recipe'>", f);
- fprintf(f, "<h1>%s</h1>", recipe->name);
- fprintf(f, "<h2>%s — %d minutes</h2>", recipe->portions, recipe->time);
- fprintf(f, "<img src='../media/recipes/%s.jpg'/>", filename);
- fprintf(f, "<p class='col2'>%s</p>", recipe->description);
- for (int i = 0; i < recipe->parts_len; ++i) {
- fputs("<dl class='ingredients'>", f);
- fprintf(f, "<h3>%s</h3>", recipe->parts[i]->name);
- for (int i2 = 0; i2 < recipe->parts[i]->servings_len; ++i2) {
- char ingr_path[STR_BUF_LEN];
- to_lowercase(recipe->parts[i]->servings[i2].ingredient->name, ingr_path,
- STR_BUF_LEN);
- fprintf(f,
- "<dt><a href='%s.html'><img "
- "src='../media/ingredients/%s.png'/><b>%s</b> <u>%s</u></a></dt>",
- ingr_path, ingr_path,
- recipe->parts[i]->servings[i2].ingredient->name,
- recipe->parts[i]->servings[i2].quantity);
- }
- fputs("</dl>", f);
- fputs("<ul class='instructions'>", f);
- for (int i2 = 0; i2 < recipe->parts[i]->instructions_len; ++i2) {
- fprintf(f, "<li>%s</li>", recipe->parts[i]->instructions[i2]);
- }
- fputs("</ul>", f);
- }
- fputs("</main>", f);
-
- fputs(html_footer, f);
-
- fclose(f);
+char *html_footer = "<footer><a href='about.html'>Grimgrains</a> © 2014—2020<br><a href='http://100r.co/' target='_blank'>Hundred Rabbits</a></footer></body></html>";
+
+void
+build_recipe(Recipe *recipe)
+{
+ // New strings
+ char filename[STR_BUF_LEN];
+ to_lowercase(recipe->name, filename, STR_BUF_LEN);
+ char filepath[STR_BUF_LEN];
+ snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
+ FILE *f = fopen(filepath, "w");
+
+ fprintf(f, html_head, recipe->name, "recipe");
+ fputs(html_header, f);
+ fputs(html_nav, f);
+
+ fputs("<main class='recipe'>", f);
+ fprintf(f, "<h1>%s</h1>", recipe->name);
+ fprintf(f, "<h2>%s — %d minutes</h2>", recipe->portions, recipe->time);
+ fprintf(f, "<img src='../media/recipes/%s.jpg'/>", filename);
+ fprintf(f, "<p class='col2'>%s</p>", recipe->description);
+ for(int i = 0; i < recipe->parts_len; ++i) {
+ fputs("<dl class='ingredients'>", f);
+ fprintf(f, "<h3>%s</h3>", recipe->parts[i]->name);
+ for(int i2 = 0; i2 < recipe->parts[i]->servings_len; ++i2) {
+ char ingr_path[STR_BUF_LEN];
+ to_lowercase(recipe->parts[i]->servings[i2].ingredient->name, ingr_path, STR_BUF_LEN);
+ fprintf(f,
+ "<dt><a href='%s.html'><img src='../media/ingredients/%s.png'/><b>%s</b> <u>%s</u></a></dt>",
+ ingr_path,
+ ingr_path,
+ recipe->parts[i]->servings[i2].ingredient->name,
+ recipe->parts[i]->servings[i2].quantity);
+ }
+ fputs("</dl>", f);
+ fputs("<ul class='instructions'>", f);
+ for(int i2 = 0; i2 < recipe->parts[i]->instructions_len; ++i2) {
+ fprintf(f, "<li>%s</li>", recipe->parts[i]->instructions[i2]);
+ }
+ fputs("</ul>", f);
+ }
+ fputs("</main>", f);
+
+ fputs(html_footer, f);
+
+ fclose(f);
+}
+
+void
+build_ingredient(Ingredient *ingredient)
+{
+ // New strings
+ char filename[STR_BUF_LEN];
+ to_lowercase(ingredient->name, filename, STR_BUF_LEN);
+ char filepath[STR_BUF_LEN];
+ snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
+ FILE *f = fopen(filepath, "w");
+
+ fprintf(f, html_head, ingredient->name, "ingredient");
+ fputs(html_header, f);
+ fputs(html_nav, f);
+
+ fputs("<main class='ingredient'>", f);
+ fprintf(f, "<h1>%s</h1>", ingredient->name);
+ fprintf(f, "<img class='right' src='../media/ingredients/%s.png'/>", filename);
+ fprintf(f, "<p>%s</p>", ingredient->description);
+ if(ingredient->parent) {
+ fprintf(f, "<h2>%s</h2>", ingredient->parent->name);
+ fprintf(f, "<p class='small'>%s</p>", ingredient->parent->description);
+ }
+ fputs("<hr/>", f);
+ fputs("</main>", f);
+
+ fputs(html_footer, f);
+
+ fclose(f);
}
-void build_ingredient(Ingredient *ingredient) {
- // New strings
- char filename[STR_BUF_LEN];
- to_lowercase(ingredient->name, filename, STR_BUF_LEN);
- char filepath[STR_BUF_LEN];
- snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
- FILE *f = fopen(filepath, "w");
-
- fprintf(f, html_head, ingredient->name, "ingredient");
- fputs(html_header, f);
- fputs(html_nav, f);
-
- fputs("<main class='ingredient'>", f);
- fprintf(f, "<h1>%s</h1>", ingredient->name);
- fprintf(f, "<img class='right' src='../media/ingredients/%s.png'/>",
- filename);
- fprintf(f, "<p>%s</p>", ingredient->description);
- if (ingredient->parent) {
- fprintf(f, "<h2>%s</h2>", ingredient->parent->name);
- fprintf(f, "<p class='small'>%s</p>", ingredient->parent->description);
- }
- fputs("<hr/>", f);
- fputs("</main>", f);
-
- fputs(html_footer, f);
-
- fclose(f);
+void
+build_home(Ingredient *ingredients[], int ingredients_len, int recipes_len)
+{
+ // New strings
+ char *filename = "home";
+ char filepath[STR_BUF_LEN];
+ snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
+ FILE *f = fopen(filepath, "w");
+
+ fprintf(f, html_head, "Home", "home");
+ fputs(html_header, f);
+ fputs(html_nav, f);
+
+ fputs("<main class='home'>", f);
+ fprintf(f, "<h1>%d Ingredients</h1>", ingredients_len);
+
+ fputs("<dl class='ingredients'>", f);
+ for(int i = 0; i < ingredients_len; ++i) {
+ char ingr_path[STR_BUF_LEN];
+ to_lowercase(ingredients[i]->name, ingr_path, STR_BUF_LEN);
+ fprintf(f,
+ "<dt><a href='%s.html'><img src='../media/ingredients/%s.png'/><b>%s</b></a></dt>",
+ ingr_path,
+ ingr_path,
+ ingredients[i]->name);
+ }
+ fputs("</dl>", f);
+
+ fprintf(f, "<h1 id='recipes'>%d Recipes</h1>", recipes_len);
+
+ fputs("<ul class='recipes col3'>", f);
+
+ for(int i = 0; i < lifestyle + 1; ++i) {
+ fprintf(f, "<h3>%s</h3>", recipe_type_names[i]);
+ for(int j = 0; j < recipes_by_types_len[i]; ++j) {
+ char recipe_path[STR_BUF_LEN];
+ to_lowercase(recipes_by_types[i][j], recipe_path, STR_BUF_LEN);
+ fprintf(f, "<li><a href='%s.html'>%s</a></li>", recipe_path, recipes_by_types[i][j]);
+ }
+ }
+
+ fputs("</main>", f);
+
+ fputs(html_footer, f);
+
+ fclose(f);
}
-void build_home(Ingredient *ingredients[], int ingredients_len,
- int recipes_len) {
- // New strings
- char *filename = "home";
- char filepath[STR_BUF_LEN];
- snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
- FILE *f = fopen(filepath, "w");
-
- fprintf(f, html_head, "Home", "home");
- fputs(html_header, f);
- fputs(html_nav, f);
-
- fputs("<main class='home'>", f);
- fprintf(f, "<h1>%d Ingredients</h1>", ingredients_len);
-
- fputs("<dl class='ingredients'>", f);
- for (int i = 0; i < ingredients_len; ++i) {
- char ingr_path[STR_BUF_LEN];
- to_lowercase(ingredients[i]->name, ingr_path, STR_BUF_LEN);
- fprintf(f,
- "<dt><a href='%s.html'><img "
- "src='../media/ingredients/%s.png'/><b>%s</b></a></dt>",
- ingr_path, ingr_path, ingredients[i]->name);
- }
- fputs("</dl>", f);
-
- fprintf(f, "<h1 id='recipes'>%d Recipes</h1>", recipes_len);
-
- fputs("<ul class='recipes col3'>", f);
-
- for (int i = 0; i < lifestyle + 1; ++i) {
- fprintf(f, "<h3>%s</h3>", recipe_type_names[i]);
- for (int j = 0; j < recipes_by_types_len[i]; ++j) {
- char recipe_path[STR_BUF_LEN];
- to_lowercase(recipes_by_types[i][j], recipe_path, STR_BUF_LEN);
- fprintf(f, "<li><a href='%s.html'>%s</a></li>", recipe_path,
- recipes_by_types[i][j]);
- }
- }
-
- fputs("</main>", f);
-
- fputs(html_footer, f);
-
- fclose(f);
+void
+build_inc(char *name)
+{
+ char *filename = name;
+ char filepath[STR_BUF_LEN];
+ snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
+ FILE *f = fopen(filepath, "w");
+
+ char incpath[STR_BUF_LEN];
+ snprintf(incpath, STR_BUF_LEN, "inc/%s.htm", filename);
+
+ fprintf(f, html_head, name, name);
+ fputs(html_header, f);
+ fputs(html_nav, f);
+
+ fprintf(f, "<main class='%s'>", name);
+ char buffer[4096];
+ FILE *fp = fopen(incpath, "r");
+ if(fp == NULL) {
+ return;
+ }
+
+ for(;;) {
+ size_t sz = fread(buffer, 1, sizeof(buffer), fp);
+ if(sz) {
+ fwrite(buffer, 1, sz, f);
+ } else if(feof(fp) || ferror(fp)) {
+ break;
+ }
+ }
+ fclose(fp);
+ fputs("</main>", f);
+
+ fputs(html_footer, f);
+
+ fclose(f);
}
-void build_inc(char *name) {
- char *filename = name;
- char filepath[STR_BUF_LEN];
- snprintf(filepath, STR_BUF_LEN, "../site/%s.html", filename);
- FILE *f = fopen(filepath, "w");
-
- char incpath[STR_BUF_LEN];
- snprintf(incpath, STR_BUF_LEN, "inc/%s.htm", filename);
-
- fprintf(f, html_head, name, name);
- fputs(html_header, f);
- fputs(html_nav, f);
-
- fprintf(f, "<main class='%s'>", name);
- char buffer[4096];
- FILE *fp = fopen(incpath, "r");
- if(fp == NULL){ return; }
-
- for (;;) {
- size_t sz = fread(buffer, 1, sizeof(buffer), fp);
- if (sz) {
- fwrite(buffer, 1, sz, f);
- } else if (feof(fp) || ferror(fp)) {
- break;
- }
- }
- fclose(fp);
- fputs("</main>", f);
-
- fputs(html_footer, f);
-
- fclose(f);
+void
+build_rss(FILE *f, Recipe **recipes, int len)
+{
+ int i;
+ time_t now;
+ fputs("<?xml version='1.0' encoding='UTF-8' ?>\n", f);
+ fputs("<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1/'>\n", f);
+ fputs("<channel>\n", f);
+ fputs("<title>" NAME "</title>\n", f);
+ fputs("<link>" DOMAIN "</link>\n", f);
+ fputs("<description>The Nataniev Library</description>\n", f);
+ /* Date */
+ fputs("<lastBuildDate>", f);
+ fpRFC2822(f, time(&now));
+ fputs("</lastBuildDate>\n", f);
+ /* Image */
+ fputs("<image>\n", f);
+ fputs(" <url>" DOMAIN "media/services/rss.jpg</url>\n", f);
+ fputs(" <title>The Nataniev Library</title>\n", f);
+ fputs(" <link>" DOMAIN "</link>\n", f);
+ fputs("</image>\n", f);
+ for(i = 0; i < len; ++i) {
+ Recipe *r = recipes[i];
+ char filename[256];
+ scsw(slca(scpy(r->name, filename)), ' ', '_');
+ fputs("<item>\n", f);
+ fprintf(f, " <title>%s</title>\n", r->name);
+ fprintf(f, " <link>" DOMAIN "site/%s.html</link>\n", filename);
+ fprintf(f, " <guid isPermaLink='false'>%s</guid>\n", filename);
+ fputs(" <pubDate>", f);
+ fpRFC2822(f, intdate(r->date));
+ fputs("</pubDate>\n", f);
+ fputs(" <dc:creator><![CDATA[Rekka Bellum]]></dc:creator>\n", f);
+ fputs(" <description>\n", f);
+ fputs("<![CDATA[", f);
+ fprintf(f, "<img src='" DOMAIN "media/recipes/%s.jpg'/>\n", filename);
+ fprintf(f, "<p>%s</p>", r->description);
+ fputs("]]>\n", f);
+ fputs(" </description>\n", f);
+ fputs("</item>\n", f);
+ }
+ fputs("</channel>", f);
+ fputs("</rss>", f);
+ fclose(f);
}
-int main(void) {
- #include "ingredients.c"
- #include "recipes.c"
+int
+main(void)
+{
+#include "ingredients.c"
+#include "recipes.c"
- int ingredients_len = sizeof ingredients / sizeof ingredients[0];
- int recipes_len = sizeof recipes / sizeof recipes[0];
+ int ingredients_len = sizeof ingredients / sizeof ingredients[0];
+ int recipes_len = sizeof recipes / sizeof recipes[0];
- printf("Found Ingredients: %d, Recipes: %d\n", ingredients_len, recipes_len);
+ printf("Found Ingredients: %d, Recipes: %d\n", ingredients_len, recipes_len);
- for (int i = 0; i < ingredients_len; ++i) {
- build_ingredient(ingredients[i]);
- }
- printf("Built %d ingredients\n", ingredients_len);
+ for(int i = 0; i < ingredients_len; ++i) {
+ build_ingredient(ingredients[i]);
+ }
+ printf("Built %d ingredients\n", ingredients_len);
- for (int i = 0; i < recipes_len; ++i) {
- build_recipe(recipes[i]);
- }
- printf("Built %d recipes\n", recipes_len);
+ for(int i = 0; i < recipes_len; ++i) {
+ build_recipe(recipes[i]);
+ }
+ printf("Built %d recipes\n", recipes_len);
- build_home(ingredients, ingredients_len, recipes_len);
- printf("Built home\n");
+ build_home(ingredients, ingredients_len, recipes_len);
+ printf("Built home\n");
- build_inc("about");
- build_inc("nutrition");
- build_inc("tools");
- build_inc("meals");
+ build_inc("about");
+ build_inc("nutrition");
+ build_inc("tools");
+ build_inc("meals");
+ build_rss(fopen("../links/rss.xml", "w"), recipes, recipes_len);
- return (0);
+ return (0);
}