mirror of
https://github.com/hendricius/the-sourdough-framework
synced 2025-11-08 20:21:12 -06:00
Merge branch 'main' into 225-ebook-situation
This commit is contained in:
@@ -1,25 +1,28 @@
|
||||
\begin{tikzpicture}[node distance = 3cm, auto]
|
||||
\node [start] (init) {Bulk fermentation};
|
||||
\node [block, right of=init] (check_dough) {Check the dough};
|
||||
\node [block, right of=init, node distance=4cm] (check_dough) {Check the dough};
|
||||
\node [block, right of=check_dough, node distance=4cm] (size_increase) {Check dough size increase};
|
||||
\node [block, below of=size_increase, node distance=2cm] (ph_value) {Check dough pH value};
|
||||
\node [block, below of=ph_value, node distance=2cm] (smell) {Check dough smell};
|
||||
\node [decision, right of=ph_value, node distance=4cm] (dough_ready) {Dough ready?};
|
||||
\node [success, below of=dough_ready] (divide_preshape) {Divide and preshape};
|
||||
\node [decision, below of=smell] (dough_flattened) {Dough flattened out?};
|
||||
\node [block, below of=check_dough, node distance=3cm] (wait_60_minutes) {Wait\\ 60~minutes};
|
||||
\node [block, below of=wait_60_minutes, node distance=4cm] (stretch_fold) {Stretch and fold};
|
||||
\node [decision, right of=size_increase, node distance=4cm] (dough_ready) {Dough ready?};
|
||||
\node [success] at(dough_ready |- smell) (divide_preshape) {Divide and preshape};
|
||||
\node [decision, above of=size_increase] (dough_flattened) {Dough flattened out?};
|
||||
\node [block, above of=check_dough] (wait_60_minutes) {Wait\\ 60~minutes};
|
||||
\node [block, above of=wait_60_minutes] (stretch_fold) {Stretch and fold};
|
||||
|
||||
\path [line] (init) -- (check_dough);
|
||||
\path [line] (check_dough) -- (size_increase);
|
||||
\path [line] (check_dough) -- node{or} (ph_value);
|
||||
\path [line] (check_dough) -- node{or} (smell);
|
||||
% Tricks not to get double lines
|
||||
\path [line] (check_dough) ++(2, -2) -- node{or} (ph_value);
|
||||
\path [line] (check_dough) ++(2, 0) -- node{} ++(0, -4) -- node{or} (smell);
|
||||
\path [line] (check_dough) ++(2, -4) -- node{or} (smell);
|
||||
\path [line] (size_increase) -- (dough_ready);
|
||||
\path [line] (ph_value) -- (dough_ready);
|
||||
\path [line] (smell) -- (dough_ready);
|
||||
% Same tricks not to get double lines and also we do _not_ want arrows
|
||||
\path [draw, thick] (ph_value) -- node{} ++(2, 0);
|
||||
\path [draw, thick] (smell) -| node{} ++(2, 4);
|
||||
\path [line] (dough_ready) -- node{yes} (divide_preshape);
|
||||
\path [line] (dough_ready) -- node{no} (dough_flattened);
|
||||
\path [line] (dough_flattened) -- node{yes} (stretch_fold);
|
||||
\path [line] (dough_ready) |- node[right=3pt]{no} (dough_flattened);
|
||||
\path [line] (dough_flattened) |- node[right=3pt]{yes} (stretch_fold);
|
||||
\path [line] (dough_flattened) -- node{no} (wait_60_minutes);
|
||||
\path [line] (stretch_fold) -- (wait_60_minutes);
|
||||
\path [line] (wait_60_minutes) -- (check_dough);
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
\node [start] (init) {Dividing required?};
|
||||
\node [decision, right of=init, node distance=5cm] (more_than_one_loaf) {More than 1 loaf?};
|
||||
\node [success, right of=more_than_one_loaf, node distance=5cm] (yes) {Yes};
|
||||
\node [success, below of=yes, node distance=3cm] (no) {No};
|
||||
\node [success, below of=yes] (no) {No};
|
||||
\path [line] (init) -- (more_than_one_loaf);
|
||||
\path [line] (more_than_one_loaf) -- (yes);
|
||||
\path [line] (more_than_one_loaf) -- (no);
|
||||
\path [line] (more_than_one_loaf.south) -- node{} ++(0, -1) |- (no);
|
||||
\end{tikzpicture}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
\begin{tikzpicture}[node distance = 3cm, auto]
|
||||
\begin{tikzpicture}[node distance = 4cm, auto]
|
||||
\node [start] (init) {Homogenize recipe ingredients};
|
||||
\node [block, right of=init, node distance=3cm] (wait1) {Wait\\15~minutes};
|
||||
\node [block, right of=init] (wait1) {Wait\\15~minutes};
|
||||
\path [line] (init) -- (wait1);
|
||||
\node [block, right of=wait1, node distance=3cm] (knead1) {Knead 5~minutes};
|
||||
\path [line] (wait1) -- (knead1);
|
||||
\node [block, right of=knead1, node distance=3cm] (wait2) {Wait\\15~minutes};
|
||||
\path [line] (knead1) -- (wait2);
|
||||
\node [decision, below of=wait2, node distance=3cm] (windowpane_test) {Window-pane?};
|
||||
\node [block, right of=wait1] (knead) {Knead 5~minutes};
|
||||
\path [line] (wait1) -- (knead);
|
||||
\node [block, right of=knead] (wait2) {Wait\\15~minutes};
|
||||
\path [line] (knead) -- (wait2);
|
||||
\node [decision, below of=wait2, node distance=4cm] (windowpane_test) {Window-pane?};
|
||||
\path [line] (wait2) -- (windowpane_test);
|
||||
\path [line] (windowpane_test) -- node{no} (knead1);
|
||||
\node [decision, left of=windowpane_test, node distance=4.5cm] (more_water) {Bassinage for more water?};
|
||||
\path [line] (windowpane_test.east) -- node{no} ++(1, 0) -- node{} ++(0, 5.7) -| (knead.north);
|
||||
\node [decision] at (windowpane_test -| knead) (more_water) {Bassinage for more water?};
|
||||
\path [line] (windowpane_test) -- node{yes} (more_water);
|
||||
\node [block, left of=more_water, node distance=4.5cm] (add_water) {Add water};
|
||||
\node [block] at (wait1 |- more_water) (add_water) {Add water};
|
||||
\path [line] (more_water) -- node{yes} (add_water);
|
||||
\path [line] (add_water) -- (knead1);
|
||||
\node [decision, below of=more_water, node distance=3.5cm] (dough_sample) {Aliquot sample?};
|
||||
\path [line] (add_water.north east) -- (knead.south west);
|
||||
\node [decision, below of=more_water, node distance=4.5cm] (dough_sample) {Aliquot sample?};
|
||||
\path [line] (more_water) -- node{no} (dough_sample);
|
||||
\node [block, right of=dough_sample, node distance=4.5cm] (dough_ball) {Make round dough ball};
|
||||
\node [block] at (dough_sample -| wait2) (dough_ball) {Make round dough ball};
|
||||
\path [line] (dough_sample) -- node{no} (dough_ball);
|
||||
\node [block, below of=dough_sample, node distance=3cm] (extract_sample) {Extract sample};
|
||||
\node [block, below of=dough_sample] (extract_sample) {Extract sample};
|
||||
\path [line] (dough_sample) -- node{yes} (extract_sample);
|
||||
\path [line] (extract_sample) -- (dough_ball);
|
||||
\node [success, below of=dough_ball, node distance=3cm] (begin_bulk) {Begin bulk fermentation};
|
||||
\path [line] (extract_sample.north east) -- (dough_ball.south west);
|
||||
\node [success, below of=dough_ball] (begin_bulk) {Begin bulk fermentation};
|
||||
\path [line] (dough_ball) -- (begin_bulk);
|
||||
\end{tikzpicture}
|
||||
|
||||
@@ -26,12 +26,15 @@
|
||||
\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);
|
||||
% Additional line for dinosaurs since it is so close
|
||||
\draw[line width=1pt] (11.9*\segmentwidth,1.49) -- (11.70*\segmentwidth,1.85);
|
||||
|
||||
% 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
|
||||
% Move pasteur down a bit so the lines look like they cross
|
||||
\draw[line width=1pt] (12.0*\segmentwidth,2.99) -- (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} {
|
||||
@@ -58,7 +61,7 @@
|
||||
\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] at (10.15*\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)};
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
\begin{tikzpicture}[node distance = 3cm, auto]
|
||||
\node [decision_start] (init) {Room temperature proofing?};
|
||||
\node [decision, right of=init, node distance=9cm] (retard_bake_decision) {Bake in less than \qty{10}{\hour} from now?};
|
||||
\node [decision, right of=init, node distance=8cm] (retard_bake_decision) {Bake in less than \qty{10}{\hour} from now?};
|
||||
\node [block, below of=init, node distance=4cm] (poke) {Poke the dough};
|
||||
\node [block, right of=poke, node distance=4cm] (wait_poke) {Wait\\ 15~minutes};
|
||||
\node [decision, below of=poke, node distance=3cm] (dent_visible_decision) {Dent still visible after 1~minute?};
|
||||
\node [block, left of=poke] (wait_poke) {Wait\\ 15~minutes};
|
||||
\node [decision, below of=poke] (dent_visible_decision) {Dent still visible after one~minute?};
|
||||
\node [success, right of=dent_visible_decision, node distance=4cm] (bake) {Score and bake};
|
||||
\node [block, below of=retard_bake_decision, node distance=3cm] (wait_retard) {Wait\\ 15~minutes};
|
||||
\node [block, below of=wait_retard, node distance=3cm] (retard) {Proof in fridge at \qty{4}{\degreeCelsius} (\qty{40}{\degF})};
|
||||
\node [block, right of=wait_retard, node distance=3cm] (move_to_fridge) {Move dough directly to fridge};
|
||||
\node [block] at (retard_bake_decision |- poke) (wait_retard) {Wait\\ 15~minutes};
|
||||
\node [block] at (wait_retard |- bake) (retard) {Proof in fridge at \qty{4}{\degreeCelsius} (\qty{40}{\degF})};
|
||||
\path [line] (init) -- node{yes} (poke);
|
||||
\path [line] (init) -- node{no} (retard_bake_decision);
|
||||
\path [line] (poke) -- (dent_visible_decision);
|
||||
\path [line] (dent_visible_decision) -- node{yes} (bake);
|
||||
\path [line] (dent_visible_decision) -- node{no} (wait_poke);
|
||||
\path [line] (dent_visible_decision.west) -- node{no} ++(-1.4, 0) -- node{} (wait_poke.south);
|
||||
\path [line] (wait_poke) -- (poke);
|
||||
\path [line] (retard_bake_decision) -- node{yes} (wait_retard);
|
||||
\path [line] (retard_bake_decision) -- node{no} (move_to_fridge);
|
||||
\path [line] (retard_bake_decision.east) -- node{no} ++(1, 0) |- node{} (retard.east);
|
||||
\path [line] (wait_retard) -- (retard);
|
||||
\path [line] (move_to_fridge) -- (retard);
|
||||
\path [line] (retard) -- (bake);
|
||||
\end{tikzpicture}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
\begin{tikzpicture}[node distance = 3cm, auto]
|
||||
\node [start] (init) {Begin shaping};
|
||||
\node [decision, right of=init, node distance=5cm] (overfermented_decision) {Dough overly sticky or dough tears?};
|
||||
\node [decision, right of=init, node distance=4cm] (overfermented_decision) {Dough overly sticky or dough tears?};
|
||||
\node [block, right of=overfermented_decision, node distance=4cm] (overfermented) {Your dough is likely overfermented};
|
||||
\node [fail, right of=overfermented, node distance=3cm] (loafpan) {Move to loaf pan, short proof, then bake directly};
|
||||
\node [block, below of=init, node distance=4cm] (shaping_technique) {Proceed with shaping technique};
|
||||
\node [block, right of=shaping_technique, node distance=3cm] (flour) {Flour shaped dough};
|
||||
\node [block, right of=flour, node distance=3cm] (banneton) {Place upside down in banneton};
|
||||
\node [success, right of=banneton, node distance=3cm] (proof) {Begin proofing};
|
||||
\node [fail, right of=overfermented, node distance=4cm] (loafpan) {Move to loaf pan, short proof, then bake directly};
|
||||
\node [block, below of=overfermented_decision, node distance=4cm] (shaping_technique) {Proceed with shaping technique};
|
||||
\node [block, right of=shaping_technique] (flour) {Flour shaped dough};
|
||||
\node [block, right of=flour] (banneton) {Place upside down in banneton};
|
||||
\node [success, right of=banneton] (proof) {Begin proofing};
|
||||
\path [line] (init) -- (overfermented_decision);
|
||||
\path [line] (overfermented_decision) -- node{yes} (overfermented);
|
||||
\path [line] (overfermented_decision) -- node{no} (shaping_technique);
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
\begin{tikzpicture}[node distance = 3cm, auto]
|
||||
\begin{tikzpicture}[node distance = 3.2cm, auto]
|
||||
\node [start] (init) {Ready starter};
|
||||
\node [block, right of=init, node distance=3cm] (mix_ingredients) {Mix ingredients};
|
||||
\node [block, right of=mix_ingredients, node distance=3cm] (dough_strength) {Create dough strength};
|
||||
\node [block, right of=dough_strength, node distance=3cm] (bulk) {Bulk ferment};
|
||||
\node [decision, below of=dough_strength, node distance=3cm] (divide_test) {Making 1 loaf?};
|
||||
\node [block, left of=divide_test, node distance=3cm] (divide) {Divide};
|
||||
\node [block, left of=divide, node distance=3cm] (preshape) {Preshape};
|
||||
\node [block, below of=preshape, node distance=3cm] (shape) {Shape};
|
||||
\node [block, right of=shape, node distance=3cm] (proof) {Proof};
|
||||
\node [success, right of=proof, node distance=3cm] (bake) {Bake};
|
||||
\node [block, right of=init] (mix_ingredients) {Mix ingredients};
|
||||
\node [block, right of=mix_ingredients] (dough_strength) {Create dough strength};
|
||||
\node [block, right of=dough_strength] (bulk) {Bulk ferment};
|
||||
\node [decision, below of=bulk] (divide_test) {Making one loaf?};
|
||||
\node [block, right of=divide_test] (divide) {Divide};
|
||||
\node [block, below of=divide] (preshape) {Preshape};
|
||||
\node [block, below of=divide_test] (shape) {Shape};
|
||||
\node [block, left of=shape] (proof) {Proof};
|
||||
\node [success, left of=proof] (bake) {Bake};
|
||||
\path [line] (init) -- (mix_ingredients);
|
||||
\path [line] (mix_ingredients) -- (dough_strength);
|
||||
\path [line] (dough_strength) -- (bulk);
|
||||
|
||||
@@ -25,7 +25,7 @@ When should I~stop the fermentation? There is a lot of information
|
||||
out there. I~dug through most of it and have tried almost everything.
|
||||
In many cases the information was wrong; in other cases, I~found another
|
||||
valuable puzzle piece. Aggregating all this
|
||||
information was one of my main motivations to start The Bread Code.
|
||||
information was one of my main motivations to start \texttt{The Bread Code}.
|
||||
My key learning was that there is no recipe that
|
||||
you can blindly follow. You will always have to adapt the recipe
|
||||
to your locally available tools and environment.
|
||||
@@ -209,7 +209,8 @@ Find below an example recipe for 1 loaf including baker's math calculation:
|
||||
\begin{itemize}
|
||||
\item \qty{400}{\gram} of bread flour
|
||||
\item \qty{100}{\gram} of whole-wheat flour
|
||||
\item \textbf{\qty{500}{\gram} of flour in total}
|
||||
% Manual unit so we can use emphasis
|
||||
\item \emph{500~g of flour in total}
|
||||
\item \qtyrange{300}{450}{\gram} of room temperature water (\qty{60}{\percent} up to \qty{90}{\percent}). More on
|
||||
this topic in the next chapter.
|
||||
\item \qty{50}{\gram} of stiff sourdough starter (\qty{10}{\percent})
|
||||
@@ -223,7 +224,8 @@ recipe would look like this:
|
||||
\begin{itemize}
|
||||
\item \qty{1800}{\gram} of bread flour
|
||||
\item \qty{200}{\gram} of whole-wheat flour
|
||||
\item \textbf{\qty{2000}{\gram} of flour, equaling 4 loaves}
|
||||
% Manual unit so we can use emphasis again
|
||||
\item \emph{2000 g of flour}, equaling 4 loaves
|
||||
\item \qty{1200}{\gram} up to \qty{1800}{\gram} of room temperature water (60 to \qty{90}{\percent})
|
||||
\item \qty{200}{\gram} of stiff sourdough starter (\qty{10}{\percent})
|
||||
\item \qty{40}{\gram} of salt (\qty{2}{\percent})
|
||||
@@ -787,7 +789,7 @@ this is not an option for an inexperienced baker. As
|
||||
you make more and more dough, you will be able to judge
|
||||
the dough's state by touching it.
|
||||
|
||||
My go-to method for beginners is to use an \textbf{Aliquot jar}.
|
||||
My go-to method for beginners is to use an \emph{Aliquot jar}.
|
||||
The aliquot is a sample that you extract from your dough. The
|
||||
sample is extracted after creating the initial dough strength.
|
||||
You monitor the aliquot's size increase to judge the
|
||||
@@ -1610,8 +1612,8 @@ banneton should now be facing you.
|
||||
\label{fig:artistic-scoring}
|
||||
\end{figure}
|
||||
|
||||
The scoring cut for done at a \qty{45}{\angle} angle relative to the dough's
|
||||
surface slightly off the dough's center. With the \qty{45}{\angle} angle cut
|
||||
The scoring cut for done at a \ang{45}~angle relative to the dough's
|
||||
surface slightly off the dough's center. With the \ang{45}~angle cut
|
||||
the overlaying side will rise more in the oven than the other side.
|
||||
This way you will achieve a so-called \emph{ear} on the final bread.
|
||||
The ear is a thin crisp edge that offers intriguing texture
|
||||
@@ -1621,7 +1623,7 @@ a good loaf into a great loaf.
|
||||
|
||||
\begin{figure}[htb!]
|
||||
\includegraphics[width=\textwidth]{bread-scoring-angle}
|
||||
\caption[Scoring angle]{The \qty{45}{\angle} angle at which you score the
|
||||
\caption[Scoring angle]{The \ang{45}~angle at which you score the
|
||||
dough is relative to the surface of the dough. When scoring more towards
|
||||
the side, you have to adjust the angle to achieve the ear on your
|
||||
bread.}%
|
||||
|
||||
Reference in New Issue
Block a user