Public
Edited
May 27, 2020
1 fork
4 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
md`## Notes

Keep in mind that:

* adding a tablespoon (~8g, depending the type) of flour to the dough knocks down its hydration by ${Math.round(tbsp_flour_hydration_dec * 100) / 100}%;
* adding a tablespoon (15ml) of water bumps up the dough's hydration by ${Math.round(tbsp_water_hydration_inc * 100) / 100}%.

If you add:

* _${viewof water_add}${water_add}ml water_ (~${Math.round(water_add/TBSP_ML)} tbsp.), and
* _${viewof flour_add}${flour_add}g flour_ (~${Math.round(flour_add/TBSP_G_FLOUR)} tbsp.)

to the original mix, you get _${Math.round((water + water_add)/(flour + flour_add) * 100)}% hydration_.

`
Insert cell
Insert cell
Insert cell
Insert cell
total_initial = total_final / 0.8
Insert cell
bpc = w => w / (white_flour + whole_wheat_flour) * 100
Insert cell
Insert cell
flour = total_initial / (1 + hydration / 100)
Insert cell
water = flour * hydration / 100
Insert cell
starter_flour = flour * starter_pc / (100 + starter_pc)
Insert cell
white_flour = flour * white_flour_pc / (100 + starter_pc)
Insert cell
whole_wheat_flour = flour * (100 - white_flour_pc) / (100 + starter_pc)
Insert cell
salt = flour * salt_pc / 100
Insert cell
sponge_flour = water / sponge_hydration * 100
Insert cell
tbsp_water_hydration_inc = hydration_inc(TBSP_ML)
Insert cell
tbsp_flour_hydration_dec = hydration_dec(TBSP_G_FLOUR)
Insert cell
hydration_inc = water_addition => (water_addition + water)/flour * 100 - hydration
Insert cell
hydration_dec = flour_addition => hydration - water/(flour + flour_addition)*100
Insert cell
Insert cell
viewof total_final = html`<input type='number' min='0' max='5000' value='1000' step='100'/>`
Insert cell
viewof hydration = html`<input type='number' min='20' max='130' value='65'/>`
Insert cell
viewof salt_pc = html`<input type='number' min='0' max='3' step='0.25' value='2'/>`
Insert cell
viewof white_flour_pc = html`<input type='number' min='0' max='100' value='50'/>`
Insert cell
viewof sponge_hydration = html`<input type='number' min='50' max='300' value='130'/>`
Insert cell
viewof starter_pc = html`<input type='number' min='0' max='100' value='10'/>`
Insert cell
viewof water_add = html`<input type='range' min='0' max='500' value='0' step='1'/>`
Insert cell
viewof flour_add = html`<input type='range' min='0' max='500' value='0' step='1'/>`
Insert cell
Insert cell
TBSP_G_FLOUR = 8
Insert cell
TBSP_ML = 15
Insert cell
STARTER_HYDRATION = 100
Insert cell
Insert cell
fn = (id) => html`<span class='fn'>${id}</span>`
Insert cell
r = Math.round
Insert cell
html`<style>
input {
font: inherit;
font-weight: bold;
appearance: none;
}

input[type=number] {
border: none;
border-bottom: 2px solid;
width: 4em;
text-align: right;
border-radius: 0;
padding: 0;
}

.fn {
display: inline-block;
vertical-align: middle;
border-radius: 50%;
width: 1.2em;
height: 1.2em;
line-height: 1;
text-align: center;
font-size: 0.9em;
margin: 0 0.25em;
border: 1px solid;
}
</style>`
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more