while(true){💩};

  • 0 Posts
  • 23 Comments
Joined 1 year ago
cake
Cake day: June 11th, 2023

help-circle



  • OP asked for FOSS, and if this keyboard had met OPs other criteria, it would have failed the FOSS check (it’s a source-available license). It’s also a roll-your-own license and a very very short one at that. It’s missing a lot of key protections for both the company and the consumer.

    I’m pretty steadfast on using GPL software wherever i can, especially for something as mission-critical as a keyboard. Non-gpl projects have a tendency to get bought up and relicensed or corrupted in some other way over time (sometimes a very long time, but time nevertheless). I’ll make exceptions for things that are less critical, like games, but core system must be GPL or offer equivalent protections for the end user.

    Source-available is still good for auditability though, making it more secure in the short-term.



  • I’m not sure if i’m missing a joke here, so:

    In case you’re making a joke: The people who don’t type JSON are using controllers.

    In case you’re asking a serious question: the people who don’t type JSON are the people in OP’s image. They are technically using types, but that type is literally always string. They don’t use integers, they don’t use booleans. This is functional but may not be the best choice, depending on what kinds of data their system is supposed to handle.


  • JSON has types.

    Many API developers may choose not to use them, but they are absolutely there.

    You specify the type by including or excluding quotation marks, and then for the types without quotation marks, you either include or exclude a decimal point to specify float or integer, and for boolean you use characters (specifically true or false). Arrays are wrapped in [] and objects are wrapped in {}.

    JSON data as a whole is passed as one giant string because the REST protocol demands it. But once it’s been pulled in and properly interpreted, there are absolutely types in the data.









  • I keep hoping that mobile linux will get better and pinephone will start popping off but the software experience so far has been absolutely miserable and progress has been incredibly slow on gnome and kde mobile experiences, modem drivers (missed calls and sms), and so on.

    There is progress, so it’ll get there eventually but how long that is is hard to say.

    And i know it requires volunteers in their free time. I’d like to contribute to the code but i’m far too inexperienced to do so and im too broke to fund anything. They expect far more detail in bug reports than im able to provide, so its all a wash.





  • The JS thing makes perfect sense though,

    “1” is a string. You declared its type by using quotes. myString = "1" in a dynamically typed language is identical to writing string myString = "1" in a statically typed language. You declare it in the symbols used to write it instead of having to manually write out string every single time.

    2 is an integer. You know this because you used neither quotes nor a decimal place surrounding it. This is also explicit.

    "1" + 2, if your interpreter is working correctly, should do the following

    • identify the operands from left to right, including their types.

    • note that the very first operand in the list is a string type as you explicitly declared it as such by putting it in quotes.

    • cast the following operands to string if they are not already.

    • use the string addition method to add operands together (in this case, this means concatenation).

    In the example you provided, "1" + 2 is equivalent to "1" + "2", but you’re making the interpreter do more work.

    QED: "1" + 2 should, in fact, === "12", and your lack of ability to handle a language where you declare types by symbols rather than spending extra effort writing the type out as a full english word is your own shortcoming. Learn to declare and handle types in dynamic languages better, don’t blame your own misgivings on the language.

    Signed, a software engineer.