Category: Off Hours

Everything that isn’t data.

  • Before Strategy Becomes a Story

    In Strategy is a Story I called our experience in the simulation analysis paralysis. By the end, that was fair. We had passed the point where we were able to make proactive changes but kept collecting data. It misjudged the beginning.

    The early quarters taught us how the pricing levers worked, how marketing and demand modeling could help with production capacity. These observations were what made the forecasts possible. Reacting was the right move at the start. The mistake came later, when reacting had taught us enough to predict and we didn’t notice.

    “I’m changing nothing for 90 days”

    I’ve worked across multiple avenues in supply chain: retail stores, manufacturing, transportation, from the shop floor all the way to leading a team of data scientists. New leaders would come in and rotate. I knew when a good one came along from their first day.

    The best leaders I saw entered the stores and operations, and often said some variation of: “I’m changing nothing for 90 days. I need to understand what’s happening.” Unnerving because they usually came into an operation that was on fire. At one retail job, the backroom was enormous but you couldn’t move because there were 30 pallets of product, toys thrown into shopping carts, clothes piled on top of boxes. In manufacturing, we were staring down losing half our production capacity because a filler kept going down for unplanned maintenance.

    In transportation, a leader came in who had decades in the industry, from an organization much stronger than ours. However, he said he didn’t know enough yet to know what to change. He was willing to let observation overturn the plan that he brought with him.

    The leaders still ran the operation, addressing the big three: safety/service/quality, but withheld discretionary changes. They would watch the actual process, the difference between what was documented and what was actually used. The one that would get the work done best.

    A leader who arrives with a ready-made plan looks proactive, while acting on a fictional process.

    CAPD before PDCA

    In Six Sigma and Lean, a foundational methodology is a loop called PDCA: Plan Do Check Act. After Act you go back to Plan. At any level of the business, you have an idea of where you want to go, make plans to get there, enact them, check what actually happened, and act on course corrections. Rinse and repeat.

    One that I learned about only when getting my Black Belt was CAPD, or CAPDo. Same verbs, same actions, but you start with the reaction. Scan the environment, react to anything that’s going wrong, make future plans based on what happened. Reactive management can be a four-letter word, but an improvement cycle is as valid when it begins with a Check of the current condition.

    CAPD is improvement work when the first fact is that you don’t understand the process. When I was studying for the Black Belt exam, I went to the quality leader incredulous that they were teaching the CAPD cycle, and she wrote on a piece of paper:

    CAPD CAPD CAPD CAPD CAPDCA... CA|PD ... PDCA PDCA PDCA

    Early cycles are observation-led. Later ones are hypothesis-led. The bar works in both directions. When you realize that your mental model of the situation has deteriorated, then you shift into CAPD.

    Starting PDCA too early makes a detailed plan for an imaginary process, and keeping CAPD too long turns disciplined observation into avoidance. A good mental model should be the goal when you’re running the ship. It’s okay to drift for a little while as you get there.

    Root Cause Analyses

    A concrete example of the interplay between proactive and reactive came when we were rethinking our existing system for RCAs in manufacturing. We had five main triggers for events that affected operations enough to warrant paying the thousand dollars to have a team of associates come off the floor and spend days to understand the foundational issues in our process that could cause them.

    After research into RCAs, I found a book on applying them in education that categorized them into four buckets based off of two modalities.

    ReactiveProactive
    PositiveWhat caused an existing success?What roots must be established for future success?
    NegativeWhat caused an existing failure?What roots could obstruct future success?

    Paul G. Preuss, School Leader’s Guide to Root Cause Analysis.

    We had been training our associates to think Reactive = we let something bad happen, and Proactive = we are doing good things, but the takeaway I got from this book was that proactive and reactive modalities were equally valid. Reactive for things you didn’t catch, proactive for things you’d like to do. Good and bad are in each bucket.

    For us, RCAs were the bridge from reactive to proactive.

    We filled the rest of the grid. If a line ran for a week with a mean time between failures well beyond expected, that warranted an RCA. As we matured in different departments, we enacted proactive RCAs as the bridge to the proactive cycle, dissecting and refining our mental model to understand how we wanted to change.

    Reactive RCAs helped us build the mental model. Proactive ones helped us use it.

    90 days

    Being reactive is necessary to build a mental model. In the simulation we had made a strategic error, by being at the point where we had enough information to make predictions but staying in learning mode. I still believe that strategy is a story, and you need proactive plans to tell it.

    Ninety days is an arbitrary standard, more metaphorical than anything. When you can understand what the next quarter is going to look like, more often right than wrong, then the 90 days are over. The hard part is noticing.

  • Tell It Who You Are

    This is a post about food.

    I arrived in France two months ago. My husband had his usual grocery routine. People vary in their tastes but core products remain the same. It’s how we choose who we are. In Tennessee I bought California olive oil and Huy Fong sriracha as a way to keep a little bit of home in my cabinet. Walking through the rayons at Super U, I understood the products, I speak French well enough, but I didn’t know them. A new identity.

    Sitting in a small French town near Luxembourg wondering who am I without food, I wanted something that helps me with the implicit part of grocery purchases. Before it looked up a single price, I wanted it to understand who I am.

    Because

    Food is the thing we buy most often and the thing we’ve bought longest. Someone was deciding what to put in a pot three thousand years ago. Someone will be in three thousand more. It’s also the most visible way people consume an identity. Each choice you make is how you make your internal conception tangible, concrete.

    My last employer’s version was on the walls and advertised, food is connection. On my 31st birthday, the first one 2,000 miles away from family, sitting alone in a new apartment, questioning what I had done, I bought sprinkle cupcakes because my little sister would make that for my birthday when we were living together. The shopping cart is as much a portrait of the person buying it as it is the event itself.

    My food choices are a reflection of who I am, informed by how I was raised. A large family required cooking in batches, asynchronous feeding. It could be feast or famine, so we would freeze rice and beans in bulk to economize. Physical presence with each other while eating was the exception, so we connected in what we prepared for each other. I worked graveyard shifts, so I’d leave Jambalaya I made at 6am in the fridge for my family, and would open the fridge at 10pm to pot roast and vegetables. Changes in the refrigerator helped us communicate our lives, even if we saw each other a few hours a week.

    My tastes evolved. I keep the spicy foods that my family loved, but started cooking more southern dishes, Tennessee. My husband and I met online, and as I came to learn his ravenous sweet tooth, I started buying more sweet things. If we were separated by 6,000 miles, I could at least think of him with what I cooked.

    Once I got to France, I started from the basics. I knew the brands I bought in Nashville, but they were informed by what I liked in myself. I bought trail mix because it fit multiple identities: it was a big bag, low in price. It followed nutritional buckets my doctor recommended, having lost 120 lbs. It made me think of my husband. Food choices go beyond what tastes good. Somebody raised differently would optimize for organic, or for time, or for what the table looks like on Sunday. Trail mix here comes in smaller bags and is more expensive. It’s the same product inside. It isn’t the same.

    AI

    Everyone is adding AI. Instacart launched one last week. Walmart has Sparky, Amazon has Alexa, and Carrefour has one too, all doing the same thing. You say what you want and they build a basket, including recommendations from other likeminded customers, possibly your history. That’s fine. But it’s still a search box, one that talks. A tool built on a website helps you build your basket, but it doesn’t let you talk about the why. The company is footing the bill for the compute and the tokens. It’s not your psychologist.

    There’s a missed opportunity. Food goes so far beyond whether the association rules says that Mark buying Pampers and Purina probably will want Budweiser, or the Holt-Winters model says that Mary buys coffee every Sunday so she’ll buy it again next Sunday. The food you buy, it’s pictures, it’s words, it’s insecurity. I get why the economics makes it impossible for any company to address this (someone has to pay for the tokens), but it still feels like a massive miss. Something that can get a clear read on why I buy things can help me understand what I want to buy to be who I am, my ideal self.

    It’s a simple system, and I hope that more grocery players get into that space, but there’s a difficulty. The store has a model of you, forecasted and optimized for expected customer lifetime value. There’s an incentive for a tool to be smart more than intelligent. Its recommendations are bets on what you’ll buy. You’re still left wondering who is the person buying it.

    Agents

    I built a plugin to try to reconstruct some of how I communicate who I am to myself through food. It’s a simple agent. Two part system. The first has a searcher and a promos. That’s it. For Super U it borrows my browser cookie and replays browsing like if I were on the page.

    The second part is an agent. Where I pasted the purchases I made at Kroger, pictures of recipes I like, wrote about the types of food that I like, what I like to do, the restaurants I gave up, foods I can’t find here. That we’re two adults in a small flat with a small fridge and no freezer. We batch cook in a pressure cooker. Cheap and good, in that order, and nothing that rots before we get to it. I don’t sweeten coffee. My husband will eat the same chocolate cereal every day for the rest of his life and I will eat oatmeal with honey, and neither of us is going to change.

    For now, I’d like to keep AI on my side of the fence to avoid becoming a commodity, but any level of in depth customization means I’m paying tokens to serve it.

    Before the first order, I also gave it fifteen orders of purchase history from my old grocer in Nashville, pasted raw off the page with the navigation menus still in it. Pictures from cabinets in Nashville. What home looked like through food. It pulled out instant coffee, which was on every order, and sriracha and tofu, and it was right about all three. It also pulled out canned tuna and sugar. I stopped eating tuna a year ago and I’ve never put sugar in coffee.

    As I talked through it, the agent added to a preferences.md. Never suggest. Already stocked. Watch list. Not stocked at this store, stop searching, no I don’t like onions, those cookies are too soft. Each came from an individual mistake in searching. The agent had a hypothesis, tested it out and recommended a product. Somewhere around line thirty I realised it’s the identity paragraph, one wrong guess at a time.

    Whose agent

    The stores say so themselves, in the numbers they publish. Walmart reports that customers who use its assistant spend about 35% more per order than customers who don’t. Instacart’s, five days old, already produces baskets above the company’s 115 dollar average, and that’s the headline of the launch. Walmart is testing ads inside the answers. The assistant lives inside the store, ranks the store’s catalogue, ends at checkout, and is graded on how much more you spent.

    The protocols being written now, so that an agent in a chat can reach a store’s systems, come from the platforms and the payment networks. Google’s has two signed documents. The first records what you asked for, and the example in the announcement is “Find me new white running shoes.” The second records the exact items and the price. There’s a field for what you want and a field for what you’ll pay. There’s no field for who you’re trying to be.

    I’m hoping that the systems become more intelligent. That I can link ChatGPT to Carrefour from the other side of the fence, and it works collaboratively with me. I don’t mind if advertised products make it back, or if there’s a recommendation algorithm alongside it. It feels like a wasted opportunity when all the pieces are there. Mine exists by borrowing my own cookie and working through my browser. It reads the same prices as one of their assistants would but comes to different answers.

  • Making Tempeh: An Unreasonably Thorough Approach

    Making Tempeh: An Unreasonably Thorough Approach

    I have had so much trouble making tempeh. Crumbly, inconsistent results, batch after batch. And the troubleshooting guides online? Useless. Every single one boils down to the same set of contradictions:

    • You cooked the beans too much
    • You cooked the beans too little
    • You dried the beans too much
    • You dried the beans too little
    • You incubated too hot
    • You incubated too cold
    • You packed too tight
    • You packed too loose
    • You split the beans too much
    • You split the beans too little

    Right. So that narrows it down to everything. I decided the only way forward was to go clinical, document every step, measure every variable, and remove every excuse. If this batch failed, I’d know exactly how and why.

    Cracking the Beans

    Most instructions say to soak the beans and then scrub the hulls off by hand, squeezing each one between your fingers. I skipped that entirely. It’s a waste of water and time when you can just pre-crack them.

    KoMo Fidibus XL grain mill on granite countertop
    My KoMo Fidibus XL. I’ve had this mill for over a decade and it has paid for itself many times over.
    Soybeans loaded in the grain mill hopper
    Soybeans loaded and ready to crack.

    I widened the grinding wheels and ran a few test passes until I found a setting that splits the beans in half without creating too much dust. When you crack them this way, the hulls tend to fall right off.

    A note: this post mixes photos from two batches, one garbanzo, one soybean. The process is the same for both.

    Cracked garbanzo beans in a blue bowl
    Cracked and dehulled in about two minutes.
    Bean hulls and dust in a blue colander
    Running the cracked beans through a colander to sift out the dust.

    I shook the colander a few times and the empty hulls floated to the top. A quick pass with a hair dryer, one I keep in the kitchen specifically for cooking, cleared them off in a couple of passes.

    Clean split soybean halves in a blue colander
    Clean splits. Hulls removed, minimal dust.

    I boiled the beans until they reached the consistency of a boiled peanut, maybe a lima bean. Soft enough to eat, firm enough to hold shape. I didn’t photograph this step because it’s just boiling beans.

    The Bags

    Brother XM2701 sewing machine
    The sewing machine. Another piece of equipment that’s earned its counter space.

    I read a paper that described optimal tempeh incubation using bags with holes punched by a number 7 needle, spaced half an inch apart, on 1.5mm polyethylene. Here’s what I actually used a size 12 sewing needle at one-inch intervals on a 3mm polyethylene bag. Size 12 is thicker than size 7.

    Drying and Inoculation

    This is the step I suspect most guides don’t emphasize enough, and where most batches quietly go wrong.

    Beans drying on a parchment-lined baking sheet in the oven
    Drying in the oven at 170°F, stirring every few minutes.

    I set my oven to 170°F and stirred every few minutes until the beans were dry. Actually dry, not “they look dry.” Dry as in my hand doesn’t get wet when I grab a handful. I raised my fist to my face and told each bean it would become tempeh or die.

    Once the surface moisture was gone, I added a few tablespoons of distilled white vinegar and let that evaporate too. The vinegar lowers the pH enough to give the Rhizopus a head start over competing bacteria.

    Tempeh starter packet labeled Ragi Tempe
    The tempeh starter (Rhizopus oligosporus). Kept in my freezer until needed.

    Mixed the starter into the cooled, dry beans. Packed them into the perforated bags, pressed flat to about an inch thick, sealed them up.

    Incubation

    Brod and Taylor folding proofer displaying 90 degrees
    The Brod & Taylor folding proofer, set to 90°F. Designed for bread, but it holds temperature precisely enough for fermentation work.

    At this point I hadn’t confirmed the optimal incubation range. A quick search turned up this:

    Growth rate vs incubation temperature chart for Rhizopus
    Rhizopus growth rate peaks around 30–35°C (86–95°F) and drops sharply above 37°C. Source: tempeh.info

    I adjusted to 86°F and loaded the bags.

    Four bags of inoculated beans in the incubator
    Four bags loaded, day zero. No visible growth.

    Over-Engineering the Monitoring

    I wanted the actual temperature inside the bean cake, not just the ambient air reading from the incubator’s display. So I ran a probe thermometer directly into one of the bags.

    Temperature probe cable running into the incubator
    Temperature probe running into the bean cake.

    Then I built a data logger.

    An ESP8266 microcontroller, programmed with Arduino to read the temperature sensor and transmit data over WiFi at three-second intervals.

    Raspberry Pi connected to home network panel
    The Raspberry Pi, connected directly to the router. This is the server receiving and logging the temperature data.

    I wrote a small web server so I could check temperatures from my phone. If someone was going to tell me the incubation temperature was wrong, I’d have a timestamped log at three-second resolution to discuss.

    Phone screen showing timestamped temperature log
    Raw temperature log. Timestamped, continuous, three-second resolution.

    Was this level of monitoring necessary for making tempeh? No. But the troubleshooting advice I kept getting was some variation of “your temperature was probably wrong,” and I was done guessing.

    The Wait

    After 12 hours: nothing visible. The bags looked exactly the same as when I loaded them.

    Four bags in incubator showing no visible change after twelve hours
    Twelve hours in. The bags look exactly the same.

    I wrote a pointed review of the tempeh starter on Amazon.

    But I checked back at lunch the next day and noticed something. The tempeh didn’t look different yet, but the temperature probe told a different story, the internal temperature was climbing above ambient. The beans were generating their own heat. Something was growing.

    Annotated scatter plot of temperature vs time
    The temperature log tells the whole story. You can see where I accidentally started at 90°F and had to let it cool, where the temperature crept up and I turned off the incubator a little too long, and finally, around hour 18, where the tempeh started generating its own metabolic heat. I turned the incubator off entirely and let the mold regulate itself.

    It Worked

    I opened the incubator and saw mycelium.

    White mycelium growing through the soybeans
    Mycelium. Finally.
    Chart showing bean temperature vs incubator setting over time
    The full picture. Blue is the actual bean temperature; red dashed line is the incubator setting. At the end, the incubator is off and the tempeh is holding its own temperature around 30°C. Self-sustaining fermentation.

    A few more hours and the beans were fully bound together. Dense, white, solid blocks.

    Four completed blocks of tempeh
    Four blocks of finished tempeh. Uniform mycelium growth, firm structure.

    I changed my Amazon review.

    Amazon review updated to five stars
    “Pretty good. Don’t give up on it.” updated to 5 stars.

    What Actually Mattered

    The vague troubleshooting guides aren’t wrong, exactly. They’re just useless without measurement. “Too hot” and “too cold” don’t mean anything without a number attached. After going through this with three-second temperature resolution and documented steps, here’s what I think actually makes the difference:

    1. Dry the beans completely. Beyond “they look dry.” your hand shouldn’t feel any moisture when you grab a fistful. Then dry them a little more. Then add vinegar and dry that too.
    2. Start around 86°F (30°C), but watch it. Once the mold takes hold at around 18–24 hours, it generates enough metabolic heat to overshoot the optimal range. You may need to turn the incubator down or off entirely.
    3. Twelve hours of nothing is normal. The growth is invisible at first. If your temperature is in range and your beans were properly inoculated, wait. It happens fast once it starts.
    4. Measure what you can. You don’t need an ESP8266 and a Raspberry Pi (probably). But a probe thermometer inside the bean cake, rather than relying on the incubator’s ambient display, would have saved me several failed batches.

  • Strategy is a Story

    In 2016, during my MBA at Cal State Long Beach, I competed in a semester-long business simulation competition. Five teams running fictional companies, making quarterly decisions on pricing, production, marketing, and R&D. I was the CIO for ours.

    When I downloaded the year 3 quarter 4 reports, I found the first of two questions that defined the course for me. What do we do next?

    Up until that point our team had focused on getting a feel for the business, discovering how the pricing and marketing levers worked, submitting our individual decisions, and hoping for the best. It wasn’t working. Our market share dropped to 16%. We had 200 units extra inventory. Our product was a flop. We couldn’t outprice the competition. I was stuck trying to divine some pattern in the data, looking for that last bit of information that would clarify what was happening in our business, what we needed to do.

    Analysis paralysis. As a math major, this technique had worked well in the platonic world of absolute truths, and even when I branched out into statistics, I could make sense of seemingly random information by unmasking trends amid the noise. My MBA classes reinforced this view, with cases that allowed us to take an impersonal, outsider’s view of the situation. It was easy to declare a strategy broken and suggest solutions that would require a radical shift in direction. We never had to make binding decisions that required us to live with and interpret the unclear responses.

    Staring at the reports with concrete numbers in the past and an unwritten future ahead, I realized an implicit assumption underlying my work until this point: I was using static tools in a dynamic world, and our decisions had more sway on most immediate financial results for our firm. Analysis could illuminate the external world, but it couldn’t make our decisions. This both clarified our job in the competitive environment, and begged the need for a strategic framework to make decisions. Quantitative tools became a method for predicting factors none of us could control, like macroeconomic demand, so we could get a sense for what goals would be realistic, but our job as managers was to create a definition of success for our firm, and a path to get to that point.

    This led us to shift our management philosophy. I gathered information on relevant uncontrollable external factors, including estimating the production capacities of our competitors, forecasting the amount of industry sales in the upcoming quarters, and tracking when we’d achieve new model numbers.

    Spreadsheet tracking competitor production capacity, line expansion, historical sales, and market share targets across simulation quarters
    Competitor production capacity tracker.
    Spreadsheet forecasting industry sales by market area, with target market share percentages and units-per-salesperson calculations
    Industry demand forecast.
    Spreadsheet tracking R&D investment, model numbers, and training investment across simulation quarters
    R&D and training investment tracker.

    This information allowed us to set measurable targets with a clear sense of the actions to get there. For instance, we could set a goal of achieving a 1.5% increase in market share, and with the forecast, would understand the required excess production, financing for overtime, and amount of marketing to increase demand. Our next product was a breakout success, and we had a clear picture on our external environment. We learned not to simply predict the future, but to make it.


    By year 6, our team had a good handle on the tactics needed to steer the business towards the metrics we wanted to win. We had accomplished 8 of our 9 goals and were in a dominant market position. Then came the second question. It wasn’t the bank loans (that was an exercise in determination). On Thursday night, looking at our historical earnings compared to the competition, I kept asking why do our results look different?

    Our earnings over time varied wildly from quarter to quarter, but the other teams’ earnings were a straight linear trend, suggesting an even investment policy and a predictable return for investors. Even before we got our first bank loan, I sensed we were in serious trouble. Our tactics and short term strategies had given us predictable results on a two quarter horizon for the past 2 years, but the graphs hinted that we didn’t have a clear long term destination in sight. We knew how to move the business’s sails, but we were adrift at sea.

    Throughout the competition, we threw around the “best provider” strategy without a concrete definition on what the business would ultimately look like with it. We kept our options open with an organic growth strategy without being committed (or aligned) to any particular vision of the future operations. We let our uncertainty about the future run rampant. A story without a plot.

    In the last three quarters, we formulated a vision for what best provider meant to us: strong manufacturing presence in each marketing area with the goal of winning market share from our competitors through an extensive investment in training and lowering the price as our COGS decreased. We finished the competition with a market leading 24.6% market share and a clear path for the next few years. Other teams won the prizes, but we won an insight into strategy.


    Two lessons that have held up in the ten years since.

    The first is that strategy is essentially a story. Mission, vision, and objectives can help clarify elements into a standardized format, but an overarching narrative with a clear vision (or at least a guess) of the conclusion is necessary to keep from floating around aimlessly.

    The second is that analysis is most useful for elements that you can’t change, like the past, or uncontrollable factors. It can help illuminate the area around you, but the path forward is in your control. Don’t just be a character in someone else’s story.

    Also, don’t be late to meetings.


    Here’s the email I sent my family during the intensive phase, when we went bankrupt twice in two days and had to explain ourselves to the board of directors at 2:30 in the morning.

    Email to family recounting the chaotic intensive phase of the business simulation, going bankrupt twice, an earthquake wiping out production, and board meetings at 2:30 in the morning
    tl;dr: we went bankrupt twice but didn’t give up.