<!doctype html><htmllang=endir=ltrclass="blog-wrapper blog-post-page plugin-blog plugin-id-default"data-has-hydrated=false><metacharset=UTF-8><metaname=generatorcontent="Docusaurus v3.6.1"><titledata-rh=true>Tick tock... | The Old Speice Guy</title><metadata-rh=truename=viewportcontent="width=device-width,initial-scale=1.0"><metadata-rh=truename=twitter:cardcontent=summary_large_image><metadata-rh=trueproperty=og:urlcontent=https://speice.io/2016/04/tick-tock><metadata-rh=trueproperty=og:localecontent=en><metadata-rh=truename=docusaurus_localecontent=en><metadata-rh=truename=docusaurus_tagcontent=default><metadata-rh=truename=docsearch:languagecontent=en><metadata-rh=truename=docsearch:docusaurus_tagcontent=default><metadata-rh=trueproperty=og:titlecontent="Tick tock... | The Old Speice Guy"><metadata-rh=truename=descriptioncontent="If all we have is a finite number of heartbeats left, what about me?"><metadata-rh=trueproperty=og:descriptioncontent="If all we have is a finite number of heartbeats left, what about me?"><metadata-rh=trueproperty=og:typecontent=article><metadata-rh=trueproperty=article:published_timecontent=2016-04-06T12:00:00.000Z><linkdata-rh=truerel=iconhref=/img/favicon.ico><linkdata-rh=truerel=canonicalhref=https://speice.io/2016/04/tick-tock><linkdata-rh=truerel=alternatehref=https://speice.io/2016/04/tick-tockhreflang=en><linkdata-rh=truerel=alternatehref=https://speice.io/2016/04/tick-tockhreflang=x-default><scriptdata-rh=truetype=application/ld+json>{"@context":"https://schema.org","@id":"https://speice.io/2016/04/tick-tock","@type":"BlogPosting","author":{"@type":"Person","name":"Bradlee Speice"},"dateModified":"2024-11-06T03:32:56.000Z","datePublished":"2016-04-06T12:00:00.000Z","description":"If all we have is a finite number of heartbeats left, what about me?","headline":"Tick tock...","isPartOf":{"@id":"https://speice.io/","@type":"Blog","name":"Blog"},"keywords":[],"mainEntityOfPage":"https://speice.io/2016/04/tick-tock","name":"Tick tock...","url":"https://speice.io/2016/04/tick-tock"}</script><linkrel=alternatetype=application/rss+xmlhref=/rss.xmltitle="The Old Speice Guy RSS Feed"><linkrel=alternatetype=application/atom+xmlhref=/atom.xmltitle="The Old Speice Guy Atom Feed"><linkrel=stylesheethref=/katex/katex.min.css><linkrel=stylesheethref=/assets/css/styles.16c3428d.css><scriptsrc=/assets/js/runtime~main.29a27dcf.jsdefer></script><scriptsrc=/assets/js/main.d461af80.jsdefer></script><bodyclass=navigation-with-keyboard><script>!function(){vart,e=function(){try{returnnewURLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{returnwindow.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"light",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]ofnewURLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){vara=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><divid=__docusaurus><divrole=regionaria-label="Skip to main content"><aclass=skipToContent_fXgnhref=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><navaria-label=Mainclass="navbar navbar--fixed-top"><divclass=navbar__inner><divclass=navbar__items><buttonaria-label="Toggle navigation bar"aria-expanded=falseclass="navbar__toggle clean-btn"type=button><svgwidth=30height=30viewBox="0 0 30 30"aria-hidden=true><pathstroke=currentColorstroke-linecap=roundstroke-miterlimit=10stroke-width=2d="M4 7h22M4 15h22M4 23h22"/></svg></button><aclass=navbar__brandhref=/><divclass=navbar__logo><imgsrc=/img/logo.svgalt="Sierpinski Gasket"class="themedComponent_mlkZ themedComponent--light_NVdE"><imgsrc=/img/logo-dark.svgalt="Sierpinski Gasket"class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><bclass="navbar__title text--truncate">The Old Speice Guy</b></a></div><divclass="navbar__items navbar__items--right"><ahref=https://github.com/bspeicetarget
<p>Warning: this one is a bit creepier. But that's what you get when you come up with data science ideas as you're drifting off to sleep.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id=25-billion>2.5 Billion<ahref=#25-billionclass=hash-linkaria-label="Direct link to 2.5 Billion"title="Direct link to 2.5 Billion"></a></h2>
<p>If <ahref=http://www.pbs.org/wgbh/nova/heart/heartfacts.htmltarget=_blankrel="noopener noreferrer">PBS</a> is right, that's the total number of heartbeats we get. Approximately once every second that number goes down, and down, and down again...</p>
<p>I got a Fitbit this past Christmas season, mostly because I was interested in the data and trying to work on some data science projects with it. This is going to be the first project, but there will likely be more (and not nearly as morbid). My idea was: If this is the final number that I'm running up against, how far have I come, and how far am I likely to go? I've currently had about 3 months' time to estimate what my data will look like, so let's go ahead and see: given a lifetime 2.5 billion heart beats, how much time do I have left?</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id=statistical-considerations>Statistical Considerations<ahref=#statistical-considerationsclass=hash-linkaria-label="Direct link to Statistical Considerations"title="Direct link to Statistical Considerations"></a></h2>
<p>Since I'm starting to work with health data, there are a few considerations I think are important before I start digging through my data.</p>
<ol>
<li>The concept of 2.5 billion as an agreed-upon number is tenuous at best. I've seen anywhere from <ahref=http://gizmodo.com/5982977/how-many-heartbeats-does-each-species-get-in-a-lifetimetarget=_blankrel="noopener noreferrer">2.21 billion</a> to <ahref=http://wonderopolis.org/wonder/how-many-times-does-your-heart-beat-in-a-lifetime/target=_blankrel="noopener noreferrer">3.4 billion</a> so even if I knew exactly how many times my heart had beaten so far, the ending result is suspect at best. I'm using 2.5 billion because that seems to be about the midpoint of the estimates I've seen so far.</li>
<li>Most of the numbers I've seen so far are based on extrapolating number of heart beats from life expectancy. As life expectancy goes up, the number of expected heart beats goes up too.</li>
<li>My estimation of the number of heartbeats in my life so far is based on 3 months worth of data, and I'm extrapolating an entire lifetime based on this.</li>
</ol>
<p>So while the ending number is <strong>not useful in any medical context</strong>, it is still an interesting project to work with the data I have on hand.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id=getting-the-data>Getting the data<ahref=#getting-the-dataclass=hash-linkaria-label="Direct link to Getting the data"title="Direct link to Getting the data"></a></h2>
<p><ahref=https://www.fitbit.com/target=_blankrel="noopener noreferrer">Fitbit</a> has an <ahref=https://dev.fitbit.com/target=_blankrel="noopener noreferrer">API available</a> for people to pull their personal data off the system. It requires registering an application, authentication with OAuth, and some other complicated things. <strong>If you're not interested in how I fetch the data, skip <ahref=#Wild-Extrapolations-from-Small-Data>here</a></strong>.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id=registering-an-application>Registering an application<ahref=#registering-an-applicationclass=hash-linkaria-label="Direct link to Registering an application"title="Direct link to Registering an application"></a></h2>
<p>I've already <ahref=https://dev.fitbit.com/apps/newtarget=_blankrel="noopener noreferrer">registered a personal application</a> with Fitbit, so I can go ahead and retrieve things like the client secret from a file.</p>
<h3class="anchor anchorWithStickyNavbar_LWe7"id=handling-oauth-2>Handling OAuth 2<ahref=#handling-oauth-2class=hash-linkaria-label="Direct link to Handling OAuth 2"title="Direct link to Handling OAuth 2"></a></h3>
<p>So, all the people that know what OAuth 2 is know what's coming next. For those who don't: OAuth is how people allow applications to access other data without having to know your password. Essentially the dialog goes like this:</p>
<divclass="codeBlockContainer_Ckt0 theme-code-block"style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><divclass=codeBlockContent_biex><pretabindex=0class="prism-code language-text codeBlock_bY9V thin-scrollbar"style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><codeclass=codeBlockLines_e6Vv><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Application: I've got a user here who wants to use my application, but I need their data.</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Fitbit: OK, what data do you need access to, and for how long?</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Application: I need all of these scopes, and for this amount of time.</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Fitbit: OK, let me check with the user to make sure they really want to do this.</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain"style=display:inline-block></span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Fitbit: User, do you really want to let this application have your data?</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">User: I do! And to prove it, here's my password.</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Fitbit: OK, everything checks out. I'll let the application access your data.</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain"style=display:inline-block></span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Fitbit: Application, you can access the user's data. Use this special value whenever you need to request data from me.</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">Application: Thank you, now give me all the data.</span><br></span></code></pre><divclass=buttonGroup__atx><buttontype=buttonaria-label="Copy code to clipboard"title=Copyclass=clean-btn><spanclass=copyButtonIcons_eSgAaria-hidden=true><svgviewBox="0 0 24 24"class=copyButtonIcon_y97N><pathfill=currentColord="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svgviewBox="0 0 24 24"class=copyButtonSuccessIcon_LjdS><pathfill=currentColord=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z/></svg></span></button></div></div></div>
<p>Effectively, this allows an application to gain access to a user's data without ever needing to know the user's password. That way, even if the other application is hacked, the user's original data remains safe. Plus, the user can let the data service know to stop providing the application access any time they want. All in all, very secure.</p>
<p>It does make handling small requests a bit challenging, but I'll go through the steps here. We'll be using the <ahref=https://dev.fitbit.com/docs/oauth2/target=_blankrel="noopener noreferrer">Implicit Grant</a> workflow, as it requires fewer steps in processing.</p>
<p>First, we need to set up the URL the user would visit to authenticate:</p>
<p>Now, here you would print out the request URL, go visit it, and get the full URL that it sends you back to. Because that is very sensitive information (specifically containing my <code>CLIENT_ID</code> that I'd really rather not share on the internet), I've skipped that step in the code here, but it happens in the background.</p>
<divclass="language-python codeBlockContainer_Ckt0 theme-code-block"style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><divclass=codeBlockContent_biex><pretabindex=0class="prism-code language-python codeBlock_bY9V thin-scrollbar"style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><codeclass=codeBlockLines_e6Vv><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token comment"style="color:hsl(230, 4%, 64%)"># The `response_url` variable contains the full URL that</span><spanclass="token plain"></span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain"></span><spanclass="token comment"style="color:hsl(230, 4%, 64%)"># FitBit sent back to us, but most importantly,</span><spanclass="token plain"></span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain"></span><spanclass="token comment"style="color:hsl(230, 4%, 64%)"># contains the token we need for authorization.</span><spanclass="token plain"></span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain">access_token </span><spanclass="token operator"style="color:hsl(221, 87%, 60%)">=</span><spanclass="token plain"></span><spanclass="token builtin"style="color:hsl(119, 34%, 47%)">dict</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">(</span><spanclass="token plain">urllib</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">.</span><spanclass="token plain">parse</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">.</span><spanclass="token plain">parse_qsl</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">(</span><spanclass="token plain">response_url</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">)</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">)</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">[</span><spanclass="token string"style="color:hsl(119, 34%, 47%)">'access_token'</span><spanclass="token punctuation"style="color:hsl(119, 34%, 47%)">]</span><br></span></code></pre><divclass=buttonGroup__atx><buttontype=buttonaria-label="Copy code to clipboard"title=Copyclass=clean-btn><spanclass=copyButtonIcons_eSgAaria-hidden=true><svgviewBox="0 0 24 24"class=copyButtonIcon_y97N><pathfill=currentColord="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svgviewBox="0 0 24 24"class=copyButtonSuccessIcon_LjdS><pathfill=currentColord=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z/></svg></span></button></div></div></div>
<h3class="anchor anchorWithStickyNavbar_LWe7"id=requesting-the-data>Requesting the data<ahref=#requesting-the-dataclass=hash-linkaria-label="Direct link to Requesting the data"title="Direct link to Requesting the data"></a></h3>
<p>Now that we've actually set up our access via the <code>access_token</code>, it's time to get the actual <ahref=https://dev.fitbit.com/docs/heart-rate/target=_blankrel="noopener noreferrer">heart rate data</a>. I'll be using data from January 1, 2016 through March 31, 2016, and extrapolating wildly from that.</p>
<p>Fitbit only lets us fetch intraday data one day at a time, so I'll create a date range using pandas and iterate through that to pull down all the data.</p>
<p>And now we've retrieved all the available heart rate data for January 1<sup>st</sup> through March 31<sup>st</sup>! Let's get to the actual analysis.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id=wild-extrapolations-from-small-data>Wild Extrapolations from Small Data<ahref=#wild-extrapolations-from-small-dataclass=hash-linkaria-label="Direct link to Wild Extrapolations from Small Data"title="Direct link to Wild Extrapolations from Small Data"></a></h2>
<p>A fundamental issue of this data is that it's pretty small. I'm using 3 months of data to make predictions about my entire life. But, purely as an exercise, I'll move forward.</p>
<h3class="anchor anchorWithStickyNavbar_LWe7"id=how-many-heartbeats-so-far>How many heartbeats so far?<ahref=#how-many-heartbeats-so-farclass=hash-linkaria-label="Direct link to How many heartbeats so far?"title="Direct link to How many heartbeats so far?"></a></h3>
<p>The first step is figuring out how many of the 2.5 billion heartbeats I've used so far. We're going to try and work backward from the present day to when I was born to get that number. The easy part comes first: going back to January 1<sup>st</sup>, 1992. That's because I can generalize how many 3-month increments there were between now and then, account for leap years, and call that section done.</p>
<p>Between January 1992 and January 2016 there were 96 quarters, and 6 leap days. The number we're looking for is:</p>
<li><spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mi>h</mi><msub><mi>r</mi><mi>q</mi></msub></mrow><annotationencoding=application/x-tex>hr_q</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.9805em;vertical-align:-0.2861em></span><spanclass="mord mathnormal">h</span><spanclass=mord><spanclass="mord mathnormal"style=margin-right:0.02778em>r</span><spanclass=msupsub><spanclass="vlist-t vlist-t2"><spanclass=vlist-r><spanclass=vliststyle=height:0.1514em><spanstyle=top:-2.55em;margin-left:-0.0278em;margin-right:0.05em><spanclass=pstrutstyle=height:2.7em></span><spanclass="sizing reset-size6 size3 mtight"><spanclass="mord mathnormal mtight"style=margin-right:0.03588em>q</span></span></span></span><spanclass=vlist-s></span></span><spanclass=vlist-r><spanclass=vliststyle=height:0.2861em><span></span></span></span></span></span></span></span></span></span>: Number of heartbeats per quarter</li>
<li><spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mi>h</mi><msub><mi>r</mi><mi>d</mi></msub></mrow><annotationencoding=application/x-tex>hr_d</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.8444em;vertical-align:-0.15em></span><spanclass="mord mathnormal">h</span><spanclass=mord><spanclass="mord mathnormal"style=margin-right:0.02778em>r</span><spanclass=msupsub><spanclass="vlist-t vlist-t2"><spanclass=vlist-r><spanclass=vliststyle=height:0.3361em><spanstyle=top:-2.55em;margin-left:-0.0278em;margin-right:0.05em><spanclass=pstrutstyle=height:2.7em></span><spanclass="sizing reset-size6 size3 mtight"><spanclass="mord mathnormal mtight">d</span></span></span></span><spanclass=vlist-s></span></span><spanclass=vlist-r><spanclass=vliststyle=height:0.15em><span></span></span></span></span></span></span></span></span></span>: Number of heartbeats on leap day</li>
<li><spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mi>n</mi></mrow><annotationencoding=application/x-tex>n</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.4306em></span><spanclass="mord mathnormal">n</span></span></span></span>: Number of quarters, in this case 96</li>
<li><spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mi>m</mi></mrow><annotationencoding=application/x-tex>m</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.4306em></span><spanclass="mord mathnormal">m</span></span></span></span>: Number of leap days, in this case 6</li>
<p>So between January 1992 and January 2016 I've used <spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mo>≈</mo></mrow><annotationencoding=application/x-tex>\approx</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.4831em></span><spanclass=mrel>≈</span></span></span></span> 774 million heartbeats. Now, I need to go back to my exact birthday. I'm going to first find on average how many heartbeats I use in a minute, and multiply that by the number of minutes between my birthday and January 1992.</p>
<p>For privacy purposes I'll put the code here that I'm using, but without any identifying information:</p>
<p>It would appear that my heart has beaten 775,804,660 times between my moment of birth and January 1<sup>st</sup> 2016, and that I have 1.72 billion left.</p>
<h3class="anchor anchorWithStickyNavbar_LWe7"id=how-many-heartbeats-longer>How many heartbeats longer?<ahref=#how-many-heartbeats-longerclass=hash-linkaria-label="Direct link to How many heartbeats longer?"title="Direct link to How many heartbeats longer?"></a></h3>
<p>Now comes the tricky bit. I know how many heart beats I've used so far, and how many I have remaining, so I'd like to come up with a (relatively) accurate estimate of when exactly my heart should give out. We'll do this in a few steps, increasing in granularity.</p>
<p>First step, how many heartbeats do I use in a 4-year period? I have data for a single quarter including leap day, so I want to know:</p>
<li><spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mi>n</mi></mrow><annotationencoding=application/x-tex>n</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.4306em></span><spanclass="mord mathnormal">n</span></span></span></span>: Number of quarters = 16</li>
<li><spanclass=katex><spanclass=katex-mathml><math><semantics><mrow><mi>m</mi></mrow><annotationencoding=application/x-tex>m</annotation></semantics></math></span><spanclass=katex-htmlaria-hidden=true><spanclass=base><spanclass=strutstyle=height:0.4306em></span><spanclass="mord mathnormal">m</span></span></span></span>: Number of leap days = 1</li>
<divclass="codeBlockContainer_Ckt0 theme-code-block"style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><divclass=codeBlockContent_biex><pretabindex=0class="prism-code language-text codeBlock_bY9V thin-scrollbar"style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><codeclass=codeBlockLines_e6Vv><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain"> Four year periods remaining: 13</span><br></span><spanclass=token-linestyle="color:hsl(230, 8%, 24%)"><spanclass="token plain"> Remaining heartbeats after 4 year periods: 48041640</span><br></span></code></pre><divclass=buttonGroup__atx><buttontype=buttonaria-label="Copy code to clipboard"title=Copyclass=clean-btn><spanclass=copyButtonIcons_eSgAaria-hidden=true><svgviewBox="0 0 24 24"class=copyButtonIcon_y97N><pathfill=currentColord="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svgviewBox="0 0 24 24"class=copyButtonSuccessIcon_LjdS><pathfill=currentColord=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z/></svg></span></button></div></div></div>
<p>Given that there are 13 four-year periods left, I can move from 2016 all the way to 2068, and find that I will have 48 million heart beats left. Let's drop down to figuring out how many quarters that is. I know that 2068 will have a leap day (unless someone finally decides to get rid of them), so I'll subtract that out first. Then, I'm left to figure out how many quarters exactly are left.</p>
<p>So, that analysis gets me through until January 1<sup>st</sup> 2070. Final step, using that minute estimate to figure out how many minutes past that I'm predicted to have:</p>
<p>According to this, I've got until February 23<sup>rd</sup>, 2070 at 5:28 PM in the evening before my heart gives out.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id=summary>Summary<ahref=#summaryclass=hash-linkaria-label="Direct link to Summary"title="Direct link to Summary"></a></h2>
<p>Well, that's kind of a creepy date to know. As I said at the top though, <strong>this number is totally useless in any medical context</strong>. It ignores the rate at which we continue to get better at making people live longer, and is extrapolating from 3 months' worth of data the rest of my life. Additionally, throughout my time developing this post I made many minor mistakes. I think they're all fixed now, but it's easy to mix a number up here or there and the analysis gets thrown off by a couple years.</p>
<p>Even still, I think philosophically humans have a desire to know how much time we have left in the world. <ahref="https://www.biblegateway.com/passage/?search=psalm+144&version=ESV"target=_blankrel="noopener noreferrer">Man is but a breath</a>, and it's scary to think just how quickly that date may be coming up. This analysis asks an important question though: what are you going to do with the time you have left?</p>