<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>KHTDR – Sqlite</title><description/><link>https://khtdr.com/tags/sqlite.html</link><lastBuildDate>Sun, 30 Aug 2026 00:00:00 -0600</lastBuildDate><language>en-us</language><managingEditor>mazzarelli@gmail.com (Joey Mazzarelli)</managingEditor><webMaster>mazzarelli@gmail.com (Joey Mazzarelli)</webMaster><atom:link href="https://khtdr.com/tags/sqlite/index.xml" rel="self" type="application/rss+xml"/><item><title>The Well Rounded Climber</title><description> The Well Rounded Climber (tWRC) is an Android climbing log that tracks habits instead of grades. A V4 at one gym is not a V4 at another, and it is not a V4 outside. The app measures two things that do transfer: how your difficulty is distributed, and how varied your style is.
Get the app Android APK — Download the APK (v1.1.0, ~35 MB) Google Play — not published; this is a direct download iOS — not yet built Point a phone at this to download the APK directly (~35&nbsp;MB). Install Android blocks installs from outside the Play Store until you allow it, per-app:</description><link>https://khtdr.com/twrc/</link><guid>https://khtdr.com/twrc/</guid><pubDate>Sun, 30 Aug 2026 00:00:00 -0600</pubDate><author>mazzarelli@gmail.com (Joey Mazzarelli)</author><category>Software</category><content:encoded>
&lt;![CDATA[
&lt;p&gt;
&lt;strong&gt;The Well Rounded Climber&lt;/strong&gt; (tWRC) is an Android climbing log that tracks habits instead of
grades. A V4 at one gym is not a V4 at another, and it is not a V4 outside. The app measures
two things that do transfer: how your difficulty is &lt;strong&gt;distributed&lt;/strong&gt;, and how varied your
&lt;strong&gt;style&lt;/strong&gt; is.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Get the app
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;Android APK — &lt;a href="https://khtdr.com/twrc/latest.apk"&gt;Download the APK&lt;/a&gt; &lt;em&gt;(v1.1.0, ~35 MB)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Google Play — &lt;em&gt;not published; this is a direct download&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;iOS — &lt;em&gt;not yet built&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure style="margin:1.5rem 0;text-align:center"&gt;
&lt;a href="https://khtdr.com/twrc/latest.apk"&gt;
&lt;img src="https://khtdr.com/twrc/download-qr.svg" alt="QR code linking to the tWRC APK download"
width="200" height="200"
style="width:200px;height:200px;background:#fff;padding:10px;border-radius:8px;display:inline-block" /&gt;
&lt;/a&gt;
&lt;figcaption style="font-size:0.9em;opacity:0.75;margin-top:0.5rem"&gt;
Point a phone at this to download the APK directly (~35&amp;nbsp;MB).
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
Install
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;
Android blocks installs from outside the Play Store until you allow it, per-app:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the &lt;code class="verbatim"&gt;.apk&lt;/code&gt; above on the phone (or copy it over).&lt;/li&gt;
&lt;li&gt;Tap it. Android will offer to let your browser or file manager install unknown apps —
grant that, then tap the file again.&lt;/li&gt;
&lt;li&gt;Play Protect may warn you it does not recognize the developer. It does not; I am not in
the Play Store. Install anyway if you are comfortable with that.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After that, app updates arrive over the air on launch. You only need a new APK when the
native side changes.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
Why not grades?
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;p&gt;
Grades are the main way climbers talk about difficulty, but they are a weak training signal.
They depend on the gym, the setter, and the style. Chasing them tends to push you toward the
climbs you are already good at, one grade below your limit, on the wall angle you like.&lt;/p&gt;
&lt;p&gt;
So tWRC never asks what a route was graded. It asks two questions instead.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-2"&gt;
&lt;h2 id="headline-4"&gt;
The Pyramid — are you distributing your effort?
&lt;/h2&gt;
&lt;div id="outline-text-headline-4" class="outline-text-2"&gt;
&lt;p&gt;
Every climb gets self-classified into one of three &lt;strong&gt;personal&lt;/strong&gt; buckets, defined against your
ability today rather than any gym&amp;#39;s scale:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Base&lt;/strong&gt; — easy mileage. Volume, movement, warm-up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core&lt;/strong&gt; — hard but doable. Your working level.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stretch&lt;/strong&gt; — at or past your limit. Projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A healthy season is pyramid-shaped: a lot of base, a solid core, a few stretch. The chart
shows you the shape you actually climbed.&lt;/p&gt;
&lt;p&gt;
There is &lt;strong&gt;no score, no percentage, and no verdict&lt;/strong&gt;. What you get is a named gap, where you
sat, and one small suggestion you can go check:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Last session: 8 base, 13 core, 1 stretch. Your last 6 weeks run core-heavy.&lt;/p&gt;
&lt;p&gt;
Next session: pick two slab problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
There is a subtlety here that took a rewrite to find. The bars are drawn from &lt;strong&gt;effort&lt;/strong&gt;
(attempts plus a completion bonus), but the judgement about which way your training &lt;strong&gt;leans&lt;/strong&gt;
is computed from plain &lt;strong&gt;counts&lt;/strong&gt; — one climb, one climb. If the lean were scored on effort
instead, a single twelve-attempt project would outweigh an eight-problem warm-up block, and
every session where you genuinely projected would read as &amp;#34;top-heavy.&amp;#34; Sandbagging would
score better than trying hard, for the exact climber this app is for. Now a project is one
climb, because it &lt;strong&gt;is&lt;/strong&gt; one climb.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-2"&gt;
&lt;h2 id="headline-5"&gt;
The Spiders — are you climbing everything?
&lt;/h2&gt;
&lt;div id="outline-text-headline-5" class="outline-text-2"&gt;
&lt;p&gt;
Three radar charts, tagged in the moment on any climb:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hold Type&lt;/strong&gt; — crimp, sloper, pinch, jug, pocket, volume, crack&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wall Angle&lt;/strong&gt; — slab, vertical, overhang, roof, arete, stem&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Movement&lt;/strong&gt; — dyno, static, mantle, compression, lock-off&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tags are not exclusive: one climb can be a crimpy overhanging lock-off, and it counts in all
three webs. Spokes are a raw tally — every tagged climb counts once, whether you onsighted it
or failed on it for fifteen attempts, because the question a web answers is &amp;#34;have you touched
this?&amp;#34; and a climb answers that once.&lt;/p&gt;
&lt;p&gt;
The tally only becomes useful with a denominator, so the webs report in sentences:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You logged 4 slab problems in 90 days, out of 210 climbs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&amp;#34;4 slab&amp;#34; reads as a preference. &amp;#34;4 out of 210&amp;#34; is a gap.&lt;/p&gt;
&lt;div id="outline-container-headline-6" class="outline-3"&gt;
&lt;h3 id="headline-6"&gt;
The taxonomy is yours
&lt;/h3&gt;
&lt;div id="outline-text-headline-6" class="outline-text-3"&gt;
&lt;p&gt;
Those eighteen dimensions are a starting point, not a rule. Your gym does not set cracks? A
crack spoke pinned at zero will read as a gap nobody can close, so turn it off. Add your own.
Turning one back on restores its whole history; nothing is deleted when it is hidden.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-7" class="outline-2"&gt;
&lt;h2 id="headline-7"&gt;
Logging has to be fast or it doesn&amp;#39;t happen
&lt;/h2&gt;
&lt;div id="outline-text-headline-7" class="outline-text-2"&gt;
&lt;p&gt;
If logging is slow, you will not do it. The form is built to be quick:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Level picks the form.&lt;/strong&gt; Base asks nothing but &amp;#34;how many.&amp;#34; Core asks the result and offers
a one-tap &amp;#34;battled it.&amp;#34; Stretch — the only place a count actually matters — asks for
attempts on a keypad. One form serves three very different climbers, and it adapts &lt;strong&gt;within&lt;/strong&gt;
a single session, which a global &amp;#34;advanced mode&amp;#34; toggle never could.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tags carry over&lt;/strong&gt; from your last climb within a session, so a session on the same wall is
one tap per problem. They are not saved overnight — last night&amp;#39;s overhang should not attach
to tomorrow&amp;#39;s slab session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There is an end-of-session pass&lt;/strong&gt; that shows today&amp;#39;s untagged climbs with a few recallable
chips, for when you were too pumped to tag at the time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No modes, no onboarding questionnaire.&lt;/strong&gt; Nothing to configure before you can log a climb.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-8" class="outline-2"&gt;
&lt;h2 id="headline-8"&gt;
Make it yours
&lt;/h2&gt;
&lt;div id="outline-text-headline-8" class="outline-text-2"&gt;
&lt;p&gt;
Pick three colors — canvas, accent, and a chart seed — and the app derives its entire theme
from them. Every text color is checked against every background it lands on and corrected
until it clears WCAG AA contrast, including for bad picks. A bad color choice should not
leave you stuck in an unreadable settings screen you cannot see.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-9" class="outline-2"&gt;
&lt;h2 id="headline-9"&gt;
No ads, no tracking, no paid features
&lt;/h2&gt;
&lt;div id="outline-text-headline-9" class="outline-text-2"&gt;
&lt;p&gt;
The app is free. There are no ads, no tracking, and no paid features, and there are no plans
to add any. Everything you log lives in a SQLite database on your phone — no account, no
server, no sync, nothing to sign up for, and nothing leaves the device.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
]]&gt;</content:encoded></item></channel></rss>