<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tim Johns</title>
    <link>https://timjohns.com/blog</link>
    <description>Blog posts from Tim Johns - software engineering leader, entrepreneur, and creator.</description>
    <language>en-us</language>
    <lastBuildDate>Wed, 14 Oct 2026 21:40:04 GMT</lastBuildDate>
    <atom:link href="https://timjohns.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Connection Allowlists</title>
      <link>https://timjohns.com/blog/connection-allowlists</link>
      <guid isPermaLink="true">https://timjohns.com/blog/connection-allowlists</guid>
      <pubDate>Sun, 24 May 2026 15:00:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Experiments with the Connection Allowlists draft support in Chrome 148</description>
      <content:encoded><![CDATA[<p>I noticed a relatively innocuous &quot;Connection Allowlists&quot; reference in the recent <a href="https://developer.chrome.com/release-notes/148#connection_allowlists">Chrome 148 Release Notes</a>, and I was intrigued. </p>
<blockquote>
<p>Connection Allowlists is a feature designed to provide explicit control over external endpoints by restricting connections initiated using the Fetch API or other web platform APIs from a document or worker.</p>
</blockquote>
<p>It sounded a bit like <a href="https://www.w3.org/Security/wiki/Content_Security_Policy">Content Security Policy (CSP)</a>. CSP is a set of specifications that make the web a tremendously safer place by allowing web sites to specify what can and can&#39;t be done, in general terms, by content that is referenced by the web page. For example, a web site that accepts payments can serve a carefully-crafted CSP header that would prevent malicious browser extensions, compromised ads, or the site&#39;s own poorly sanitized user-generated content from allowing threat actors to access your payment data. It&#39;s not the only mechanism a site should use, but it&#39;s one layer of defense-in-depth. Defense-in-depth (that is, multiple layers) is absolutely crucial in a system with a lot of moving parts like, oh, say...the web. </p>
<p>&quot;Carefully-crafted CSP header&quot; is doing a lot of work in that last paragraph -- as I might put it in my East Texas vernacular: CSP can be a real pain in the ass. </p>
<p>I say that despite my very strongly-held opinion that CSP plays an absolutely crucial role in making the web a much safer place, and should be implemented anywhere that privacy and security are important...which is pretty much everywhere. So CSP is critical, but it&#39;s hard for teams -- especially small teams -- to get right. It seems pretty far down on the list of things most front-end devs I know care about, which is unfortunate, because front-end devs are the ones who generally know what the CSP should actually contain. And it&#39;s even further down on the list of things most of the back-end devs I know care about. The Infrastructure/DevSecOps/Platform Engineering/SRE folks I know care a LOT...but in any given situation, they&#39;re unlikely to have the context to craft the CSP, so spend a lot of time in confusing conversations with the front-end folks.</p>
<p>Full-stack generalists like me are probably in the ideal spot to understand and implement CSP, but speaking as a full-stack generalist, when you wear a lot of hats, you get spread thin, and it&#39;s hard to focus, and CSP deserves a bit of focus. </p>
<p>So anyway, I got a little excited and took a look at the <a href="https://wicg.github.io/connection-allowlists/">Connection Allowlists Draft Community Group Report document</a> published by the <a href="https://www.w3.org/community/wicg/">Web Platform Incubator Community Group (WICG)</a>. The WICG is a group that incubates ideas from the web developer community, until they can be migrated to a more formal <a href="https://www.w3.org/">World Wide Web Consortium (W3C)</a> Working Group. Basically these are the folks that design the web.</p>
<p>It didn&#39;t take me long to figure out it&#39;s a LOT like CSP -- but less redundant, less error-prone, and with a more workable syntax. The WICG didn&#39;t bury the lede -- they spelled it out right there in the first few paragraphs of the Draft Community Report doc.</p>
<p>OK! So I went from intrigued (while reading the Chrome release notes) to excited (while reading the Draft Community Report) to motivated. Time to play.</p>
<p>First, I signed up for the corresponding <a href="https://developer.chrome.com/docs/web-platform/origin-trials">Chrome origin trial</a> by clicking through the link in the <a href="https://developer.chrome.com/release-notes/148#connection_allowlists">Chrome 148 Release Notes</a>, which allowed me to get a token value to serve in the <code>Origin-Trial</code> header, alongside the new <code>Connection-Allowlist</code>. As I write this, I&#39;m not 100% certain this is necessary after Chrome 148, but it seemed logical at the time. If I get a chance I may go back and see if Chrome 148 honors <code>Connection-Allowlist</code> without it. But it was quick and easy in any case.</p>
<p>After that, I went to the specification and cooked up my <code>Connection-Allowlist</code> header (or, more precisely, <code>Connection-Allowlist-Report-Only</code> - the non-enforcing version that only reports violations rather than blocks them). I also noticed that the reporting endpoint for <code>Connection-Allowlist</code> is specified by a <code>Reporting-Endpoints</code> header, which differs from the mechanism I was originally using for CSP on the site I was experimenting with. (Side note: that makes at least three flavors of reporting-endpoint specification I&#39;m juggling -- between CSP, COOP, NEL, etc., and now Connection-Allowlist, which means I should probably go look up the latest on which are deprecated by the latest <code>Reporting-Endpoints</code>, clean all that up in my headers if I can, and write about that as well. Another day.)</p>
<p>After a bit of experimentation and some trial-and-error, I ultimately had my headers:</p>
<pre><code>Origin-Trial: &lt;ORIGIN_TRIAL_TOKEN_GOES_HERE&gt;
Connection-Allowlist-Report-Only: (response-origin &quot;https://api.dev.epicroadtripplanner.com&quot;); report-to=default
Reporting-Endpoints: default=&quot;https://&lt;redacted&gt;.com/report-to&quot;
</code></pre>
<p>By serving these headers, my site tells Chrome that it&#39;s in the origin trial for the <code>Connection-Allowlist</code> (and <code>Connection-Allowlist-Report-Only</code>) headers, and that it should report any JavaScript <code>fetch</code> (or other supported request type) that goes anywhere besides the site itself and <code>api.dev.epicroadtripplanner.com</code>. </p>
<p>(I&#39;ve redacted my actual reporting endpoint in the snippet above.*)</p>
<p>To test it, I added a bit of JavaScript to one of the pages on my personal dev site, to try to fetch campground data for Fort Casey: </p>
<pre><code>try {
  console.log(&quot;Fetching from dev (allow-listed)...&quot;)
  const response = await fetch(&quot;https://api.dev.epicroadtripplanner.com/v1/campgrounds/3a198528-95cf-4235-a40e-c9597d0a877a&quot;, {
    headers: {
      &#39;accept&#39;: &#39;application/json&#39;
    }
  });
  console.log(&quot;Response:&quot;, response);
} catch(e) {
  console.error(e)
}

try {
  console.log(&quot;Fetching from prod (not allow-listed, reported)...&quot;)
  const response = await fetch(&quot;https://api.epicroadtripplanner.com/v1/campgrounds/84af4262-6dff-4121-b22d-70b6173b15f6&quot;, {
    headers: {
      &#39;accept&#39;: &#39;application/json&#39;
    }
  });
  console.log(&quot;Response:&quot;, response);
} catch(e) {
  console.error(e)
}
</code></pre>
<p>Since I&#39;m using the report-only variant (<code>Connection-Allowlist-Report-Only</code>) rather than the enforcement variant (<code>Connection-Allowlist</code>), both calls succeed -- but only the prod call is reported.</p>
<p><img src="/assets/blog/connection-allowlist-browser-console.webp" alt="Screenshot showing the Chrome Devtools console with output showing all of the console.log messages from the snippet above"></p>
<p>I got this single connection-allowlist report on my reporting server, for the call to the prod server:</p>
<p><img src="/assets/blog/connection-allowlist-report.webp" alt="Screenshot showing the logs from the reporting server with a connection-allowlist report containing connection https://api.epicroadtripplanner.com/v1/campgrounds/84af4262-6dff-4121-b22d-70b6173b15f6 and disposition: &quot;report&quot;"></p>
<p>I also tried the enforce version and played around with a few other items. Now that I know this all works at a high level, I&#39;m looking forward to going deeper -- reviewing the actual CSP headers on a few of my sites and seeing just how much simpler and more specific the corresponding <code>Connection-Allowlist</code> headers can be. I&#39;ll also be watching how the WICG draft evolves. Good stuff!</p>
<p>-Tim</p>
<p>*I&#39;m redacting my default reporting endpoint, not because it&#39;s a secret -- it can&#39;t be, since it&#39;s served publicly in the header -- but because I don&#39;t want anyone or an LLM copying the headers above verbatim and inadvertently sending a bunch of their own error reports to my reporting site, filling it with noise and probably blowing out my quotas. A former co-worker had that happen with his <a href="https://www.ultimeth.com/Abandon.html">public NTP server</a>, and I really hope he can laugh about it now 20+ years later, but I&#39;m sure it wasn&#39;t funny at the time. But I digress. Shoot me an email and let me know if I should write up how to deploy a very lightweight reporting endpoint just for experimentation; it&#39;s pretty easy.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Epic Road Trip Planner Update (Spring 2026)</title>
      <link>https://timjohns.com/blog/epic-road-trip-planner-update-spring-2026</link>
      <guid isPermaLink="true">https://timjohns.com/blog/epic-road-trip-planner-update-spring-2026</guid>
      <pubDate>Fri, 15 May 2026 17:55:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>What I&apos;ve been up to, and what&apos;s ahead for Epic Road Trip Planner</description>
      <content:encoded><![CDATA[<p>When I started Epic Road Trip Planner, I envisioned a one-stop hub where couples, families,
and small groups could plan their road trip in stress-free harmony.</p>
<p>I learned a couple of things:</p>
<p>That is something that a fair number of folks NEED -- but not necessarily something a lot of folks will pay for.</p>
<p>In other words: the market is small. Especially in terms of dollars.</p>
<p>I also learned that a lot more people seem to TAKE road trips than PLAN road trips, and a lot of those folks just want to know they&#39;re going to have a place to sleep tonight. That&#39;s a larger market -- but a more saturated one. There are a surprising number of established players in this space.</p>
<p>I also learned that I am pretty good at the wrong kind of marketing. I can create rather compelling, cost-effective ads that folks click through. And then don&#39;t purchase. Because:</p>
<p>A. The PROBLEM is compelling, but the product is not. It&#39;s still not.</p>
<p>B. See above comment about the market - folks just aren&#39;t willing to spend money on this. The problem is compelling, but most folks solve it on their own with a shared Google Doc, a group chat, and a little effort.</p>
<p>So if cost-effective high performing ads are the WRONG kind of marketing, what&#39;s the right kind?</p>
<p>Content marketing. Specifically, for something like Epic Road Trip Planner, YouTube videos and TikTok are the obvious platforms - there are some pretty amazing content creators out there with audiences who just follow them for pure entertainment. Roaming Reckless, Living the Van Life, etc. are doing quite well all on their own. I needed to be like them. OR partner with them -- but going back to the product problem (it&#39;s just not that good), that essentially means just paying them. Which I didn&#39;t want to do because the product just isn&#39;t that great.</p>
<p>Yet.</p>
<p>So I made a fundamental personal shift, and I&#39;m refocusing my efforts here on building a compelling product AND leaning into content marketing. Specifically, that shift has led me to do these two crucial steps:</p>
<ol>
<li><p>I took a full-time job, and shifted Epic Road Trip Planner from a full-time gig to a complementary side project. There&#39;s a lot more to this than I can get into here, but the bottom line is that gives me a platform to experiment, learn, and grow, which is a lot easier to do when I don&#39;t also have to figure out how I&#39;m going to pay my mortgage while burning through my retirement. So now my efforts here are mostly Saturday mornings.</p>
</li>
<li><p>I&#39;m setting up Patreon! Patreon will allow me to invest -- literally -- by providing funds that I can use (along with my paycheck from my day job, lol) to hire some experts to actually make this product better, instead of just trying to wear all those hats myself. I was already spread way too thin trying to do everything -- which meant I was doing most things badly or not at all. Patreon is also very much geared toward content creators, and is an excellent way for me to get my feet wet in that area. I&#39;ll learn the vocabulary, make some connections, and have a means to test out what folks are interested in.</p>
</li>
</ol>
<p>Next up: figure out my Patreon tiers. Stay tuned!</p>
<p>-Tim (Patreon-curious)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Slow is Smooth, Smooth is Fast</title>
      <link>https://timjohns.com/blog/slow-is-smooth-smooth-is-fast</link>
      <guid isPermaLink="true">https://timjohns.com/blog/slow-is-smooth-smooth-is-fast</guid>
      <pubDate>Sat, 15 Nov 2025 18:00:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Move with a sense of urgency. Have a purpose. Do the thing as fast as you can. But not faster.</description>
      <content:encoded><![CDATA[<h2>Move with a sense of urgency. Have a purpose. Do the thing as fast as you can. But not faster.</h2>
<p>The expression is frequently attributed to the U.S. Navy SEALs, but the concept itself comes from nature, and I&#39;m most interested in applying the principle to software engineering leadership. I&#39;ve delivered many projects throughout my career, in roles ranging from individual contributor to CEO, and it&#39;s certainly an invariant that time is of the essence. All other things being equal, delivering sooner is always better.</p>
<p>But all other things are not equal. There are almost always tradeoffs, usually fairly obvious and intentional ones, but sometimes they&#39;re more insideous and troublesome.</p>
<p>One of the more typical and well-known tradoffs is schedule vs quality. Unfortunately, &quot;quality&quot; is a vague and subjective concept, and therefore very difficult to reason about. Quality of the <em>end user deliverable</em> and quality of the <em>workmanship</em> that goes into it are entirely different concepts, and are barely even related. You can easily trade off bugs and missing features against schedule, but it gets complicated and counterproductive real fast if you try to trade off code quality and engineering process shortcuts against schedule. </p>
<p>The impact of bugs and missing features is relatively easily quantified. The impact of crappy code and shoddy engineering practice is not. I can tell you this, however -- if the team is checking in code that is difficult to understand and maintain, and cutting other corners in the process, all in an attempt to move fast -- you&#39;re actually moving slowly. Quite possibly backward.</p>
<p>Why? Because SOME of that crappy code or skipped steps will, in fact, never matter, and it&#39;s really easy to focus on that. But SOME of it will matter immediately. That shortcut that someone took? That&#39;s cognitive load that someone has to deal with as soon as you discover some previously unknown bug or critical missing piece. Those discoveries happen MORE frequently as you near delivery, not less. So that hypothetical &quot;later&quot; frequently turns out to be &quot;right now&quot;, and dealing with the cognitive load will therefore slow you down &quot;right now&quot;, too.</p>
<p>So how does going &quot;slow&quot; ultimately make us &quot;fast&quot;? Emphasis goes to the word &quot;smooth&quot;. A big clue to that point is that it&#39;s repeated twice in the expression. The word &quot;slow&quot; is just shorthand for &quot;only as quickly as you actually can smoothly&quot;. If the wheels are about to fly off the cart, if you&#39;re flailing, if people are showing signs of distress, then you&#39;re going too fast. Take a step back, breathe, and ground yourself, then proceed smoothly. </p>
<p>In some ways, this SHOULD be obvious, but it&#39;s also not easy to tell when the wheels are about to go flying off the cart. Flailing doesn&#39;t always LOOK like flailing. Bottom line is that it is really hard to tell a healthy sense of urgency from counter-productive rushing just by looking.</p>
<p>Here&#39;s one of my favorite examples -- a couple of Marines racing to see who can disassemble and reassemble the M240B machine gun more quickly.</p>
<p><a href="https://www.reddit.com/r/Military/comments/utmspi/slow_is_smooth_smooth_is_fast/">Slow is smooth, smooth is fast</a></p>
<p>It doesn&#39;t really look like the Marine in the foreground is flailing, does it? Or even rushing, for that matter. He seems to be moving with a sense of urgency, right? But if you didn&#39;t catch this the first time through, go back and watch carefully. You don&#39;t have anything &quot;smooth&quot; to compare against until about the 20 second mark, where the difference starts to become more and more obvious once the Marine in the background joins the race.</p>
<p>Those guys are Marines, and I mentioned the expression is popularly attributed to the U.S. Navy SEALs, but I also mentioned that the concept itself comes from nature. There&#39;s literally a term for it in fluid dynamics: laminar flow.</p>
<p>Laminar flow is the smooth, parallel movement of fluid particles in layers, which is the opposite of chaotic, turbulent flow. It occurs at low speeds and in viscous fluids, where particles move in straight, parallel lines without mixing. Laminar flow is tremendously more efficient than turbulent flow. For a given amount of applied energy, a system optimized for laminar flow will result in more throughput, and the fluid in the center of the pipe, analogous to the main features of the software, will reach the end of the pipeline tremendously more quickly and predictably with laminar flow than with turbulent flow. Literally slow is smooth, smooth is fast.</p>
<p><a title="Dubaj, vectorized by Guillaume Paumier (user:guillom), Public domain, via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Laminar_and_turbulent_flows.svg"><img width="512" alt="Laminar and turbulent flows" src="/assets/blog/laminar-and-turbulent-flows.svg"></a></p>
<p>So the next time you need to be faster, don&#39;t just look for ways to be <em>faster</em>. Look for ways to be <em>smoother</em>. Faster WILL follow. Accept that you may need to slow down a bit to do so. Move with a sense of urgency. Have a purpose. Do the thing as fast as you can -- but not faster. Slow is smooth, smooth is fast.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Epic Road Trip Planner Daily Campground Info Cleanup</title>
      <link>https://timjohns.com/blog/daily-campground-info-review</link>
      <guid isPermaLink="true">https://timjohns.com/blog/daily-campground-info-review</guid>
      <pubDate>Tue, 11 Feb 2025 20:48:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>How and why we review, update, and clean up campground information for Epic Road Trip Planner</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>How I Got My PCT Trail Name - Tour Guide</title>
      <link>https://timjohns.com/blog/how-I-got-the-trail-name-tour-guide</link>
      <guid isPermaLink="true">https://timjohns.com/blog/how-I-got-the-trail-name-tour-guide</guid>
      <pubDate>Wed, 01 Jan 2025 20:00:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>How I got my Trail Angel Trail Name Tour Guide from a group of Pacific Crest Trail thru-hikers on my very first Trail Magic drive.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>What is vacceedpasian.com?</title>
      <link>https://timjohns.com/blog/what-is-vacceedpasiancom</link>
      <guid isPermaLink="true">https://timjohns.com/blog/what-is-vacceedpasiancom</guid>
      <pubDate>Wed, 04 Sep 2024 17:49:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Investigating suspicious JavaScript injections detected by Content Security Policy enforcement from the unknown domain vacceedpasian.com.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Epic Road Trip Planner 2023 Year In Review</title>
      <link>https://timjohns.com/blog/epic-road-trip-planner-2023-year-in-review</link>
      <guid isPermaLink="true">https://timjohns.com/blog/epic-road-trip-planner-2023-year-in-review</guid>
      <pubDate>Wed, 03 Jan 2024 21:01:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Building in public: a year-end review of Epic Road Trip Planner&apos;s first year, including user growth, lessons learned, and what&apos;s ahead for 2024.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Epic Road Trip Planner Origin Story</title>
      <link>https://timjohns.com/blog/epic-road-trip-planner-origin-story</link>
      <guid isPermaLink="true">https://timjohns.com/blog/epic-road-trip-planner-origin-story</guid>
      <pubDate>Mon, 13 Mar 2023 19:00:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>It Is NOT Bright Red, It Is NOT Spurting, and YOU ARE NOT GOING TO DIE!</title>
      <link>https://timjohns.com/blog/it-is-not-bright-red-it-is-not-spurting-and-you-are-not-going-to-die</link>
      <guid isPermaLink="true">https://timjohns.com/blog/it-is-not-bright-red-it-is-not-spurting-and-you-are-not-going-to-die</guid>
      <pubDate>Sun, 17 Oct 2021 02:53:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>A humorous yet educational story about a family emergency involving a dramatic puncture wound and the important lesson of being careful what you tell your kids.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Jumping Back Into the Arena</title>
      <link>https://timjohns.com/blog/jumping-back-into-the-arena</link>
      <guid isPermaLink="true">https://timjohns.com/blog/jumping-back-into-the-arena</guid>
      <pubDate>Tue, 13 Oct 2020 00:23:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>After a wonderful five years at Tiller Money, it&apos;s time to jump back into entrepreneurship and look for the next inspired founding team.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Money For College - Persistence Pays Off. Literally.</title>
      <link>https://timjohns.com/blog/money-for-college-persistence-pays-off-literally</link>
      <guid isPermaLink="true">https://timjohns.com/blog/money-for-college-persistence-pays-off-literally</guid>
      <pubDate>Fri, 20 Oct 2017 15:38:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>How persistence and family help uncovered a lucrative Texas Army National Guard student loan repayment program that paid for college.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>High CPU Steal On AWS Burstable Instances</title>
      <link>https://timjohns.com/blog/high-cpu-steal-on-aws-burstable-instances</link>
      <guid isPermaLink="true">https://timjohns.com/blog/high-cpu-steal-on-aws-burstable-instances</guid>
      <pubDate>Wed, 12 Apr 2017 17:59:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Diagnosing and solving high CPU steal issues on AWS burstable instances caused by job scheduling algorithms that don&apos;t match the credit system.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>A Lesson in Entrepreneurship From Playing Chicken With a Squirrel</title>
      <link>https://timjohns.com/blog/a-lesson-in-entrepreneurship-from-playing-chicken-with-a-squirrel</link>
      <guid isPermaLink="true">https://timjohns.com/blog/a-lesson-in-entrepreneurship-from-playing-chicken-with-a-squirrel</guid>
      <pubDate>Thu, 29 Dec 2016 18:02:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>A humorous college story about driving a massive 1974 Ford pickup that reveals an important lesson about self-doubt in entrepreneurship.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Google Calendar Chart Visualization of A Day in the Life of My Child with Diabetes</title>
      <link>https://timjohns.com/blog/google-calendar-chart-visualization-of-a-day-in-the-life-of-my-diabetic-daughter</link>
      <guid isPermaLink="true">https://timjohns.com/blog/google-calendar-chart-visualization-of-a-day-in-the-life-of-my-diabetic-daughter</guid>
      <pubDate>Mon, 28 Nov 2016 15:53:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Using Google Charts to visualize blood sugar check patterns and frequency for diabetes management, with insights into daily routines and care needs.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Parent of a Child with Diabetes Doing Difficult Duty Running Ragnar Right</title>
      <link>https://timjohns.com/blog/dad-of-a-diabetic-daughter-doing-difficult-duty-running-ragnar-right</link>
      <guid isPermaLink="true">https://timjohns.com/blog/dad-of-a-diabetic-daughter-doing-difficult-duty-running-ragnar-right</guid>
      <pubDate>Fri, 21 Oct 2016 00:09:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>A transformative experience running Ragnar Trails with Team ConnecT1D - from depressing realization to inspiring triumph with adult Type 1 diabetics.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>Despair, Hope, and the Innovator&apos;s Dilemma</title>
      <link>https://timjohns.com/blog/despair-hope-and-the-innovators-dilemma</link>
      <guid isPermaLink="true">https://timjohns.com/blog/despair-hope-and-the-innovators-dilemma</guid>
      <pubDate>Thu, 18 Aug 2016 01:41:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>A reflection on the high costs of diabetes care and the potential for innovation and disruption to provide better, more affordable solutions.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title>My Child&apos;s First Diaversary, 03AUG2016</title>
      <link>https://timjohns.com/blog/kas-first-diaversary-03aug2016</link>
      <guid isPermaLink="true">https://timjohns.com/blog/kas-first-diaversary-03aug2016</guid>
      <pubDate>Wed, 03 Aug 2016 16:54:00 GMT</pubDate>
      <dc:creator>Tim Johns</dc:creator>
      <description>Reflecting on the first year since my child&apos;s Type 1 Diabetes diagnosis - from that frightening day in the ER to learning to manage this lifelong condition.</description>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
  </channel>
</rss>
