<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>jonwear.com - Notes</title>
    <link>https://jonwear.com/notes/</link>
    <description>Quick reference notes from jonwear.com</description>
    <language>en-us</language>
    <lastBuildDate>Fri, 06 Mar 2026 11:09:28 -0500</lastBuildDate>
    <item>
      <title>Workout Plan</title>
      <link>https://jonwear.com/notes/workout-plan/</link>
      <description>&lt;h2&gt;Weekly Training Plan with Fallback Levels&lt;/h2&gt;&#xA;&lt;p&gt;This plan is designed to be &lt;strong&gt;failure-tolerant&lt;/strong&gt;.&lt;br /&gt;&#xA;The goal is consistency, not perfection.&lt;/p&gt;&#xA;&lt;p&gt;If a full session does not happen, you &lt;strong&gt;drop down a level&lt;/strong&gt;, not to zero.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Weekly Structure (Anchor)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Monday / Wednesday / Friday:&lt;/strong&gt; Cardio&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tuesday / Thursday:&lt;/strong&gt; Strength&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Weekend:&lt;/strong&gt; Off or optional easy walking&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h1&gt;CARDIO DAYS (MWF)&lt;/h1&gt;&#xA;&lt;h2&gt;Level 1 — Full Cardio Stack (Ideal)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zone 2 run:&lt;/strong&gt; 20 minutes (outdoors)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Row erg:&lt;/strong&gt; 5 min on / 2 min rest / 5 min on (moderate, controlled)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Jump rope:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1 min on&lt;/li&gt;&#xA;&lt;li&gt;30 sec rest&lt;/li&gt;&#xA;&lt;li&gt;1 min on&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is the target session.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 2 — Anchor Only (Very Acceptable)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zone 2 run:&lt;/strong&gt; 20 minutes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If this is all you do, the day &lt;strong&gt;counts&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 3 — Indoor / Low-Friction&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Row erg:&lt;/strong&gt; 12–15 minutes, continuous&lt;/li&gt;&#xA;&lt;li&gt;Easy to moderate pace&lt;/li&gt;&#xA;&lt;li&gt;No intervals&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Use this when weather, time, or motivation blocks running.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 4 — Bare Minimum (Non-Zero Day)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Row erg:&lt;/strong&gt; 6–8 minutes easy&lt;br /&gt;&#xA;&lt;strong&gt;OR&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Brisk walk:&lt;/strong&gt; 10 minutes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Purpose: maintain habit and circulation.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h3&gt;Cardio Rules&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Never “make up” missed cardio later&lt;/li&gt;&#xA;&lt;li&gt;Never skip because it “doesn’t count”&lt;/li&gt;&#xA;&lt;li&gt;Zone 2 stays truly easy&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h1&gt;STRENGTH DAYS (TR)&lt;/h1&gt;&#xA;&lt;h2&gt;Current Strength Pattern&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Pyramid ladders&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Exercises:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Pull-ups&lt;/li&gt;&#xA;&lt;li&gt;Weighted squats&lt;/li&gt;&#xA;&lt;li&gt;Push-ups&lt;/li&gt;&#xA;&lt;li&gt;Planks (seconds)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Current ladder:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;1–5–1&lt;/strong&gt; (up to 5, then back down)&lt;/li&gt;&#xA;&lt;li&gt;Progressing toward &lt;strong&gt;1–6–1&lt;/strong&gt; over time&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 1 — Full Strength Session (Ideal)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Complete the &lt;strong&gt;full planned ladder&lt;/strong&gt; for all movements&lt;br /&gt;&#xA;(e.g. 1–5–1, progressing to 1–6–1)&lt;/li&gt;&#xA;&lt;li&gt;Controlled pace&lt;/li&gt;&#xA;&lt;li&gt;Normal rest between sets&lt;/li&gt;&#xA;&lt;li&gt;Stop immediately if form degrades&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is the session that drives primary strength progress.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 2 — Anchor Strength Session (Highly Acceptable)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Complete a &lt;strong&gt;reduced ladder&lt;/strong&gt; for all movements&lt;br /&gt;&#xA;(e.g. &lt;strong&gt;1–3–1 or 1–4–1&lt;/strong&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Slower pace and/or longer rest as needed&lt;/li&gt;&#xA;&lt;li&gt;Stop immediately after completing the descent&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This preserves consistency and movement quality while reducing total load.&#xA;It still counts as meaningful training.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 3 — Partial Strength&lt;/h2&gt;&#xA;&lt;p&gt;Choose &lt;strong&gt;one&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Pull-up pyramid only&lt;/li&gt;&#xA;&lt;li&gt;Push-up pyramid only&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Focus on quality, not speed.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h2&gt;Level 4 — “Just Touch It”&lt;/h2&gt;&#xA;&lt;p&gt;Choose one:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2–3 submax sets of pull-ups&lt;/li&gt;&#xA;&lt;li&gt;2–3 submax sets of push-ups&lt;/li&gt;&#xA;&lt;li&gt;A single &lt;strong&gt;1–4–1&lt;/strong&gt; pyramid&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Purpose: joint signal and continuity.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h3&gt;Strength Rules&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Do not add intensity to compensate for missed volume&lt;/li&gt;&#xA;&lt;li&gt;If elbows or shoulders feel off, stop early&lt;/li&gt;&#xA;&lt;li&gt;Missing volume is fine; missing weeks is not&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h1&gt;Simple Decision Rules&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Time &amp;lt; 20 min:&lt;/strong&gt; Level 3 or 4&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Energy &amp;lt; 5/10:&lt;/strong&gt; Level 2&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Energy ≥ 7/10:&lt;/strong&gt; Level 1&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;No negotiation required.&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;h1&gt;Core Principle&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Something easy today beats something perfect tomorrow.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The plan succeeds as long as:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MWF remain cardio days&lt;/li&gt;&#xA;&lt;li&gt;TR remain strength days&lt;/li&gt;&#xA;&lt;li&gt;You never let “all or nothing” win&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is a system built to last.&lt;/p&gt;&#xA;</description>
      <pubDate>Tue, 06 Jan 2026 13:00:00 +0000</pubDate>
      <guid>https://jonwear.com/notes/workout-plan/</guid>
    </item>
    <item>
      <title>Webmention Tutorial by Reilly Spitzfaden</title>
      <link>https://jonwear.com/notes/webmention-tutorial-reference/</link>
      <description>&lt;p&gt;Wow, posting to Mastodon with the little web experiements really pays off.  I made a post about using web mentions and then &lt;a href=&#34;https://artlung.com&#34;&gt;Joe&lt;/a&gt; gives me this &lt;a href=&#34;https://reillyspitzfaden.com/wiki/tutorials/webmention-tutorial/&#34;&gt;great resource&lt;/a&gt; by &lt;a href=&#34;https://route66.social/@reillypascal@hachyderm.io&#34;&gt;Reilly&lt;/a&gt;.  Thanks to both of you!&lt;/p&gt;&#xA;</description>
      <pubDate>Mon, 05 Jan 2026 15:00:00 +0000</pubDate>
      <guid>https://jonwear.com/notes/webmention-tutorial-reference/</guid>
    </item>
    <item>
      <title>Go Error Handling Pattern</title>
      <link>https://jonwear.com/notes/go-error-handling/</link>
      <description>&lt;p&gt;A common pattern for handling errors in Go with context wrapping:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;func doSomething() error {&#xA;    result, err := someOperation()&#xA;    if err != nil {&#xA;        return fmt.Errorf(&amp;quot;failed to do something: %w&amp;quot;, err)&#xA;    }&#xA;    return nil&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Using &lt;code&gt;%w&lt;/code&gt; allows error unwrapping with &lt;code&gt;errors.Is()&lt;/code&gt; and &lt;code&gt;errors.As()&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2&gt;Multiple Error Checks&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;func processFile(path string) error {&#xA;    f, err := os.Open(path)&#xA;    if err != nil {&#xA;        return fmt.Errorf(&amp;quot;open file: %w&amp;quot;, err)&#xA;    }&#xA;    defer f.Close()&#xA;&#xA;    data, err := io.ReadAll(f)&#xA;    if err != nil {&#xA;        return fmt.Errorf(&amp;quot;read file: %w&amp;quot;, err)&#xA;    }&#xA;&#xA;    // use data...&#xA;    return nil&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;</description>
      <pubDate>Mon, 05 Jan 2026 14:00:00 +0000</pubDate>
      <guid>https://jonwear.com/notes/go-error-handling/</guid>
    </item>
    <item>
      <title>Webmention Send Test</title>
      <link>https://jonwear.com/notes/send-test/</link>
      <description>&lt;p&gt;Testing that webmention sending works by linking to my own &lt;a href=&#34;https://jonwear.com/articles/human-text-and-robot-html/&#34;&gt;first post&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
      <pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://jonwear.com/notes/send-test/</guid>
    </item>
    <item>
      <title>Webmention Test</title>
      <link>https://jonwear.com/notes/webmention-test/</link>
      <description>&lt;p&gt;This is a test note to verify webmention sending is working.&lt;/p&gt;&#xA;&lt;p&gt;Testing link to &lt;a href=&#34;https://webmention.rocks/receive/1&#34;&gt;webmention.rocks&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
      <pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://jonwear.com/notes/webmention-test/</guid>
    </item>
  </channel>
</rss>