New Systematic Review of Exocrine Pancreatic Insufficiency (EPI) In Type 1 Diabetes and Type 2 Diabetes – Focusing on Prevalence and Treatment

I’m thrilled that the research I did evaluating the prevalence and treatment of EPI in both Type 1 diabetes and Type 2 diabetes (also presented as a poster at #ADA2023 – read a summary of the poster here) has now been published as a full systematic review in Diabetes Technology and Therapeutics.

Here is a pre-edited submitted version of my article that you can access if you don’t have journal access; and as a reminder, copies of ALL of my research articles are available on this page: DIYPS.org/research!

And if you don’t want to read the full paper, this is what I think you should take away from it as a person with diabetes or as a healthcare provider:

    1. What is EPI? 

      Exocrine pancreatic insufficiency (known as EPI in some places, and PEI or PI in other places) occurs when the pancreas no longer produces enough enzymes to digest food. People with EPI take pancreatic enzyme replacement therapy (PERT) whenever they eat (or drink anything with fat/protein).

    2. If I have diabetes, or treat people with diabetes, why should I be reading the rest of this about EPI?EPI often occurs in people with cystic fibrosis, pancreatitis, and pancreatic cancer. However, since these diseases are rare (think <0.1% of the general population even when these groups are added up all together), the total number of people with EPI from these causes is quite low. On the other hand, EPI is also common in people with diabetes, but this is less well-studied and understood. The research on other co-conditions is more frequent and often people confuse the prevalence WITHIN those groups with the % of those conditions occurring overall in the EPI community.This paper reviews every paper that includes data on EPI and people with type 1 diabetes or type 2 diabetes to help us better understand what % of people with diabetes are likely to face EPI in their lifetime.
    3. How many people with type 1 diabetes or type 2 diabetes (or diabetes overall) get EPI?TLDR of the paper: EPI prevalence in diabetes varies widely, reported between 5.4% and 77% when the type of diabetes isn’t specified. For Type 1 diabetes, the median EPI prevalence is 33% (range 14-77.5%), and for Type 2 diabetes, the median is 29% (range 16.8-49.2%). In contrast, in non-diabetes control groups, the EPI prevalence ranges from 4.4% to 18% (median 13%). The differences in ranges might be due to geographic variability and different exclusion criteria across studies.Diabetes itself is prevalent in about 10% of the general population. As such, I hypothesize that people with diabetes likely constitute one of the largest sub-groups of individuals with EPI, in contrast to what I described above might be more commonly assumed.
    4. Is pancreatic enzyme replacement therapy (PERT) safe for people with diabetes? 

      Yes. There have been safety and efficacy studies in people with diabetes with EPI, and PERT is effective just like in any other group of people with EPI.

    5. What is the effect of pancreatic enzyme replacement therapy (PERT) on glucose levels in people with diabetes?
      PERT itself does not affect glucose levels, but PERT *d0es* impact the digestion of food, which then changes glucose levels! So, most PERT labels warn to watch for hypoglycemia or hyperglycemia but the medicine itself doesn’t directly cause changes in glucose levels. You can read a previous study I did here using CGM data to show the effect of PERT actually causing improved glucose after meals in someone with Type 1 diabetes. But, in the systematic review, I found only 4 articles that even made note of glucose levels, and only 1 (the paper I linked above) actually included CGM data. Most of the studies are old, so there are no definitive conclusions on whether hypoglycemia or hyperglycemia is more common when a person with diabetes and EPI starts taking PERT. Instead, it’s likely very individual depending on what they’re eating, insulin dosing patterns before, and whether they’re taking enough PERT to match what they’re eating.TLDR here: more studies are needed because there’s no clear single directional effect on glucose levels from PERT in people with diabetes.Note: based on the n=1 study above, and subsequent conversations with other people with diabetes, I hypothesize that high variability and non-optimal post-meal glucose outcomes may be an early ‘symptom’ of EPI in people with diabetes. I’m hoping to eventually generate some studies to evaluate whether we could use this type of data as an input to help increase screening of EPI in people with diabetes.
    6. How common is EPI (PEI / PI) compared to celiac and gastroparesis in Type 1 diabetes and Type 2 diabetes? 

      As a person with (in my case, Type 1) diabetes, I feel like I hear celiac and gastroparesis talked about often in the diabetes community. I had NEVER heard of EPI prior to realizing I had it. Yet, EPI prevalence in Type 1 and Type 2 diabetes is much higher than that of celiac or gastroparesis!The prevalence of EPI is much higher in T1 and T2 than the prevalence of celiac and gastroparesis.Celiac disease is more common in people with diabetes (~5%) than in the general public (0.5-1%). Gastroparesis, when gastric emptying is delayed, is also more common in people with diabetes (5% in PWD).However, the  prevalence of EPI is 14-77.5% (median 33%) in Type 1 diabetes and 16.8-49.2% (median 29%) in Type 2 diabetes (and 5.4-77% prevalence when type of diabetes was not specified). This again is higher than general population prevalence of EPI.

      This data emphasizes that endocrinologists and other diabetes care providers should be more prone to initiate screening (using the non-invasive fecal elastase test) for individuals presenting with gastrointestinal symptoms, as the rates of EPI in diabetes are much higher in both Type 1 and Type 2 diabetes than the rates of celiac and gastroparesis.

    7. What should I do if I think I have EPI?
      Record your symptoms and talk to your doctor and ask for a fecal elastase (FE-1) screening test for EPI. It’s non-invasive. If your results are less than or equal to 200 (μg/g), this means you have EPI and should start on PERT. If you or your doctor feel that your sample may have influenced the results of your test, you can always re-do the test. But if you’re dealing with diarrhea, going on PERT may resolve or improve the diarrhea and improve the quality of the sample for the next test result. PERT doesn’t influence the test result, so you can start PERT and re-run the test any time.Symptoms of EPI can vary. Some people experience diarrhea, while others experience constipation. Steatorrhea or smelly, messy stools that stick to the side of the toilet are also common EPI symptoms, as is bloating, abdominal pain, and generally not feeling well after you eat.

      If you’ve been diagnosed with EPI, you may also want to check out some of my other posts (DIYPS.org/EPI) about my personal experiences with EPI and also this post about the amount of enzymes needed by most people with EPI. You may also want to check out PERT Pilot, a free iOS app, for recording and evaluating your PERT dosing.

If you want to read the full article, you can find copies of all of my research articles at DIYPS.org/research

If you’d like to cite this specific article in your future research, here’s an example citation:

Lewis, D. A Systematic Review of Exocrine Pancreatic Insufficiency Prevalence and Treatment in Type 1 and Type 2 Diabetes. Diabetes Technology & Therapeutics. http://doi.org/10.1089/dia.2023.0157

Why DIY AID in 2023? #ADA2023 Debate

I was asked to participate in a ‘debate’ about AID at #ADA2023 (ADA Scientific Sessions), representing the perspective that DIY systems should be an option for people living with diabetes.

I present this perspective as a person with type 1 diabetes who has been using DIY AID for almost a decade (and as a developer/contributor to the open source AID systems used in DIY) – please note my constant reminder that I am not a medical doctor.

Dr. Gregory P. Forlenza, an Associate Professor from Barbara Davis Center, presented a viewpoint as a medical doctor practicing in the US.

FYI: here are my disclosures and Dr. Forlenza’s disclosures:

On the left is my slide (Dana M. Lewis) showing I have no commercial support or conflicts of interest. My research in the last 3 years has previously been funded by the New Zealand Health Research Council (for the CREATE Trial); JDRF; and DiabetesMine. Dr. Forlenza lists research support from NIH, JDRF, NSF, Helmsley Charitable Trust, Medtronic, Dexcom, Abbott, Insulet, Tandem, Beta Bionics, and Lilly. He also lists Consulting/Speaking/AdBoard: Medtronic, Dexcom, Abbott, Insulet, Tandem, Beta Bionics, and Lilly.

I opened the debate with my initial presentation. I talk about the history of DIY in diabetes going back to the 1970s, when people with diabetes had to “DIY” with blood glucose meters because initially healthcare providers did not want people to fingerstick at home because they might do something with the information. Similarly, even insulin pumps and CGMs have been used in different “DIY” ways over the years – notably, people with diabetes began dosing insulin using CGM data for years prior to them being approved for that purpose. It’s therefore less of a surprise in that context to think about DIY being done for AID. (If you’re reading this you probably also know that DIY AID was done years before commercial AID was even available; and that there are multiple DIY systems with multiple pump and CGM options, algorithms, and phone options).

And, for people with diabetes, using DIY is very similar to how a lot of doctors recommend or prescribe doing things off label. Diabetes has a LOT of these types of recommendations, whether it’s different types of insulins used in pumps that weren’t approved for that type of insulin; medications for Type 2 being used for Type 1 (and vice versa); and other things that aren’t regulatory approved at all but often recommended anyway. For example, GLP-1’s that are approved for weight management and not glycemic control, but are often prescribed for glycemic control reasons. Or things like Vitamin D, which are widely prescribed or recommended as a supplement even though it is not regulatory-approved as a pharmaceutical agent.

I always like to emphasize that although open source AID is not necessarily regulated (but can be: one open source system has received regulatory clearance recently), that’s not a synonym for ‘no evidence’. There’s plenty of high quality scientific evidence on DIY use and non-DIY use of open source AID. There’s even a recent RCT in the New England Journal of Medicine, not to mention several other RCTs (see here and here, plus another pending publication forthcoming). In addition to those gold-standard RCTs, there are also reviews of large-scale big data datasets from people with diabetes using AID, such as this one where we reviewed 122 people’s glucose data representing 46,070 days’ worth of data; or another forthcoming publication where we analyzed the n=75 unique (distinct from the previous dataset) DIY AID users with 36,827 days’ of data (average of 491 days per participant) and also found above goal TIR outcomes (e.g. mean TIR 70-180 mg/dL of 82.08%).

Yet, people often choose to DIY with AID not just for the glucose outcomes. Yes, commercial AID systems (especially now second-generation) can similarly reach the goal of 70+% TIR on average. DIY helps provide more choices about the type and amount of work that people with diabetes have to put IN to these systems in order to get these above-goal OUTcomes. They can choose, overall or situationally, whether to bolus, count carbs precisely, announce meals at all, or only announce relative meal size while still achieving >80% TIR, no or little hypoglycemia, and less hyperglycemia. Many people using DIY AID for years have been doing no-bolus and/or no meal announcements at all, bringing this closer to a full closed loop, or at least, an AID system with very, very little user input required on a daily basis if they so choose. I presented data back in 2018(!) showing how this was being done in DIY AID, and it was recently confirmed in a randomized control trial (hello, gold standard!) showing that between traditional use (with meal announcements and meal boluses); meal announcement only (no boluses); and no announcement nor bolusing, that they all got similar outcomes in terms of TIR (all above-goal). There was also no difference in those modes of total daily insulin dose (TDD) or amount of carb intake. There was a small difference in time below range being slightly higher in the first mode (where people were counting carbs and bolusing) as compared to the other two modes – which suggests that MORE user input may actually be limiting the capabilities of the system!

The TLDR here is that people with diabetes can do less work/provide less input into AID and still achieve the same level of ideal, above-goal outcomes – and ongoing studies are showing the increased QOL and other patient-reported outcomes that also improve as a result.

Again, people may be predisposed to think that the main difference between commercial and DIY is whether or not it is regulatory approved (and therefore prescribable by doctors and able to be supported by a company under warranty); the bigger differences are instead around interoperability across devices, data access, and transparency of how the system works.

There’s even an international consensus statement on open source AID, created by an international group of 48 medical and legal experts, endorsed by 9 national and international diabetes organizations, supporting that open source AID used in DIY AID is a safe and effective treatment option, confirming that the scientific evidence exists and it has the potential to help people with diabetes and reduce the burden of diabetes. They emphasize that doctors should support patient (and caregiver) autonomy and choice of DIY AID, and state that doctors have a responsibility to learn about all options that exist including DIY. The consensus statement is focused on open source AID but also, in my opinion, applies to all AID: they say that AID systems should fully disclose how they operate to enable informed decisions and that all users should have real-time and open access to their own data. Yes, please! (This is true of DIY but not true of all commercial systems.)

The elephant in the room that I always bring up is cost, insurance coverage, and therefore access and accessibility of AID. Many places have government or insurance that won’t cover AID. For example, the proposed NICE guidelines in the UK wouldn’t provide AID to everyone who wants one. In other places, some people can get their pump covered but not CGM, or vice versa, and must pay out of pocket. Therefore in some cases, DIY has out of pocket costs (because it’s not covered by insurance), but is still cheaper than AID with insurance coverage (if it’s even covered).

I also want to remind everyone that choosing to DIY – or not – is not a once-in-a-lifetime decision. People who use DIY choose every day to use it and continue to use it; at any time, they could and some do choose to switch to a commercial system. Others try commercial, switch back to DIY, and switch back and forth over time for various reasons. It’s not a single or permanent decision to DIY!

The key point is: DIY AID provides safety and efficacy *and* user choice for people with diabetes.

Dr. Forlenza followed my presentation, talking about commercial AID systems and how they’ve moved through development more quickly recently. He points to the RCTs for each approved commercial system that exist, saying commercial AID systems work, and describing different feature sets and variety across commercial systems. He shared his thoughts on advantages of commercial systems including integration between components by the companies; regulatory approval meaning these systems can be prescribed by healthcare providers; company-provided warranties; and company provided training and support of healthcare providers and patients.

He makes a big point about a perceived reporting bias in social media, which is a valid point, and talks about people who cherry pick (my words) data to share online about their TIR.

He puts an observational study and the CREATE Trial RCT data up next to the commercial AID systems RCT data, showing how the second generation commercial AID reach similar TIR outcomes.

He then says “what are you #notwaiting for?”, pointing out in the US that there are 4 commercial systems FDA approved for type 1 diabetes. He says “Data from the DIY trials themselves demonstrate that DIY users, even with extreme selection bias, do not achieve better glycemic control than is seen with commercial systems.” He concludes that commercial AID has a wide variety of options; commercial systems achieve target-level outcomes; a perception that both glucose outcomes and QOL are being addressed by the commercial market, and that “we do not need Unapproved DIY solutions in this space”.

After Dr. Forlenza’s presentation, I began my rebuttal, starting with pointing out that he is incorrectly conflating perceived biases/self-reporting of social media posts with gold-standard, rigorously performed scientific trials evaluating DIY. Data from DIY AID trials do not suffer from ‘selection bias’ any more than commercial AID trials do. (In fact, all clinical trials have their own aspects of selection bias, although that isn’t the point here.) I reminded the audience of the not one but multiple RCTs available as well as dozens of other prospective and retrospective clinical trials. Plus, we have 82,000+ data points analyzed showing above-goal outcomes, and many studies that evaluate this data and adjust for starting outcomes still show that people with diabetes who use DIY AID benefit from doing so, regardless of their starting A1c/TIR or demographics. This isn’t cherry-picked social media anecdata.

When studies are done rigorously, as they have been done in DIY, we agree that now second-generation commercial AID systems reach (or exceed, depending on the system) ADA standard of care outcomes. For example, Dr. Forlenza cited the OP5 study with 73.9% TIR which is similar to the CREATE Trial 74.5% TIR.

My point is not that commercial systems don’t work; my point is that DIY systems *do* work and that the fact that commercial systems work doesn’t then override the fact that DIY systems have been shown to work, also! It’s a “yes, and”! Yes, commercial AID systems work; and yes, DIY AID systems work.

The bigger point, which Dr. Forlenza does not address, is that the person with diabetes should get to CHOOSE what is best for them, which is not ONLY about glucose outcomes. Yes, a commercial system- like DIY AID – may help someone get to goal TIR (or above goal), but DIY provides more choice in terms of the input behaviors required to achieve those outcomes! There’s also possible choice of systems with different pumps or CGMs, different (often lower) cost, increased data access and interoperability of data displays, different mobile device options, and more.

Also, supporting user choice of DIY is in fact A STANDARD OF CARE!

It’s in the ADA’s Standards of Care, in fact, as I wrote about here when observing that it’s in the 2023 Standards of Care…as well as in 2022, 2021, 2020, and 2019!

I wouldn’t be surprised if there are people attending the debate who think they don’t have any – or many – patients using DIY AID. For those who think that (or are reading this thinking the same), I ask a question: how many patients have you asked if they are using DIY AID?

There’s a bunch of reasons why it may not come up, if you haven’t asked:

  • They may use the same consumables (sites, reservoirs) with a different or previous pump in a DIY AID system.
  • Their prescribed pump (particularly in Europe and non-US places that have Bluetooth-enabled pumps) may be usable in a DIY AID.
  • They may not be getting their supplies through insurance, so their prescription doesn’t match what they are currently using.
  • Or, they have more urgent priorities to discuss at appointments, so it doesn’t come up.
  • Or, it’s also possible that it hasn’t come up because they don’t need any assistance or support from their healthcare provider.

Speaking of learning and support, it’s worth noting that in DIY AID, because it is open source and the documentation is freely available, users typically begin learning more about the system prior to initiating their start of closed loop (automated insulin delivery). As a result, the process of understanding and developing trust in the system begins prior to closed loop start as well. In contrast, much of the time there is limited available education prior to receiving the prescription for a commercial AID; it often aligns more closely with the timeline of starting the device. Additionally, because it is a “black box” with fewer available details about exactly how it works (and why), the process of developing trust can be a slower process that occurs only after a user begins to use a commercial device.

With DIY AID, because it is open source and the documentation is freely available, users typically begin learning more about the system prior to initiating their start of closed loop (automated insulin delivery). As a result, the process of understanding and developing trust in the system begins prior to closed loop start as well. In contrast, much of the time there is limited available education prior to receiving the prescription for a commercial AID; it often aligns more closely with the timeline of starting the device. Additionally, because it is a black box with less available details about exactly how it works (and why), the process of developing trust can be a slower process that occurs only after a user begins to use a commercial device. The learning & trust in AID timelines is something that needs more attention in commercial AID moving forward.

I closed my rebuttal section by asking a few questions out loud:

I wonder how healthcare providers feel when patients learn something before they do – which is often what happens with DIY AID. Does it make you uncomfortable, excited, curious, or some other feeling? Why?

I encouraged healthcare providers to consider when they are comfortable with off-label prescriptions (or recommending things that aren’t approved, such as Vitamin D), and reflect on how that differs from understanding patients’ choices to DIY.

I also prompted everyone to consider whether they’ve actually evaluated (all of) the safety and efficacy data, of which many studies exist. And to consider who benefits from each type of system, not only commercial/DIY but individual systems within those buckets. And to consider who gets offered/prescribed AID systems (of any sort) and whether subconscious biases around tech literacy, previous glucose outcomes, and other factors (race, gender, other demographic variables) result in particular groups of people being excluded from accessing AID. I also remind everyone to think about what financial incentives influence access and available of AID education, and where the education comes from.

Although Dr. Forlenza’s  rebuttal followed mine, I’ll summarize it here before finishing a recap of my rebuttal: he talks about individual selection bias/cherry picked data, acknowledging it can occur in anecdotes with commercial systems as well; talks about the distinction of regulatory approval vs. off label and unapproved; legal concerns for healthcare providers; and closes pointing out that many PWD see primary care providers, he doesn’t believe it is reasonable to expect PCPs to become familiar with DIY since there are no paid device representatives to support their learning, and that growth of AID requires industry support.

People probably wanted to walk out of this debate with a black and white, clear answer on what is the ‘right’ type of AID system: DIY or commercial. The answer to that question isn’t straightforward, because it depends.

It depends on whether a system is even AVAILABLE. Not all countries have regulatory-approved systems available, meaning commercial AID is not available everywhere. Some places and people are also limited by ACCESSIBILITY, because their healthcare providers won’t prescribe an AID system to them; or insurance won’t cover it. AFFORDABILITY, even with insurance coverage, also plays a role: commercial AID systems (and even pump and CGM components without AID) are expensive and not everyone can afford them. Finally, ADAPTABILITY matters for some people, and not all systems work well for everyone.

When these factors align – they are available, accessible, affordable, and adaptable – that means for some people in some places in some situations, there are commercial systems that meet those needs. But for other people in other places in other situations, DIY systems instead or also can meet that need.

The point is, though, that we need a bigger overlap of these criteria! We need MORE AID systems to be available, accessible, affordable, and adaptable. Those can either be commercial or DIY AID systems.

The point that Dr. Forlenza and I readily agree on is that we need MORE AID – not less.

This is why I support user choice for people with diabetes and for people who want – for any variety of reasons – to use a DIY system to be able to do so.

People probably want a black and white, clear answer on what is the ‘right’ type of AID system: DIY or commercial. It depends on whether a system is even AVAILABLE. Not all countries have regulatory-approved systems available, meaning commercial AID is not available everywhere. Some places and people are also limited by ACCESSIBILITY, because their healthcare providers won’t prescribe an AID system to them; or insurance won’t cover it. AFFORDABILITY, even if insurance coverage, also plays a role: commercial AID systems (and even pump and CGM components without AID) are expensive and not everyone can afford them. Finally, ADAPTABILITY matters for some people, and not all systems work well for everyone. The point is that we need a bigger overlap of these criteria! We need more alignment of these factors - more AID (DIY and commercial) available, accessible, affordable, and adaptable for people with diabetes. I support user choice for people with diabetes, which includes DIY AID systems

PS – I also presented a poster at #ADA2023 about the high prevalence rates of exocrine pancreatic insufficiency (EPI / PEI / PI) in Type 1 and Type 2 diabetes – you can find the poster and a summary of it here.

How I Built An AI Meal Estimation App – AI Meal Estimates in “PERT Pilot” and Announcing A New App “Carb Pilot”

As I have been working on adding additional features to PERT Pilot, the app I built (now available on the App Store for iOS!) for people like me who are living with exocrine pancreatic insufficiency, I’ve been thinking about all the things that have been challenging with managing pancreatic enzyme replacement therapy (PERT). One of those things was estimating the macronutrients – meaning grams of fat and protein and carb – in what I was eating.

I have 20+ years practice on estimating carbs, but when I was diagnosed with EPI, estimating fat and protein was challenging! I figured out methods that worked for me, but part of my PERT Pilot work has included re-thinking some of my assumptions about what is “fine” and what would be a lot better if I could improve things. And honestly, food estimation is still one of those things I wanted to improve! Not so much the accuracy (for me, after a year+ of practice I feel as though I have the hang of it), but the BURDEN of work it takes to develop those estimates. It’s a lot of work and part of the reason it feels hard to titrate PERT every single time I want to eat something.

So I thought to myself, wouldn’t it be nice if we could use AI tools to get back quick estimates of fat, protein, and carbs automatically in the app? Then we could edit them or otherwise use those estimates.

And so after getting the initial version of PERT Pilot approved and in the App Store for users to start using, I submitted another update – this time with meal estimation! It’s now been live for over a week.

Here’s how it works:

  • Give your meal a short title (which is not used by the AI but is used at a glance by us humans to see the meal in your list of saved meals).
  • Write a simple description of what you’re planning to eat. It can be short (e.g. “hot dogs”) or with a bit more detail (e.g. “two hot dogs with gluten free buns and lots of shredded cheddar cheese”). A little more detail will get you a somewhat more accurate estimates.
  • Hit submit, and then review the generated list of estimated counts. You can edit them if you think they’re not quite right, and then save them.

Here’s a preview of the feature as a video. I also asked friends for examples of what they’d serve if they had friends or family coming over to dinner – check out the meal descriptions and the counts the app generated for them. (This is exactly how I have been using the app when traveling and eating takeout or eating at someone’s house.)

Showing screenshots of PERT Pilot with the meal description input and the output of the estimated macronutrient counts for grams of fat, protein, and carb Showing more screenshots of PERT Pilot with the meal description input and the output of the estimated macronutrient counts for grams of fat, protein, and carb Showing even more screenshots of PERT Pilot with the meal description input and the output of the estimated macronutrient counts for grams of fat, protein, and carb

The original intent of this was to aid people with EPI (PEI/PI) in estimating what they’re eating so they can better match the needed enzyme dosing to it. But I realized…there’s probably a lot of other people who might like a meal estimation app, too. Particularly those of us who are using carb counts to dose insulin several times a day!

I pulled the AI meal estimation idea out into a second, separate app called Carb Pilot, which is also now available on the App Store.

Carb Pilot is designed to make carb counting easier and to save a bunch of clicks for getting an estimate for what you’re eating.

The Carb Pilot logo, which has pieces of fruit on the letters of the word "Carb". Pilot is written in italic script in purple font.

What does Carb Pilot do?

  • Like PERT Pilot, Carb Pilot has the AI meal estimation feature. You can click the button, type your meal description (and a meal title) and get back AI-generated estimates.
  • You can also use voice entry and quickly, verbally describe your meal.
  • You can also enter/save a meal manually, if you know what the counts are, or want to make your own estimates.

Carb Pilot integrates with HealthKit, so if you want, you can enable that and save any/all of your macronutrients there. HealthKit is a great tool for then porting your data to other apps where you might want to see this data along with, say, your favorite diabetes app that contains CGM/glucose data (or for any other reason/combination).

Speaking of “any/all”, Carb Pilot is designed to be different from other food tracking apps.

As a person with diabetes, historically I *just* wanted carb counts. I didn’t want to have to sift through a zillion other numbers when I just needed ONE piece of information. If that’s true for you – whether it’s carbs, protein, calories, or fat – during onboarding you can choose which of these macronutrients you want to display.

Just want to see carbs? That’s the default, and then in the saved meals you’ll ONLY see the carb info! If you change your mind, you can always change this in the Settings menu, and then the additional macronutrients will be displayed again.

Carb Pilot enables you to toggle the display of different nutrients. This shows what it looks like if only carbs are displaying or what happens if you ask the app to display all nutrients for each recorded food item.

It’s been really fun to build out Carb Pilot. Scott has been my tester for it, and interestingly, he’s turned into a super user of Carb Pilot because, in his words, “it’s so easy to use” and to generate macronutrient estimates for what he’s eating. (His use case isn’t for dosing medicine but matching what he’s eating against his energy expenditure for how much exercise/activity he’s been doing.) He’s been using it and giving me feedback and feature requests – I ended up building the voice-entry feature much more quickly than I expected because he was very interested in using it, which has been great! He also requested the ability to display meals in reverse chronological order and to be able to copy a previous meal to repeat it on another day (swipe on a meal and you can copy the description if you want to tweak and use it again, or simply repeat the meal as-is). We also discovered that it supports multiple languages as input for the AI meal estimation feature. How? Well, we were eating outside at a restaurant in Sweden and Scott copied and pasted the entree description from the menu – in Swedish – into Carb Pilot. It returned the counts for the meal, exactly as if he had entered them in English (our default language)!

I’m pointing this out because if you give Carb Pilot a try and have an idea for a feature/wish you could change the app in some way, I would LOVE for you to email me and tell me about it. I have a few other improvements I’m already planning to add but I’d love to make this as useful to as many people who would find this type of app helpful.

Why (was) there a subscription for ongoing AI use?

For both PERT Pilot and Carb Pilot, there is a cost (expense) to using the AI meal estimation. I have to pay OpenAI (which hosts the AI I’m using for the app) to use the AI for each meal estimation, and I have to host a web server to communicate between the app and the AI, which also costs a bit for every time we send a meal estimation request from the app. That’s why I decided to make Carb Pilot free to download and try. I originally played with $1.99 a month for unlimited AI meal estimations, but temporarily have turned that off to see what that does to the server load and cost, so right now it’s free to use the AI features as well.

TLDR:

– PERT Pilot has been updated to include the new meal estimation feature!

– People without EPI can use Carb Pilot for carb, protein, fat, and/or calorie tracking (of just one or any selection of those) tracking, also using the new AI meal estimation features!

You can find PERT Pilot here or Carb Pilot here on the App Store.

A Crouton In Your Salad (Or COVID In The Air)

Look, I get it: you don’t care about a crouton in your salad.

If you don’t like croutons, you simply pick them out of your salad and nudge them to the side of your plate. No harm done.

But for me, a crouton in my salad IS harm done. Even if I were (or the restaurant were) to pick off the croutons, the harm is done. There are specks and crumbs of gluten remaining in my food, and since I have celiac disease, my body is going to overreact to microscopic flecks of gluten and cause damage to my intestines and actively block absorbing the nutrients in the other food that I’m eating.

You might scoff at this concept, but one of the reasons celiac is so risky is because there are both the short term effects (days of abdominal pain, for example) and the long-term risk of causing holes in my intestine and drastically increasing the risk of stomach cancer, if I were to continue consuming gluten.

Some people with celiac aren’t symptomatic, meaning, they could eat the specks (or heck, chunks) of gluten and not feel what I feel.

When I eat specks of gluten? Bad news bears. Literally. It feels like bears clawing at my insides for hours, then days of abdominal soreness, headaches, and feeling unwell. That’s from a SPECK of gluten. I have a strong symptomatic response, so that makes it easier – perhaps – for me than for those with celiac without symptomatic response to choose to be very, very careful and avoiding cross-contamination in my food, and lower my long-term risk of things like stomach cancer that is linked to celiac long-term.

But knowing what I know about how my brain works and the rest of what I’m dealing with, I can imagine the alternative that if I was asymptomatic but lucky enough to discover that I did have celiac disease (through routine screening), I would probably still go to 99% of the same lengths that I do now to avoid gluten and cross-contamination of gluten, because of the long-term risks being so high.

I also don’t have celiac in a silo. I also have type 1 diabetes, which raises my risk of other things…and now I also have exocrine pancreatic insufficiency (EPI) which means every meal I am fighting to supply the right amount of enzymes to successfully digest my food, too. Oh, and now I also have Graves’ disease, so while my thyroid levels are nicely in range and always have been, I’m fighting battles with invisible ghosts in my body (thyroid-related antibodies) that are causing intermittent swelling of my eyelids and messing with my heart rate to tell me that there’s something going on in my body that I have no direct control over.

My plate is already full. (Or my dance card is already full, if you prefer that analogy). I don’t want, and can’t mentally envision right now, handling another thing. I work really hard every day to keep myself in good health. That involves managing my glucose levels and insulin delivery (for Type 1 diabetes), taking my thyroid-related medication that might be helping bring my antibody levels down and monitoring for symptoms to better provided feedback to the 6-week loop of data I get from blood testing to decide how we should be treating my Graves’, to thinking about EVERY SINGLE THING I put in my mouth so that I can take the right amount of enzymes for it, to making sure EVERY SINGLE THING I put in my mouth is gluten-free and is safe from cross-contamination.

Every meal. Every snack. Every drink. Every day.

Probably for the rest of my life: I can’t stop thinking about or doing those things.

Perhaps, then, if you could imagine being in this situation (and I’m so glad most of you are not!), you can imagine that I work really hard to make things easier and better for myself. Both with the plate that I’ve been given, but also in doing my best to lower the risk of more things being added to my already over-loaded plate.

(Preface for this next section: this is about ME not about YOU.)

COVID is one such example. I have worked very hard to avoid COVID, and I am still working very hard to avoid COVID. Like celiac and EPI, if I were to get COVID or other viral illnesses (like the flu), there is the risk of feeling very bad for a short period of time (e.g. 5-7 days). (I’m vaccinated, so the risk of short-term illness being severe (e.g. hospitalization, death) is lowered, and is probably at the same risk as being hospitalized for flu. Even when vaccinated for flu, I’ve been sick enough to almost be hospitalized, which is also why I don’t discount this risk, albeit recognizing it is lower with vaccination).

But like celiac and EPI, if I were to get COVID etc, that increases health risks for the long-term. This is true of most viral illnesses. And when you have an autoimmune condition which indicates your body is a super-star at overreacting to things (which causes other autoimmune conditions), you can imagine that poking the bear is going to make the bear (over)react, whether it is in the short-term or long-term.

It’s not so much if, but when, I would get handed my FIFTH chronic condition if I do get COVID. I went from two (type 1 diabetes and celiac) to four (adding EPI and Graves’) within the course of the same year. This is without having COVID. Given the data showing the increased risk in the long-term of developing many other conditions following COVID, even in people who don’t have superstar overreactive immune systems, it is easy to draw a dotted line to predict the future post-COVID infection to imagine it is not if, but when, my fifth thing would develop and get added to my plate.

So this is why I choose to do things differently than perhaps you do. I mask in indoor spaces. I am currently still choosing to avoid indoor dining. I don’t mind if you choose to do differently; I similarly don’t begrudge you eating croutons. But just like I wouldn’t expect you to pelt me with croutons and yell at me for not eating croutons when you can, I also prefer people not to propel possibly-infectious air at me at short-range when I am unmasked, which is why I prefer to be masked in indoor public spaces. The air is lava (or crouton dust) to me in terms of COVID.

Again, the point here is not to convince you to act any differently than you are acting. You do you! Eat your croutons, do what you like in regard to breathing the air however you like.

But like most folks are 100% fantastic about respecting that I’m not going to eat flecks of croutons, I wish folks would be more understanding of all the background situations behind my (and others’) choices regarding masking or avoiding indoor dining. What I do is not hurting someone else, whether it is not eating croutons or choosing to be masked in an indoor space.

Why would someone want to force me to eat a crouton, knowing it would cause immense harm in the short-term and contribute to long-term damage to my body and increase the risk of life-ending harm?

This is the direction in which I wish we could shift thinking about individual behaviors. Me wearing a mask is like me not eating croutons. Also, I don’t usually ask people to not eat croutons, but many of my friends and family will be happy to agree to eat at a 100% gluten free place if that’s the best option, because it doesn’t harm them not to eat gluten on occasion. Sometimes we do eat at a place that serves gluten, and they eat their croutons without thinking about it. I’m fine with that, too, as long as I am not asked or put at risk of having my mouth be stuffed with crouton dust. That’s how, maybe, I wish people would think about masking. Even if you don’t typically wear masks because you don’t feel you need to, you might choose to occasionally mask indoors when you’re around others who are masking to protect themselves. Like eating at a gluten free restaurant with your friends on occasion, it probably won’t be a big deal for you. You get plenty of gluten at other times. Then you can go back to eating your usual dietary choices (croutons all day, not masking).

COVID is interesting because it is something that potentially impacts all of us, which is why I think maybe the dynamics are changed. Someone might say “oh sure, I wouldn’t throw croutons at you or yell at you for choosing not to eat gluten”. But some people might also think they have the right to judge me regarding my choices around showing up somewhere masked, because they are ‘in the same situation’ and are choosing differently than I.

But my point is: this is not the same situation, the risks to me are not the same, which is why I may choose differently.

TLDR – I guess the point is, what looks like the ‘same’ situation on the outside is not the same for everyone; these differences influence our individual choices and needs; and I wish this is the way more people saw things.

A Crouton In Your Salad (or COVID in the air) by Dana M. Lewis on DIYPS.org

How I Use LLMs like ChatGPT And Tips For Getting Started

You’ve probably heard about new AI (artificial intelligence) tools like ChatGPT, Bard, Midjourney, DALL-E and others. But, what are they good for?

Last fall I started experimenting with them. I looked at AI art tools and found them to be challenging, at the time, for one of my purposes, which was creating characters and illustrating a storyline with consistent characters for some of my children’s books. I also tested GPT-3 (meaning version 3.0 of GPT). It wasn’t that great, to be honest. But later, GPT-3.5 was released, along with the ChatGPT chat interface to it, which WAS a big improvement for a lot of my use cases. (And now, GPT-4 is out and is an even bigger improvement, although it costs more to use. More on the cost differences below)

So what am I using these AI tools for? And how might YOU use some of these AI tools? And what are the limitations? This is what I’ve learned:

  1. The most frequent way I use these AI tools is for getting started on a project, especially those related to writing.

You know the feeling of staring at a blank page and not knowing where to start? Maybe it’s the blank page of a cold email; the blank page of an essay or paper you need to write; the blank page of the outline for a presentation. Starting is hard!

Even for this blog post, I had a list of bulleted notes of things I wanted to remember to include. But I wasn’t sure how I wanted to start the blog post or incorporate them. I stuck the notes in ChatGPT and asked it to expand the notes.

What did it do? It wrote a few paragraph summary. Which isn’t what I wanted, so I asked it again to use the notes and this time “expand each bullet into a few sentences, rather than summarizing”. With these clear directions, it did, and I was able to look at this content and decide what I wanted to edit, include, or remove.

Sometimes I’m stuck on a particular writing task, and I use ChatGPT to break it down. In addition to kick-starting any type of writing overall, I’ve asked it to:

  • Take an outline of notes and summarize them into an introduction; limitations section; discussion section; conclusion; one paragraph summary; etc.
  • Take a bullet point list of notes and write full, complete sentences.
  • Take a long list of notes I’ve written about data I’ve extracted from a systematic review I was working on, and ask it about recurring themes or outlier concepts. Especially when I had 20 pages (!) of hand-written notes in bullets with some loose organization by section, I could feed in chunks of content and get help getting the big picture from that 20 pages of content I had created. It can highlight themes in the data based on the written narratives around the data.

A lot of times, the best thing it does is it prompts my brain to say “that’s not correct! It should be talking about…” and I’m able to more easily write the content that was in the back of my brain all along. I probably use 5% of what it’s written, and more frequently use it as a springboard for my writing. That might be unique to how I’m using it, though, and other simple use cases such as writing an email to someone or other simplistic content tasks may mean you can keep 90% or more of the content to use.

2. It can also help analyze data (caution alert!) if you understand how the tools work.

Huge learning moment here: these tools are called LLMs (large language models). They are trained on large amounts of language. They’re essentially designed so that, based on all of those words (language) it’s taken in previously, to predict content that “sounds” like what would come after a given prompt. So if you ask it to write a song or a haiku, it “knows” what a song or a haiku “looks” like, and can generate words to match those patterns.

It’s essentially a PATTERN MATCHER on WORDS. Yeah, I’m yelling in all caps here because this is the biggest confusion I see. ChatGPT or most of these LLMs don’t have access to the internet; they’re not looking up in a search engine for an answer. If you ask it a question about a person, it’s going to give you an answer (because it knows what this type of answer “sounds” like), but depending on the amount of information it “remembers”, some may be accurate and some may be 100% made up.

Why am I explaining this? Remember the above section where I highlighted how it can start to sense themes in the data? It’s not answering solely based on the raw data; it’s not doing analysis of the data, but mostly of the words surrounding the data. For example, you can paste in data (from a spreadsheet) and ask it questions. I did that once, pasting in some data from a pivot table and asking it the same question I had asked myself in analyzing the data. It gave me the same sense of the data that I had based on my own analysis, then pointed out it was only qualitative analysis and that I should also do quantitative statistical analysis. So I asked it if it could do quantitative statistical analysis. It said yes, it could, and spit out some numbers and described the methods of quantitative statistical analysis.

But here’s the thing: those numbers were completely made up!

It can’t actually use (in its current design) the methods it was describing verbally, and instead made up numbers that ‘sounded’ right.

So I asked it to describe how to do that statistical method in Google Sheets. It provided the formula and instructions; I did that analysis myself; and confirmed that the numbers it had given me were 100% made up.

The takeaway here is: it outright said it could do a thing (quantitative statistical analysis) that it can’t do. It’s like a human in some regards: some humans will lie or fudge and make stuff up when you talk to them. It’s helpful to be aware and query whether someone has relevant expertise, what their motivations are, etc. in determining whether or not to use their advice/input on something. The same should go for these AI tools! Knowing this is an LLM and it’s going to pattern match on language helps you pinpoint when it’s going to be prone to making stuff up. Humans are especially likely to make something up that sounds plausible in situations where they’re “expected” to know the answer. LLMs are in that situation all the time: sometimes they actually do know an answer, sometimes they have a good guess, and sometimes they’re just pattern matching and coming up with something that sounds plausible.

In short:

  • LLM’s can expand general concepts and write language about what is generally well known based on its training data.
  • Try to ask it a particular fact, though, and it’s probably going to make stuff up, whether that’s about a person or a concept – you need to fact check it elsewhere.
  • It can’t do math!

But what it can do is teach you or show you how to do the math, the coding, or whatever thing you wish it would do for you. And this gets into one of my favorite use cases for it.

3. You can get an LLM to teach you how to use new tools, solve problems, and lower the barrier to entry (and friction) on using new tools, languages, and software.

One of the first things I did was ask ChatGPT to help me write a script. In fact, that’s what I did to expedite the process of finding tweets where I had used an image in order to get a screenshot to embed on my blog, rather than embedding the tweet.

It’s now so easy to generate code for scripts, regardless of which language you have previous experience with. I used to write all of my code as bash scripts, because that’s the format I was most familiar with. But ChatGPT likes to do things as Python scripts, so I asked it simple questions like “how do I call a python script from the command line” after I asked it to write a script and it generated a python script. Sure, you could search in a search engine or Stack Overflow for similar questions and get the same information. But one nice thing is that if you have it generate a script and then ask it step by step how to run a script, it gives you step by step instructions in context of what you were doing. So instead of saying “to run a script, type `python script.py’”, using placeholder names, it’ll say “to run the script, use ‘python actual-name-of-the-script-it-built-you.py’ “ and you can click the button to copy that, paste it in, and hit enter. It saves a lot of time for figuring out how to take placeholder information (which you would get from a traditional search engine result or Stack Overflow, where people are fond of things like saying FOOBAR and you have no idea if that means something or is meant to be a placeholder). Careful observers will notice that the latest scripts I’ve added to my Open Humans Data Tools repository (which is packed with a bunch of scripts to help work with big datasets!) are now in Python rather than bash; such as when I was adding new scripts for fellow researchers looking to check for updates in big datasets (such as the OpenAPS Data Commons). This is because I used GPT to help with those scripts!

It’s really easy now to go from an idea to a script. If you’re able to describe it logically, you can ask it to write a script, tell you how to run it, and help you debug it. Sometimes you can start by asking it a question, such as “Is it possible to do Y?” and it describes a method. You need to test the method or check for it elsewhere, but things like uploading a list of DOIs to Mendeley to save me hundreds of clicks? I didn’t realize Mendeley had an API or that I could write a script that would do that! ChatGPT helped me write the script, figure out how to create a developer account and app access information for Mendeley, and debug along the way so I ended up within an hour and a half of having a tool that easily saved me 3 hours on the very first project that I used it with.

I’m gushing about this because there’s probably a lot of ideas you have that you immediately throw out as being too hard, or you don’t know how to do it. It takes time, but I’m learning to remember to think “I should ask the LLM this” and ask it questions such as:

  • Is it possible to do X?
  • Write a script to do X.
  • I have X data. Pretend I am someone who doesn’t know how to use Y software and explain how I should do Z.

Another thing I’ve done frequently is ask it to help me quickly write a complex formula to use in a spreadsheet. Such as “write a formula that can be used in Google Sheets to take an average of the values in M3:M84 if they are greater than zero”.

It gives me the formula, and also describes it, and in some cases, gives alternative options.

Other things I’ve done with spreadsheets include:

  • Ask it to write a conditional formatting custom formula, then give me instructions for expanding the conditional formatting to apply to a certain cell range.
  • Asking it to check if a cell is filled with a particular value and then repeating the value in the new cell, in order to create new data series to use in particular charts and graphs I wanted to create from my data.
  • Help me transform my data so I could generate a box and whisker plot.
  • Ask it for other visuals that might be effective ways to illustrate and visualize the same dataset.
  • Explain the difference between two similar formulas (e.g. COUNT and COUNTA or when to use IF and IFS).

This has been incredibly helpful especially with some of my self-tracked datasets (particularly around thyroid-related symptom data) where I’m still trying to figure out the relationship between thyroid levels, thyroid antibody levels, and symptom data (and things like menstrual cycle timing). I’ve used it for creating the formulas and solutions I’ve talked about in projects such as the one where I created a “today” line that dynamically updates in a chart.

It’s also helped me get past the friction of setting up new tools. Case in point, Jupyter notebooks. I’ve used them in the web browser version before, but often had issues running the notebooks people gave me. I debugged and did all kinds of troubleshooting, but have not for years been able to get it successfully installed locally on (multiple of) my computers. I had finally given up on effectively using notebooks and definitely given up on running it locally on my machine.

However, I decided to see if I could get ChatGPT to coax me through the install process.

I told it:

“I have this table with data. Pretend I am someone who has never used R before. Tell me, step by step, how to use a Jupyter notebook to generate a box and whisker plot using this data”

(and I pasted my data that I had copied from a spreadsheet, then hit enter).

It outlined exactly what I needed to do, saying to install Jupyter Notebook locally if I hadn’t, gave me code to do that, installing the R kernel, told me how to do that, then how to start a notebook all the way down to what code to put in the notebook, the data transformed that I could copy/paste, and all the code that generated the plot.

However, remember I have never been able to successfully get Jupyter Notebooks running! For years! I was stuck on step 2, installing R. I said:

“Step 2, explain to me how I enter those commands in R? Do I do this in Terminal?”

It said “Oh apologies, no, you run those commands elsewhere, preferably in Rstudio. Here is how to download RStudio and run the commands”.

So, like humans often do, it glossed over a crucial step. But it went back and explained it to me and kept giving more detailed instructions and helping me debug various errors. After 5-6 more troubleshooting steps, it worked! And I was able to open Jupyter Notebooks locally and get it working!

All along, most of the tutorials I had been reading had skipped or glossed over that I needed to do something with R, and where that was. Probably because most people writing the tutorials are already data scientists who have worked with R and RStudio etc, so they didn’t know those dependencies were baked in! Using ChatGPT helped me be able to put in every error message or every place I got stuck, and it coached me through each spot (with no judgment or impatience). It was great!

I was then able to continue with the other steps of getting my data transformed, into the notebook, running the code, and generating my first ever box and whisker plot with R!

A box and whisker plot, illustrated simply to show that I used R and Jupyter finally successfully!

This is where I really saw the power of these tools, reducing the friction of trying something new (a tool, a piece of software, a new method, a new language, etc.) and helping you troubleshoot patiently step by step.

Does it sometimes skip steps or give you solutions that don’t work? Yes. But it’s still a LOT faster than manually debugging, trying to find someone to help, or spending hours in a search engine or Stack Overflow trying to translate generic code/advice/solutions into something that works on your setup. The beauty of these tools is you can simply paste in the error message and it goes “oh, sorry, try this to solve that error”.

Because the barrier to entry is so low (compared to before), I’ve also asked it to help me with other project ideas where I previously didn’t want to spend the time needed to learn new software and languages and all the nuances of getting from start to end of a project.

Such as, building an iOS app by myself.

I have a ton of projects where I want to temporarily track certain types of data for a short period of time. My fall back is usually a spreadsheet on my phone, but it’s not always easy to quickly enter data on a spreadsheet on your phone, even if you set up a template with a drop down menu like I’ve done in the past (for my DIY macronutrient tool, for example). For example, I want to see if there’s a correlation in my blood pressure at different times and patterns of inflammation in my eyelid and heart rate symptoms (which are symptoms, for me, of thyroid antibodies being out of range, due to Graves’ disease). That means I need to track my symptom data, but also now some blood pressure data. I want to be able to put these datasets together easily, which I can, but the hardest part (so to speak) is finding a way that I am willing to record my blood pressure data. I don’t want to use an existing BP tracking app, and I don’t want a connected BP monitor, and I don’t want to use Apple Health. (Yes, I’m picky!)

I decided to ask ChatGPT to help me accomplish this. I told it:

“You’re an AI programming assistant. Help me write a basic iOS app using Swift UI. The goal is a simple blood pressure tracking app. I want the user interface to default to the data entry screen where there should be three boxes to take the systolic, diastolic blood pressure numbers and also the pulse. There should also be selection boxes to indicate whether the BP was taken sitting up or laying down. Also, enable the selection of a section of symptom check boxes that include “HR feeling” and “Eyes”. Once entered on this screen, the data should save to a google spreadsheet.” 

This is a completely custom, DIY, n of 1 app. I don’t care about it working for anyone else, I simply want to be able to enter my blood pressure, pulse, whether I’m sitting or laying down, and the two specific, unique to me symptoms I’m trying to analyze alongside the BP data.

And it helped me build this! It taught me how to set up a new SwiftUI project in XCode, gave me code for the user interface, how to set up an API with Google Sheets, write code to save the data to Sheets, and get the app to run.

(I am still debugging the connection to Google Sheets, so in the interim I changed my mind and had it create another screen to display the stored data then enable it to email me a CSV file, because it’s so easy to write scripts or formulas to take data from two sources and append it together!)

Is it fancy? No. Am I going to try to distribute it? No. It’s meeting a custom need to enable me to collect specific data super easily over a short period of time in a way that my previous tools did not enable.

Here’s a preview of my custom app running in a simulator phone:

Simulator iphone with a basic iOS app that intakes BP, pulse, buttons for indicating whether BP was taken sitting or laying down; and toggles for key symptoms (in my case HR feeling or eyes), and a purple save button.

I did this in a few hours, rather than taking days or weeks. And now, the barrier to entry to creating more custom iOS is reduced, because now I’m more comfortable working with XCode and the file structures and what it takes to build and deploy an app! Sure, again, I could have learned to do this in other ways, but the learning curve is drastically shortened and it takes away most of the ‘getting started’ friction.

That’s the theme across all of these projects:

  • Barriers to entry are lower and it’s easier to get started
  • It’s easier to try things, even if they flop
  • There’s a quicker learning curve on new tools, technologies and languages
  • You get customized support and troubleshooting without having to translate through as many generic placeholders

PS – speaking of iOS apps, based on building this one simple app I had the confidence to try building a really complex, novel app that has never existed in the world before! It’s for people with exocrine pancreatic insufficiency like me who want to log pancreatic enzyme replacement therapy (PERT) dosing and improve their outcomes – check out PERT Pilot and how I built it here.

4. Notes about what these tools cost

I found ChatGPT useful for writing projects in terms of getting started, even though the content wasn’t that great (on GPT-3.5, too). Then they came out with GPT-4 and made a ChatGPT Pro option for $20/month. I didn’t think it was worth it and resisted it. Then I finally decided to try it, because some of the more sophisticated use cases I wanted to use it for required a longer context window, and in addition to a better model it also gave you a longer context window. I paid the first $20 assuming I’d want to cancel it by the end of the month.

Nope.

The $20 has been worth it on every single project that I’ve used it for. I’ve easily saved 5x that on most projects in terms of reducing the energy needed to start a project, whether it was writing or developing code. It has saved 10x that in time cost recouped from debugging new code and tools.

GPT-4 does have caps, though, so even with the $20/month, you can only do 25 messages every 3 hours. I try to be cognizant of which projects I default to using GPT-3.5 on (unlimited) versus saving the more sophisticated projects for my GPT-4 quota.

For example, I saw a new tool someone had built called “AutoResearcher”, downloaded it, and tried to use it. I ran into a bug and pasted the error into GPT-3.5 and got help figuring out where the problem was. Then I decided I wanted to add a feature to output to a text file, and it helped me quickly edit the code to do that, and I PR’ed it back in and it was accepted (woohoo) and now everyone using that tool can use that feature. That was pretty simple and I was able to use GPT-3.5 for that. But sometimes, when I need a larger context window for a more sophisticated or content-heavy project, I start with GPT-4. When I run into the cap, it tells me when my next window opens up (3 hours after I started using it), and I usually have an hour or two until then. I can open a new chat on GPT-3.5 (without the same context) and try to do things there; switch to another project; or come back at the time it says to continue using GPT-4 on that context/setup.

Why the limit? Because it’s a more expensive model. So you have a tradeoff between paying more and having a limit on how much you can use it, because of the cost to the company.

—–

TLDR:

Most important note: LLMs don’t “think” or “know” things the way humans do. They output language they predict you want to see, based on its training and the inputs you give it. It’s like the autocomplete of a sentence in your email, but more words on a wider range of topics!

Also, the LLM can’t do math. But they can write code. Including code to do math.

(Some, but not all, LLMs have access to the internet to look up or incorporate facts; make sure you know which LLM you are using and whether it has this feature or not.)

Ways to get started:

    1. The most frequent way I use these AI tools is for getting started on a project, especially those related to writing.
      • Ask it to help you expand on notes; write summaries of existing content; or write sections of content based on instructions you give it
    2.  It can also help analyze data (caution alert!) if you understand the limitations of the LLM.
      • The most effective way to work with data is to have it tell you how to run things in analytical software, whether that’s how to use R or a spreadsheet or other software for data analysis. Remember the LLM can’t do math, but it can write code so you can then do the math!
    3.  You can get an LLM to teach you how to use new tools, solve problems, and lower the barrier to entry (and friction) on using new tools, languages, and software.
      • Build a new habit of asking it “Can I do X” or “Is it possible to do Y” and when it says it’s possible, give it a try! Tell it to give you step-by-step instructions. Tell it where you get stuck. Give it your error messages or where you get lost and have it coach you through the process. 

What’s been your favorite way to use an LLM? I’d love to know other ways I should be using them, so please drop a comment with your favorite projects/ways of using them!

Personally, the latest project that I built with an LLM has been PERT Pilot!

How I use LLMs (like ChatGPT) and tips for getting started

How I PRed My 100k Time

I’ve been training for a big goal of mine: running a 100k in a specific amount of time. Yes, I’ve run farther than that before: last year I ran ~82 miles. However, I had someone in my family network who ran 100k last year, and I realized their time made a reasonable goal for me. I’m competitive, so the extra motivation of striving for a certain time is helpful for channeling my “racing”, even if I’m “racing” someone virtually (who ran a year ago!).

Like last year, I decided I would run my 100k (which is 62+ miles) as a solo or DIY ultramarathon. I originally plotted five laps of various lengths, then figured out I could slightly alter my longest route by almost a mile, making it so I would do 2 laps of the same length, a third lap of my original longest length, and then a fourth lap of a shorter length that’s also one of my preferred running routes. Only four laps would be mentally easier than doing five laps, even though it would end up being exactly the same distance. Like last year, I leveraged extensive planning (most of it done last year) to plan my electrolytes, enzymes, and fueling in advance. I had a lot less work to do this year, because I simply refreshed the list of gear and prep work from last year, shortened of course to match the length of my expected race (less than 18 hours vs ~24+ hours). The main thing I changed in terms of preparation is that while I set out a few “just in case” supplies, most of them I left in their places, figuring they’d be easy enough to find in the house by Scott (my husband) if I needed to ask him to bring out anything in particular. The few things I laid out were emergency medical supplies like inhaled insulin, inhaled glucagon, a backup pump site, etc. And my usual piles of supplies – clothes, fuel to refill my vest, etc – for each lap.

My 100k run supplies set out on the floor. I have a bag of OTC enzymes (for exocrine pancreatic insufficiency), 8-10 individually packaged snacks ranging from Fritos to yogurt pretzels to sandwich cookies, cashews, and beef sticks, a bag of electrolyte pills, and eye drops and disposable tooth brushes. Each lap (4 total) has a set of each of these.

One thing that was different for my 100k was my training. Last year, I was coming back from a broken toe and focused on rebuilding my feet. I found that I needed to stick with three runs per week. This year, I was back up to 4-5 runs per week and building up my long runs beginning in January, but in early February I felt like my left shin was getting niggle-y and I backed down to 3 runs a week. Plus, I was also more active on the weekends, including most weekends where we were cross-country skiing twice, often covering 10-15 miles between two days of skiing, so I was getting 3+ extra hours of “time on legs”, albeit differently than running. Instead of just keeping one longer run, a medium run, and two shorter runs (my original plan), I shifted to one long run, one medium long run (originally 8 and then jumping to 13 miles because it matched my favorite route), and the big difference was making my third run about 8 miles, too. This meant that I carried my vest and fueled for all three runs, rather than just one or two runs per week. I think the extra time training with the weight of my vest paid off, and the miles I didn’t do or the days I didn’t run didn’t seem to make a difference in regard to recovering during the weeks of training or for the big run itself. Plus, I practiced fueling every week for every run.

I also tapered differently. Once I switched to three runs a week, my shin felt a lot better. However, in addition to cross country skiing, Scott and I also have access now to an outdoor rock climbing wall (so fun!) and have been doing that. It’s a different type of workout and also helps with full body and upper body strength, while being fun and not feeling like a workout. I bring it up mostly because three weeks ago, I think I hurt the inside of my hip socket somehow by pressing off a foothold at a weird angle, and my hip started to be painful. It was mostly ok running, but I backed off my running schedule and did fewer miles for a week. The following week I was supposed to do my last longest long run – but I felt like it wouldn’t be ideal to do with my hip still feeling intermittently sore. Sometimes it felt uncomfortable running, other times it didn’t, but it didn’t feel fully back to normal. I decided to skip the last long run and stick with a week of my medium run length (I did 13, 13, and 8). That felt mostly good, and it occurred to me that two shorter weeks in a row were essentially a taper. If I didn’t feel like one more super long run (originally somewhere just under a 50k) was necessary to prepare, then I might as well consider moving my ‘race’ up. This is a big benefit of DIY’ing it, being able to adjust to injury or schedule – or the weather! The weather was also forecasted to be REALLY nice – no rain, high 50s F, and so I tentatively aimed to do a few short runs the following week with my 100k on the best weather day of the weekend. Or if the weather didn’t work out, I could push it out another week and stick with my original plan.

My taper continued to evolve, with me running 4 easy miles on Monday (without my vest) to see how my hip felt. Mostly better, but it still occasionally niggled when walking or running, which made me nervous. I discussed this endlessly with Scott, who as usual thought I was overcomplicating it and that I didn’t need to run more that week before my 100k. I didn’t like the idea of running Monday, then not running again until (Friday-Sunday, whenever it ended up being), but a friend unexpectedly was in town and free on Wednesday morning, so I went for a walk outside with her and that made it easy to choose not to run! It was going to be what it was going to be, and my hip would either let me run 100k or it would let me know to make it a regular long run day and I could stop at any time.

So – my training wasn’t ideal (shifting down to 3 runs a week) and my taper was very unexpected and evolved differently than it usually does, but listening to my body avoided major injury and I woke up feeling excited and with a good weather forecast for Friday morning, so I set off at 6am for my 100k.

(Why 6am start, if I was DIYing? My goal was to finish by 11:45pm, to beat the goal time of 11:46pm, which would have been 17 hours and 46 minutes. I could start later but that would involve more hours of running at night and keeping Scott awake longer, so I traded for an hour of running before it got light and finishing around midnight for a closer to normal bedtime for us both.)

*One other major thing I did to prep was that as soon as I identified that I wanted to shift my race up a week, I went in and started scheduling my bedtimes, beginning with the night before the race. If I raced at 6 from home, I would wake up at 5 to get ready, so I wanted to be sleeping by 9pm at the latest in order to get close to a normal night of sleep. Ideally it would be closer to 8-8:30. I set my bed time and each night prior, marked the bedtime 15 minutes later, so that when I started I was trying to push my bedtime from ~11pm to 10:45 pm then the next night 10:30pm etc. It wasn’t always super precise – I’ve done a better job achieving the goal bedtimes previously, but given that I did an early morning cross country ski race on the morning of daylight saving time the week before (ouch), it went pretty ok, and I woke up at 5am on race morning feeling rested and better than I usually do on race days. 7 hours and 45 minutes of sleep is an hour to an hour and a half less than usual, but it’s a LOT better than the 4-5 hours of sleep I might have otherwise gotten without shifting my schedule.

THE START (MILES 0-17)

My ultra running experience checklist, to highlight the good and the less good as I run. This shows that I saw stars, bunnies, and a loon and a pheasant, but did not see my usual eagles, heron, or heard any ducks splashing in the river at night.I set out at 6am, It was 33 degrees (F), so I wore shorts and a short sleeve shirt, with a pair of fleece lined pants over my shorts and a long sleeve shirt, rain jacket, ear cover, and gloves on my hand. It was dry, which helped. I was the only one out on the trail in the dark, and I had a really bright waist lamp and was running on a paved trail, so I didn’t have issues seeing or running. I felt a bit chilly but within 3 minutes could tell I would be fine temperature wise. As I got on the trail, I glanced up and grinned – the stars were out! That meant I could “check” something off my experience list at the very start. (I make a list of positive and less great experiences to ‘check off’ mentally, everything from seeing the stars or seeing bunnies or other wildlife to things like blisters, chafing, or being cold or tired or having out of whack glucose levels – to help me process and “check them off” my list and move on after problem solving, rather than dwelling on them and getting myself into a negative mood). The other thing I chuckled about at the start was passing the point where, about a half mile in to my 82 miles, I had popped the bite valve off of my hydration hose and gotten water everywhere and couldn’t find the bite valve for 3 minutes. That didn’t happen this time, phew! So this run was already off to a great start, just by nothing wild like that happening within the first few minutes. I peeled off my ear cover at 0.75 miles and my gloves at a mile. My jacket then peeled off to tie around my waist by the second mile, and I was surprised when my alarm went off at 6:30am reminding me to take in my first fuel. My plan calls for fuel every 30 minutes, which is why I like starting at the top of the hour (e.g. 6:00am) so I can use the alarm function on my phone to have alarms pre-set for the clock times when I need to fuel. Morning-sunrise-during-100kAs I continued my run/walk, just like I do in all my training runs, I pulled my enzymes out of my left pocket, swallowed them, put them away, grabbed my fuel out of my right pocket (starting with chili cheese Fritos), then also entered it into my fuel tracking spreadsheet so I could keep an eye on rolling calorie and sodium consumption throughout my run. (Plus, Scott can also see it and keep an eye on it as an extra data point that I’m doing well and following all planned activities, as well as having live GPS tracking and glucose tracking capabilities). I carried on, and as the sky began to lighten, I could see frost covering the ground beside the trail – brrr! It actually felt a little bit colder as the sun rose, and I could see wafts of fog rolling along the river. I started to see more people out for early morning runs, and I checked my usual irritation at people who were likely only out for (3? 5? 10? Psh!) short morning runs while I was just beginning an all day slog.

PheasantI was running well and a little ahead of my expected pace, closer to my usual long run/walk paces (which have been around 14:30-14:50 min/mi lately). I was concerned it was too fast and I would burn out as so many people do, but I did have wiggle room in my paces and had planned for an eventual slow down regardless. I made it to the first turnaround, used the trail bathroom there, and continued on, noting that even with the bathroom stop factored in, I was still on or ahead of schedule. I texted Scott to let him know to check my paces earlier than he might otherwise, and also stopped in my tracks to take a picture of a quail-like bird (which Scott thinks was a pheasant) that I’d never seen before. Lap 1 continued well, and I was feeling good and maintaining an overall sub-15 pace while I had been planning for a 15:10/ish average pace, so although Scott told me he didn’t need me to warn him about being particular miles away for aid station stops, I saw he was still at home by the time I was less than a mile out, and texted him. He was finishing a work call and had to rush to finish packing and come meet me. It wouldn’t have been a big deal if he had “missed” me at the expected turnaround spot, because there’s other benches and places where we could have met after that, but I think he was still stressed out (sorry!) about it, although I wasn’t. However, he biked up to me right at the turnaround spot, grabbed my vest and headed back to our normal table for refueling, while I used the bathroom and then headed out to meet him.

The other thing that might have stressed him out a little – and did stress me out a little bit – was my glucose levels. They were running normal levels for me during a run, around ~150mg/dL in the first 2-3 hours of my run. This is higher than I normally like to be for non-running times but is reasonable for long runs. I usually run a bit higher at the start and then settle in around 120-130mg/dL, because the risk of having too much insulin at the start from breakfast is prone to causing lows in the first hour; therefore I let myself reduce insulin prior to the run so that the first hour or so runs higher. However, instead of coming down as usual from the start of my run, I started a steady rise from 150 to 180. That was weird, but maybe it was a physiological response to the stress? I issued a correction, but I kept rising. I crossed 200 when I should have been beginning to flatten, and it kept going. What on earth? I idly passed my hand over my abdomen to check my pump site, and couldn’t feel my pump site. It had come unclipped!!! This was super frustrating, because it means I didn’t know how much insulin was in my body or when it had come unclipped. (Noteworthy that in 20+ years of using an insulin pump, this has NEVER happened before until this month, and it has now happened twice, so I need to record the batch/lot numbers and report it – this batch of sites is easily coming unclipped with a tug on the tubing, which is clearly dangerous because you can’t feel it come unclipped and don’t know until you see rising glucose levels.) “Luckily” though, this was when I was within 30 minutes or so of being back to Scott, so I texted him and told him to grab the inhaled insulin baggie I had set out, and I would use that at the aid station to more quickly get my body back into a good state (both in terms of feeling the insulin action as well as normalizing glucose levels more quickly. For those who don’t know, injected/pump insulin takes ~45 minutes to peak activity in the body, whereas inhaled insulin is much faster in the ballpark of ~15-20 minutes peak action, so in situations like this I prefer to, when possible, use inhaled insulin to normalize how my body is feeling while also resuming/fixing the pump site for normal insulin from then on).

As planned, at every aid station stop he brought water and ice to refill my camelback, which he did while I was at the bathroom. When I came up to the table where he was, I quickly did some inhaled insulin. Then I sat down and took off my socks and shoes and inspected my feet. My right foot felt like it had been rubbing on the outside slightly, so I added a piece of kinesiology tape to the outer edge of my foot. I already had pieces on the bottom of my feet to help prevent blisters like I got during my 82, and those seemed to be working, and it was quick and easy to add a straight piece of tape, re-stick pieces of lamb’s wool next to each big toe (to prevent blisters there), put fresh socks on, and put a fresh pair of shoes on. I also changed my shirts. It was now 44 F and it was supposed to warm up to 61 F by the end of this next lap. I stood up to put my pack on again and realized I had forgotten to peel off my pants! Argh. I had to unlace my shoes again, which was the most annoying part of my stop. I peeled off the pants (still wearing my shorts under), put my shoes back on and laced them again, then put my vest back on. I removed the remaining trash from my vest pockets, pulled out the old enzyme and electrolyte baggies, and began to put the new fuel supply and enzyme and electrolyte supply in the front vest pockets. Last time for my 82, I had Scott do the refilling of my vest, but this time I just had him set out my gallon bag that contained all of these, so that I could place the snacks how I like best and also have an idea of what I had for that lap. I would need to double check that I had enzymes and electrolytes, anyway, so it ended up being easier for me to do this and I think I’ll keep doing this moving forward. Oh, and at each aid station stop we popped my (non-ultra) Apple Watch on a watch charger to top off the charge, too. I also swapped in a new mini battery to my pack to help keep my phone battery up, and then took off. All this, including the bathroom time, took about 15 minutes! I had budgeted 20 minutes for each stop, and I was pleased that this first stop was ahead of schedule in addition to my running slightly ahead of schedule, because that gave me extra buffer if I slowed down later.

A 24 hour view of my CGM graph to show my glucose levels before (overnight), during the run including marks where my pump site likely unclipped, where I reclipped it, and how my glucose was in range for the remainder of the run.
A 24 hour view of my CGM graph to show my glucose levels before (overnight), during the run including marks where my pump site likely unclipped, where I reclipped it, and how my glucose was in range for the remainder of the run.

LAP 2 (MILES 18-34)

The next lap was the same route as the first, and felt like a normal long run day. It was mid 40s and gradually warmed up to 63 F and actually felt hot for the second half! It hadn’t been 60+ degrees in Seattle since October (!) so my body wasn’t used to the “heat”. I was still feeling good physically and running well – in fact, I was running only ~10s slower than my average pace from lap 1! If I kept this up and didn’t fall off the pace much in the second lap, I would have a very nice buffer for the end of the race. I focused on this lap and only thought about these 16-17 miles. I did begin to squirt water from my camelback on to the ‘cooling’ visor I have, which evaporates and helps your head feel cooler – especially since I wasn’t used to the heat and was sweating more, that felt good. The end of the second lap, I started to feel like I was slightly under my ideal sodium levels. I’m pretty sensitive to sodium; I also drink a lot (I was carrying 3-3.5L for every 17 mile lap!); and I’m a salty sweater. Add increased heat, and even though I was right on track with my goal of about ~500mg/hour of sodium intake between my fuel and additional electrolyte pills, I felt a bit under, and so the next while I added an extra electrolyte pill to increase my sodium intake, and the feeling went away as expected.

(My glucose levels had come back down nicely within the first few miles of this lap, dipped down but as I was fueling every 30 minutes, came nicely into range and stayed 100% in range with no issues for the next ~12 hours of the run!)

This time, Scott was aware that I was ahead of expected paces and had been mapping my paces. He told me that if I stayed at that pace for the lap, I would be able to slow down to a 16 min/mi pace for lap 3 (16 miles) and down further to a 17 min/mi pace for the last (almost 13 miles) lap and still beat my goal time. That sounded good to me! He ended up biking out early to meet me so he could start charging my watch a few minutes early, and I ended up taking one of my next snacks – a warmed up frozen waffle – for my ‘last’ snack of the lap because it was time for a snack and there was no reason to wait even though it was part of the ‘next’ lap’s fuel plan. So I got to eat a warm waffle, which was nice!

Once we got almost there, Scott took my vest and biked ahead to begin the camelback process. I hit the turnaround, made another quick bathroom stop, and ran over to the table. This time, since it was 60s and I would finish my next lap while it was still above 50 degrees and light, I left my clothing layers as-is, other than a quick shirt switch to get rid of my sweaty shirt. I decided not to undo my shoes and check my feet for blisters; they felt fine and good. Because I didn’t need a shoe change or have anything going on to troubleshoot, I was in and out in 5 minutes! Hooray, that gave me another 10 minute buffer (in addition to 5 before, plus all my running ahead of schedule). I took off for lap 3, but warned Scott I would probably be slowing down.

LAP 3 (MILES 35-50)

The third lap was almost the same route, but shorter by a little less than a mile. I was originally concerned, depending on how much I had slowed down, that I would finish either right around sunset or after sunset, so that Scott might need to bring me out a long sleeve shirt and my waist lamp. However, I was ahead of schedule, so I didn’t worry about it, and again set out trying to not fall off my paces too much. I slowed down only a tiny bit on the way out, and was surprised at the turnaround point that I was now only slightly above a 15 min/mi pace! The last few miles I felt like slowing down more, but I was motivated by two thoughts: one was that I would finish this lap and essentially be at 50 miles. This meant, given my excellent pacing, that I would be “PR”ing my 50 mile pace. I’ve not run a standalone 50 miles before, just as part of my 82 mile when I wasn’t paying attention to pace at all (and ran 2-3 min/mi slower as a result), so I was focused on holding my effort level to be close to the same. Plus, after this lap, I “only” had a ~13 mile single lap left. That was my usual route, so it would be mentally easier, and it’s my last lap, so I knew I would get a mental boost from that. Psychologically, having the 50 mile mark to PR here really helped me hold my pace! I ended up only slowing down ~13s average pace compared to the ~10s deterioration between laps 1 and 2. I was pretty pleased with that, especially with hitting 50 miles then!

At this aid station stop, I was pretty cheerful even though I kept telling Scott I would be slowing down. I took ~10 minutes at this stop because I had to put my jacket back on around my waist and put my double headlamp on (which I wear around my waist) for when it got dark, plus do the normal refueling. I changed my short sleeve shirt again so I had a dry shirt, and debated but went ahead and put my fresh long sleeve shirt on and rolled up the sleeves. I figured I’d be putting it on as soon as it got dark, and I didn’t want to have to hassle with getting my vest on and off (while moving) in order to get the shirt on, especially because I’d also have to do that with my jacket later, so I went with the long sleeve shirt on and rolled up the sleeves for now. I had originally planned to put my long pants back on over my shorts, but it was still 63 degrees and the forecast was only going to get down to 45 degrees by midnight, and I seemed ahead of schedule and should finish by then. If I did get really cold, Scott could always bike out early and bring me more layers, but even 45 degrees in the dark with long sleeves, jacket, ear cover, and two pairs of gloves should be fine, so I went without the pants.

Speaking of ahead of schedule, I was! I had 5 minutes from the first aid station, 15 minutes from the second aid station, 5 minutes from this last aid station…plus another ~15 minutes ahead of what I thought my running time would have been at this point. Woohoo!

LAP 4 (MILES 51-63)

However, as soon as I walked off with my restocked vest, I immediately felt incredibly sore thighs. Ouch! My feet also started complaining suddenly. I did an extra walk interval and resumed my run/walking and my first mile out of the aid station stop was possibly my slowest mile (barring any with a bathroom stop) for the entire race, which is funny, because it was only about a 16:30 pace. But I figured it would be downhill from there and I’d be lucky to hold a sub 17 pace for these last 13 miles, especially because most of them would be in the dark and I naturally move a bit slower in the dark. Luckily, I was so far ahead that I knew that even a 17 min/mi average pace (or even slower) would be fine. However, I had joked to Scott coming into the end of lap 3 that I was tempted to just walk lap 4 (because I was finally starting to be tired) but then I’d have to eat more snacks, because I’d be out there longer. Sounds funny, but it was true – I was eating ok but occasionally I was having trouble swallowing my enzyme pills. Which is completely reasonable, I had been swallowing dozens of those (and electrolyte pills) all day and putting food down my throat for ~12+ hours consistently. It wasn’t the action of swallowing that was a problem, but I seemed to be occasionally mistiming how I would get the pills washed to the back of my mouth at the top of my throat to be able to swallow them down. Once or twice I had to take in some extra water, so it really wasn’t a big deal, but it was a slight concern that if I stopped being able to enzyme, I couldn’t fuel (because I have EPI) and I’d either have to tough it out without fueling (bad idea) or stop (not a fun idea). So I had that little extra motivation to try to keep run/walking!

Luckily, that first mile of the last lap was the worst. My thighs were still sore but less so and my feet stopped yelling at me and were back to normal. I resumed a reasonable run/walk pace, albeit at closer to a 15:30+ pace, which was a bigger jump from my previous lap average pace. I didn’t let it stress me out, but I was wishing I felt like fighting harder. But I didn’t, and focused on holding that effort level. I texted Scott, telling him I was averaging sub-16 pace (barely) at miles 4 and 5, then asking him to check my assumption that if I didn’t completely walk it in, I could maybe be an hour ahead of schedule? He confirmed that I “only” needed 16:53 average pace for the lap to come in at 10:30pm (75 minutes ahead of goal) and that if I kept sub-16 I could come in around 10:19pm. Hmmm, that was nice to hear! I didn’t think I would keep sub-16 because it was getting dark and I was tired, ~55 miles into the run, but I was pretty sure I’d be able to be sub 17 and likely sub 16:53! I carried on, turning my light on as it got dark. I was happily distracted by checking happy experiences off my mental list, mostly seeing bunnies beside and darting across the trail in the dark!

I hit the almost-halfway mileage point of the last lap, but even though it wasn’t halfway in mileage it felt like the last big milestone – it was the last mini-hill I had to climb to cross a bridge to loop around back to finish the lap. Hooray! I texted Scott and told him I coudn’t believe that, with ~7 miles left, I would be done in <2 hours. It was starting to sink in that I’d probably beat my goal of 11:45 and not doubt that it was real, and that I’d beat it by more than a few minutes. I then couldn’t resist – and was also worried Scott wouldn’t realize how well I was moving and be prone to coming out too late – and texted him again when I was <5 miles out and then 4 miles out. But by the time I was at 3 miles, he replied to ask if I needed anything else other than the bag I had planned for him to bring to the finish. Nope, I said.

At that point, I was back on my home turf, as I think about the last 2-3 miles that I run or walk on most days of the week. And I had run these miles 3 times already (in each direction, too), but it was pretty joyful getting to the point where I know not only every half mile marker but every tenth of a mile. And when I came up under the last bridge and saw a bright light biking toward me, it was Scott! He made it out to the 1.75 mile mark and rode in with me, which was fun. I was still holding just under sub-16 pace, too. I naturally pick up the pace when he’s biking with me – even when I’ve run 60+ miles! – and I was thinking that I’d be close but a few minutes under an hour and a half of schedule. It didn’t really matter exactly, but I like even numbers, yet I didn’t feel like I had tons of energy to push hard to the end – I was pleased enough to still be moving at a reasonable speed at this point!

Finally, about a half mile out, Scott biked ahead to set up the finish for me. (Purple painter’s tape and a sign I had made!) I glanced at my watch as I rounded the last corner, about .1 mile away, and though “oh, I was so close to beating the goal by over an hour and a half, too bad I didn’t push harder a few minutes ago so I could come in by 10:16 and be an hour and a half ahead”. I ran a tiny bit more but didn’t have much speed, walked a few last steps, then ran the rest of the way so Scott could video me coming into the finish. I could see the light from his bike’s light glowing on the trail, and as I turned the corner to the finish I was almost blinded by his waist light and his head lamp. I ran through the finish tape and grinned. I did it! He stopped videoing and told me to stop my trackers. I did but told him it didn’t matter, because I was somewhere under an hour and a half. We took a still picture, then picked up my tape and got ready to head home. I had done it! I had run 100k, beat my goal time…and it turns out I DID beat it by over an hour and a half! We checked the timestamp on the video Scott took of the finish and it has me crossing at 10:16pm, so that makes it a 16 hour and 16 minute finish – woohoo!

A picture at night in the dark with me running, light at my waist, toward the purple painter tape stretched out as my finish line.

My last lap ended up being ~37 seconds average pace slower, so I had :10, :13, and :37 differences between the laps. Not too bad for that distance! I think I could’ve pushed a little harder, but I honestly didn’t feel like it psychologically, since I was already exceeding all of my goals, and I was enjoying focusing on the process meta-goals of trying to keep steady efforts and paces. Overall, my average pace was 15:36 min/mi which included ~30 min of aid station stops; and my average moving pace (excluding those 30 minutes of aid station time but did include probably another ~8-10 min of bathroom stops) was 15:17 min/mi. I’m pleased with that!

FUN STATS

A pivot table with conditional formatting showing when my sodium, calories, and carbs per hour met my hourly goal amounts.One of the things I do for all training runs but also races is input my fueling as I go, because it helps me make sure I’m actually fueling and spot any problems as they start to develop. As I mentioned, at one point I felt a tiny bit low on sodium and sure enough, I had dipped slightly below 500mg/hr in the two hottest hours of the day when I had also been sweating more and drinking more than I had been previously. Plus, it means I have cool post-run data to see how much I consumed and figure out if I want to adjust my strategy. This time, though? I wouldn’t change a thing. I nailed it! I averaged 585 mg/hour of sodium across all ~16 hours of my run. I also averaged ~264 calories/hour, which is above my ~250/hr goal. I did skip – intentionally – the very last snack at the top of the 16th hour, and it still meant that I was above goal in all my metrics. I don’t set goals for carb intake, but in case you were wondering, I ended up averaging 29.9 grams of carbs/hour (min 12, max 50, and the average snack is 15.4 carbs), but that’s totally coincidental. Overall, I consumed 3,663 calories, which was 419 carbs, 195 g of fat, and 69 grams of protein.

With EPI, as I mentioned that means I have to swallow enzyme pills with every snack, which was every 30 minutes. I swallowed 71 OTC enzyme pills (!) to match all that fuel, plus 26 electrolyte pills…meaning I swallowed 97 pills in 16 hours. You can see why I get tired of swallowing!

A graph showing the rates of sodium/hr for each 16 hours of the run (averaging above 500mg/hr); calories per hour (averaging above 250/hour), and carbs per hour.

Here’s a visual where you can see my consumption of calories, sodium, (and carbs) over the course of my race. The dip at the end is because I intentionally skipped the second snack of the hour 16 because I was almost done. Up to 15 hours (excluding the last hour), I had a slightly rolling increase in sodium/hr and a very slight decrease in calories/hr, with carbs/hr slightly increasing. Including the 16th hour (with a skipped snack intentionally), this changed the trends to slight rolling decrease in sodium/hr; the slight decrease trend in calories/hr continued; but it flattened the carbs/hr trend line to be neutral.

In contrast to my 82 mile where I had more significant fluctuations in sodium (and really felt it), I’m glad I was able to keep my sodium consumption at goal levels and also more easily respond when the conditions changed (hotter weather causing more sweat and more water intake than previous hours) so I could keep myself from getting into a hole sodium-wise. Overall, I feel like I get an A+ for executing my fueling and sodium strategy as planned. GI-wise, I get an A+++ because I had ZERO GI symptoms during and after the run! That’s really rare for any ultrarunners, let alone those of us with GI conditions (in my case, exocrine pancreatic insufficiency). Plus, despite the unclipped pump site and BG rise that resulted, I resumed back to typical running glucose levels for me and achieved 100% TIR 70-180 after that and I think likely 100% TIR for a more narrow range like 70-140, too, although I haven’t bothered to run those stats because I don’t care exactly what the numbers are. More importantly, I never went low, I never had any big drops or rises, and other than the brief 30 minutes of annoyance due to an unclipped pump site, diabetes did not factor any more into my thinking than blister management or EPI pill swallowing or sodium did – which is great!

Here’s a view of what I had leftover after my run. I had intentionally planned for an extra snack for every lap, plus I ran faster so I needed fewer overall. I also had packed extra enzymes and electrolytes for every lap, hoping I would never need to stress about running out on any individual lap – and I didn’t, so those amounts worked well.

A view of the enzymes and electrolyte baggies after my run, with a few left in each baggie as I planned for extras. I also had some snacks I didn't eat, both because I planned one extra per lap but I also ran faster than I expected, so I needed fewer overall

POST-RUN RECOVERY

As soon as I stopped running and took a picture at the finish line, we got ready to head home. My muscles froze up as soon as I stopped, just like always, so I moved like a tin person for a few steps before I loosened back up and was able to walk normally. I got home, and was able to climb into the shower (and out!) without too much hardship. I climbed into bed, hydrated, and was able to go to sleep pretty normally for about 5 hours. I woke up at 5am pretty awake, which possibly was also due to the fact that I had been sleep shifting my sleep schedule, but I also felt really stiff and used the opportunity to point and flex my ankles. I slept every 20-30 minutes off and on for another few hours before I finally got up at 8am and THEN felt really sore and stiff! My right lower shin was sore and had felt sore just a tiny bit in the last few miles of my run, so it wasn’t surprising that it was sore. My right hip, which is the one I had been watching prior to the race, was sore again. I hobbled around the house and started to loosen up, enough that I decided that I would put shoes on and try to go for a short easy walk. Usually, I can’t psychologically fathom putting shoes on my feet after an ultra, but my feet felt really decent! I had some blisters, sure, but I hadn’t even noticed them running and they didn’t hurt to walk on. My hip and ankle were more noticeable. I didn’t try to take the stairs and used the elevator, then began hobbling down the sidewalk. Ouch. My hip was hurting so much that I stopped at the first bench and laid down on it to stretch my hip out. Then I walked .3 miles to the next bench and again stretched my hip. A little better, so we went out a bit farther with the plan to turn around, but my hip finally loosened up after a half mile where I could mostly walk normally! Hooray. In total, I managed 1.5 miles or so of a walk, which is pretty big for me the day after an ultra run.

Meaningfully, overnight, I still had 100% time in range (ideal glucose levels). I did not have to do any extra work, thanks to OpenAPS and autosensitivity which adjusts automatically to any increases and later return to normal insulin sensitivity from so much activity!

A 12 hour view of glucose levels after my 100k. This was 100% TIR between 70-180 and probably a tighter range, although I did not bother to calculate what the tighter range is.

The next night, I slept even better, and didn’t notice any in-bed stiffness, although again on the second morning I felt stiff getting out of bed, but was able to do my full 5k+ walk route with my hip loosening up completely by a mile so that I didn’t even think about it!

On day 3, I feel 90% back to normal physically. I’m mostly fatigued,which Scott keeps reminding me is “as one should be” after runnning 100k! The nice change is that with previous ultras or long runs, I’ve felt brain fog for days or sometimes weeks – likely due to not fueling enough. But with my A+ fueling, my brain feels great – and good enough that it’s annoyed with my body still being a little bit tired. Interestingly, my body is both tired but also itching for more activity and new adventures. My friend compared it to “sea legs” where the brain has learned that the body should always be in motion, which is a decent analogy.

WHAT I HAVE LEARNED

I wouldn’t change anything in terms of my race pacing, execution, aid station stops, fueling, etc. for this run.

What I want to make sure I do next time includes continuing to adapt my training to listen to my body, rather than sticking to my pre-decided plan of how much to run. I feel like I can do that both because I now have 3000+ miles on my body of lifetime running (that I didn’t have for my first ultra); and I now have two ultras (last year’s 82 miles post-broken toe and this year’s 100k with minor hiccups like a sore shin and a hip at different times) where I was forced to or chose to adapt training, and it turned out just as good as I would have expected. For my 100k, I think the adaptation to 3 runs per week, all with my vest, ended up working well. This is the first run where I didn’t have noticeable shoulder soreness from my pack!

Same goes for taper: I don’t think, at my speed/skill level, that exact taper strategy makes a difference, and this experience confirmed it, doing DIY ultras and being able to flex a week forward or back based on how I’m physically feeling and when the best weather will be is now my preferred strategy for sure.

—-

If you’re new to ultras and haven’t read any of my other posts, consider reading some of the following, which I’ve alluded to in my post and directly contribute to the above situation being so positive:

Feel free to leave questions if you have any, either about slow ultra running in general or any other aspects of ultra running! I’m a places-from-last kind of ultra runner, but I’m happy to share my thinking process if it helps anyone else plan their own adventures.

CGM for primary care doctors: a new article in the BMJ

I was honored last year to be asked to write an article about the basics of continuous glucose monitoring (CGM) for primary care providers by the BMJ, which was released today online.

This, like most of my academic literature article writing, was an unpaid gig. So why did I do it?

Well, most people with diabetes are treated primarily by primary care providers (“GPs” or “PCPs” or “family doctors”, etc). It’s somewhat rare for most people with diabetes to see an endocrinologist! It also varies regionally, even within the same country. And, primary care providers obviously treat a lot of widely varying conditions, from acute to chronic, so they may not have time or energy to stay up to date on all treatment options for all conditions.

This therefore felt like a great opportunity to contribute some information about CGM, an incredibly useful piece of technology for anyone with diabetes who wants it, specifically written and targeted for primary care providers who may not have the exposure to CGM technology that endocrinology providers have had over the years. And, like most things, the technology (thankfully) has changed quite a bit. Accuracy, ease of use, cost, and many other factors have changed dramatically in the last almost two decades since CGMs were introduced on the market!

I sought out two fellow experts in CGM and diabetes technology to co-author the article with me. I asked Ben Wheeler, an excellent pediatric endocrinologist who has done quite a bit of research on “intermittently scanned” CGMs (isCGM); and Tamara Oser, who is the director of the Primary Care Diabetes Lab (and a parent and a spouse of people living with diabetes) and worked to facilitate uptake of CGM in primary care settings.

I’m also appreciative that a parent and teen with newly diagnosed diabetes and new experiences with CGM both reviewed this article when it was drafted and shared their perspective to it; as well as appreciative of valuable input from a friend with many years of experience with diabetes who has used 8 (!) different CGM systems.

We are starting to see a shift in adoption and coverage of CGM, thankfully. Historically, people with diabetes haven’t always had insurance cover CGM. Even if insurance does cover CGM, sometimes we have to fight an uphill battle every year to re-prove that we (still) have diabetes and that we still need CGM. Sometimes good outcomes from using CGM disqualifies us from the next year’s coverage of CGM (in which case we have to appeal our cases for coverage). It’s frustrating! That’s why it’s so nice to see increasing guidelines, recommendations, and even country-specific guidelines encouraging funding and coverage of CGM for people with all types of diabetes. The biggest latest news – as of yesterday (March 2, 2023) – was that in the U.S., Medicare will now be covering CGM for people with type 2 diabetes on insulin. This is a huge group of people who previously didn’t have CGM coverage before!

So here it is, just out today online (March 3, 2023), and projected to be in the March 25, 2023 print edition of the BMJ: an article on continuous glucose monitoring (CGM) for primary providers. I’m hoping it helps pave the way for more providers to feel comfortable prescribing CGM for more people with diabetes; increased their knowledge in working with people with diabetes who have CGM prescribed from other providers; and also reduce unconscious and conscious bias against people with diabetes being offered this important, life-changing and life-saving technology.

P.S. – if you can’t access the article from the link above, as a reminder I always store an accessible author copy of my research articles at DIYPS.org/research!

How to Pick Food (Fuel) For Ultramarathon Running

I’ve previously written about ultrarunning preparation and a little bit about how I approach fueling. But it occurred to me there might be others out there wondering exactly HOW to find fuel that works for them, because it’s an iterative process.

The way I approach fueling is based on a couple of variables.

First and foremost, everything has to be gluten free (because I have celiac). So that limits a lot of the common ultrarunning fuel options. Things like bars (some are GF, most are not), Uncrustables, PopTarts, and many other common recommendations in the ultra community just aren’t an option for me. Some, I can find or make alternatives to, but it’s worth noting that being gluten free for celiac (where cross-contamination is also an issue, not just the ingredients) or having a food allergy and being an ultrarunner can make things more challenging.

Then, I also have exocrine pancreatic insufficiency. This doesn’t limit what I eat, but it factors in to how I approach ideal fueling options, because I have to match the enzyme amounts to the amount of food I’m eating. So naturally, the pill size options I have of OTC enzymes (one is lipase only and covers ~6g of fat for me, the other is a multi-enzyme option that includes protease to cover protein, and only enough lipase to cover ~4g of fat for me; I also have one much larger that covers ~15g of fat but I don’t typically use this one while running) influence the portion sizes of what I choose.

That being said, I probably – despite EPI – still tend toward higher fat options than most people. This is in part because I have had type 1 diabetes for 20+ years. While I by no means consume a low c-a-r-b diet, I typically consume less than the people with insulin-producing pancreases in my life, and lean slightly toward higher fat options because a) my taste buds like them and b) they’ve historically had less impact on my glucose levels. Reason A is probably the main reason now, thanks to automated insulin delivery, but regardless of reason, 20+ years of a higher level than most people’s fat consumption means I’m also probably better fat-adapted for exercise than most people.

Plus, ultrarunning tends to be slower than shorter runs (like marathons and shorter for most people), so that’s also more amenable to fat and other nutrient digestion. So, ultrarunners in general tend to have more options in terms of not just needing “gu” and “gel” and “blocks” and calorie-sugar drinks as fuel options (although if that is what you prefer and works well for you, great!).

All of these reasons lead me toward generally preferring fuel portions that are:

  1. Gluten free with no cross-contamination risk
  2. ~20g of carbs
  3. ~10g of fat or less
  4. ~5-10g of protein or less

Overall, I shoot for consuming ~250 calories per hour. Some people like to measure hourly fuel consumption by calories. Others prefer carb consumption. But given that I have a higher tolerance for fat and protein consumption – thanks to the enzymes I need for EPI plus decades of practice – calories as a metric for hourly consumption makes sense for me. If I went for the level of carb intake many recommend for ultrarunners, I’d find it harder to consistently manage glucose levels while running for a zillion hours. I by no means think any of my above numbers are necessarily what’s best for anyone else, but that’s what I use based on my experiences to date as a rough outline of what to shoot for.

After I’ve thought through my requirements: gluten free, 250 calories per hour, and preferably no single serving portion size that is greater than 20ish grams of carbs or 10g of fat or 5-10g or protein, I can move on to making a list of foods I like and that I think would “work” for ultrarunning.

“Work” by my definition is not too messy to carry or eat (won’t melt easily, won’t require holding in my hands to eat and get them messy).

My initial list has included (everything here gluten free):

  • Oreos or similar sandwich type cookies
  • Yogurt/chocolate covered pretzels
  • PB or other filled pretzel nuggets
  • Chili cheese Fritos
  • Beef sticks
  • PB M&M’s
  • Reese’s Pieces
  • Snickers
  • Mini PayDays
  • Macaroons
  • Muffins
  • Fruit snacks
  • Fruit/date bars
  • GF (only specific flavors are GF which is why I’m noting this) of Honey Stinger Stroopwaffles

I wish I could include more chip/savory options on my lists, and that’s something I’ve been working on. Fritos are easy enough to eat from a snack size baggie without having to touch them with my hands or pull individual chips out to eat; I can just pour portions into my mouth. Most other chips, though, are too big and too ‘sharp’ feeling for my mouth to eat this way, so chili cheese Fritos are my primary savory option, other than beef sticks (that are surprisingly moist and easy to swallow on the run!).

Some of the foods I’ve tried from the above list and have eventually taken OFF my list include:

  • PB pretzel nuggets, because they get stale in baggies pretty fast and then they feel dry and obnoxious to chew and swallow.
  • Muffins – I tried both banana muffin halves and chocolate chip muffin halves. While they’re moist and delicious straight out of the oven, I found they are challenging to swallow while running (probably because they’re more dry).
  • Gluten free Oreos – actual Oreo brand GF Oreos, which I got burnt out on about the time I realized I had EPI, but also they too have a pretty dry mouthfeel. I’ve tried other brand chocolate sandwich cookies and also for some reason find them challenging to swallow. I did try a vanilla sandwich cookie (Glutino brand) recently and that is working better – the cookie is harder but doesn’t taste as dry – so that’s tentatively on my list as a replacement.

Other than “do I like this food” and “does it work for carrying on runs”, I then move on to “optimizing” my intake in terms of macronutrients.  Ideally, each portion size and item has SOME fat, protein, and carbs, but not TOO MUCH fat, protein and carbs.

Most of my snacks are some fat, a little more carb, and a tiny bit of protein. The outlier is my beef sticks, which are the highest protein option out of my shelf-stable running fuel options (7g of fat, 8g of protein). Most of the others are typically 1-3g of protein, 5-10g of fat (perfect, because that is 1-2 enzyme OTC pills), and 10-20g of carb (ideal, because it’s a manageable amount for glucose levels at any one time).

Sometimes, I add things to my list based on the above criteria (gluten free with no cross-contamination list; I like to eat it; not messy to carry) and work out a possible serving size. For example, the other day I was brainstorming more fuel options and it occurred to me that I like brownies and a piece of brownie in a baggie would probably be moist and nice tasting and would be fine in a baggie. I planned to make a batch of brownies and calculated how I would cut them to get consistent portion sizes (so I would know the macronutrients for enzymes).

However, once I made my brownies, and started to cut them, I immediately went “nope” and scratched them off my list for using on runs. Mainly because, I hate cutting them and they crumbled. The idea of having to perfect how to cook them to be able to cut them without them crumbling just seems like too much work. So I scratched them off my list, and am just enjoying eating the brownies as brownies at home, not during runs!

I first started taking these snacks on runs and testing each one, making sure that they tasted good and also worked well for me (digestion-wise) during exercise, not just when I was sitting around. All of them, other than the ones listed above for ‘dry’ reasons or things like brownies (crossed off because of the hassle to prepare), have stayed on the list.

I also started looking at the total amount of calories I was consuming during training runs, to see how close I was to my goal of ~250 calories per hour. It’s not an exact number and a hard and fast “must have”, but given that I’m a slower runner (who run/walks, so I have lower calorie burn than most ultrarunners), I typically burn in the ballpark of ~300-400 calories per hour. I generally assume ~350 calories for a reasonable average. (Note, again, this is much lower than most people’s burn, but it’s roughly my burn rate and I’m trying to show the process itself of how I make decisions about fuel).

Aiming for ~250 calories per hour means that I only have a deficit of 100 calories per hour. Over the course of a ~100 mile race that might take 30 hours, this means I’ll “only” have an estimated deficit of 3,000 calories. Which is a lot less than most people’s estimated deficit, both because I have a lower burn rate (I’m slower) and because, as described above and below, I am trying to be very strategic about fueling for a number of reasons, including not ending up under fueling for energy purposes. For shorter runs, like a 6 hour run, that means I only end up ~600 calories in deficit – which is relatively easy to make up with consumption before and after the run, to make sure that I’m staying on top of my energy needs.

It turns out, some of my preferred snacks are a lot lower and higher calories than each other! And this can add up.

For example, fruit snacks – super easy to chew (or swallow without much chewing). 20g of carb, 0g of fat or protein, and only 80 calories. Another easy to quickly chew and swallow option: a mini date (fruit) bar. 13g carb, 5g fat, 2 protein. And…90 calories. My beef stick? 7g of fat, 8g of protein, and only 100 calories!

My approach that works for me has been to eat every 30 minutes, which means twice per hour. Those are three of my favorite (because they’re easy to consume) fuel options. If I eat two of those in the same hour, say fruit snacks and the date bar, that’s only 170 calories. Well below the goal of 250 for the hour! Combining either with my beef stick (so 180 or 190 calories, depending), is still well below goal.

This is why I have my macronutrient fuel library with carbs, fat, protein, *and* calories (and sodium, more on that below) filled out, so I can keep an eye on patterns of what I tend to prefer by default – which is often more of these smaller, fewer calorie options as I get tired at the end of the runs, when it’s even more important to make sure I’m at (or near) my calorie goals.

Tracking this for each training run has been really helpful, so I can see my default tendency to choose “smaller” and “easier to swallow” – but that also means likely fewer calories – options. This is also teaching me that I need to pair larger calorie options with them or follow on with a larger calorie option. For example, I have certain items on my list like Snickers. I get the “share size” bars that are actually 2 individual bars, and open them up and put one in each baggie. ½ of the share size package (aka 1 bar) is 220 calories! That’s a lot (relative to other options), so if I eat a <100 calorie option like fruit snacks or a date bar, I try to make it in the same hour as the above average option, like the ½ snickers. 220+80 is 300 calories, which means it’s above goal for the hour.

And that works well for me. Sometimes I do have hours where I am slightly below goal – say 240 calories. That’s fine! It’s not precise. But 250 calories per hour as a goal seems to work well as a general baseline, and I know that if I have several hours of at or greater than 250 calories, one smaller hour (200-250) is not a big deal. But this tracking and reviewing my data during the run via my tracking spreadsheet helps make sure I don’t get on a slippery slope to not consuming enough fuel to match the demands I’m putting on my body.

And the same goes for sodium. I have read a lot of literature on sodium consumption and/or supplementation in ultrarunning. Most of the science suggests it may not matter in terms of sodium concentration in the blood and/or muscle cramps, which is why a lot of people choose sodium supplementation. But for me, I have a very clear, distinct feeling when I get not enough sodium. It is almost like a chemical feeling in my chest, and is a cousin (but distinct) feeling to feeling ketones. I’ve had it happen before on long hikes where I drank tons to stay hydrated and kept my glucose levels in range but didn’t eat snacks with sodium nor supplement my water. I’ve also had it happen on runs. So for me, I do typically need sodium supplementation because that chemical-like feeling builds up and starts to make me feel like I’m wheezing in my chest (although my lungs are fine and have no issues during this). And what I found works for me is targeting around 500mg/hour of sodium consumption, through a combination of electrolyte pills and food.

(Side note, most ultrarunning blogs I’ve read suggest you’ll be just fine based on food you graze at the aid station. Well, I do most of my ultras as solo endeavors – no grazing, everything is pre-planned – and even if I did do an organized race, because of celiac I can’t eat 95% of the food (due to ingredients, lack of labeling, and/or cross contamination)…so that just doesn’t work for me to rely on aid station food to supplement me sodium-wise. But maybe it would work for other people, it just doesn’t for me given the celiac situation.)

I used to just target 500mg/hour of sodium through electrolyte pills. However, as I switched to actually fueling my runs and tracking carbs, fat, protein, and calories (as described above), I realized it’d be just as easy to track sodium intake in the food, and maybe that would enable me to have a different strategy on electrolyte pill consumption – and it did!

I went back to my spreadsheet and re-added information for sodium to all of my food items in my fuel library, and added it to the template that I duplicate for every run. Some of my food items, just like they can be outliers on calories or protein or fat or carbs, are also outliers on sodium. Biggest example? My beef stick, the protein outlier, is also a sodium outlier: 370mg of sodium! Yay! Same for my chili cheese Fritos – 210mg of sodium – which is actually the same amount of sodium that’s in the type of electrolyte pills I’m currently using.

I originally had a timer set and every 45 minutes, I’d take an electrolyte pill. However, in the last year I gradually realized that sometimes that made me over by quite a bit on certain hours and in some cases, I ended up WAY under my 500mg sodium goal. I actually noticed this in the latter portion of my 82 mile run – I started to feel the low-sodium chest feeling that I get, glanced at my sheet (that I hadn’t been paying close attention to because of So. Much. Rain) and realized – oops – that I had an hour of 323mg of sodium followed by a 495mg hour. I took another electrolyte pill to catch up and chose some higher sodium snacks for my next few fuels. There were a couple hours earlier in the run (hours 4 and 7) where I had happened to – based on some of my fresh fuel options like mashed potatoes – to end up with over 1000mg of sodium. I probably didn’t need that much, and so in subsequent hours I learned I could skip the electrolyte pill when I had had mashed potatoes in the last hour. Eventually, after my 82-mile run when I started training long runs again, I realized that keeping an eye on my rolling sodium tallies and tracking it like I tracked calories, taking an electrolyte pill when my hourly average dropped <500mg and not based on a pre-set time when it was >500mg, began to work well for me.

And that’s what I’ve been experimenting with for my last half dozen runs, which has worked – all of those runs have ended up with a total average slightly above 500mg of sodium and slightly above 250 calories for all hours of the run!

An example chart that automatically updates (as a pivot table) summarizing each hour's intake of sodium and calories during a run. At the bottom, an average is calculated, showing this 6 hour run example achieved 569 mg/hr of sodium and 262 calories per hour, reaching both goals.

Now, you may be wondering – she tracks calories and sodium, what about fat and protein and carbs?

I don’t actually care about or use these in real-time for an hourly average; I use these solely as real-time decision in points as 1) for carbs, to know how much insulin I might need dependent on my glucose levels at the time (because I have Type 1 diabetes); and 2) the fat and protein is to make sure I take the right amount of enzymes so I can actually digest the fuel (because I have exocrine pancreatic insufficiency and can’t digest fuel without enzyme pills). I do occasionally look back at these numbers cumulatively, but for the most part, they’re solely there for real-time decision making at the moment I decide what to eat. Which is 95% of the time based on my taste buds after I’ve decided whether I need to factor in a higher calorie or sodium option!

For me, my higher sodium options are chili cheese Fritos, beef stick, yogurt covered pretzels.

For me, my higher calorie options are the ½ share size Snickers; chili cheese Fritos; Reese’s pieces; yogurt covered pretzels; GF honey stinger stroopwaffle; and 2 mini PayDay bars.

Those are all shelf-stable options that I keep in snack size baggies and ready to throw into my running vest.

Most of my ‘fresh’ food options, that I’d have my husband bring out to the ‘aid station’/turnaround point of my runs for refueling, tend to be higher calorie options. This includes ¼ of a GF PB&J sandwich (which I keep frozen so it lasts longer in my vest without getting squishy); ¼ of a GF ham and cheese quesadilla; a mashed potato cup prepared in the microwave and stuck in another baggie (a jillion, I mean, 690mg of sodium if you consume the whole thing but it’s occasionally hard to eat allll those mashed potatoes out of a baggie in one go when you’re not actually very hungry); sweet potato tots; etc.

So again, my recommendation is to find foods you like in general and then figure out your guiding principles. For example:

  • Do you have any dietary restrictions, food allergies or intolerances, or have already learned foods that your body Does Not Like while running?
  • Are you aiming to do carbs/hr, calories/hr, or something else? What amounts are those?
  • Do you need to track your fuel consumption to help you figure out how you’re not hitting your fuel goals? If so, how? Is it by wrappers? Do you want to start with a list of fuel and cross it off or tear it off as you go? Or like me, use a note on your phone or a drop down list in your spreadsheet to log it (my blog post here has a template if you’d like to use it)?

My guiding principles are:

  • Gluten free with no cross contamination risk (because celiac)
  • ~250 calories per hour, eating twice per hour to achieve this
  • Each fuel (every 30 min) should be less than ~20g of carb, ~10g of fat, and ~5-10g of protein
  • I also want ~500mg of sodium each hour through the 2x fuel and when needed, electrolyte pills that have 210mg of sodium each
  • Dry food is harder to swallow; mouthfeel (ability to chew and swallow it) is something to factor in.
  • I prefer to eat my food on the go while I’m run/walking, so it should be all foods that can go in a snack or sandwich size baggie in my vest. Other options (like chicken broth, soup, and messy food items) can be on my backup list to be consumed at the aid station but unless I have a craving for them, they are secondary options.
  • Not a hassle to make/prepare/measure out into individual serving sizes.

Find foods that you like, figure out your guiding principles, and keep revising your list as you find what options work well for you in different situations and based on your running needs!

Food (fuel) for ultramarathon running by Dana Lewis at DIYPS.org

Ultramarathon Races Are Exclusionary

Recently, I’ve been thinking about the feeling I have that ultrarunning races (ultramarathons) are exclusionary.

Running is theoretically very accessible: you go out and do it. No special equipment or clothes needed. Same for ultrarunning: go run a distance longer than a marathon (26.2 miles or ~42 kilometers). You don’t even have to do it in an organized “race”, as many of us run DIY or solo ultramarathons for training or in lieu of races (like I did for my 82 miler). Run 26.3 miles? Technically you’re an ultrarunner (although it’s more common for a 50k/31 mile race to be the first distance most people consider ‘ultra’).

For many people, though, an organized ‘race’ or event is important for a number of reasons. It provides a commitment device and a firm and hard deadline for which to train. It might be the only safe way to achieve a distance, with aid stations and volunteers to support achieving the endeavor, if they don’t have family or friends able to crew runs otherwise or lack safe places to run these distances. It also provides motivation and camaraderie of setting out to achieve the same goal as a group of other people at the same time. And of course, it provides competition – not only with one’s self to achieve their best that day, but also against other people.

Most of us, though, statistically aren’t racing in an ultramarathon for a podium place or top-whatever finish.

So why do the rules work to exclude so many people from participating in ultramarathons?

I’m talking about rules like those often found listed in the 200 mile ultramarathon race descriptions and rule handbooks that say that aid cannot be administered outside of the aid station. Crew may not hand anything to racers outside of the aid station:

  • Cowboy 200, runner manual last updated 8/16/22: “Crew is only allowed to assist runners at FULL/MANNED aid stations. No exceptions. Crew cannot give anything to or take anything from runners anywhere except at manned aid stations.”
  • Bigfoot 200, 2022 runner manual: “Pacers are not allowed to mule (carry items) for their runner. Pacers may not give their runner any aid, food or water unless it is an emergency situation, in which case the runner may be disqualified. Pacers are for safety, not for giving aid or gaining an advantage over fellow participants.” and “Crew may not meet their runner between aid”
  • Tahoe 200, 2022 runner manual: A full disqualification may be given if “Contacts crew anywhere between aid stations; Has crew leave items left for the runner anywhere along the course; Takes outside aid between aid stations”
  • Moab 240, 2022 runner manual – same as above Tahoe 2022
  • Cocodona 250, accessed January 2023: “Crew may not meet their runner at any point on the course other than designated crew access aid stations. Runners will be automatically disqualified for receiving aid from crew outside of crew access aid stations.”

It’s a thing in 100 miles races, too.

  • Western States 100, 2023 participant guide: “Runners may not accept aid or assistance from their crew or other spectators in between crew-accessible aid stations.” and “Pacers may not carry water, food, flashlights, shoes, clothing, or other supplies for their runner or provide any other type of mechanical or physical assistance to their runner on the course.”
  • Hardrock 100, 2022 guide: “No stashing of supplies along the course and no accepting aid except within 400 yards of a designated aid station.” and “Pacers may not carry water, food, flashlights, shoes, clothing, or other supplies for their runner or provide any other type of mechanical or physical assistance to their runner on the course.”

Why is this a problem?

Well, say that an ultrarunner has type 1 diabetes and uses an insulin pump and the insulin pump breaks. (Battery dies; the pump itself smashes against a rock and breaks the screen; or like in my 82 miler last year, the water busts the button panel and it is no longer operable.) If you have a backup pump and a crew member, in a non-race setting they’d simply bike or run or drive out to you (whatever was feasible and safe for them) and hand you the pump. You’d replace it, and continue on your way.

But according to the ‘rules’ of these ultramarathon ‘races’, you’d be immediately disqualified and stopped from continuing the ultramarathon. In order to not be disqualified, you’d have to wait until you got to the aid station to swap to a backup insulin pump. Sure, you’d likely have a back up insulin delivery method (syringe or insulin pen), but those are stop gaps and not a strategy to get you to the end of the race, most likely. Knowing those rules, it incentivizes non-optimal decision making of participants to choose to continue for miles (in some cases, could be hours to the next crew-accessible aid station), all the while racking up high blood sugar and low insulin levels that can be really, really, physically unpleasant and further put ultrarunners at risk of physical injury due to the altered state of unnaturally high blood sugar levels.

My guess is these rules are there to limit cheating and a non-fair playing field for those competing for podium. (In some cases, it might be to limit traffic on narrow parts of trail, etc. so for safety reasons, but for the most part the reasons cited seem to be about ‘a fair playing field’.)

But you know what? It’s already an unfair playing field between them and people with diabetes: because those runners without diabetes have a fully functioning insulin production system inbuilt to their body! People with diabetes are already at a disadvantage. Allowing someone to switch to their backup insulin pump outside of an aid station isn’t an unfair advantage or “cheating”, nor does it even “level the playing field” with the other runners.

Instead, the ability to get medical supplies for a chronic disease outside of an aid station reduces medical and physical injury risk to the participant.

Maybe you think I’m being dramatic about the rules of these races and feeling excluded from participating. Because in fact, I do feel excluded. I know things can happen and there’s no point in paying hundreds or thousands of dollars to participate in an event where if I need to switch medical equipment mid-race and outside of an aid station, that I’ll be disqualified and receive an automatic DNF (did not finish) on my race record.

Further, there are other races with even more stringent rules that point blank exclude people with diabetes from participating at all in their races.

Yes, really.

In 2021, UTMB (one of the world’s top ultrarunning race series) announced a new medical policy (based on the Quartz Program) that forbids use of any substance on the WADA (World Anti-Doping Agency) Prohibited List that would require a TUE (therapeutic use exemption) within 7 days prior to competition or during competition.

Guess what’s on the WADA Prohibited List? Insulin.

So if you use insulin and are an athlete in another sport, you get a TUE approved and you’re allowed to participate in your sport despite using insulin for insulin-requiring diabetes.

But as a person with diabetes, you’re banned from participating in UTMB’s races! People with insulin-requiring diabetes can’t go 7 days prior to an event without insulin, nor can we go the entire race (hello, 105 miles takes a long time) without insulin. So this means we cannot participate.

This is dumb and outright exclusionary. There’s other people with healthcare conditions who are now outright banned from participating in UTMB races, too. The same exclusionary ‘health’ “program” has also been used by the Golden Trail Running Series.

This makes ultrarunning exclusionary for people with most chronic illnesses.

Think I’m being dramatic again? Check out this quote from an interview with the organizer of the health ‘program’ that UTMB used to generate this list of requirements:

“Whether the athlete is under the influence of drugs or sick, our role consists of protecting them and therefore stop them from starting the race.”

They outright say they’re trying to stop athletes from starting the race, under the guise of policing what is healthy and safe for trail and ultrarunning. It doesn’t allow for individual evaluation.

Point blank: I’m excluded, and so are many other people with chronic illnesses, despite the fact that we are likely in better health than many other prospective participants of the race, regardless of chronic illness.

Personally, I think having a chronic illness, as hard as it makes ultrarunning, makes me better prepared and a better ultrarunner: I am very experienced with listening to my body and adjusting to challenging situations and dealing with physical and medical adversity. I do ultramarathons in part because they are hard and challenging. They’re hard and challenging for everyone! That’s why so few (relatively speaking) people run ultramarathons. If it was easy, everyone would have done it.

But no one should be prevented from entering a race because of living with a chronic illness.

If you’re willing to put in the training and cover the miles and plan what you need to do in order to achieve this with your medical devices and life-critical medications? You should do so. You should not be discouraged from taking the best possible care of your body before, during, and after an ultramarathon. That is what these policies do at best: at worst they exclude you outright from entering the race.

Race directors and race organizers, your ultramarathon policies are exclusionary. You should fix them.

Fellow ultrarunners, I encourage you to ask race directors to update their policies, too.

How?

Take a leaf out of Tunnel Hill 100’s book. They say (bold emphasis mine):

“USATF SPECIAL NOTICE: No American, or World Record, including age group records, will be recognized for any athlete who:

1) receives aid outside of a designated Aid Station area, OR

2) uses a pacer who is not entered in the race. These rules fall under the “unfair advantage” rules.

NOTE: Don’t worry about these rules if you aren’t going to set any records other than your own personal records.

This is how it should be done: make it clear what rules apply to elite/pro runners (aka podium/top 10/whatever places get rank or $$$) and which ones do NOT apply to the rest of us.

Don’t make people with chronic diseases pay yet another time tax to have to contact the race director and (in the US) ask for an accommodation under the Americans with Disabilities Act. Or point out, if declined, that it’s illegal to exclude people with disabilities (which includes people with most chronic diseases). We do enough work and already pay a lot of “time tax” for acquiring health supplies and managing our chronic diseases; don’t put MORE hoops in front of us to be able to participate and run.

That’s not equitable, nor fun, and it’s yet another barrier to keep more people out of running these races and events.

Functional Self-Tracking is The Only Self-Tracking I Do

“I could never do that,” you say.

And I’ve heard it before.

Eating gluten free for the rest of your life, because you were diagnosed with celiac disease? Heard that response (I could never do that) for going on 14 years.

Inject yourself with insulin or fingerstick test your blood glucose 14 times a day? Wear an insulin pump on your body 24/7/365? Wear a CGM on your body 24/7/365?

Yeah, I’ve heard you can’t do that, either. (For 20 years and counting.) Which means I and the other people living with the situations that necessitate these behaviors are…doing this for fun?

We’re not.

More recently, I’ve heard this type of comment come up about tracking what I’m eating, and in particular, tracking what I’m eating when I’m running. I definitely don’t do that for fun.

I have a 20+ year strong history of hating tracking things, actually. When I was diagnosed with type 1 diabetes, I was given a physical log book and asked to write down my blood glucose numbers.

“Why?” I asked. They’re stored in the meter.

The answer was because supposedly the medical team was going to review them.

And they did.

And it was useless.

“Why were you high on February 22, 2003?”

Whether we were asking this question in March of 2003 or January of 2023 (almost 20 years later), the answer would be the same: I have no idea.

BG data, by itself, is like a single data point for a pilot. It’s useless without the contextual stream of data as well as other metrics (in the diabetes case, things like what was eaten, what activity happened, what my schedule was before this point, and all insulin dosed potentially in the last 12-24h).

So you wouldn’t be surprised to find out that I stopped tracking. I didn’t stop testing my blood glucose levels – in fact, I tested upwards of 14 times a day when I was in high school, because the real-time information was helpful. Retrospectively? Nope.

I didn’t start “tracking” things again (for diabetes) until late 2013, when we realized that I could get my CGM data off the device and into the laptop beside my bed, dragging the CGM data into a CSV file in Dropbox and sending it to the cloud so an app called “Pushover” would make a louder and different alarm on my phone to wake me up to overnight hypoglycemia. The only reason I added any manual “tracking” to this system was because we realized we could create an algorithm to USE the information I gave it (about what I was eating and the insulin I was taking) combined with the real-time CGM data to usefully predict glucose levels in the future. Predictions meant we could make *predictive* alarms, instead of solely having *reactive* alarms, which is what the status quo in diabetes has been for decades.

So sure, I started tracking what I was eating and dosing, but not really. I was hitting buttons to enter this information into the system because it was useful, again, in real time. I didn’t bother doing much with the data retrospectively. I did occasional do things like reflect on my changes in sensitivity after I got the norovirus, for example, but again this was mostly looking in awe at how the real-time functionality of autosensitivity, an algorithm feature we designed to adjust to real-time changes in sensitivity to insulin, dealt throughout the course of being sick.

At the beginning of 2020, my life changed. Not because of the pandemic (although also because of that), but because I began to have serious, very bothersome GI symptoms that dragged on throughout 2020 and 2021. I’ve written here about my experiences in eventually self-diagnosing (and confirming) that I have exocrine pancreatic insufficiency, and began taking pancreatic enzyme replacement therapy in January 2022.

What I haven’t yet done, though, is explain all my failed attempts at tracking things in 2020 and 2021. Or, not failed attempts, but where I started and stopped and why those tracking attempts weren’t useful.

Once I realized I had GI symptoms that weren’t going away, I tried writing down everything I ate. I tried writing in a list on my phone in spring of 2020. I couldn’t see any patterns. So I stopped.

A few months later, in summer of 2020, I tried again, this time using a digital spreadsheet so I could enter data from my phone or my computer. Again, after a few days, I still couldn’t see any patterns. So I stopped.

I made a third attempt to try to look at ingredients, rather than categories of food or individual food items. I came up with a short list of potential contenders, but repeated testing of consuming those ingredients didn’t do me any good. I stopped, again.

When I first went to the GI doctor in fall of 2020, one of the questions he asked was whether there was any pattern between my symptoms and what I was eating. “No,” I breathed out in a frustrated sigh. “I can’t find any patterns in what I’m eating and the symptoms.”

So we didn’t go down that rabbit hole.

At the start of 2021, though, I was sick and tired (of being sick and tired with GI symptoms for going on a year) and tried again. I decided that some of my “worst” symptoms happened after I consumed onions, so I tried removing obvious sources of onion from my diet. That evolved to onion and garlic, but I realized almost everything I ate also had onion powder or garlic powder, so I tried avoiding those. It helped, some. That then led me to research more, learn about the categorization of FODMAPs, and try a low-FODMAP diet in mid/fall 2021. That helped some.

Then I found out I actually had exocrine pancreatic insufficiency and it all made sense: what my symptoms were, why they were happening, and why the numerous previous tracking attempts were not successful.

You wouldn’t think I’d start tracking again, but I did. Although this time, finally, was different.

When I realized I had EPI, I learned that my body was no longer producing enough digestive enzymes to help my body digest fat, protein, and carbs. Because I’m a person with type 1 diabetes and have been correlating my insulin doses to my carbohydrate consumption for 20+ years, it seemed logical to me to track the amount of fat and protein in what I was eating, track my enzyme (PERT) dosing, and see if there were any correlations that indicated my doses needed to be more or less.

My spreadsheet involved recording the outcome of the previous day’s symptoms, and I had a section for entering multiple things that I ate throughout the day and the number of enzymes. I wrote a short description of my meal (“butter chicken” or “frozen pizza” or “chicken nuggets and veggies”), the estimate of fat and protein counts for the meal, and the number of enzymes I took for that meal. I had columns on the left that added up the total amount of fat and protein for the day, and the total number of enzymes.

It became very apparent to me – within two days – that the dose of the enzymes relative to the quantity of fat and protein I was eating mattered. I used this information to titrate (adjust) my enzyme dose and better match the enzymes to the amount of fat or protein I was eating. It was successful.

I kept writing down what I was eating, though.

In part, because it became a quick reference library to find the “counts” of a previous meal that I was duplicating, without having to re-do the burdensome math of adding up all the ingredients and counting them out for a typical portion size.

It also helped me see that within the first month, I was definitely improving, but not all the way – in terms of fully reducing and eliminating all of my symptoms. So I continued to use it to titrate my enzyme doses.

Then it helped me carefully work my way through re-adding food items and ingredients that I had been avoiding (like onions, apples, and pears) and proving to my brain that those were the result of enzyme insufficiency, not food intolerances. Once I had a working system for determining how to dose enzymes, it became a lot easier to see when I had slight symptoms from slightly getting my dosing wrong or majorly mis-estimating the fat and protein in what I was eating.

It provided me with a feedback loop that doesn’t really exist in EPI and GI conditions, and it was a daily, informative, real-time feedback loop.

As I reached the end of my first year of dosing with PERT, though, I was still using my spreadsheet. It surprised me, actually. Did I need to be using it? Not all the time. But the biggest reason I kept using it relates to how I often eat. I often look at an ‘entree’ for protein and then ‘build’ the rest of my meal around that, to help make sure I’m getting enough protein to fuel my ultrarunning endeavors. So I pick my entree/main thing I’m eating and put it in my spreadsheet under the fat and protein columns (=17 g of fat, =20 g of protein), for example, then decide what I’m going to eat to go with it. Say I add a bag of cheddar popcorn, so that becomes (=17+9 g of fat) and (=20+2 g of protein), and when I hit enter, those cells now tell me it’s 26 g of fat and 22 g of protein for the meal, which tells my brain (and I also tell the spreadsheet) that I’ll take 1 PERT pill for that. So I use the spreadsheet functionally to “build” what I’m eating and calculate the total grams of protein and fat; which helps me ‘calculate’ how much PERT to take (based on my previous titration efforts I know I can do up to 30g of fat and protein each in one PERT pill of the size of my prescription)

Example in my spreadsheet showing a meal and the in-progress data entry of entering the formula to add up two meal items' worth of fat and protein

Essentially, this has become a real-time calculator to add up the numbers every time I eat. Sure, I could do this in my head, but I’m usually multitasking and deciding what I want to eat and writing it down, doing something else, doing yet something else, then going to make my food and eat it. This helps me remember, between the time I decided – sometimes minutes, sometimes hours in advance of when I start eating and need to actually take the enzymes – what the counts are and what the PERT dosing needs to be.

I have done some neat retrospective analysis, of course – last year I had estimated that I took thousands of PERT pills (more on that here). I was able to do that not because it’s “fun” to track every pill that I swallow, but because I had, as a result of functional self-tracking of what I was eating to determine my PERT dosing for everything I ate, had a record of 99% of the enzyme pills that I took last year.

I do have some things that I’m no longer entering in my spreadsheet, which is why it’s only 99% of what I eat. There are some things like a quick snack where I grab it and the OTC enzymes to match without thought, and swallow the pills and eat the snack and don’t write it down. That maybe happens once a week. Generally, though, if I’m eating multiple things (like for a meal), then it’s incredibly useful in that moment to use my spreadsheet to add up all the counts to get my dosing right. If I don’t do that, my dosing is often off, and even a little bit “off” can cause uncomfortable and annoying symptoms the rest of the day, overnight, and into the next morning.

So, I have quite the incentive to use this spreadsheet to make sure that I get my dosing right. It’s functional: not for the perceived “fun” of writing things down.

It’s the same thing that happens when I run long runs. I need to fuel my runs, and fuel (food) means enzymes. Figuring out how many enzymes to dose as I’m running 6, 9, or 25 hours into a run gets increasingly harder. I found that what works for me is having a pre-built list of the fuel options; and a spreadsheet where I quickly on my phone open it and tap a drop down list to mark what I’m eating, and it pulls in the counts from the library and tells me how many enzymes to take for that fuel (which I’ve already pre-calculated).

It’s useful in real-time for helping me dose the right amount of enzymes for the fuel that I need and am taking every 30 minutes throughout my run. It’s also useful for helping me stay on top of my goal amounts of calories and sodium to make sure I’m fueling enough of the right things (for running in general), which is something that can be hard to do the longer I run. (More about this method and a template for anyone who wants to track similarly here.)

The TL;DR point of this is: I don’t track things for fun. I track things if and when they’re functionally useful, and primarily that is in real-time medical decision making.

These methods may not make sense to you, and don’t have to.

It may not be a method that works for you, or you may not have the situation that I’m in (T1D, Graves, celiac, and EPI – fun!) that necessitates these, or you may not have the goals that I have (ultrarunning). That’s ok!

But don’t say that you “couldn’t” do something. You ‘couldn’t’ track what you consumed when you ran or you ‘couldn’t’ write down what you were eating or you ‘couldn’t’ take that many pills or you ‘couldn’t’ inject insulin or…

You could, if you needed to, and if you decided it was the way that you could and would be able to achieve your goals.