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.
nice idea, but "small composable programs" includes perl scripts? That's great if you're already using perl, a bit much to install if you're not.
There shouldn't be any burden of portability for the one writing small tools like these.
You're free to rewrite it, of course, but expecting someone to go out of their way to stay within the unix/posix/whatever environment seems a bit much given the context of an unpaid endeavor.
dooglius 60 days ago [-]
I don't think "small" has ever been meant to include the runtime. Is R much more complex of a runtime than awk perl or bash?
lallero317 58 days ago [-]
That's literally what that lp1.awk does.
The R script just fills the gaps in data by interpolating.
Awesome, I needed this: I was going to implement something similar.
Always been a big 9fan (not unintentionally there is a valanza.rc :P).
erikgahner 60 days ago [-]
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, %>%.
lallero317 58 days ago [-]
Thanks. Just pushed. (I had never used R before).
notorandit 60 days ago [-]
Note. In southern Italian lingos, "valanza" means "scale".
notorandit 57 days ago [-]
Italian is "bilancia" (same root as balance).
renewiltord 60 days ago [-]
Same root as valence surely
hilti 60 days ago [-]
Love your approach: small, composable programs working together through pipes!
Rendered at 14:52:06 GMT+0000 (Coordinated Universal Time) with Vercel.
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
nice idea, but "small composable programs" includes perl scripts? That's great if you're already using perl, a bit much to install if you're not.
There shouldn't be any burden of portability for the one writing small tools like these. You're free to rewrite it, of course, but expecting someone to go out of their way to stay within the unix/posix/whatever environment seems a bit much given the context of an unpaid endeavor.
Thanks for the link
Always been a big 9fan (not unintentionally there is a valanza.rc :P).