It’s been a few years since I shared a recipe, but this one has kept coming up in conversation lately and it feels like the right time to share. This recipe is from Laurie Riedman of Elemental@Gasworks[1], and words can’t express how awesome it is.
Ingredients
2 pounds chicken liver, soaked in milk
½ pound unsalted butter
4 shallots, sliced
2 cloves garlic, sliced
2 Granny Smith apples, peeled and diced
8 sheets gelatin, soaked in water
1/3 cup Grand Mariner
Salt and pepper to taste
Technique
Melt butter in sauté pan
Add shallots, garlic and apple – cook until soft, but do not brown
Turn heat to medium high and add drained chicken livers
Sauté until just cooked – livers should still be pink inside
Add Grand Mariner and reduce by half
Stir in gelatin until dissolved
Cool slightly and process until very smooth, adding salt and pepper to taste
Put in terrine mold, cover and weigh
Chill overnight
Serving suggestion
Serve with toasted baguette and pickles
The mousse will keep for months in the freezer. I made a big batch in 2020, vacuum sealed 5 or 6 generous portions, and have been thawing one every few months when I feel the need for something rich, savory, and delicious.
[1] Elemental@Gasworks was my favorite restaurant for years. Before I moved to the Seattle area I would dine at Elemental at least once per week when I was visiting. I learned a lot from eating Laurie’s food, and from watching her cook in the tiny, tiny kitchen. Elemental closed in 2012, but it comes up in conversation almost every day among those of us fortunate enough to have experienced it.
Unless you’re building a solution for your exclusive personal use, you are not the customer. If you are not the customer, you need to invest in understanding the customer’s motivations, problems, and goals. The right solution for you may not be the right solution for someone else – even someone you may think of as being “like you” – for reasons that may not be apparent until you look more closely.[1]
This is another post looking at problem domains and solution domains, and it’s inspired by a recent non-technical conversation over brunch[2] with some foodie friends. My wife and I had gotten together with friends who love good food – people who we’ve had over for dinner many times over the years, and from whom we’re always delighted to receive dinner invitations. These are people who know how to cook, and who have invested in their kitchens over the years, so they’re well-equipped to cook what they want.
Imagine my surprise when a friend who has a fabulous combi oven[4] in her kitchen kept talking about how much she loved her new toaster oven that was also an air fryer. Or when another friend who is more than capable of making wonderful meals from scratch waxed poetic about how Thermomix now allows you to use community recipes from any region so she can now make that dumpling recipe she’s been looking at… and about how easy it is to make toast in her June smart oven because it recognizes that she’s put a slice of bread into it and knows how dark she likes her toast…
My initial reaction was to point out how all of these toys were unnecessary, because they already had the real tools they needed to do all these things and more[5], but as the conversation went on I realized I was in a tastier version of a very familiar conversation. This was a conversion about pro and self-service tools, and about persona-appropriate experiences.
Have you ever been in a conversation when someone suggests that “all you need to do” to solve a problem is to use some code-first tool or service, when all you really want is something lightweight and simple? You probably don’t have an environment set up already, and even if you did the proposed tool don’t solve the problem in the way you want to solve it… even though the tool is capable of solving the problem.
Have you ever built a report that gives its users all the information they need to answer their questions, only to find that your target audience doesn’t like or use the report, and instead keep building their own workarounds?[6]
Have you ever found yourself on the other side of that scenario, where someone has given you a report with all of the numbers, but none of the answers?
These are all variations on the same theme: the importance of persona-appropriate experiences. Delivering capabilities is never enough – you need to deliver capabilities via an experience that works for the people who will use it.
Building an experience people want to use requires a meaningful understanding of those people. What are their backgrounds, their skills, their motivations, their priorities, their preferences… as well as the problems they need to solve. There are lots of ways to build this understanding, and they all start with your acknowledging that you are not the customer, and your willingness to spend time understanding the actual customer’s problems before you start trying to solve them.
I’m confident that a commercial restaurant kitchen would have all of the capabilities you would need to prepare breakfast – and more. I’m similarly confident that you would prefer something smaller, less complex, and more familiar – like your own home kitchen – and that if you were only given a commercial kitchen you would soon start looking for alternatives or workarounds that work better for you.
The next time you’re working to solve someone else’s problems – whether you’re building a BI solution or a software product or service – pause to ask yourself if you’re giving a commercial kitchen to a home cook. While you’re paused, also take a minute to remind yourself that you’re not the customer.
[1] The admonition “you are not the customer” was included in some of the first training materials I read when I became a program manager at Microsoft. It took me a few years to understand why this is so important, but now it’s something I think about almost every day.
[2] This was December 2021, our first restaurant meal with friends since December 2019, right before the omicron wave arrived in the Seattle area. Who knows when we’ll be able to dine out again…
[3] Kind of like me. I’ve been cooking and baking as a primary hobby for over 30 years, and have a wonderfully-equipped home kitchen. It doesn’t have every tool or toy I might want, but it has everything I need, and quite a few specialized tools I might not technically need but which make common-enough tasks easier and less time consuming.
[4] A combi oven is an oven that combines convection and steam, and which allows you to precisely control both the temperature and humidity while you’re baking. This simplifies baking lots of things, from bread to cheesecake, but they tend to be very expensive. They’ve just recently moved from high-end professional kitchens into high-end home kitchens. I don’t own one, but I definitely want one.
[5] Thankfully I had my mask on as we were waiting for our food to arrive, which made it easier for me to keep my damned mouth shut for just one minute, which is not my forte.
I love to cook, and over the past few days I’ve made a few of my favorite Indian recipes that I haven’t made in a while. So, of course, this has me thinking about metadata.
Homemade naan and chicken tikka masala
Going from Indian cooking to metadata isn’t as big a leap as you might think. The bridge is one of my favorite cookbooks: Julie Sahni’s Classic Indian Vegetarian and Grain Cooking.
If you’re just here for the food, you should immediately make this spectacularly delicious Bengal red lentil recipe taken from this book, because it is absolutely phenomenal. If you’re here for the metadata, remember the link but don’t click on it yet.
Every recipe I’ve made from this cookbook has produced fantasticresults. It’s one of those go-to cookbooks where I know that anything I try will be good. And yet, I almost never seek it out when I want to cook, except for the recipes I already know. The reason is metadata.
It doesn’t matter how good your data is – without effective and available metadata, your investment in quality data will be undermined.
Let’s look at the recipe for saag paneer. Say those words out loud (“saag paneer”) and images of that rich, vibrant green sauce will start running through your mind.
I found this recipe easily because I have a bookmark. But let’s say I didn’t – it should still be easy to find, because cookbooks have indexes, and indexes are the perfect tool for finding recipes. Let’s find the recipe for saag paneer.
Oh, there’s no entry for saag paneer, or for saag?There’s no entry for paneer? There are so many paneer recipes in this book!Ok, we’re making progress… I think.There it is. Maybe? It still doesn’t say saag paneer anywhere.
Literally the only place the phrase “saag paneer” exists in this book is below the recipe header. This means that the only way to find the saag paneer recipe is to flip through the book page by page, or to know the specific and arbitrary phrase the author uses to describe the recipe for Western readers. This is why my copy of the book looks like this[1]:
This systemic problem is exacerbated by the book’s complete lack of photos; there’s also no way to skim through the book and quickly visually identify recipes of relevant interest. The reader is forced to carefully evaluate each recipe in turn, looking at ingredients and processes to decide if the recipe is worth making.
At this point you may be asking what this has to do with metadata[2] or you may see the connection already.
The reason I immediately thought of metadata may be related to a BI effort I’m working on. Without going into too much detail, I have built a small Power BI app that presents information from a program I run and makes that information available to other members of my extended team.
I’m currently at the point where my app needs to include data from other sources in order to increase its value. Fortunately, that data already exists, and to make it even easier to work with, it is available as a set of Power BI dataflows. I was able to email the owner to get access[3] and to learn which dataflows to look in, and I was off. But not for very far, or for very long.
Very quickly I was back where this post started: I was faced with the high-quality data I needed, and I lacked the metadata to efficiently use it. I needed to manually evaluate each dataflow and each entity to understand its contents and context and to decide if it was right for me. I made some early progress, but because of the lack of metadata the effort will likely take days not hours, and this means it probably won’t get done this month or next.
Let that sink in: because of a lack of effective metadata, quality curated data is going unused, and business insights are being delayed by weeks or months[4].
Just like these fantastic recipes sitting on my shelf, largely unused and unmade because a fantastic cookbook lacks a usable index, these fantastic dataflows are going largely unused, at least by me. All because metadata was treated as a “nice to have” rather than as a fundamental high-priority requirement.
Does your data have the metadata it needs, in a format and location that serves the needs of your users? How do you know? Remember that last picture of all the bookmarks[5]?
These bookmarks are a symptom of the underlying metadata problem. Bookmarks aren’t a problem themselves, but if you’re paying attention you can see that they’ve been implemented as a workaround to a problem that might not otherwise be apparent. If you’re familiar with the concept of “code smells”, you probably see where I’m going.
When your data lacks useful metadata to enable its effective use, people will start to take actions because of this lack. Things like emailing you to ask questions. Things like building their own ad hoc data dictionaries. Things like using alternate or derivative sources instead of using your authoritative data source – like the recipe link I shared above.
The more of these actions you identify, the more urgency you should feel about closing the metadata gap. Not every data source is a werewolf, but every data source requires metadata to be effectively and efficiently used.
Requires.
[1] Remember this picture. There will be a quiz later.
[2] You may also be asking if there’s anything in life that doesn’t make me think about metadata. This is a fair question.
[3] I knew the owner’s email because I had bookmarked it earlier.
[4] To be fair, my full schedule is also contributing to this delay – I’m not trying to say that the lack of metadata is independently costing months. But it is a key factor: my schedule could accommodate two or three hours for this work, but it doesn’t have room for two or three days until the end of April.
Every time I cook or bake something, I think about how the tasks and patterns present in making food have strong and significant parallels with building BI[1] solutions. At some point in the future I’m likely to write a “data mis en place” blog post, but for today I decided to take a more visual approach, starting with one of my favorite holiday recipes[2].
Check it out:
(Please forgive my clickbaitey title and thumbnail image. I was struggling to think of a meaningful title and image, and decided to have a little fun with this one.)
I won’t repeat all of the information from the video here, but I will share a view of what’s involved in making this self-service BI treat.
When visualized like this, the parallels between data development and reuse are probably a bit more obvious. Please take a look at the video, and see what others jump out at you.
And please let me know what you think. Seriously.
[1] And other types of software, but mainly BI these days.
[2] I published this recipe almost exactly a year ago. The timing isn’t intentional, but it’s interesting to me to see this pattern emerging as well…
This is one of my favorite cookies recipes. Like my candied orange peel recipe, it is adapted from one originally published in the mid-90s in Chocolatier Magazine. The recipe below is double the volume of the original Chocolatier recipe[1], and if you have a mixing bowl big enough it is easy to double or triple for a truly epic batch.
Ingredients – Cookies
2 cups all-purpose flour (260 g)
1/2 cup non-alkalized cocoa powder (41 g)
1 teaspoon baking soda
1/2 teaspoon salt
3 1/2 teaspoons instant espresso powder
3 teaspoons vanilla extract
8 ounces unsalted butter, softened (227 g)
1 cup granulated sugar (200 g)
1 cup dark brown sugar (239 g)
2 large eggs, at room temperature
Ingredients – Ganache
10 ounces dark chocolate, finely chopped (284 g)
1/2 cup plus 2 tablespoons heavy cream (142 g)
1 tablespoon instant espresso powder
Procedure
Phase 1: Make the cookies
Position one rack in the top third and another in the bottom third of the oven and preheat to 350 Fahrenheit (180 Celsius).
In a medium bowl, using a wire whisk, stir together the flour, baking soda, cocoa powder and salt until thoroughly blended.
In a small cup, combine the espresso powder and vanilla and stir with a small rubber spatula until the espresso is dissolved.
In a large bowl, using a hand-held electric mixer set at medium speed, beat the butter for 30 seconds, until creamy. Scrape down the sides of the bowl.
Add both sugars and continue beating for two to three minutes, until the mixture is light in texture and color. Scrape down the sides of the bowl.
Beat in the egg until blended. Scrape down the sides of the bowl.
Beat in the espresso mixture. Scrape down the sides of the bowl.
At low speed, beat in the flour mixture in three additions, scraping down the side of the bowl after each addition.
Drop the dough by slightly rounded measured teaspoonfuls onto ungreased cookie sheets.
Bake the cookies for 7 to 9 minutes, until the edges are very lightly browned but the centers are still slightly soft; switch the position of the baking sheets halfway through the baking time for even browning. (For crisper cookies, bake for 8 to 10 minutes until the centers are no longer soft.)
Cool the cookies on the baking sheets for 1 to 2 minutes. Using a metal spatula, transfer the cookies to paper towels to cool completely.
Phase 2: Make the ganache
In a food processor fitted with the metal blade, process the chocolate until finely chopped.
In a small saucepan, combine the cream and the espresso powder and bring to a boil, stirring to dissolve the espresso powder.
With the processor running, add the hot cream mixture to the chopped chocolate and process for 25 to 30 seconds, or until completely smooth.
Scrape the ganache into a medium bowl and let stand at room temperature until just slightly set and spreadable, about 30 minutes.
Phase 3: Assemble the sandwich cookies
Group the cookies into pairs, matching two cookie rounds of similar shape and size.
Spread a gently rounded teaspoonful of the ganache filling onto the bottom of one of the cookies.
Top with the matching cookie, right-side-up, and very gently press each sandwich together.
Repeat with the remaining cookie pairs until all cookies are made into sandwiches.
Let sit at room temperature for about 30 minutes to set the ganache. The cookies can be stored in an airtight container for two to three days.
Storage
The cookies can be stored in an airtight container for two to three days.
This slideshow requires JavaScript.
Notes
You can also use a stand mixer with the paddle attachment, as shown in the slide show above.
If possible, line your cookie sheets with silicone baking mats, or with parchment paper.
[1] I can’t imagine making a batch of any cookies that uses one egg and one stick of butter. That’s not right.
I’m on vacation for the holidays, and plan to spend much of the next few weeks in the kitchen. This will result in more posts about food and fewer posts about Power BI. You’ve been warned.
This is my favorite cheese sauce. The recipe is adapted from one originally published by Modernist Cuisine, and made much better by the application of chilies.
Please note that the recipe uses proportions by weight, rather than specific amounts. You can easily scale the recipe up or down so long as the proportion is the same, but you will need an accurate kitchen scale for this one.
Juice 10-50 jalapeno chili peppers and weigh the juice.
Grate an equal weight of cheddar cheese.
In a saucepan over medium-high heat, combine the juice and sodium citrate and bring to a boil.
Gradually add grated cheddar to the liquid, blending with an immersion blender to incorporate each batch of cheese before adding more.
That’s it. It doesn’t get much simpler than this.
Storage
Store in an airtight container and refrigerate.
Applications
Dip tortilla chips into the cheese sauce and eat them. Eat all of them!!
Use on nachos.
Use on chili cheese fries, with homemade french fries and green chili sauce from El Patio De Albuquerque.
Notes
If you really love spicy food, you may be tempted to use habaneros or another spicier chili to start with. Don’t do that. Start with jalapenos and scale the heat up as appropriate by adding a few spicier chilies to the mix. Trust me on this one.
Alternately you can scale down the heat by replacing some of the liquid with water. Do what is right for you.
So long as you keep the same proportions, you can use any liquid and any cheese you want. The possibilities are limitless.
You can also use jalapeno juice in other recipes where you want to add flavor and heat. My other favorite application is in yeast breads, where you can replace the water with chili juice. I’ve made this recipe multiple times with great results using this technique.
This is my favorite caramel. The recipe is adapted from one originally published in Dessert Professional Magazine. As with any caramel you want to be careful with this one – don’t take your eyes off hot caramel!
Ingredients
123 grams glucose syrup
821 grams granulated sugar
10 grams Fleur de Sel sea salt
657 grams unsalted butter
388 grams heavy cream
Procedure
Line a 9×13″ baking/casserole dish with parchment paper. Have the prepared dish ready by the stove.
Combine the glucose, sugar and salt in a large pot over medium-high heat and cook until it reaches 293 F, stirring frequently.
Meanwhile, combine the butter and cream in a medium pot and bring to a boil.
Once the sugar mixture reaches 293 F, slowly and carefully pour the cream and butter into the pot with the sugar, whisking constantly.
Bring the mixture back up to 122 C / 252 F, stirring constantly.
Pour carefully into the prepared dish.
Cool the caramel to room temperature, 3-4 hours or overnight.
Cut the cooled caramels into squares.
Storage
Store in an airtight container at room temperature.
Vacuum seal and freeze indefinitely.
Applications
Eat them as is
Enrobe with tempered chocolate, and top with a few flakes of sea salt
Bake peanut butter cookies with a small thumbprint depression in their tops, and fill the depression with a generous lump of caramel
This is my favorite holiday treat. The recipe is adapted from one originally published in the mid-90s in Chocolatier Magazine. I’ve made it scores of times, and the results are always wonderful. For me and my family, the smell of candied orange peels is the smell of Christmas[1].
Ingredients
12 fresh ripe navel oranges
1 gallon water (3,785 ml)
1 tablespoon salt (18 g)
4 pounds granulated sugar (1.8 kg)
1 quart water (946 ml)
Procedure
Phase 1:
Combine one gallon of water and one tablespoon salt, and stir to combine
Using a fork, thoroughly perforate the peels of each orange, stabbing through the peel into the flesh
Using a sharp knife, divide each orange into quarters
Using your thumb, remove the peel from the flesh of each orange
Place the peels in the salt water, and use the flesh for some other purpose
Cover the bowl with plastic wrap to prevent the peels from rising above the surface of the salt water, and allow to rest for 8 hours or overnight
Phase 2:
Combine four pounds sugar with one quart water in a large pot over high heat and bring to a boil, stirring occasionally
Drain the orange peels
Add the orange peels to the sugar syrup and bring the syrup back to a boil
Reduce the heat to medium and simmer for 45 minutes, stirring frequently
Remove the syrup and peels from the heat, and allow to cool to room temperature
Cover the syrup with plastic wrap and allow to rest for 8 hours or overnight
Phase 3:
Remove the peels from the syrup and place on baking racks over baking sheets
Allow the peels to rest for 24-48 hours or until the excess syrup has drained
Storage
The peels will keep refrigerated for weeks, and will keep indefinitely in the freezer, although it is rare that they last very long at all before being eaten.
Applications
Cut peels into strips, and dip into melted (ideally tempered) dark chocolate
Chop peels into small chunks, and add to oatmeal cookies with white chocolate and dried cherries
Chop peels into small chunks and mix into chocolate ganache with toasted nuts and dried fruit – refrigerate and cut into squares
Honestly, these are good in just about anything.
Notes
The recipe easily doubles or triples if you have a big enough pot, and enough racks to drain the candied peels
Select oranges for the thickness of their peels
Since the finished product is vegan, gluten-free, and everything-but-oranges-sugar-and-chocolate-free, chocolate-dipped peels make great gifts for people with common dietary restrictions, unlike cookies
If you accidentally stab your hand with the fork while you’re perforating the oranges, you’ll quickly realize just how much you liked not having fresh orange juice in a stab wound
[1] If you ever wondered why the blog was titled “BI Polar” at least one reason is that the topics covered will swing dramatically from time to time. Please try to keep up.
One of the things I love the most about software development is that it lets me imagine something, create the thing I imagined, and share the thing I created.
For me, baking hits the same creative “sweet spot” that software development hits. And, of course baking can also be literally sweet as well. But beyond the joy of eating something delicious and homemade, making something with your own two hands can be deeply satisfying and therapeutic, in a way that making something at the keyboard is not.
Kind of like how fencing is sometimes described as “physical chess,” baking is like physical software development.[1] There are common components and frameworks. There are tools that are required, and tools which are optional, but which will will save you time and frustration. There are patterns that can be learned in one application, and applied to other, related applications. There are some rules you must follow, and some rules you can bend, and it takes study and experience to know the difference between the two. The parallels go on and on.
It doesn’t matter where you channel your creativity, but having a creative outlet where you can relax, learn, and express yourself.
In related news, if you’re going to be at the Power BI World Tour event today at the Microsoft Advanta offices in Bellevue, I baked cookies. Specifically, I baked caraway shortbread cookies inspired by the ones they serve at Dinner by Heston in London. Look for me at the evening reception event.
[1] Fencing is also sometimes known as “chess with pain” and “pain” is French for bread. Coincidence? I think not.