<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 7, 2020 at 1:29 PM Rob Landley <<a href="mailto:rob@landley.net">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 9/6/20 6:45 AM, Jarno Mäkipää wrote:<br>
> On Sun, Sep 6, 2020 at 12:34 PM Rob Landley <<a href="mailto:rob@landley.net" target="_blank">rob@landley.net</a>> wrote:<br>
>> Elliott says there's a maximum limit on the number of digits users are willing<br>
>> to parse, and you're saying it's better to just have large blank gaps between<br>
>> the numbers than to use that space for anything, AND that the cap on the maximum<br>
>> number of digits is insurmountable rather than using separators like people have<br>
>> been doing for hundreds of years to cope with long numbers in "human readable"<br>
>> output?<br>
>><br>
>> It's certainly a point of view.<br>
> <br>
> Groups of 3 are indeed easier for eye. I would suggest using something<br>
> more sensible like spaces.<br>
<br>
Which is not what any country uses by default and thus makes everyone equally do<br>
a double take? Egalitarian badness?<br>
<br>
Hardwiring it to the esperanto of formats is certainly a suggestion.<br>
<br>
> SI system uses spaces as thousands separator, comma and period both<br>
> being valid decimal separator.<br>
> 123 456.789 or 123 456,789<br>
<br>
Ok, I'll bite: which countries teach SI to their kids in primary school?<br>
<br>
>> Bravo. And bionic's libc/bionic/locale.gratuitouslycppbutactuallyc says:<br>
>><br>
>>   // We only support two locales, the "C" locale (also known as "POSIX"),<br>
>>   // and the "C.UTF-8" locale (also known as "en_US.UTF-8").<br>
>><br>
>> So they don't support it either.<br>
> <br>
> C.UTF-8 and en_US.UTF-8 are not same.<br>
<br>
I cut and pasted that out of the bionic source.<br>
<br>
>> However, if the commas go, why doesn't the period in human_readable() go? I<br>
>> don't see how they're conceptually different?<br>
<br>
I'm waiting for an opinion from Elliott, which might be a "meh?" because it's<br>
not exactly his area either.<br></blockquote><div><br></div><div>i actually felt that 5 digits was small enough to not need separators.</div><div><br></div><div>a couple of things do stand out though. here's toybox and procps-ng 3.3.16 on Debian on my middling "real computer":<br></div><div><br></div><div>  Mem:   63,978M total,   53,696M used,   10,282M free,     1870M buffers<br> Swap:   56,095M total,      0.0M used,   56,088M free,   35,929M cached<br></div><div><br></div><div>MiB Mem :  63978.8 total,  10287.4 free,  13083.5 used,  40607.9 buff/cache<br>MiB Swap:  56096.0 total,  56088.2 free,      7.8 used.  49419.2 avail Mem <br></div><div><br></div><div>on the whole i prefer the toybox output, apart from the bug that gets us "1870M" rather than "1,870M" to match the others, and the weird "0.0M". i'd always use decimals or never use decimals.</div><div><br></div><div>toybox doesn't do as good a job on the smallest system available to me right now (a phone from a couple of years ago):</div><div><br></div><div>  Mem:     3931M total,     2149M used,     1782M free,     6336K buffers<br> Swap:     2948M total,      0.0K used,     2948M free,     1485M cached<br></div><div><br></div><div>there's the same 0.0 issue (though the ',' bug cancels itself out here because all the fields are consistent and -- imho -- 4 digits is definitely readable without separators anyway). i still dislike that "buffers" is using K where the others are using M. that to me still seems like the worst issue: i think we should always use the same units (which procps at least seems to do, even if they are sometimes KiB and other times MiB). which is basically a stronger version of the decimals complaint --- it's a table, and it's really weird when different fields in the table are in different units.</div><div><br></div><div>i don't think on a 3GiB system that i actually want to know whether i have 6.2MiB or 6.3MiB of buffers --- "6" is fine. but even if i did know, i'd want to see 6.2 vs 3931.0 rather than switch units mid-row.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
A proper fix would be a localeconv() in libc that DOESN'T return constant stub<br>
info, which is out of scope for toybox. (And is as much an ADB thing as a bionic<br>
thing since android seems to be using adb instead of ssh, so that would have to<br>
marshall the locale environment variables from the host into the target. But I<br>
often "wait for somebody to complain", you complained, and therefore I want to<br>
fix it PROPERLY.)<br>
<br>
In the meantime, I can add a call to localeconv() that would use "," if that<br>
returns "" which means right now it would be a NOP but then it's not my fault<br>
it's getting it wrong. And I can test against glibc which does have an<br>
overengineered version of this in it. Way back when uClibc had a much compressed<br>
format for the localeconv data, but didn't have a database of countries and thus<br>
copied its data from glibc, which it couldn't distribute for licensing reasons:<br>
<br>
  <a href="https://lists.uclibc.org/pipermail/uclibc/2015-June/049000.html" rel="noreferrer" target="_blank">https://lists.uclibc.org/pipermail/uclibc/2015-June/049000.html</a><br>
<br>
Rob<br>
<br>
P.S. I ranted about this sort of aesthetic issue being something the open source<br>
development model can't deal with 10 years ago, almost to the day:<br>
<br>
  <a href="https://landley.net/notes-2010.html#13-08-2010" rel="noreferrer" target="_blank">https://landley.net/notes-2010.html#13-08-2010</a><br>
<br>
And included it in my 2013 talk:<br>
<br>
  <a href="https://www.youtube.com/watch?v=SGmtP5Lg_t0#t=11m30s" rel="noreferrer" target="_blank">https://www.youtube.com/watch?v=SGmtP5Lg_t0#t=11m30s</a><br>
</blockquote></div></div>