From 7d0d9ab16cb957e21d6f29a0a142479a988d338b Mon Sep 17 00:00:00 2001 From: Ced Date: Sun, 22 Oct 2023 20:42:04 +0100 Subject: [PATCH 01/21] Correct spelling mistakes in glossary --- book/book.tex | 1 - book/glossary/glossary.tex | 20 ++++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/book/book.tex b/book/book.tex index d3e7c41..7b906be 100644 --- a/book/book.tex +++ b/book/book.tex @@ -54,7 +54,6 @@ \input{troubleshooting/misc} \backmatter -\chapter{Glossary} \input{glossary/glossary} \printbibliography {% diff --git a/book/glossary/glossary.tex b/book/glossary/glossary.tex index 61a06ef..92d493c 100644 --- a/book/glossary/glossary.tex +++ b/book/glossary/glossary.tex @@ -1,3 +1,6 @@ +\chapter{Glossary}% +\label{ch:Glossary} + \begin{quoting} This glossary provides definitions and explanations for terms frequently used in bread making. Understanding these terms is essential for both @@ -13,7 +16,7 @@ its characteristic tangy flavor and helps to preserve the bread by lowering its The flavor of acetic acid has a more vinegary profile. \item[All purpose flour] A general flour that’s balanced to make breads and also -cakes. In germany this is type 550. +cakes. In Germany this is type~550. \item[Alpha-amylase] A type of amylase that breaks down starch molecules into shorter fragments, producing maltose and some glucose. @@ -30,8 +33,8 @@ bread-making. By analyzing the alveogram, professionals can make informed decisi about the suitability of a flour for certain baking applications, as well as potential blending needs with other flours. -\item[Alveoli (sg Alveolus)] The little pockets that form the crumb, formed by -the gluten matrix trapping carbon dioxide. +\item[Alveoli] (singular Alveolus) The little pockets that form the crumb, +formed by the gluten matrix trapping carbon dioxide. \item[Amylase] An enzyme that breaks down starches into simpler sugars, facilitating the fermentation process in beer and bread making. When making beer the temperature @@ -46,7 +49,7 @@ better properties. The browning of the loaf becomes better and the crumb fluffie An autolyse is recommended when using a high percentage of starter to inoculate the dough (> \SI{20}{\percent}). An alternative easier approach can be the fermentolyse. -\item[Bacteria] Single-celled microorganisms that exist in diverse forms and +\item[Bacteria] Unicellular microorganisms that exist in diverse forms and habitats. They play crucial roles in various natural processes, especially in food preparation like sourdough fermentation. Lactic and acetic acid bacteria, in particular, are pivotal in the sourdough process, contributing to its distinct taste and texture. @@ -123,7 +126,7 @@ the gluten amount of the flour is the deciding factor. The more gluten your flou (protein) the longer you can bulk ferment. A longer bulk fermentation improves the flavor and texture of the final bread. It becomes tangier and fluffier. You can aim for a \SI{25}{\percent} size increase of your dough and then slowly increase this to find your -flour’s sweetspot. This is highly dependant from flour to flour. When using low gluten +flour’s sweet spot. This is highly dependant from flour to flour. When using low gluten flour like rye you need to be careful as the longer fermentation can create a too sticky dough which collapses and does not hold its shape anymore. @@ -164,8 +167,9 @@ typically to shape into individual loaves or portions. \item[Dough Hydration] Expressed as a percentage, it's the amount of water in a dough relative to the amount of flour. A higher hydration dough will be wetter and -stickier, while a lower hydration dough will be firmer. For example, a dough with 500g -of flour and \SI{375}{\gram} of water has a hydration of \SI{75}{\percent} +stickier, while a lower hydration dough will be firmer. For example, a dough +with \SI{500}{\gram} of flour and \SI{375}{\gram} of water has a hydration of +\SI{75}{\percent} \item[Dough Strength] Refers to the dough's resilience, elasticity, and structure. A strong dough can be stretched without tearing and holds its shape well. This is @@ -275,7 +279,7 @@ Specifically: \end{itemize} The P/L ratio provides insights into the balance between the dough's elasticity and extensibility: - +% \begin{itemize} \item[Low P/L Value] Indicates a dough that is more extensible than resistant. This means the dough can be stretched easily, making it suitable for From b2186209dfb9d88203fe48291e2b2d257e1dde26 Mon Sep 17 00:00:00 2001 From: Ced Date: Sun, 22 Oct 2023 20:50:29 +0100 Subject: [PATCH 02/21] Rorder glossary So it actually is in alphabetical order... Samnly typos here adn there. --- book/glossary/glossary.tex | 84 +++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/book/glossary/glossary.tex b/book/glossary/glossary.tex index 92d493c..1063cd5 100644 --- a/book/glossary/glossary.tex +++ b/book/glossary/glossary.tex @@ -15,7 +15,7 @@ acid bacteria and acetic acid bacteria during fermentation. It gives sourdough b its characteristic tangy flavor and helps to preserve the bread by lowering its pH. The flavor of acetic acid has a more vinegary profile. -\item[All purpose flour] A general flour that’s balanced to make breads and also +\item[All Purpose Flour] A general flour that’s balanced to make breads and also cakes. In Germany this is type~550. \item[Alpha-amylase] A type of amylase that breaks down starch molecules into @@ -47,7 +47,7 @@ before adding other ingredients. This activates enzymes such as amylase and prot By doing so the bulk fermentation time is shortened and the final loaf will have better properties. The browning of the loaf becomes better and the crumb fluffier. An autolyse is recommended when using a high percentage of starter to inoculate the -dough (> \SI{20}{\percent}). An alternative easier approach can be the fermentolyse. +dough (>~\SI{20}{\percent}). An alternative easier approach can be the fermentolyse. \item[Bacteria] Unicellular microorganisms that exist in diverse forms and habitats. They play crucial roles in various natural processes, especially in food @@ -56,7 +56,7 @@ are pivotal in the sourdough process, contributing to its distinct taste and tex Some bacteria are beneficial, aiding in digestion or producing vitamins, while others can be harmful and cause diseases. -\item[Baker’s math] Baker’s math is a ratio based system of sharing recipes, +\item[Baker’s Math] Baker’s math is a ratio based system of sharing recipes, making them easily scalable. It’s based on the total weight of the flour in a formula, where each ingredients weight is divided by the flours weight to give a percentage. For \SI{500}{\gram} of flour you could be using \SI{60}{\percent} of water (\SI{300}{\gram}), @@ -102,7 +102,7 @@ proof. The bannetons are typically made out of rattan or wood pulp. An alternati DIY solution is to use a bowl with a kitchen towel inside. While resting inside of the banneton the dough’s surface dries out and becomes easier to score before baking. -\item[Bench rest] A short resting period given to the dough after preshaping +\item[Bench Rest] A short resting period given to the dough after preshaping allowing the gluten to relax a little bit and making shaping easier. Most people bench rest for 10 minutes up to an hour. The bench rest becomes especially important when making pizza doughs. Without an extended bench rest the dough is too elastic and @@ -111,7 +111,7 @@ can not be shaped. \item[Beta-amylase] An enzyme that further breaks down the starch fragments produced by alpha-amylase into maltose. -\item[Bread flour] A flour that is perfect for sourdough bread making. It features +\item[Bread Flour] A flour that is perfect for sourdough bread making. It features a higher amount of gluten and can thus ferment for a longer period of time. \item[Brühstück] A German baking technique similar to a scald. It translates as @@ -130,19 +130,10 @@ flour’s sweet spot. This is highly dependant from flour to flour. When using l flour like rye you need to be careful as the longer fermentation can create a too sticky dough which collapses and does not hold its shape anymore. -\item[Cake flour] Cake flour is a light, finely milled flour with a lower protein +\item[Cake Flour] Cake flour is a light, finely milled flour with a lower protein content than all-purpose flour. It's ideal for tender baked goods like cakes, cookies, and pastries. -\item[Scald] A method where boiling water is poured over flour, grains, or other -ingredients and then allowed to cool. In baking, this process can gelatinize the -starches in the flour or grains, resulting in a dough that retains moisture better, -provides a softer crumb, and potentially extends the bread's shelf life. Additionally, -scalding can help inactivate certain enzymes which can be detrimental to the dough's -quality. The scalding technique can also enhance the overall flavor and aroma of -the bread, bringing out more pronounced grainy notes and reducing bitterness -sometimes found in certain whole grains. - \item[Coil fold] A special stretch and folding technique. The coil fold is very gentle on the dough and is thus excellent throughout the bulk fermentation. By applying the coil fold the dough strength is improved by minimising damage @@ -153,7 +144,7 @@ shape, and distribution of the holes (or \emph{alveoli}). It's what's inside onc a loaf of bread open. A \emph{tight crumb} refers to bread with small, evenly distributed holes, while an \emph{open crumb} has larger, more irregular holes. -\item[Diastatic malt] Malted grain that has been dried and then ground into a powder. +\item[Diastatic Malt] Malted grain that has been dried and then ground into a powder. This malt contains enzymes that can break down starches into sugars, which can be beneficial in the fermentation process for bread. When added to dough, it can improve the bread's flavor, color, and shelf life. @@ -176,10 +167,18 @@ A strong dough can be stretched without tearing and holds its shape well. This i largely influenced by the flour's protein content and the development of the gluten network. -\item[Dutch oven] A heavy-duty pot with a tight-fitting lid, often made of cast +\item[Dutch Oven] A heavy-duty pot with a tight-fitting lid, often made of cast iron. It's used in baking to trap steam during the initial phase of baking, helping to create a crusty exterior on bread. +\item[Elasticity] A property of dough that describes its ability to return to +its original shape after being stretched or deformed. It's influenced by the flour's +protein content and the development of the gluten network. + +\item[Extensibility] Refers to the dough’s ability to be stretched or extended +without tearing. It's the opposite of elasticity and is desirable in certain types +of breads, like ciabatta, that have a more open crumb structure. + \item[Feed] The act of adding fresh flour and water to maintain a sourdough starter. Regular feeding keeps the starter active and healthy. @@ -198,23 +197,15 @@ large pockets or holes, rather than an even distribution of smaller holes. This isn't necessarily a desired feature, as it can indicate uneven fermentation or improper shaping techniques. -\item[Elasticity] A property of dough that describes its ability to return to -its original shape after being stretched or deformed. It's influenced by the flour's -protein content and the development of the gluten network. - -\item[Extensibility] Refers to the dough’s ability to be stretched or extended -without tearing. It's the opposite of elasticity and is desirable in certain types -of breads, like ciabatta, that have a more open crumb structure. - -\item[Homogenizing] The act of creating a consistent and uniform mixture. For -flours like einkorn and rye, where gluten alignment isn't the main goal, kneading -ensures that the dough achieves this homogeneous consistency. - \item[Gluten] A protein complex formed from gliadin and glutenin, found in wheat and some other grains. It provides elasticity and strength to the dough when properly aligned and developed. During the course of the bulk fermentation much of the gluten is degraded by the protease enzyme and lactic acid bacteria. +\item[Homogenizing] The act of creating a consistent and uniform mixture. For +flours like einkorn and rye, where gluten alignment isn't the main goal, kneading +ensures that the dough achieves this homogeneous consistency. + \item[Hooch] A liquid layer that sometimes forms on top of a sourdough starter. It's an indication that the starter is hungry and needs feeding. It acts as a barrier shield and prevents the starter from catching mold. It can be mixed right @@ -243,11 +234,14 @@ although it favours alkaline conditions. \item[Maltose] A sugar produced from the enzymatic breakdown of starch by amylases. It's a primary food source for yeast during fermentation. -\item[Non-diastatic malt] Malted grain that has been dried at higher temperatures, +\item[Non-diastatic Malt] Malted grain that has been dried at higher temperatures, deactivating its enzymes. It's used primarily for flavor and color in bread making. Amylase and protease become degraded at temperatures higher than 50°C. -\item[Over fermenting] A common problem when making wheat or spelt doughs. When the +\item[Oven Spring] The rapid rise of the dough in the oven during the early stages +of baking due to the expansion of trapped gases and water. + +\item[Over Fermenting] A common problem when making wheat or spelt doughs. When the dough is fermented for too long most of the gluten in the dough is broken down. The resulting dough is very sticky. The final bread will be very flat and lose some of its typical texture. The crumb structure features many tiny pockets of air. A lot of the @@ -255,10 +249,7 @@ trapped gasses can diffuse out of the dough during baking. If you notice this du bulk fermentation it is advised to place the loaf inside of a loaf pan and then bake it after a 30 to 60 minute rest. -\item[Oven Spring] The rapid rise of the dough in the oven during the early stages -of baking due to the expansion of trapped gases and water. - -\item[Over proofing] The same as over fermenting, however happening during the +\item[Over Proofing] The same as over fermenting, however happening during the proofing stage. \item[pH] A measure of the acidity or alkalinity of a solution. The pH scale @@ -329,13 +320,14 @@ made solely from rye flour tend to be dense. However, rye has a unique flavor an many health benefits, so it's often combined with wheat flour in baking. Pure rye breads are typically made with a sourdough process to help the dough rise. -\item[Straight Dough] A bread-making method where all ingredients are mixed -together at once, without the use of a preferment. - -\item[Stretch and Fold] S\&F is a technique used during the bulk fermentation phase -to strengthen the dough and help align the gluten structure. Instead of traditional -kneading, the dough is gently stretched and then folded over itself. This process is -typically repeated multiple times throughout bulk fermentation. +\item[Scald] A method where boiling water is poured over flour, grains, or other +ingredients and then allowed to cool. In baking, this process can gelatinize the +starches in the flour or grains, resulting in a dough that retains moisture better, +provides a softer crumb, and potentially extends the bread's shelf life. Additionally, +scalding can help inactivate certain enzymes which can be detrimental to the dough's +quality. The scalding technique can also enhance the overall flavor and aroma of +the bread, bringing out more pronounced grainy notes and reducing bitterness +sometimes found in certain whole grains. \item[Scalding] A method where boiling water is poured over flour and then cooled down to room temperature. This process gelatinizes the starches in the flour, @@ -361,6 +353,14 @@ the final dough. microorganisms including wild yeast and lactic acid bacteria. It's used to leaven bread. +\item[Straight Dough] A bread-making method where all ingredients are mixed +together at once, without the use of a preferment. + +\item[Stretch and Fold] S\&F is a technique used during the bulk fermentation phase +to strengthen the dough and help align the gluten structure. Instead of traditional +kneading, the dough is gently stretched and then folded over itself. This process is +typically repeated multiple times throughout bulk fermentation. + \item[Tangzhong] A Chinese technique for bread-making, similar to the Japanese yudane method. It involves cooking a small portion of the flour with water (or milk) to create a slurry or roux. This process, which can be seen as a From 2a6149520ca89bd365c41d75d12af510d22363fb Mon Sep 17 00:00:00 2001 From: Ced Date: Fri, 27 Oct 2023 12:07:01 +0100 Subject: [PATCH 03/21] Fix BW epub not opening in apple books The mime-type was not correct --- book/makefile | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/book/makefile b/book/makefile index a819f1a..f7d1de7 100644 --- a/book/makefile +++ b/book/makefile @@ -45,7 +45,7 @@ images += $(foreach directory, $(chapters), $(wildcard $(directory)/*/*.jpg)) images += $(foreach directory, $(chapters), $(wildcard $(directory)/*.png)) images += $(foreach directory, $(chapters), $(wildcard $(directory)/*/*.png)) -# Black and White ebook, we will just re-zip directory after converting the +# Black and White ebook, we will just re-zip directory after converting the # images to lower resolution and greyscale bw_images := $(addprefix bw-book-epub/OEBPS/, $(images)) @@ -106,14 +106,11 @@ bw-book-epub/OEBPS/%.jpg: %.jpg bw-book-epub/OEBPS/%.png: %.png $(CONVERT_PIC) $< $(REDUCE_PIC) $@ -bw_ebook.zip: copy_ebook_files $(bw_images) - zip -qXr9D bw_ebook.zip bw-book-epub - -epub/bw_book.epub: bw_ebook.zip - mv bw_ebook.zip epub/bw_book.epub +epub/bw_book.epub: copy_ebook_files $(bw_images) + cd bw-book-epub; zip -q9XrD ../epub/bw_book.epub ./ bw_epub: epub/bw_book.epub | bw-book-epub - + # Now with the rules # Expected usual rules first .PHONY: all From b22793f57e6adc2a5537ee7cb06d936800848660 Mon Sep 17 00:00:00 2001 From: Ced Date: Fri, 27 Oct 2023 21:05:21 +0100 Subject: [PATCH 04/21] Simplify verify target Little value in building the sans-serif pdf... can only fails if a font is missing. --- makefile | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/makefile b/makefile index a52e6e3..b67496a 100644 --- a/makefile +++ b/makefile @@ -1,45 +1,38 @@ DOCKER_IMAGE := ghcr.io/hendricius/the-sourdough-framework +DOCKER_CMD := docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c -.PHONY: build_pdf -build_pdf: mrproper - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make" +.PHONY: bake build_pdf build_docker_image push_docker_image validate website +.PHONY: print_os_version start_shell printvars show_tools_version mrproper -.PHONY: bake -bake: mrproper - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make bake" +build_pdf: + "cd /opt/repo/book && make" + +bake: + $(DOCKER_CMD) "cd /opt/repo/book && make bake" -.PHONY: build_docker_image build_docker_image: docker build -t $(DOCKER_IMAGE) -f Dockerfile --progress=plain . -.PHONY: push_docker_image -push_docker_image: +push_docker_image: build_docker_image docker push $(DOCKER_IMAGE):latest -.PHONY: website -website: mrproper - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make website" +website: + $(DOCKER_CMD) "cd /opt/repo/book && make website" -.PHONY: validate -validate: mrproper - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make -j build_pdf build_ebook" +validate: + $(DOCKER_CMD) "cd /opt/repo/book && make -j build_serif_pdf build_ebook" -.PHONY: mrproper mrproper: - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make mrproper" + $(DOCKER_CMD) "cd /opt/repo/book && make mrproper" -.PHONY: show_tools_version show_tools_version: - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make show_tools_version" + $(DOCKER_CMD) "cd /opt/repo/book && make show_tools_version" -.PHONY: printvars printvars: - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cd /opt/repo/book && make printvars" + $(DOCKER_CMD) "cd /opt/repo/book && make printvars" -.PHONY: print_os_version print_os_version: - docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c "cat /etc/*release" + $(DOCKER_CMD) "cat /etc/*release" -.PHONY: start_shell start_shell: docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash From 9adcca73ebe839c6185b95fb986286d53bd9c2cf Mon Sep 17 00:00:00 2001 From: Ced Date: Fri, 27 Oct 2023 21:14:50 +0100 Subject: [PATCH 05/21] Remove unused targets in main makefile Reorder logically and comment --- makefile | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/makefile b/makefile index b67496a..6badc0e 100644 --- a/makefile +++ b/makefile @@ -2,29 +2,28 @@ DOCKER_IMAGE := ghcr.io/hendricius/the-sourdough-framework DOCKER_CMD := docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c .PHONY: bake build_pdf build_docker_image push_docker_image validate website -.PHONY: print_os_version start_shell printvars show_tools_version mrproper - -build_pdf: - "cd /opt/repo/book && make" - -bake: - $(DOCKER_CMD) "cd /opt/repo/book && make bake" +.PHONY: print_os_version start_shell printvars show_tools_version +# Dockers targets build_docker_image: docker build -t $(DOCKER_IMAGE) -f Dockerfile --progress=plain . push_docker_image: build_docker_image docker push $(DOCKER_IMAGE):latest -website: - $(DOCKER_CMD) "cd /opt/repo/book && make website" +# Books/website +# Quicker run for each commit, shall catch most problems validate: $(DOCKER_CMD) "cd /opt/repo/book && make -j build_serif_pdf build_ebook" -mrproper: - $(DOCKER_CMD) "cd /opt/repo/book && make mrproper" +bake: + $(DOCKER_CMD) "cd /opt/repo/book && make bake" +website: + $(DOCKER_CMD) "cd /opt/repo/book && make website" + +# Debug helpers show_tools_version: $(DOCKER_CMD) "cd /opt/repo/book && make show_tools_version" From a8e98595c7d29ec1fa04178658621d14180d5837 Mon Sep 17 00:00:00 2001 From: Ced Date: Fri, 27 Oct 2023 21:16:22 +0100 Subject: [PATCH 06/21] Use parallel build on github release action --- .github/workflows/release-book.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-book.yml b/.github/workflows/release-book.yml index f10092b..65738ea 100644 --- a/.github/workflows/release-book.yml +++ b/.github/workflows/release-book.yml @@ -32,7 +32,7 @@ jobs: options: -v ${{ github.workspace }}:/app run: | cd /app/book - make bake + make -j bake - name: Release baked book to S3 uses: shallwefootball/s3-upload-action@master with: From 500f5e7dce2c7ef65517cbdccf2506e45b90d41b Mon Sep 17 00:00:00 2001 From: Ced Date: Fri, 27 Oct 2023 21:17:51 +0100 Subject: [PATCH 07/21] Limit validate CI to serif pdf target and ebook --- .github/workflows/validate-book-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-book-build.yml b/.github/workflows/validate-book-build.yml index 35aafa5..adf48e2 100644 --- a/.github/workflows/validate-book-build.yml +++ b/.github/workflows/validate-book-build.yml @@ -29,4 +29,4 @@ jobs: options: -v ${{ github.workspace }}:/app run: | cd /app/book - make -j build_pdf build_ebook + make -j build_serif_pdf build_ebook From 8ab6cad1fb0ac0f224193da34061e50a73da7a39 Mon Sep 17 00:00:00 2001 From: Ced Date: Fri, 27 Oct 2023 21:44:35 +0100 Subject: [PATCH 08/21] Add some targets back in docker makefile I now understand how they can be useful... --- makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index 6badc0e..8691e4b 100644 --- a/makefile +++ b/makefile @@ -2,7 +2,7 @@ DOCKER_IMAGE := ghcr.io/hendricius/the-sourdough-framework DOCKER_CMD := docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c .PHONY: bake build_pdf build_docker_image push_docker_image validate website -.PHONY: print_os_version start_shell printvars show_tools_version +.PHONY: print_os_version start_shell printvars show_tools_version mrproper # Dockers targets build_docker_image: @@ -17,12 +17,18 @@ push_docker_image: build_docker_image validate: $(DOCKER_CMD) "cd /opt/repo/book && make -j build_serif_pdf build_ebook" +build_pdf: + $(DOCKER_CMD) "cd /opt/repo/book && make" + bake: - $(DOCKER_CMD) "cd /opt/repo/book && make bake" + $(DOCKER_CMD) "cd /opt/repo/book && make -j bake" website: $(DOCKER_CMD) "cd /opt/repo/book && make website" +mrproper: + $(DOCKER_CMD) "cd /opt/repo/book && make mrproper" + # Debug helpers show_tools_version: $(DOCKER_CMD) "cd /opt/repo/book && make show_tools_version" From 1ce98026895a49f34e6834e52897076ccc45c88d Mon Sep 17 00:00:00 2001 From: cedounet <134267244+cedounet@users.noreply.github.com> Date: Sun, 29 Oct 2023 17:26:33 +0000 Subject: [PATCH 09/21] Makefile tools version (#266) * Fix details on tools version display in makefile - Show OS version - Use macro instead of harcoded tool for convert. --- book/makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/book/makefile b/book/makefile index f7d1de7..b08b1fe 100644 --- a/book/makefile +++ b/book/makefile @@ -288,7 +288,9 @@ quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc... show_tools_version: # Show version of tools used on the build machine - git log -n 1 @echo "" - - ${SHELL} --version + - uname -a + @echo "" + - $(SHELL) --version @echo "" - latexmk --version @echo "" @@ -310,11 +312,10 @@ show_tools_version: # Show version of tools used on the build machine @echo "" - ruby --version @echo "" - - convert --version + - $(CONVERT_PIC) --version @echo "" - rsync --version - # You can find the value of variable X with the following command: # make print-X print-%: ; @echo $* = $($*) # Print a makefile variable From 9d76ea1cf9fc520293621460e09032628902a346 Mon Sep 17 00:00:00 2001 From: Hendrik Kleinwaechter Date: Mon, 30 Oct 2023 23:41:04 +1300 Subject: [PATCH 10/21] Add default target --- makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/makefile b/makefile index 8691e4b..2756c5b 100644 --- a/makefile +++ b/makefile @@ -1,3 +1,5 @@ +.DEFAULT_GOAL := build_pdf + DOCKER_IMAGE := ghcr.io/hendricius/the-sourdough-framework DOCKER_CMD := docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash -c From 7537d4c36f658df9b6844509b8cb65d880553a1a Mon Sep 17 00:00:00 2001 From: cedounet <134267244+cedounet@users.noreply.github.com> Date: Mon, 30 Oct 2023 10:48:00 +0000 Subject: [PATCH 11/21] Update README wording for clarity (#267) * Update README wording for clarity * Add parallel builds to the README They are now safe and runs much faster. --- README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3a4c0dd..e3b7963 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ make Then you can check out the file `book/book.pdf` If you want to 🍞 bake all the versions including ebook variants (.pdf, .epub -in colour or size optimized Black&White), run: +in colour and size optimized Black&White), run: ```console make bake @@ -43,8 +43,9 @@ You can check the files in the folder `book/release/` ## 🍞 Baking the book locally (LaTeX) -Make sure you have `biber` and `latexmk` installed. Refer to your system's -installation instructions for LaTeX. To create the serif .pdf format, run: +Make sure you have `biber`, `latexmk` and ``ImageMagick`` installed. Refer to +your system's installation instructions for LaTeX. To create the serif .pdf +format, run: ```console cd book/ @@ -52,11 +53,11 @@ make ``` If you want to 🍞 bake all the versions including ebook variants (.pdf, .epub -in colour or size optimized Black&White), run: +in colour and size optimized Black&White), run: ```console cd book/ -make bake +make -j bake ``` You can check the files in the folder `book/release/` @@ -74,16 +75,16 @@ The below versions are automatically built on every push to the `main` branch. * [Download compiled .pdf version](https://www.the-bread-code.io/book.pdf) * [Download compiled .epub version](https://www.the-bread-code.io/book.epub) -There's an additional enhanced accessibility version using a sans serif font: +There's an additional enhanced accessibility version using a sans-serif font: -* [Download compiled .pdf version](https://www.the-bread-code.io/book-sans-serif.pdf) +* [Download compiled sans-serif .pdf version](https://www.the-bread-code.io/book-sans-serif.pdf) -An additional black and white ebook is provided with a greatly reduced file size. This -shrinks the book from more than 50MB down to ~5MB: +An additional black and white ebook is provided with a greatly reduced file +size. This shrinks the book from more than 50MB down to ~5MB: -* [Download compiled .epub version](https://www.the-bread-code.io/bw-book.epub) +* [Download compiled B&W .epub version](https://www.the-bread-code.io/bw-book.epub) -## Online HTML version (WIP) +## Online HTML version Head over to [https://www.the-sourdough-framework.com](https://www.the-sourdough-framework.com) From 6532f8d5f7e15eb6c07d15a6b4ff55dada12ff7f Mon Sep 17 00:00:00 2001 From: Ced Date: Mon, 30 Oct 2023 14:40:58 +0000 Subject: [PATCH 12/21] Ensure dir is created before image BW conversion Now that parallel build is enabled --- book/makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/book/makefile b/book/makefile index b08b1fe..ae96d6b 100644 --- a/book/makefile +++ b/book/makefile @@ -95,15 +95,18 @@ epub/%.epub: %.tex $(src_all) cover/cover-page.xbb bw-book-epub: mkdir -p bw-book-epub +bw-book-epub/OEBPS: bw-book-epub + mkdir -p bw-book-epub/OEBPS + copy_ebook_files: build_ebook | bw-book-epub $(RSYNC) book-epub/ bw-book-epub/ # We not convert SVG to B&W or lower res for now as they are super small # anyway -bw-book-epub/OEBPS/%.jpg: %.jpg +bw-book-epub/OEBPS/%.jpg: %.jpg | bw-book-epub/OEBPS $(CONVERT_PIC) $< $(REDUCE_PIC) $@ -bw-book-epub/OEBPS/%.png: %.png +bw-book-epub/OEBPS/%.png: %.png | bw-book-epub/OEBPS $(CONVERT_PIC) $< $(REDUCE_PIC) $@ epub/bw_book.epub: copy_ebook_files $(bw_images) From 14abcdcbf0f9e25c704ca042187a073665eabc61 Mon Sep 17 00:00:00 2001 From: Ced Date: Mon, 30 Oct 2023 15:23:59 +0000 Subject: [PATCH 13/21] Ensure copy happened before BW conversion as we have subdirs... --- book/makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/book/makefile b/book/makefile index ae96d6b..7a71ac4 100644 --- a/book/makefile +++ b/book/makefile @@ -103,10 +103,10 @@ copy_ebook_files: build_ebook | bw-book-epub # We not convert SVG to B&W or lower res for now as they are super small # anyway -bw-book-epub/OEBPS/%.jpg: %.jpg | bw-book-epub/OEBPS +bw-book-epub/OEBPS/%.jpg: %.jpg copy_ebook_files $(CONVERT_PIC) $< $(REDUCE_PIC) $@ -bw-book-epub/OEBPS/%.png: %.png | bw-book-epub/OEBPS +bw-book-epub/OEBPS/%.png: %.png copy_ebook_files $(CONVERT_PIC) $< $(REDUCE_PIC) $@ epub/bw_book.epub: copy_ebook_files $(bw_images) From a1eec0d84f8131a35f39f070371f3a8e853c787f Mon Sep 17 00:00:00 2001 From: Ced Date: Tue, 31 Oct 2023 09:21:42 +0000 Subject: [PATCH 14/21] Clean up makefile after BW ebook Accumulated some debts through panic debug as CI was broken... Nothing dramatic but could do with a bit of cleanup. Simplify dependency graph, might also make the whole thing faster when run in parallel --- book/makefile | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/book/makefile b/book/makefile index 7a71ac4..0e8c81c 100644 --- a/book/makefile +++ b/book/makefile @@ -87,33 +87,27 @@ book_serif/book.pdf: $(src_all) book_sans_serif/book_sans_serif.pdf: $(src_all) $(LATEX) -output-directory=book_sans_serif book_sans_serif.tex -.PHONY: bw_epub copy_ebook_files +.PHONY: copy_ebook_files epub/%.epub: %.tex $(src_all) cover/cover-page.xbb $(EBOOK) -f epub $< -bw-book-epub: - mkdir -p bw-book-epub - -bw-book-epub/OEBPS: bw-book-epub - mkdir -p bw-book-epub/OEBPS - -copy_ebook_files: build_ebook | bw-book-epub +copy_ebook_files: build_ebook $(RSYNC) book-epub/ bw-book-epub/ # We not convert SVG to B&W or lower res for now as they are super small # anyway -bw-book-epub/OEBPS/%.jpg: %.jpg copy_ebook_files +bw-book-epub/OEBPS/%.jpg: %.jpg + mkdir -p $(dir $@) $(CONVERT_PIC) $< $(REDUCE_PIC) $@ -bw-book-epub/OEBPS/%.png: %.png copy_ebook_files +bw-book-epub/OEBPS/%.png: %.png + mkdir -p $(dir $@) $(CONVERT_PIC) $< $(REDUCE_PIC) $@ epub/bw_book.epub: copy_ebook_files $(bw_images) cd bw-book-epub; zip -q9XrD ../epub/bw_book.epub ./ -bw_epub: epub/bw_book.epub | bw-book-epub - # Now with the rules # Expected usual rules first .PHONY: all @@ -279,9 +273,10 @@ website: html ../website/_bundle_install_done $(ruby_src) cd ../website && ruby modify_build.rb # Debug Stuff from now on -.PHONY: quick show_tools_version printvars +.PHONY: quick quick_ebook show_tools_version printvars # Those 2 targets allow fast debug cycles but not resolving references etc +# They also ignore dependencies and run each time you call them. quick: # run latex only once no biber, no references etc... $(LATEX) -e '$$max_repeat=1' -output-directory=book_serif book.tex From 5d89f81d526b22fec018a3925d05ecc34ea5492f Mon Sep 17 00:00:00 2001 From: Ced Date: Tue, 31 Oct 2023 14:34:34 +0000 Subject: [PATCH 15/21] Remove sans-serif ebook hacks Those are not needed anymore. - Symbolic links - Update .gitignore files --- .gitignore | 40 +++++++++------------------------------- book/book_sans_serif.tex | 4 +--- book/sourdough_book.tex | 1 - 3 files changed, 10 insertions(+), 35 deletions(-) delete mode 120000 book/sourdough_book.tex diff --git a/.gitignore b/.gitignore index 12d6473..d0c26f2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,53 +12,31 @@ *.run.xml *.html *.dlog +*.bak +*.opf book/book.out .vscode/ -book/book.synctex* -book/tikz-cache/* book/bookch* -book/content.opf -book/output-epub book/figures/*.png book/figures/*.pdf book/figures/*.in -book/tables/*.png -book/tables/*.pdf -book/release/* book/book*.4ct book/book*.4tc -book/book*.aux -book/book*.bbl -book/book*.bcf -book/book*.blg book/book*.css book/book*.dvi -book/book*.html book/book*.idv book/book*.lg -book/book*.log -book/book*.mobi -book/book*.azw3 -book/book*.epub book/book*.ncx book/book*.out -book/book*.pdf -book/book*.run.xml book/book*.tmp -book/book*.toc book/book*.xref -book/book*.html book/book*.svg -book/book-epub/ -book/book-mobi/ -book/book-azw3/ -*.bak -book_sans_serif/ -book_serif/ -release_sans_serif/ -book/book_sans_serif-epub/ +# Directories created during build +book/book_sans_serif/* +book/book_serif/* book/static_website_html/* +book/website/static_website_html/* +book/epub/ +book/book-epub/ book/bw-book-epub/* -epub/ -*.opf -website/static_website_html/* +book/release/* diff --git a/book/book_sans_serif.tex b/book/book_sans_serif.tex index 0377a38..4174a9f 100644 --- a/book/book_sans_serif.tex +++ b/book/book_sans_serif.tex @@ -1,4 +1,2 @@ \def\isaccessible{1} -% We have to use a symlink to book.tex to prevent tex4ebook to load book.ht4 -% before loading any other package and create conflicts -\input{sourdough_book.tex} +\input{book.tex} diff --git a/book/sourdough_book.tex b/book/sourdough_book.tex deleted file mode 120000 index c0a4f0d..0000000 --- a/book/sourdough_book.tex +++ /dev/null @@ -1 +0,0 @@ -book.tex \ No newline at end of file From ec254e80e03bc475dee021698110cf11a2dbace3 Mon Sep 17 00:00:00 2001 From: Ced Date: Wed, 1 Nov 2023 12:04:12 +0000 Subject: [PATCH 16/21] Fix the MIME type for BW ebook last fix only fixed the xml container not the MIME type :( --- book/makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/book/makefile b/book/makefile index 0e8c81c..b87fa33 100644 --- a/book/makefile +++ b/book/makefile @@ -106,6 +106,7 @@ bw-book-epub/OEBPS/%.png: %.png $(CONVERT_PIC) $< $(REDUCE_PIC) $@ epub/bw_book.epub: copy_ebook_files $(bw_images) + cd bw-book-epub; zip -q0X ../epub/bw_book.epub mimetype cd bw-book-epub; zip -q9XrD ../epub/bw_book.epub ./ # Now with the rules From d495757e15305086f9d88b695415b5298bf594f2 Mon Sep 17 00:00:00 2001 From: Ced Date: Thu, 2 Nov 2023 09:28:28 +0000 Subject: [PATCH 17/21] Stop on first error in quick target This is only useful when debugging so makes sense not to wait for the entire compilation. so support for epub though would require to change the config file with Make:htlatex { latex_par="-halt-on-error"} --- book/makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/makefile b/book/makefile index b87fa33..24b6149 100644 --- a/book/makefile +++ b/book/makefile @@ -279,7 +279,7 @@ website: html ../website/_bundle_install_done $(ruby_src) # Those 2 targets allow fast debug cycles but not resolving references etc # They also ignore dependencies and run each time you call them. quick: # run latex only once no biber, no references etc... - $(LATEX) -e '$$max_repeat=1' -output-directory=book_serif book.tex + $(LATEX) -e '$$max_repeat=1' -halt-on-error -output-directory=book_serif book.tex quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc... $(EBOOK) --mode draft -f epub book.tex From c7744097596bb2b27321939107adb10a9dfcf5b5 Mon Sep 17 00:00:00 2001 From: Ced Date: Thu, 2 Nov 2023 09:31:08 +0000 Subject: [PATCH 18/21] Factorize epub format We only build that right now so let's put in main macro --- book/makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/book/makefile b/book/makefile index 24b6149..fb9f4f8 100644 --- a/book/makefile +++ b/book/makefile @@ -1,6 +1,6 @@ # Macros for commands LATEX := latexmk -cd -pdflua -lualatex="lualatex -interaction=nonstopmode" -synctex=1 -use-make -EBOOK := tex4ebook --lua -d epub -c tex4ebook.cfg +EBOOK := tex4ebook --lua -d epub -f epub -c tex4ebook.cfg WEBSITE := make4ht --lua -c website.cfg -a debug -uf html5+tidy+common_domfilters+dvisvgm_hashes CLEAN := latexmk -cd -lualatex -c -use-make CHECK_1 := lacheck @@ -90,7 +90,7 @@ book_sans_serif/book_sans_serif.pdf: $(src_all) .PHONY: copy_ebook_files epub/%.epub: %.tex $(src_all) cover/cover-page.xbb - $(EBOOK) -f epub $< + $(EBOOK) $< copy_ebook_files: build_ebook $(RSYNC) book-epub/ bw-book-epub/ @@ -282,7 +282,7 @@ quick: # run latex only once no biber, no references etc... $(LATEX) -e '$$max_repeat=1' -halt-on-error -output-directory=book_serif book.tex quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc... - $(EBOOK) --mode draft -f epub book.tex + $(EBOOK) --mode draft book.tex show_tools_version: # Show version of tools used on the build machine - git log -n 1 From 8640ed18edb154146b1fe85c81996ba3b9de6885 Mon Sep 17 00:00:00 2001 From: Hendrik Kleinwaechter Date: Tue, 7 Nov 2023 21:52:23 +0100 Subject: [PATCH 19/21] Add graphic showcasing evolution of life (#270) * Add graphic showcasing evolution of life * Add PR Feedback * Add comment * Update date format * Fix small mistakes * Add pangea, rewrite intro * Fix citation, improve intro. Thanks alanblue * Add indicator for full span and months * Color improvements --- .../fig-life-planet-sourdough-timeline.tex | 70 +++++++++++++++++ book/figures/flowcharts_tikz.tex | 5 ++ book/history/sourdough-history.tex | 77 +++++++++++++++++-- book/references.bib | 27 +++++++ 4 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 book/figures/fig-life-planet-sourdough-timeline.tex diff --git a/book/figures/fig-life-planet-sourdough-timeline.tex b/book/figures/fig-life-planet-sourdough-timeline.tex new file mode 100644 index 0000000..0db4ee7 --- /dev/null +++ b/book/figures/fig-life-planet-sourdough-timeline.tex @@ -0,0 +1,70 @@ +\begin{tikzpicture} + % Draw horizontal line + \draw[line width=1pt] (0,0) -- (\textwidth,0); + + % Define the width of each segment + \pgfmathsetlengthmacro{\segmentwidth}{\textwidth/12} + + % Draw lines for the events, higher up so that they don't overflow the text + % Placing the lines has been a bit manual work of trying different values + % Maritime bacteria. + + \draw[line width=1pt] (2.8*\segmentwidth,1) -- (2.8*\segmentwidth,0.2); + % Eukaryotes + \draw[line width=1pt] (5.8*\segmentwidth,1.5) -- (5.8*\segmentwidth,0.2); + % First bacteria on land + \draw[line width=1pt] (9.1*\segmentwidth,-1.25) -- (9.1*\segmentwidth,-0.2); + % Maritime fungi ancestors + \draw[line width=1pt] (9.5*\segmentwidth,-2) -- (9.5*\segmentwidth,-0.2); + % Fungi on land + \draw[line width=1pt] (10.8*\segmentwidth,-2.75) -- (10.8*\segmentwidth,-0.2); + % Yeasts on land + \draw[line width=1pt] (11.1*\segmentwidth,-3.0) -- (11.1*\segmentwidth,-0.2); + % First dinosaurs + \draw[line width=1pt] (11.4*\segmentwidth,0.5) -- (11.4*\segmentwidth,0.2); + % Pangea begins to rift apart + \draw[line width=1pt] (11.6*\segmentwidth,1) -- (11.6*\segmentwidth,0.2); + % Dinosaur extinction + \draw[line width=1pt] (11.9*\segmentwidth,1.5) -- (11.9*\segmentwidth,0.2); + + % Special lines for december events since they are so close togehter + \draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (12.0*\segmentwidth,0.2); % Main branch + \draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (11.75*\segmentwidth,2.5); % Branch to first humans + \draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (11.75*\segmentwidth,3.0); % Branch to Jordan + \draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (11.75*\segmentwidth,3.5); % Branch to Pasteur + + % Draw months and month separators + \foreach \i/\month in {0/Jan, 1/Feb, 2/Mar, 3/Apr, 4/May, 5/Jun, 6/Jul, 7/Aug, 8/Sep, 9/Oct, 10/Nov, 11/Dec} { + % Separators + \draw[line width=1pt] (\i*\segmentwidth,0.1) -- (\i*\segmentwidth,-0.1); + % Month names + \node[timeline_event, below] at ({(\i+0.5)*\segmentwidth},-0.1) {\month}; + } + \draw[line width=1pt] (\textwidth,0.1) -- (\textwidth,-0.1); + + % Full timeline width for billion years + \draw[line width=1pt] (0,-3.8) -- node[midway, timeline_timespan] {5.45 billion years} (\textwidth,-3.8); + \draw[line width=1pt] (0,-3.7) -- (0,-3.9); + \draw[line width=1pt] (\textwidth,-3.7) -- (\textwidth,-3.9); + + % Indicator for the period of 3 months = 1.1 billion years + \draw[line width=1pt] (0,-1.0) -- node[midway, timeline_timespan] {1.11 billion years} ({\segmentwidth * 3},-1.0); + \draw[line width=1pt] (0,-0.9) -- (0,-1.1); + \draw[line width=1pt] ({\segmentwidth * 3},-0.9) -- ({\segmentwidth * 3},-1.1); + + % Place events on the timeline with dates using the timeline_event style + % As a calculation I used (4.54 billion years / 12 months = 0.3785 billion years/month. + \node[timeline_event, above] at (2.0*\segmentwidth,1) {Mar 25 - First maritime bacteria and archae}; + \node[timeline_event, above] at (4.50*\segmentwidth,1.5) {June 25 - First organisms with nuklei (eukaryotes)}; + \node[timeline_event, above] at (7.8*\segmentwidth,-1.5) {Oct 4 - First bacteria on land}; + \node[timeline_event, above] at (8.0*\segmentwidth,-2.25) {Oct 15 - First maritime ancestors of fungi}; + \node[timeline_event, above] at (9.7*\segmentwidth,-2.75) {Nov 24 - Fungi on land}; + \node[timeline_event, above] at (10.5*\segmentwidth,-3.25) {Dec 3 - Yeasts on land}; + \node[timeline_event, above] at (10.2*\segmentwidth,0.5) {Dec 14 - First dinosaurs}; + \node[timeline_event, above] at (9.8*\segmentwidth,1) {Dec 17 - Pangea begins to rift apart}; + \node[timeline_event, above] at (10.33*\segmentwidth,1.5) {Dec 29 - Dinosaurs go extinct}; + \node[timeline_event, above, anchor=east, align=right] at (11.75*\segmentwidth,2.5) {Dec 31 - First humans}; + \node[timeline_event, above, anchor=east, align=right] at (11.75*\segmentwidth,3.0) {Dec 31 - Sourdough in Jordan (23:59:55)}; + \node[timeline_event, above, anchor=east, align=right] at (11.75*\segmentwidth,3.5) {Dec 31 - Louis Pasteur isolated yeast (23:59:59)}; + +\end{tikzpicture} diff --git a/book/figures/flowcharts_tikz.tex b/book/figures/flowcharts_tikz.tex index ece37e2..5a8bb6a 100644 --- a/book/figures/flowcharts_tikz.tex +++ b/book/figures/flowcharts_tikz.tex @@ -25,3 +25,8 @@ decoration={calligraphic brace, amplitude=3mm, raise=1mm}, very thick, pen colour={black} ] \tikzstyle{loop} = [arc, draw=codeblack, line width=0.4mm] + +\tikzstyle{timeline_event}=[align=center, fill=white, inner sep=2pt] + +\tikzstyle{timeline_timespan} = [rectangle, draw=codeblack, fill=pinkpic, text=black, + text centered, rounded corners, line width=0.4mm] diff --git a/book/history/sourdough-history.tex b/book/history/sourdough-history.tex index f767f98..a7fbf4f 100644 --- a/book/history/sourdough-history.tex +++ b/book/history/sourdough-history.tex @@ -9,11 +9,78 @@ lessons from the past. \end{quoting} -Sourdough has been made since ancient times. The exact origins of fermented +The story of sourdough bread begins in prehistoric oceans. These oceans were the +birthplace of all life on Earth. To better envision the vast history of +our planet, lets create a timeline in one~year/365~days. On this scale, +January~1 signifies Earth's +formation 4.54~billion years ago. Midnight on December~31 is the present. +Each day represents roughly 12~million years. This technique simplifies the +complexity of time but also renders the extraordinary expanse of our planet's +history into a more graspable timeframe. We humans, are in fact a recent +addition to our planet, so young that we made our first appearance on +the evening of December~31. It seems that humans managed to arrive just +in time to join the celebration at the end of the year. + +The story of sourdough bread begins in ancient oceans. These oceans were the +birthplace of all Earth's life. To better envision the vast history of +our planet lets create a timeline of 1~year. On this scale, January~1 signifies Earth's +formation 4.54~billion years ago. Midnight on December~31 is our present. +Each day represents roughly 12~million years. This technique simplifies the +complexity of time but also renders the extraordinary expanse of our planet's +history into a more graspable frame. We humans are in fact a recent addition +to our planet, so young that we made appearance on the evening of December~31. +It seems that humans managed to arrive just in time to join +the celebration at year's end. + +On March~25, the oceans birthed the first single-celled bacteria. In these +waters, another single-celled life form, \emph{archaea}, also thrived. These +organisms inhabit extreme environments, from boiling vents to icy waters. + +\begin{figure}[!htb] +\begin{center} + \input{figures/fig-life-planet-sourdough-timeline.tex} + \caption[Sourdough microbiology timeline]{Timeline of significant events + starting from the first day of Earth's existence, + divided into months, and extending to the present day, + marked at midnight. This visualization shows the pivotal steps + of life and sourdough on earth.}% +\end{center} +\end{figure} + +Whoever comes first first, bacteria or archaea, remains debated. For three +months (or approximately 1.1~billion years), these life forms dominated +the oceans. Then, on June~25 in an highly unlikely event, an archaeon consumed a bacterium. +Instead of digesting it, they formed a symbiotic relationship. This led to the +first nucleated organisms, marking an evolutionary milestone. This event lead +to the development of plants, fungi and also ultimately humans. + +Life stayed aquatic for another three months. +On October~4, bacteria first colonized land. By October~15, the +first aquatic fungi appeared. They adapted and, by November~24, had colonized +land. + +By December~3rd, yeasts emerged on land. This laid groundwork for bread-making. +Jump 140~million years to December~14, and dinosaurs arose. Just a couple +of days after their appearance on December~17 the super continent pangea +started to rift apart, reshaping the continents into their current form. +The dinosaurs reigned until December~29 when they faced extinction. +Another 25~million years later, or our timeline's 2~days after the dinosaur +extinction, humans appeared. + +A few hours later after the arrival of humans, a more subtle culinary +revolution was unfolding. By \num{12000}~BC, just 5 seconds before our metaphorical +midnight, the first sourdough breads were being baked in ancient Jordan. A blink of +an eye later, or 4~seconds in our time compression, Pasteur's groundbreaking work +with yeasts set the stage for modern bread-making. From the moment this book +began to take shape to your current reading, only milliseconds have ticked by~\cite{Yong_2017}. + +Now delving deeper into the realm of sourdough, it can likely be traced to aforementioned +Ancient Jordan~\cite{jordan+bread}. Looking at the earth's timeline sourdough +bread can be considered a very recent invention. + +The exact origins of fermented bread are, however, unknown. One of the most ancient preserved -sourdough breads has been excavated in Switzerland. -However, based on recent research, some scientists speculate that sourdough -bread had already been made in \num{12000}~BC in ancient Jordan~\cite{jordan+bread}. +sourdough breads has been excavated in Switzerland~\cite{switzerland+bread}. \begin{figure}[ht] \includegraphics[width=\textwidth]{einkorn-crumb} @@ -28,7 +95,7 @@ dough and at her return a few days later, she noticed that the dough had increased in size and smelled funky. She decided to bake the dough anyway and was rewarded with a much lighter, softer, better tasting bread dough. From that day -on she continued to make bread this way. +on she continued to make bread this way~\cite{egyptian+bread}. Little did the people back then know that tiny microorganisms were the reason the bread was better. It is not clear when diff --git a/book/references.bib b/book/references.bib index 39e1c6d..6184dc4 100644 --- a/book/references.bib +++ b/book/references.bib @@ -98,6 +98,33 @@ howpublished = {\url{https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6077754/}} } +@article{switzerland+bread, + author = {Pasquale Catzeddu}, + title = {Flour and Breads and their Fortification in Health and Disease Prevention}, + pages = {37--46}, + year = {2011} +} + +@book{Yong_2017, + place = {London}, + title = {I contain multitudes: The microbes within US and a grander view of life}, + publisher = {Vintage}, + author = {Yong, Ed}, + year = {2017}, + pages = {5--9} +} + +@article{egyptian+bread, + title = {Investigation of ancient Egyptian baking and brewing methods by correlative microscopy}, + volume = {273}, + DOI = {10.1126/science.273.5274.488}, + number = {5274}, + journal = {Science}, + author = {Samuel, Delwen}, + year = {1996}, + pages = {488–490} +} + @article{vienna+breadrolls, author = {Eben Norton Horsford}, title = {Report on Vienna bread}, From ca62dd31503434c83415ea9f79fe3286a85ce84c Mon Sep 17 00:00:00 2001 From: Hendrik Kleinwaechter Date: Wed, 8 Nov 2023 22:33:29 +1300 Subject: [PATCH 20/21] Fix website build dir --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d0c26f2..b92da4e 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,7 @@ book/book*.svg book/book_sans_serif/* book/book_serif/* book/static_website_html/* -book/website/static_website_html/* +website/static_website_html/* book/epub/ book/book-epub/ book/bw-book-epub/* From 1a5d1847b61433c6451100469db0cb6fa626d02e Mon Sep 17 00:00:00 2001 From: Anthony Atkinson Date: Wed, 8 Nov 2023 04:43:40 -0500 Subject: [PATCH 21/21] Permalinks for website section heads (#272) * Permalinks for website section heads * Tabs vs spaces strikes again --- book/style.css | 12 ++++++++++++ website/assets/script.js | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/book/style.css b/book/style.css index 7a1c2a2..7d919df 100644 --- a/book/style.css +++ b/book/style.css @@ -62,6 +62,18 @@ main.main-content,main.titlepage,div.footnotes{ padding:1rem; } +.sectionHead a.permalink { + opacity: 0.5; + text-decoration: none; + font-size: 0.75rem; + vertical-align: top; + line-height: 0.8rem; + margin-left: 0.25rem; + padding-top: 0.2rem; + color: black; + display: inline-block; +} + p.indent, p.noindent{ text-indent: 0; text-align: justify; diff --git a/website/assets/script.js b/website/assets/script.js index 69c4906..e7127e5 100644 --- a/website/assets/script.js +++ b/website/assets/script.js @@ -8,4 +8,14 @@ document.addEventListener('DOMContentLoaded', function() { }); } }); + + // Add permalinks to headers + var heads = document.querySelectorAll('.sectionHead'); + heads.forEach(function (head) { + let permalink = document.createElement("a"); + permalink.href = '#' + head.id; + permalink.classList.add('permalink'); + permalink.append('🔗'); + head.append(permalink); + }); });