Bart Busschots joins us for Chit Chat Across the Pond in an episode of what he calls “Programming Adjacent”. It’s not about programming, it’s actually about cooking and not wasting food. But Bart, being a programmer, approaches the problem like a programmer. I guarantee you that no one else on earth approaches cooking and food inventory in the same way as Bart. It was great fun to learn how he does it and to contrast it to how in my house, two engineers have come up with a completely different system.
The Problem to be Solved
At the start of the pandemic, I found myself throwing out food because it had gone off, and that really bothered me. Food waste always feels wrong, but with the world in crisis, it bothered me even more.
At that time I found it really hard to keep the larder well stocked for all sorts of reasons:
- At the start of the pandemic many of the shelves in our supermarkets were actually bare! Eggs, potatoes, and nice bread were like gold dust! Even now I can’t be sure I’ll find all I want in-store, and home deliveries are rarely complete (and Brexit this January didn’t help at all!).
- Producers narrowed their ranges and focused production on their most popular variants, so a lot of my staples simply vanished, or became very hard to find. (My hubby is a Coeliac, so our choices are limited at the best of times, which made this narrowing more than just an inconvenience. E.g. Amoy dropped both their Rice Noodles from their range, leaving only Noodles we can’t eat)
- The switch to primarily home delivery removed my control over best-before dates. In person I always made to buy food that would keep long enough, with home delivery it’s down to chance!
With all the chaos and change I was trying to find a balance between having enough reserves on hand to deal with the irregular supply and wasting food, and I was failing!
I’d find food at the back of the fridge that had already gone off, or, I’d go to cook and find I had fish, chicken, and pork all best before that day. I could freeze some, but our limited freezer space soon filled up.
I needed a process to manage food, so being a programmer, I thought about it in terms of data structures and algorithms! What information needs to be stored? How can I format it? And how can I use it to avoid my problem?
With the help of three whiteboards and some simple, repeatable processes, I’ve not thrown out a single piece of food in months, and we’ve had nice meals on the table every day.
BTW — only one of the three whiteboards is actually vital to solving the primary problem, the second is helpful, and the third actually solves a different but related problem I’ll get to later as a little bonus extra.
Bart’s Food Planner
The Primary Whiteboard
The centrepiece of my entire system is a big whiteboard divided into three regions:
- The Week Grid
- The Larder Log
- The Fresh Produce Log
The week grid has seven rows, one for each day of the week, and two columns, one for lunch, and one for dinner. Why no breakfast column? Simple — I eat basically the same breakfast every day! (Instant Porridge AKA Oatmeal with an orange on weekdays, and a ruby grapefruit on weekends mind you, I do vary the instant porridge flavour so I have some variety 🙂)
The Larder and Fresh Produce Logs are free-form regions on the board. The produce log in particular is more like a word cloud than anything else. The larder log is a little less chaotic because it contains what I like to think of as key-value pairs, the keys being food items, and the values being use by dates.
To save my sanity I used some whiteboard gridding tape to permanently mark the three areas and the grid.
Here’s a snap-shot of my big-board as it was at lunchtime today (Saturday 6 March):
The Colour Scheme
The centrepiece of my whole system is the week grid, and to get all the information I need in there in an understandable way I need a strict colour scheme:
- Black is for labels
- Red is for things expiring on a given day
- Green is for things to be eaten that day
The Daily Cycle
Just like the weeks keep cycling by, my algorithm doesn’t have a beginning or an end, it simply cycles!
- Sometime between dinner and lunch the items actually eaten get wiped off the board (from the grid as well as the larder & fresh produce logs) — their best before date has just become very irrelevant indeed 🙂 Once the consumed food is cleaned from the system the entire row in the grid is wiped clean.
- Once the row is clean the date gets updated to the same day next week.
- With the row now labeled for 7 days hence I scan the larder log for anything expiring on that date, and add it to the row in red.
- Whenever shopping arrives, I add anything expiring within the week straight into the grid, and everything else into the larder and produce logs.
- As and when I get time I plan the meals for the next few days by scanning the week grid for up-coming items in red and combine them with items from the produce log to create basic meal plans. I don’t choose the exact dish, just the protein, starch, and vegetables for each meal. With those items chosen I write them into the week grid in green.
Ultimately it’s that simple. When planning I like to add some extra guidelines for myself, but these just guidelines, and I don’t stress over them (anymore):
- Avoid having the same starch two days in a row
- Avoid having potatoes more than 3 times a week
- Avoid having the same category of protein two days in a row (my categories a bit arbitrary — red meat, pork, poultry, fish & vegetarian)
- Try have fish three times a week, ideally white twice, one smoked, and red once
- Try have at least one completely vegetarian day each week
- When choosing vegetables, try to have a mix of colours each day (the eat the rainbow strategy for getting a good mix of vitamins, etc.)
The Fridge Whiteboard
My primary whiteboard is a big whiteboard on the wall, but I also have a large sheet of self-adhesive whiteboard on the door of my fridge (and a magnetic whiteboard marker holder on the microwave to be sure there’s always a marker to hand).
This serves as a useful scratch space to help the household run smoothly. It’s divided into three areas:
- Notes/Reminders for those generic notes to self and notes to each other that keep everything ticking over
- To Eat is for food that can be freely snacked on without it mucking up my plans
- For Shopping List is pretty self-explanatory
Bonus Extra: The Third Whiteboard — My Cooking Run-sheet
I call it a run sheet but it’s not a sheet, and I don’t run with it — It’s simply a step of steps I run through to convert ingredients into food. Basically, it’s a step-by-step guide for the preparation that day’s dinner. Physically, it’s a clipboard-sized portable magnetic whiteboard.
Each evening before I start cooking I look at the day’s dinner cell on the grid and pick specific recipes for everything listed. I use the wonderful Paprika app Allison recommended to manage my recipes. I start by un-pinning everything from the day before, then pinning my planned recipes for the day’s meal. Before I commit to the plan I do a final sanity check to make sure the combination is physically possible in my kitchen with my equipment. E.g. I only own two sauté pans, so if I need to sauté three things I have a problem! The oven is only so big, and while it has two compartments so can do two temperatures simultaneously, one compartment is twice the size of the other, so I can’t do three things at 200°C and 3 things at 230°C, but I can do 4 things at 200°C and 2 things at 230°C and so on.
Anyway, once the plan passes that sanity check I enter the ingredients and amounts into my calorie tracking app (My Fitness Pal) and then use Paprika to build the run list.
I have a defined structure for my run-list. Firstly, all times are in minutes from finish, and time is measured in 5-minute chunks and runs from the top of the list to the bottom. While I’m cooking I use the MutliTimers app side-by-side with Paprika on my iPad, and I run two simultaneous timers, one for the total length of the plan, and one that bongs every 5 minutes. Each bong corresponds to a possible action on the run-list.
So, the skeleton of the run-list is defined by time-sensitive tasks that must happen at one of the 5-minute intervals signaled by the bongs. All the other tasks like preparation of ingredients don’t have to happen at a specific time, they just need to happen before a certain point in the process. These tasks get allocated into the gaps between the timed task. I’m very careful to keep the “preparation time” entries in Paprika accurate so I know which tasks can fit into which gaps.
Finally, if the sequence allows, I often add other kitchen tasks not related to the meal being prepared into the remaining gaps, e.g. preparing the next day’s lunch, loading the dishwasher, hoovering the floor, etc..
To keep the run-list clear I have well-defined rules for marking up the run-list — like sort of a visual programming syntax if you will.
The times go in the left margin and literally point to the timed tasks with arrows.
The floating cooking tasks get written into the gaps between the arrowed tasks and and are wrapped with *
s to make them look distinct.
The optional tasks also go into the gaps, but they get wrapped with --
s.
Once the run-list is done I know exactly how long dinner will take, and I don’t have to do any thinking. Assuming the plan is accurate, I’ll never find myself in need of apples that are not yet peeled, the stock that’s not yet mixed, or herbs that are not yet washed and chopped at some critical point in a recipe.
One very last bonus tip is that just before I start the run-list I use the data entered into my calorie tracker to find all the ingredients I’ll need and lay them out on the countertop around the chopping board. That serves two purposes — it’s a sanity check to make sure my calorie tracking is accurate, and, it means I never have to go looking for an ingredient, everything will always be right there!
Once I start, I can enter a kind of auto-pilot mode where I simply do each needed task one after the other and mark them off as I go. Everything I’ll need is right in front of me, so it all just flows. Because there’s no thinking involved, cooking has become quality podcast listening time 🙂
Below is an image of my run-list from a few days ago. Note that the run-list really is intended for my use only. I can read my scrawl but no one else can, and even if you couldn’t it’s full of shorthand. I know that A.F. means Air Frier but no one else would.