logoalt Hacker News

Valanza – my Unix way for weight tracking and anlysis

20 pointsby lallero317last Thursday at 3:08 PM8 commentsview on HN

Comments

criticastoday at 5:58 PM

Nice idea, but "small composable programs" includes R scripts? That's great if you're already using R, a bit much to install if you're not.

You could simplify things by cribbing from the Hacker's Diet (https://www.fourmilab.ch/hackdiet/) and using an exponentially weighted moving average as your filter. 10% of today's weight + 90% yesterday's EWMA. That's almost a one-liner in awk or perl, or a simple function in bash.

Copilot suggests: awk 'BEGIN{alpha=0.1} NF>=2 { date=$1; w=$2; if (NR==1) ewma=w; else ewma=alpha*w + (1-alpha)*ewma; printf "%s\t%g\t%.6f\n", date, w, ewma }' input.txt

show 2 replies
notorandittoday at 8:36 PM

Note. In southern Italian lingos, "valanza" means "scale".

show 1 reply
MisterTeatoday at 6:09 PM

A friend did similar using rc on Plan 9: https://shithub.us/rodri/rcfitness/HEAD/info.html

erikgahnertoday at 6:02 PM

Great stuff! You can make minor adjustments to the R-script so you do not need to rely on {dplyr} and {tidyr}. For example, use merge() instead of left_join() and use the base pipe, |>, instead of the magrittr pipe, %>%.

hiltitoday at 4:55 PM

Love your approach: small, composable programs working together through pipes!