Enlightened



  • @gąska said in Enlightened:

    @steve_the_cynic said in Enlightened:

    I'm pretty sure C requires each byte to have separate address. Though non-conforming implementations wouldn't surprise me in the least.

    I doubt it's actually required.

    ISO/IEC 9899:2011 subclause 3.6:

    1 byte
    addressable unit of data storage large enough to hold any member of the basic character set of the execution environment
    2 NOTE 1 It is possible to express the address of each individual byte of an object uniquely.

    Right, but that doesn't mean that a char is as big as a byte, strangely enough.

    In an architecture with 16-bit addressable memory (that is, add one to an address in assembly language ==> advance 16 bits), the addressable "byte" is 16 bits by that definition. Is that text saying that such a machine is obliged to have char be 16 bits? (And exactly how much code will work correctly on such a machine, anyway? How much code will do odd things if char, short and int are ALL 16 bits?(1))

    (1) The machine I worked on that did this was otherwise a 16-bit machine with a effective equivalent of x86's PAE allowing access to physical memory beyond 64K words. The OS interface used 8-bit characters.

    I direct your attention to the Unreliable Source:



  • @gąska said in Enlightened:

    @jaloopa @heterodox have you tried reading past the very first result? I'm 99% positive it's somewhere on the first page, and it's the only result related to programming.

    Could you post screenshots of your result? I wonder how it looks like compared to what I can reproduce.

    I wonder what WW2 underground fighters has got to do with programming... :trollface:

    0_1525694141992_0bb98771-d8f5-4969-8802-e5f965f37f94-image.png

    (for the record, that's on google.com, not google.fr... not that it really makes a difference to google as they decide what to show you based on what they've decided, not based on anything you tell them!)


  • Discourse touched me in a no-no place

    @pie_flavor said in Enlightened:

    C sucks balls for most non-trivial tasks

    Except that there's a lot of existing code that makes those tasks much easier. Redeveloping it all for another language would be a lot of work. Yes, you can describe this as the sunk cost fallacy, but when people are being successful right now with it, the attractiveness of redeveloping with a comparatively new language is very slight. The value proposition of Rust simply isn't very strong in this area; the problems that language solves aren't particularly pressing concerns in embedded systems development.

    Embedded is simply different to what you're used to, much more like what programming was about 30 years ago. It's also a lot more resource constrained than you're used to. Small overheads in memory usage that don't matter too much on desktops or in phone apps (let alone in servers) can make an embedded application entirely unable to fit on its target platform.


  • BINNED

    @remi said in Enlightened:

    WW2 underground fighters

    :trencoat: Listen very carefully! I will say this only once ...


  • Considered Harmful

    @dkf said in Enlightened:

    @pie_flavor said in Enlightened:

    C sucks balls for most non-trivial tasks

    Except that there's a lot of existing code that makes those tasks much easier. Redeveloping it all for another language would be a lot of work. Yes, you can describe this as the sunk cost fallacy, but when people are being successful right now with it, the attractiveness of redeveloping with a comparatively new language is very slight. The value proposition of Rust simply isn't very strong in this area; the problems that language solves aren't particularly pressing concerns in embedded systems development.

    "If I had asked the people what they wanted, they would have said faster horses."

    Embedded is simply different to what you're used to, much more like what programming was about 30 years ago. It's also a lot more resource constrained than you're used to. Small overheads in memory usage that don't matter too much on desktops or in phone apps (let alone in servers) can make an embedded application entirely unable to fit on its target platform.

    I know that, I'm not sure why you're bringing it up.


  • Banned

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way. Also, I'm never going to assume that a common knowledge among C programmers is common knowledge among people discussing C.

    By C, I mean the C programming language as specified by ISO/IEC 9899 standard.

    By ISO, I mean International Organization for Standardization.

    By IEC, I mean International Electrotechnical Commission.


  • BINNED

    @gąska
    who is this I guy?
    :tina:


  • Considered Harmful

    @luhmann self


  • Banned

    @luhmann said in Enlightened:

    @gąska
    who is this I guy?

    It's Werster's Pokemon.

    https://youtube.com/watch?v=g4DWTNVDkgw


  • Banned

    @steve_the_cynic said in Enlightened:

    @gąska said in Enlightened:

    @steve_the_cynic said in Enlightened:

    I'm pretty sure C requires each byte to have separate address. Though non-conforming implementations wouldn't surprise me in the least.

    I doubt it's actually required.

    ISO/IEC 9899:2011 subclause 3.6:

    1 byte
    addressable unit of data storage large enough to hold any member of the basic character set of the execution environment
    2 NOTE 1 It is possible to express the address of each individual byte of an object uniquely.

    Right, but that doesn't mean that a char is as big as a byte, strangely enough.

    Footnote 49:

    A byte contains CHAR_BIT bits, and the values of type unsigned char range from 0 to 2CHAR_BIT − 1.

    5.2.4.2.1.1:

    — number of bits for smallest object that is not a bit-field (byte)
    CHAR_BIT                  8

    (Disregard the 8; a paragraph above the quoted part says the actual value can be larger.)

    @steve_the_cynic said in Enlightened:

    In an architecture with 16-bit addressable memory (that is, add one to an address in assembly language ==> advance 16 bits), the addressable "byte" is 16 bits by that definition. Is that text saying that such a machine is obliged to have char be 16 bits?

    If they want to be compliant, yes. So the question is whether they want to be compliant. Also, they can do what @dkf said Cray did, ie. have char* implemented as address + offset.


  • ♿ (Parody)

    @gąska said in Enlightened:

    @blakeyrat said in Enlightened:

    @gąska said in Enlightened:

    I know you know what FFI means in this context.

    I honestly did not, and Google brought up Family Firm Institute.

    I checked on http://isearchfrom.com/ and the first search result for FFI in USA is Foreign Function Interface. Either the site is broken, Google decided you're more of an enterpreneur than a programmer, or you're lying.

    Now I've read "Foreign Function Interface" and I can guess at what that means but it's the first time I've read those three words like that. Also, for the record, I get some ruby project on Github, then a bunch of "People also ask" stuff for FFI, then the wikipedia link to "Fatal familial insomnia" and then what you meant.


  • :belt_onion:

    @parody said in Enlightened:

    Here's what I got, FWIW:

    • Fatal Familial Insomnia: 5 search results; first result; 3 of 4 entries in "People also ask"
    • Foreign Function Interface: 3 search results; second result (so under "People also ask")
    • Family Firm Institute: 1 search result; Infobox on right
    • Foreign Financial Institution: 1 search result; 1 of 4 entries in "People also ask"

    Clearly Google thinks we are more doctors than programmers.

    Of course, a real programmer wouldn't have to Google it.


  • Banned

    @heterodox said in Enlightened:

    Of course, a real programmer wouldn't have to Google it.

    The only programmers I know who don't use Google are university professors. Who are hardly real programmers (otherwise they'd be programmers, not university professors).


  • ♿ (Parody)

    @gąska said in Enlightened:

    Also, I'm never going to assume that a common knowledge among C programmers is common knowledge among people discussing C.

    By C, I mean the C programming language as specified by ISO/IEC 9899 standard.

    I'm always amazed at how many standards readers we have on here. I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links. You would probably also be surprised how many people here don't have formal "programming" education. Mine consists of a semester (or maybe two) of Pascal.


  • Discourse touched me in a no-no place

    @gąska said in Enlightened:

    The only programmers I know who don't use Google are university professors.

    The CS professors I know use Google. Just not usually for programming terms, but rather for interesting pieces of literature or more obscure bits of history. Also, there's Google Scholar which they do use (as a good way of finding out what a paper's DOI is).


  • Banned

    @boomzilla said in Enlightened:

    I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links.

    Probably because the language(s) you work with don't require reading the actual standard to be efficient.

    You would probably also be surprised how many people here don't have formal "programming" education.

    I didn't have formal education for most of my time as a programmer. If you only count graduations, I still don't. I would never get any at all if I had a choice.


  • 🚽 Regular

    @boomzilla I didn't learn "FFI" in my formal programming education, but much later in my haphazard internet readings. :mlp_shrug:

    But when I see unfamiliar initialisms like "DOI" in @dkf's post above, I just 0) take a wild guess 1) google 2) ask politely if google didn't help.

    Psst, @dkf, did you mean Digital Object Identifier?


  • ♿ (Parody)

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links.

    Probably because the language(s) you work with don't require reading the actual standard to be efficient.

    Then what's everyone else's excuse for posting lots of C++ standard stuff?

    You would probably also be surprised how many people here don't have formal "programming" education.

    I didn't have formal education for most of my time as a programmer. If you only count graduations, I still don't. I would never get any at all if I had a choice.

    I obviously wasn't counting graduations at all.


  • Banned

    @dkf said in Enlightened:

    @gąska said in Enlightened:

    The only programmers I know who don't use Google are university professors.

    The CS professors I know use Google.

    This doesn't contradict anything I said. Even if you drop "I know" from my post, it still doesn't.


  • ♿ (Parody)

    @zecc said in Enlightened:

    But when I see unfamiliar initialisms like "DOI" in @dkf's post above, I just 0) take a wild guess 1) google 2) ask politely if google didn't help.

    I generally do, too, but when the person starts getting angry at everyone else because they didn't know it I like to get in on the action.


  • Banned

    @boomzilla said in Enlightened:

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links.

    Probably because the language(s) you work with don't require reading the actual standard to be efficient.

    Then what's everyone else's excuse for posting lots of C++ standard stuff?

    All these people work(ed) with C or C++.


  • ♿ (Parody)

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links.

    Probably because the language(s) you work with don't require reading the actual standard to be efficient.

    Then what's everyone else's excuse for posting lots of C++ standard stuff?

    All these people work(ed) with C or C++.

    Right. That's my question, because, "the language(s) you work with don't require reading the actual standard to be efficient."


  • 🚽 Regular

    While on the subject of FFI, today I learned the main antagonist in the first Final Fantasy game is named like one of those things you put on x-mas trees, apparently.


  • Banned

    @boomzilla said in Enlightened:

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links.

    Probably because the language(s) you work with don't require reading the actual standard to be efficient.

    Then what's everyone else's excuse for posting lots of C++ standard stuff?

    All these people work(ed) with C or C++.

    Right. That's my question, because, "the language(s) you work with don't require reading the actual standard to be efficient."

    I'm completely lost now. Who's "everyone else" exactly, what's the "if" clause that's implied by "then" in your question, was your question answered sufficiently already or are you're asking for further clarification?

    Or to make it simple. Just write the question again in full, if you still have one.


  • ♿ (Parody)

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    @gąska said in Enlightened:

    @boomzilla said in Enlightened:

    I don't think I've ever bothered reading any language's standard outside of TDWTF comments or links.

    Probably because the language(s) you work with don't require reading the actual standard to be efficient.

    Then what's everyone else's excuse for posting lots of C++ standard stuff?

    All these people work(ed) with C or C++.

    Right. That's my question, because, "the language(s) you work with don't require reading the actual standard to be efficient."

    I'm completely lost now. Who's "everyone else" exactly, what's the "if" clause that's implied by "then" in your question, was your question answered sufficiently already or are you're asking for further clarification?

    Or to make it simple. Just write the question again in full, if you still have one.

    I program in C++. They program in C++. What's their excuse for posting stuff from the standard so much if it's not needed to be efficient?


  • Banned

    @boomzilla I was wrong in my assumption that you don't program in a language that requires reading the standard to be efficient with.


  • ♿ (Parody)

    @gąska said in Enlightened:

    @boomzilla I was wrong in my assumption that you don't program in a language that requires reading the standard to be efficient with.

    Well, one of your assumptions was wrong, anyways.



  • @boomzilla said in Enlightened:

    What's their excuse for posting stuff from the standard so much if it's not needed to be efficient?

    I'm more worried about the efficient/optimized parts actually being illegal, according to the language standard.

    That is, I check the standard to figure out whether or not something is actually legal (or at least not actively illegal), and not just one of the things that happens to work on my machine (and other machines that I test on).


  • Banned

    @boomzilla the point is, C++ has orders of magnitude more cognitive load than other languages (ie. number of gotchas you need to be aware of all the time), and (almost?) every C++ tutorial in existence is wrong about some small but important details, so it's often better to just RTFM even though the FM is more impenetrable than the US spending bill.


  • BINNED

    @dkf said in Enlightened:

    DOI

    Daily Observed Insufficiency?


  • Banned

    @luhmann ironically, googling this gave me a bunch of research papers.


  • BINNED

    @gąska
    I was also pondering Department of Inefficiency but they where made redundant by the Redundancy Department of Redundancy


  • kills Dumbledore

    @gąska said in Enlightened:

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way. Also, I'm never going to assume that a common knowledge among C programmers is common knowledge among people discussing C.

    By C, I mean the C programming language as specified by ISO/IEC 9899 standard.

    By ISO, I mean International Organization for Standardization.

    By IEC, I mean International Electrotechnical Commission.

    Or you could just answer when people ask what the TLA means rather than assuming they're lying


  • Banned

    @jaloopa maybe if people actually asked for clarification instead of being jackasses and assuming the meaning they are absolutely sure I didn't mean, I would answer it.


  • ♿ (Parody)

    @jaloopa said in Enlightened:

    Or you could just answer when people ask what the TLA means rather than assuming they're lying

    https://what.thedailywtf.com/topic/9200/tdemsyr


    Filed Under: Slow Down



  • @gordonjcp said in Enlightened:

    There's nothing particularly "arcane" about ARM. What would you use, instead of C?

    You're missing my point entirely.

    Look, if you're the 0.05% of programmers who has to work with microcontrollers, sure you should learn C. If you're the 0.05% of programmers who has to work with IBM mainframes from the 1970s, sure you should learn COBOL or PROLOG or whatever.

    But that's no reason to teach either of those things to the general public of people learning programming. For some reason, people all agree about that point when it comes to COBOL, but there's always a ton of programmers on boards like this one who think everybody should still learn C. This disconnect confuses me.

    The problem with teaching learners C is that they then use it for projects it's wholly inappropriate for. Which is basically every project other than those ARM microcontrollers you mention.

    That was my point.


    BTW another reason to prevent people from learning about C is that it leads to boring, boring, boring and extremely long conversations over whether the const keyword in C implies that the value is thread-safe or not. Since I'm coming back to this thread like 100 posts later, I assume 95 of those posts are boring shitty posts about stupid shit that only applies to C and nobody gives a shit about. Let's scroll down and see!

    EDIT: yup. Quoting the C standards docs! What a hilarious and fun party game!



  • @cvi said in Enlightened:

    That's a bit like saying that python/luajit/etc are better than the Win32 API, because those too can load and then call the Win32 API directly (on Windows).

    Yes it is like that. If your language is a superset of C, if it makes dealing with C code a lot easier, that makes it better than C.

    You typed that sentence as if you thought it was ironic or something. It's not. It's literally true.



  • @PleegWat said in Enlightened:

    @djls45 said in Enlightened:

    @Adynathos said in Enlightened:

    @djls45 said in Enlightened:

    Since pointers are numbers, you can do math on them like any other.

    EFL makes extensive use of these factoids.

    On the topic of pointless factoids about C(++) pointer arithmetic:
    When array is a pointer, array[5] means the same as 5[array]
    because a[b] means *(a+b) and + is commutative.

    And in the x86 Assembly code I've seen, either the latter form was used or both terms were inside the square brackets.

    I don't think x86 assembly even has a form for array[5]. 5[array] could be an access to the 5th member of the array, but it could also be read as 5[pstruct], accessing the member at offset 5 in the struct pstruct points to.

    Generally my assembly knowledge is pretty crappy though, so I may be wrong.

    According to http://www.c-jump.com/CIS77/ASM/Addressing/lecture.html

    1. Indirect Syntax Options
    • The assembler allows a variety of syntaxes for indirect memory operands.

    • However, all registers must be inside brackets.

    • Each register can be enclosed in its own pair of brackets, or in the same pair of brackets separated by a plus operator (+).

    • The following variations are legal and assemble the same way:

        mov     ax, table[bx][di]
        mov     ax, table[di][bx]
        mov     ax, table[bx+di]
        mov     ax, [table+bx+di]
        mov     ax, [bx][di]+table
      
    • All of these statements move the value in table indexed by BX+DI into AX.

    I'm pretty sure that a constant can be put in place of any of the right-side parameters, and at least some assemblers also support mov ax, [table+index*multiplier].

    Edit: The next sections of that page describe this last type of addressing format.



  • @gąska said in Enlightened:

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way.

    Notice how when Blakeyrat says something, Blakeyrat is a stupid, moron, idiot, etc. But when other people say the exact same thing suddenly it's "oh dear I'm so sorry, I'll never assume again!"

    Just pointing it out.


  • Considered Harmful

    @blakeyrat it's because when people point out that he's wrong, he doesn't carry on and on about how he doesn't like being wrong.


  • Banned

    @blakeyrat said in Enlightened:

    For some reason, people all agree about that point when it comes to COBOL, but there's always a ton of programmers on boards like this one who think everybody should still learn C.

    Probably because so much of our current technology requires knowledge of C. Not writing C, but knowledge of C. It's mostly low level stuff, but still.

    My personal opinion is, there should be no expectation or a requirement for a typical programmer to know C, and it shouldn't be taught in public schools and in colleges. But there's still great many programmers who need - or could really use - knowledge of C, so there's great value in people making educational materials about C even today.

    And yes, I agree that C gets picked for new projects way too often. But so does Javascript, and it has nothing to do with the age of either language (but everything to do with them being shitty).


  • :belt_onion:

    @blakeyrat said in Enlightened:

    @gąska said in Enlightened:

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way.

    Notice how when Blakeyrat says something, Blakeyrat is a stupid, moron, idiot, etc. But when other people say the exact same thing suddenly it's "oh dear I'm so sorry, I'll never assume again!"

    Just pointing it out.

    You're reading his response as sincere, which it was not.



  • @gordonjcp said in Enlightened:

    @blakeyrat said in Enlightened:

    People who make that "but what about arcane microcontrollers!!!"

    There's nothing particularly "arcane" about ARM. What would you use, instead of C?

    C++ could be a good choice. :D


  • Banned

    @blakeyrat said in Enlightened:

    @gąska said in Enlightened:

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way.

    Notice how when Blakeyrat says something, Blakeyrat is a stupid, moron, idiot, etc. But when other people say the exact same thing suddenly it's "oh dear I'm so sorry, I'll never assume again!"

    Notice how those other people actually told me that their google results are wholly different from what I've got. And don't put words I didn't say in my mouth - I never apologized for anything!


  • Java Dev

    @djls45 said in Enlightened:

    @PleegWat said in Enlightened:

    @djls45 said in Enlightened:

    @Adynathos said in Enlightened:

    @djls45 said in Enlightened:

    Since pointers are numbers, you can do math on them like any other.

    EFL makes extensive use of these factoids.

    On the topic of pointless factoids about C(++) pointer arithmetic:
    When array is a pointer, array[5] means the same as 5[array]
    because a[b] means *(a+b) and + is commutative.

    And in the x86 Assembly code I've seen, either the latter form was used or both terms were inside the square brackets.

    I don't think x86 assembly even has a form for array[5]. 5[array] could be an access to the 5th member of the array, but it could also be read as 5[pstruct], accessing the member at offset 5 in the struct pstruct points to.

    Generally my assembly knowledge is pretty crappy though, so I may be wrong.

    According to http://www.c-jump.com/CIS77/ASM/Addressing/lecture.html

    1. Indirect Syntax Options
    • The assembler allows a variety of syntaxes for indirect memory operands.

    • However, all registers must be inside brackets.

    • Each register can be enclosed in its own pair of brackets, or in the same pair of brackets separated by a plus operator (+).

    • The following variations are legal and assemble the same way:

        mov     ax, table[bx][di]
        mov     ax, table[di][bx]
        mov     ax, table[bx+di]
        mov     ax, [table+bx+di]
        mov     ax, [bx][di]+table
      
    • All of these statements move the value in table indexed by BX+DI into AX.

    I'm pretty sure that a constant can be put in place of any of the right-side parameters, and at least some assemblers also support mov ax, [table+index*multiplier].

    Hm, I could also see the multiplier implicitly being 'the size of register ax on a hardware level.

    Those forms would only matter if you're actually writing assembly though. All of mine gets generated by the compiler, I try to minimise the amount of disassembled binary code I have to deal with when debugging crashes.



  • @gąska said in Enlightened:

    I never apologized for anything!

    You don't have a wife/girlfriend then 🍹


  • ♿ (Parody)

    @heterodox said in Enlightened:

    @blakeyrat said in Enlightened:

    @gąska said in Enlightened:

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way.

    Notice how when Blakeyrat says something, Blakeyrat is a stupid, moron, idiot, etc. But when other people say the exact same thing suddenly it's "oh dear I'm so sorry, I'll never assume again!"

    Just pointing it out.

    You're reading his response as sincere, which it was not.

    False. Nothing goes over his head. He would catch it.



  • @gąska said in Enlightened:

    Notice how those other people actually told me that their google results are wholly different from what I've got.

    Well remember I don't have the telepathy or omniscience gene that apparently other people have, so I had no way of knowing what your Google results were. Not that you bothered to Google it before typing it, so I don't know why you're even bringing that up. It's like a retroactive defense. "Well if I had done X before typing it it wouldn't have helped anyway!" Well, ok, but since you didn't, I don't see how that matters...

    Look, if you type gibberish you're typing gibberish. I mean look at the actual practical result: look how much typing you saved by using that obscure-ass acronym instead of just typing what you fucking meant to say in the first place. Why you must have saved -300 words or so with your clever use of acronyms!

    Just don't type gibberish. I didn't realize that opinion was apparently so controversial.


  • Banned

    @heterodox said in Enlightened:

    @blakeyrat said in Enlightened:

    @gąska said in Enlightened:

    From now on, I'm never going to assume anything is easily googlable even if it is for me and I've never heard the word/acronym used in any other way.

    Notice how when Blakeyrat says something, Blakeyrat is a stupid, moron, idiot, etc. But when other people say the exact same thing suddenly it's "oh dear I'm so sorry, I'll never assume again!"

    Just pointing it out.

    You're reading his response as sincere, which it was not.

    Though in all honesty. Google is so fucked up currently with its adaptive personalized searches that it's literally impossible to determine how visible a particular result is to others. I'm seriously stunned that Foreign Function Interface wasn't in top 3 results for everyone here. I have no trust at all that anyone can find anything there anymore. So I'm really going to expand all my acronyms.


  • Banned

    @blakeyrat said in Enlightened:

    @gąska said in Enlightened:

    Notice how those other people actually told me that their google results are wholly different from what I've got.

    Well remember I don't have the telepathy or omniscience gene that apparently other people have, so I had no way of knowing what your Google results were.

    Hint: they don't. Not even I do. Which is the whole reason we have this side discussion.

    Not that you bothered to Google it before typing it

    I did. I even used a site that changes my reported location to make sure I'm getting the same results as you. I explicitly told you I did that. The fact this site turns out to be useless is another matter.

    Look, if you type gibberish you're typing gibberish.

    If you type Chinese it looks like gibberish to me too, but it doesn't mean it IS gibberish. Words have meaning and all that.

    I mean look at the actual practical result: look how much typing you saved by using that obscure-ass acronym instead of just typing what you fucking meant to say in the first place. Why you must have saved -300 words or so with your clever use of acronyms!

    I could save even more typing by not saying anything at all. Where did you get this idea that I was trying to optimize for written text size? You, of all people!?


Log in to reply