• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
dcm31

dcm31

mdsite

Public
Markdown as a site
Like
mdsite
Home
Code
4
blog
1
content.md
H
main.tsx
posts.ts
Connections
Environment variables
Branches
1
Pull requests
Remixes
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
blog
/
burpees-system.md
Code
/
blog
/
burpees-system.md
Search
3/7/2026
Viewing readonly version of main branch: v64
View latest version
burpees-system.md

My adaptive burpee goal system

Every morning, a cron job wakes up and asks: how many burpees should I do today?

Not a fixed number. Not a vibe. A logistic regression model sweeps goals 1–50 and picks the one with the highest expected value: P(I'll actually do it) × goal. The model trains fresh each morning on all my history.

Why this exists

I've been doing burpees semi-consistently for a while. The problem with a fixed daily goal is that some days you're fresh and some days you're wrecked — and a number that's too easy stops meaning anything while a number that's too hard just gets skipped.

I wanted a system that adapts. Not AI-slop adapts. Actually adapts — from my own data.

How the goal gets set

The model has 31 input features:

  • Momentum: rolling 7/14-day success rates, streak direction
  • Volume: burpees total and averages over recent windows
  • Effort ratio: how close to goal I actually got (burpees / goal)
  • Gap ratio: whether I beat or missed goal, and by how much
  • Day of week: both one-hot encoded and as sin/cos for cyclicality
  • Activity rate: what fraction of recent days I've been active at all

It fits a logistic regression on my history (requires ≥15 rows), normalizes features, and runs 500 gradient descent iterations with L2 regularization.

The goal is locked once per day — after that it doesn't change, even if I ping the API again.

How I know my goal

The number shows up in four places:

  1. Atom Matrix — a 5×5 LED display on my desk shows the goal as a Cistercian numeral in red. When I'm done, it turns green. The bottom row shows a 5-dot streak history.
  2. Apple Watch complication — always visible on my watch face
  3. iOS lock screen — widget on my lock screen
  4. Telegram — morning message from the bot

How I log it

My primary trigger is finishing an HIIT workout on Apple Watch. The workout completion auto-fires an Apple Shortcut called "Log Burpee Goal" which pings /api/done on the val.

I can also press the Atom Matrix button (after yoga, as part of a morning routine), or tell the Telegram bot "Done!".

The accountability loops

Beeminder: every goal hit POSTs a +1 datapoint to my Beeminder burpees goal. If the cumulative line falls below the yellow brick road, I lose money. This is the actual forcing function.

Fatebook: every morning the system creates a prediction — "Will I do N burpees on [date]?" — with the model's probability as the forecast. The next morning it auto-resolves YES or NO from the database. Over time this tells me if the model is well-calibrated.

The stack

Everything runs on Val Town. SQLite for history and locks, blob storage for the yoga/burpee routine state, Deno for the runtime.

The Atom Matrix is an M5Stack device running custom firmware that polls the val's API. The Apple Watch complication hits a separate burpee-goal-display val.


The whole thing is embarrassingly over-engineered for "did I do my workout today." That's kind of the point.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
AboutAlternativesPricingBlogNewsletterCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.