223 Matching Annotations
  1. Aug 2025
  2. siraj-samsudeen.github.io siraj-samsudeen.github.io
    1. Since your goal is to evaluate Phoenix vs Rails

      This seems out of place based on the 'Rules of the Game' - we're supposed to be Python devs who don't know Ruby. The Phoenix vs Rails comparison doesn't align with the established context, and it doesn't connect to the previous conversation either.

    2. I can see you got 7 words instead of the expected 6, but let me check your logic… Looking at your final filtered list: ["Hello", "world", "Elixir", "love", "programming", "Code", "every"] You used >= 4 (4 or more characters), since exercise asked for filtering out words “shorter than 4 characters”, which means keeping words with 4 or more characters - so your logic is actually correct!

      In the exercise above, it says 'Expected: 7', but here it says 'you got 7 words instead of the expected 6'. This part seems unnecessary.

    3. # This needs parentheses for the inner function call Enum.map(words, fn x -> String.length(x) end)

      This example says parentheses are needed for the inner function call, but Example 1 just said they're not needed for simple cases like that. These examples look pretty similar to me - I'm confused about when I should actually use parentheses.

  3. May 2025
    1. There has been an attempt to systematize exit status numbers (see /usr/include/sysexits.h), but this is intended for C and C++ programmers. A similar standard for scripting might be appropriate. The author of this document proposes restricting user-defined exit codes to the range 64 - 113 (in addition to 0, for success), to conform with the C/C++ standard.

      It sounds like he's proposing aligning with the sysexits.h standard?

      But I'm not clear why he refers to "exit codes to the range 64 - 113 (in addition to 0, for success)" as user-defined. To me, these seem the complete opposite: those are reserved for pre-defined, standard exit codes — with 0 for success being the most standard (and least user-defined) of all!

      Why to use exit codes from 1-63 for user-defined errors??

    2. An update of /usr/include/sysexits.h allocates previously unused exit codes from 64 - 78. It may be anticipated that the range of unallotted exit codes will be further restricted in the future. The author of this document will not do fixups on the scripting examples to conform to the changing standard. This should not cause any problems, since there is no overlap or conflict in usage of exit codes between compiled C/C++ binaries and shell scripts.

      Eh, 0 and 64 - 78 are the only codes it defines. So if it had different codes defined before, what on earth were those codes before? Was only 0 "used"/defined here before? Nothing defined from 1-128? Or were the codes defined there different ones, like 20-42 and then they arbitrarily shifted these up to 64-78 one day? This is very unclear to me.

      Also unclear whether this is saying it won't update for any future changes after this, or if he hasn't even updated to align with this supposed "change". (Unclear because I can't figure out whether his "proposes restricting user-defined exit codes to the range 64 - 113 (in addition to 0, for success), to conform with the C/C++ standard" statement is actually conforming or rejecting the sysexits.h standard.)

      It seems that he's overreacting a bit here. It's hard to imagine there has been or will be any major changes to the sysexits.h. I would only imagine there being additions to, but not changes to because backwards compatibility would be of utmost concern.

  4. Apr 2025
  5. Jun 2024
  6. May 2024
    1. While the RSpec team now officially recommends system specs instead, feature specs are still fully supported, look basically identical, and work on older versions of Rails.

      Whose recommendation should one follow?

      RSpec team's recommendation seems to conflict with this project's: https://rspec.info/features/6-0/rspec-rails/request-specs/request-spec/:

      Capybara is not supported in request specs. The recommended way to use Capybara is with feature specs.

    1. For example, if /test were to be introduced in v1.1 and deprecated in v1.2, then it can be removed in v1.3.

      That's.. not intuitive for those familiar with semver.

      Like, bump it to 2.0 instead. It's a breaking change. Everybody will get it. What's the point of the second digit if it guarantees "maybe nothing will be broken" - tell it explicity, is it or is it not.

  7. Mar 2024
  8. Feb 2024
  9. Jan 2024
  10. Dec 2023
  11. Nov 2023
    1. In contrast to One Tap, the Sign in with Google button flow must be triggered by a user gesture.

      "One tap" sounds like a user gesture -- sounds the same as tapping on a button. So I don't yet see the distinction they are trying to make or undertsand the difference between these options...

  12. Oct 2023
    1. The main usage difference is that dependency can be used in a second sense as a "concrete" noun to mean a person or thing which depends on something/someone else. But note that in the programming context it's not uncommon to see it used to mean a software resource upon which some piece of software depends (i.e. - reversing the need/provide relationship).

      Is that really true? Can dependency refer to a person or thing which depends on something/someone else?? I'm only used to it the other way.

  13. Sep 2023
    1. The problem is that in the case where an app is multi-threaded, and we don't switch off autoload, the case would be that it probably won't blow up, but random stuff will mysteriously sometimes fail in weird ways. So ask yourself this, what would you rather want, option 1) where you can get an exception at runtime, or option 2) where you get random, unpredictable, weird, hard to explain, difficult to debug bugs at runtime. Personally, I'm going to choose option 1. The downside of thread-safety issues is so much worse than the downside of the possibility of an exception. The way you're handling it makes it sound as though thread-safety is not important, as though Rails is still optimizing for the single-threaded case. That seems like a huge step back.
  14. Mar 2023
    1. Conversations are collections of messages that all have the same Subject. When "conversation mode" is on, searches return entire conversations as results. So what should gmail search do if a conversation contains both a message that matches, and a message that does not match your search? You are probably expecting it to return conversations only if all messages in that conversation match. But that is not correct. Instead, Gmail search will return conversations even if only a single message in that conversation matches. So that means that if you do the same search above with "conversation mode" on, the results are likely to include messages that do not match your search!
  15. Feb 2023
    1. The results told us Felix’s demographic really wanted to shop for climate-friendly food brands, but found the sustainability information too confusing and – perhaps as a result – believed sustainable grocery shopping to be too expensive.Our strategy was clear: Give shoppers better information on the climate impact of Felix products and, in the process, demonstrate how easy it is to make climate-friendly choices when products are clearly labelled. We called it The Climate Store (Klimatbutiken) – the world’s first grocery shop in which the ‘price’ of food would be based on its carbon footprint.
      • Climate Supermarket
      • Climate store
      • Survey showed consumers were confused by sustainability information
      • consumers were left with the belief that shopping sustainably was too expensive
      • One answer to simplify the complexity that was confusing people was uniform labeling of grocery products with their CO2e and a hard limit (18.9Kg CO2e) that consumer must stay under each week to meet Paris agreement
    1. However, research on experiential philanthropy’s short-term efficacy suggests that discipline-specific considerations are likely to impact how efficacious the pedagogy is for certain populations of students.
  16. Jan 2023
  17. Dec 2022
    1. Include one or both of these headers in your messages:

      Actually, if you include List-Unsubscribe-Post, then you MUST include List-Unsubscribe (both).

      According to https://www.rfc-editor.org/rfc/rfc8058#section-3.1,

      A mail sender that wishes to enable one-click unsubscriptions places one List-Unsubscribe header field and one List-Unsubscribe-Post header field in the message. The List-Unsubscribe header field MUST contain one HTTPS URI. It MAY contain other non-HTTP/S URIs such as MAILTO:. The List-Unsubscribe-Post header MUST contain the single key/value pair "List-Unsubscribe=One-Click".

  18. Nov 2022
  19. Oct 2022
    1. Options to import/export locally stored passwords have been a staple of Chrome for years. For god knows what reason either option seemed to randomly disappear in one Chrome Version and then re-appear in the next.Sometimes there was an import option with no export option, sometimes the other way round like right now, sometimes neither option was available, but you could always add either Option via chrome://flags.If they wanted to force people to use online sync only, why have options for local export still, but not import?
  20. Sep 2022
    1. Thats because you have both width and padding set to one element. And by default padding is added on top of width. (Making it 100% + 2*30px of width). #header{ padding: 30px; width: 100%; } Either remove padding and add it to an inner element with no width set, or use: box-sizing: border-box; Which makes the width calculation include padding. :)
  21. Aug 2022
    1. "It's difficult because we can't tell people exactly what's allowed and not allowed," said Chris Castelli, a manager for the Department of State Lands. "It's even tougher for law enforcement that gets called out to very heated disputes and doesn't have strict laws they can apply." 
  22. Jul 2022
    1. Pre and post commands with matching names will be run for those as well (e.g. premyscript, myscript, postmyscript)

      Could potentially be confusing behavior if running a script does something extra and you don't know why. They might look at the definition of myscript and not see the additional commands and wonder how/why they are running. The premyscript might be lost in a lost unsorted script list.

    2. Since npm@1.1.71, the npm CLI has run the prepublish script for both npm publish and npm install, because it's a convenient way to prepare a package for use (some common use cases are described in the section below). It has also turned out to be, in practice, very confusing. As of npm@4.0.0, a new event has been introduced, prepare, that preserves this existing behavior. A new event, prepublishOnly has been added as a transitional strategy to allow users to avoid the confusing behavior of existing npm versions and only run on npm publish (for instance, running the tests one last time to ensure they're in good shape).
    1. It's important to note that there is no relationship between the microdata and the content of the document where the microdata is marked up.

      Wait, really? That's unfortunate. It seems plainly useful to be able in e.g. the datetime example to correlate the text content of the element with the datetime property with the datetime value.

  23. May 2022
  24. Apr 2022
    1. I'm concerned that supporting certain parts of the svelte javascript semantics in module scripts—that have so far been restricted to the instance script—could lead users to believe that everything is supported. Supporting store shorthand syntax but not reactive assignments and declarations could be confusing.

      could lead users to believe ... - could lead users to believe that everything is supported.

  25. Mar 2022
  26. Jan 2022
    1. Code that is per-component instance should go into a second <script> tag.

      But this seems to conflict with https://hyp.is/NO4vMmzVEeylBfOiPbtB2w/kit.svelte.dev/docs

      The load function is reactive, and will re-run when its parameters change, but only if they are used in the function.

      which seems to imply that load is not just run once for the component statically, but rather, since it can be reactive to:

      url, params, fetch, session and stuff

      may be sufficiently like a per-instance callback, that it could be used instead of onMount?

  27. Nov 2021
  28. Oct 2021
  29. www.digitalhermeneutics.com www.digitalhermeneutics.com
    1. The hermeneutic claim that ourknowledge is always relative to a certain context and personal viewpointwould only be relativism if we actually were isolated selves, unformed byhistory or language.

      Does the author mean that the major difference btw hermeneutics and relativism lies in whether or not humans are believed to engaged and influenced by history or language?

  30. Sep 2021
    1. Therefore, Firefox already contains the code to look in the hosts file, but it does things in the wrong order: 1. Look up the URL in the DNS server if not found: 2. Send the URL to the default search engine as a search term if not found: 3. Look in the hosts file

      incorrect behavior

    1. Cut a dado groove with a 3/4” diameter router bit and you’ll almost certainly have a too-loose joint when you try to plug some 3/4” plywood in place. Under the guise of metrification, sheet material thicknesses have all shrank enough to cause problems with joinery if you rely on the old, Imperial thickness designations. And besides, material thickness varies enough from sheet to sheet that it can make a difference when it comes to prominent joinery. This is even true in the USA that still uses Imperial more or less exclusively. Sheet goods remain thinner than their name specifies.
  31. Aug 2021
  32. Jun 2021
    1. In the context of git, the word "master" is not used in the same way as "master/slave". I've never known about branches referred to as "slaves" or anything similar. On existing projects, consider the global effort to change from origin/master to origin/main. The cost of being different than git convention and every book, tutorial, and blog post. Is the cost of change and being different worth it? PS. My 3 projects were using your lib and got broken thanks to the renaming. PS. PS. I'm glad I never got a master's degree in college!
  33. May 2021
    1. The self-signed certificate which represents the DST Root CA X3 keypair is expiring. But browser and OS root stores don’t contain certificates per se, they contain “trust anchors”, and the standards for verifying certificates allow implementations to choose whether or not to use fields on trust anchors. Android has intentionally chosen not to use the notAfter field of trust anchors. Just as our ISRG Root X1 hasn’t been added to older Android trust stores, DST Root CA X3 hasn’t been removed. So it can issue a cross-sign whose validity extends beyond the expiration of its own self-signed certificate without any issues.

      innovative solution

  34. Apr 2021
    1. In many computing contexts, "TTY" has become the name for any text terminal, such as an external console device, a user dialing into the system on a modem on a serial port device, a printing or graphical computer terminal on a computer's serial port or the RS-232 port on a USB-to-RS-232 converter attached to a computer's USB port, or even a terminal emulator application in the window system using a pseudoterminal device.

      It's still confusing, but this at least helps/tries to clarify.

    1. https://boardgamegeek.com/boardgame/183284/factory-funner/versions

      And now there are two versions with the nickname "Second edition": 2018 https://boardgamegeek.com/boardgameversion/404596/second-edition 2021 https://boardgamegeek.com/boardgameversion/556765/second-edition

      and a 3rd edition published prior to the current/new 2nd edition: 2019 https://boardgamegeek.com/boardgameversion/486693/third-edition

      Confusing all around.

      But I think the bottom line is that the 2021 version is in fact the same game and the newest rules tweaks:

      1. Added a sixth player
      2. Official variant to play without the quick grab element.
    1. A modified timestamp signifies the last time the contents of a file were modified. A program or process either edited or manipulated the file. “Modified” means something inside the file was amended or deleted, or new data was added. Changed timestamps aren’t referring to changes made to the contents of a file. Rather, it’s the time at which the metadata related to the file was changed. File permission changes, for example, will update the changed timestamp.

      They shouldn't use synonyms for this (modified = changed).

      It would be clearer if the word that differed between the terms indicated what changed:

      • "content modified" time (cctime)?
      • "meta modified" time (cmtime)?
  35. Mar 2021
    1. Not to be confused with tree (graph theory), a specific type of mathematical object.

      Confusing: https://en.wikipedia.org/wiki/Tree_(data_structure) says

      Not to be confused with tree (graph theory) "Tree (graph theory)"), a specific type of mathematical object. but https://en.wikipedia.org/wiki/Tree_(graph_theory) redirects to https://en.wikipedia.org/wiki/Tree_structure and https://en.wikipedia.org/wiki/Tree_structure is in category Trees (data structures) So is one a subtype/hyponym of the other ... or what?? How are they related? Skimming the articles a bit, esp. the first paragraph which clearly states as much ( :) ), I believe the answer is: a tree (data structure) is an implementation (in a programming language) of / or a "type that simulates" a hierarchical tree structure. a tree (data structure) is the computer science analogue/dual to tree structure in mathematics

    1. For instance English has a domain ‘Rain’, which includes words such as rain, drizzle, downpour, raindrop, puddle.

      "rain" seems more like a semantic field — a group of very related or nearly synonymous words — than a semantic field.

      Esp. when you consider the later example of basketball (https://hyp.is/ynKbXI1BEeuEheME3sLYrQ/en.wikipedia.org/wiki/Semantic_domain) and coffee shop, which are more like the sense of "field" that means (academic/scientific/etc.) discipline.

    1. Basic semantic properties include being meaningful or meaningless – for example, whether a given word is part of a language's lexicon with a generally understood meaning

      The "for example" being where it is, is confusing, and I believe should be left out.

      I think this would have been better written as:

      Basic semantic properties include, for example, being meaningful or meaningless (that is, whether a given word is part of a language's lexicon with a generally understood meaning); polysemy, ..

    1. If you want to compile youself you can pass the --with-features=huge to the configure script. Note, however, this does not enable the different language bindings because those are mostly optional and also the various GUIs need to enabled specifically, because you can have only one gui.

      This explains why the standard vim package on ubuntu doesn't have GUI support (I was going to say because it wouldn't know which GUI you needed, but I think it would based on the Ubuntu variant: GNOME, KDE, etc.) (maybe because it wouldn't know whether you wanted GUI support at all)

      I was going to say because it wouldn't know which GUI you needed, but I think it would based on the Ubuntu variant: GNOME, KDE, etc.

      found answer to that: https://hyp.is/NyJRxIgqEeuNmWuaScborw/askubuntu.com/questions/345593/how-to-build-vim-with-gui-option-from-sources

      so you have to install a different package with GUI support, like vim-gtk or vim-athena

    1. If I do gnome-open foo.desktop it simply opens foo.desktop as a text file. If I make it executable and then run it in bash it simply fails (which is expected, it's clearly not bash script). EDIT: Doing exec /fullpath/foo.desktop gives me a Permission denied message, even if I change ownership to myself. If I make executable and do the same command, the terminal tab I'm using simply closes (I'm guessing it crashes). Finally, if I do sudo exec /fullpath/foo.desktop, I get an error reporting sudo: exec: command not found.
    1. The question, 'What is library and information science?' does not elicit responses of the same internal conceptual coherence as similar inquiries as to the nature of other fields, e.g., 'What is chemistry?', 'What is economics?', 'What is medicine?' Each of those fields, though broad in scope, has clear ties to basic concerns of their field. [...] Neither LIS theory nor practice is perceived to be monolithic nor unified by a common literature or set of professional skills. Occasionally, LIS scholars (many of whom do not self-identify as members of an interreading LIS community, or prefer names other than LIS), attempt, but are unable, to find core concepts in common
  36. Feb 2021
    1. Defaults names are given to steps without the :id options, but these might be awkward sometimes.

      Why would those default names ever be awkward?

      If you the default name is whatever comes after step:

      step :default_name
      

      then why can't you just change that name to whatever you want?

      To answer my own question: I think you can do that, as long as the name is the 1st argument to step. But below I noticed an example where a Subprocess was the 1st argument instead, and so it needs a name in this case:

      step Subprocess(DeleteAssets), id: :delete_assets
      

      Why are they inconsistent about calling it name or id? Which one is it? I guess it's an id since that's what the key is called, and since there's an Id() helper to reference a task by its id.

    1. Another thing I don’t like is the name of the config file manifest.js. Internally Sprockets has the concept of a manifest already Sprockets::Manifest, but the two aren’t directly coupled. We also already have a “manifest” JSON file that gets generated in public/assets/ and has manifest in the name .Sprockets-manifest-140998229eec5a9a5802b31d0ef6ed25.json. I know one is a JS file and one is a JSON file, but it’s a bit confusing to talk about.

      When I first heard of app/assets/config/manifest.js, I was a bit confused too, and assumed/wondered if it was related to the manifest it generates under public.

    1. There are two definitions of ‘Enterprise’ 1 - Enterprise as a business. In fact, in French, ‘enterprise’ literally means ‘business’ 2- Enterprise as a large business. This is the most common use of the term in business, differentiating between small, medium, and large businesses. In this context, there is no official rule, however it is generally accepted for enterprise to mean companies with over 1,000 employees and/or $1B in revenue
  37. Jan 2021
    1. You can style a link to look button-like Perhaps some of the confusion between links and buttons is stuff like this: <img loading="lazy" src="https://i1.wp.com/css-tricks.com/wp-content/uploads/2020/01/Screen-Shot-2020-01-08-at-8.55.49-PM.png?resize=264%2C142&#038;ssl=1" alt="" class="wp-image-301534" width="264" height="142" data-recalc-dims="1" />Very cool “button” style from Katherine Kato. That certainly looks like a button! Everyone would call that a button. Even a design system would likely call that a button and perhaps have a class like .button { }. But! A thing you can click that says “Learn More” is very much a link, not a button. That’s completely fine, it’s just yet another reminder to use the semantically and functionally correct element.
  38. Dec 2020
  39. Nov 2020
    1. However, those descriptors gave a bit too much flexibility/dynamism to the class shape in order to be efficiently optimizable.

      I think this:

      However, those descriptors gave a bit too much flexibility/dynamism to the class shape in order to be efficiently optimizable.

      means:

      However, because those descriptors were gave so much too much flexibility/dynamism to the class shape, it could not be be efficiently optimized.

      rather than:

      In order to be efficiently optimizable, those descriptors gave much flexibility/dynamism to the class shape.

      In other words that flexibility/dynamism hindered optimization; it wasn't for the purpose of optimization (as "in order to be" could be interpreted as).

      The "too much" wording also contributed to the confusion for me.

      But maybe just dropping "in order" would have been enough for me:

      However, those descriptors gave a bit too much flexibility/dynamism to the class shape to be efficiently optimizable. or However, those descriptors gave a bit too much flexibility/dynamism to the class shape for them to be efficiently optimizable.

  40. Oct 2020
    1. In the software industry we use "dependency" to refer to the relationship between two objects. We say "looking for dependents" for relationships to dependent things and "looking for dependencies" for relationships to prerequisite things, so it gets that connotation, but the literal meaning is the relationship itself, not the object. Finding a better word is exactly the point of the question
    1. There have been a number of issues opened about this, and a good deal of confusion. The docs indicate that if you mutate an object without there being a = involved, this doesn't trigger an update. But there's no mention that only assignments to certain variables trigger updates.
  41. Sep 2020
    1. This is likely not desired for ES module dependencies: Here require should usually return the namespace to be compatible with how bundled modules are handled. If you set esmExternals to true, this plugins assumes that all external dependencies are ES modules and will adhere to the requireReturnsDefault option. If that option is not set, they will be rendered as namespace imports.
    1. Basically, the idea is that a train tried to start with the caboose brakes stuck on. After releasing the caboose, the train still could not start. The problem was that when the train attempted to start with the caboose brake on, it stretched all the inter-car couplings so that the whole train was just like one big car. At this point, the friction from the engine train wheels was not enough to get the whole thing going. Instead, you need to just get one car moving at a time - this is why there is space between the couplings.
    1. The main reason using classes isn't a great solution is that it completely breaks encapsulation in a confusing way, the paren't shouldn't be dictating anything, the component itself should. The parent can pass things and the child can choose to use them or not but that is different: control is still in the hands of the component itself, not an arbitrary parent.
  42. Aug 2020
    1. The United Kingdom of Great Britain and Northern Ireland (UK), since 1922 comprises four countries: England, Scotland, and Wales (which collectively make up Great Britain) and Northern Ireland[1][2] (which is variously described as a country, province, or region).

      A country that contains 4 countries. It's almost a paradox. It never ceases to amuse me.

  43. Jul 2020
  44. Jun 2020
    1. In addition, if the option, An administrator must always approve the comment, is set in Administration > Settings > Discussion, this e-mail address will receive notification that the comment is being held for moderation. Please note this is different than the address you supplied for the admin user account; the admin account e-mail address is sent an e-mail only when someone submits a comment to a post by admin.

      They're trying to make a distinction between "administrator" address and "admin" (short for administrator) account. Hmm. Maybe they should have called them different words. Anyway, this could be made less confusing.

    1. transaction calls can be nested. By default, this makes all database statements in the nested transaction block become part of the parent transaction. For example, the following behavior may be surprising: User.transaction do User.create(username: 'Kotori') User.transaction do User.create(username: 'Nemu') raise ActiveRecord::Rollback end end creates both “Kotori” and “Nemu”. Reason is the ActiveRecord::Rollback exception in the nested block does not issue a ROLLBACK. Since these exceptions are captured in transaction blocks, the parent block does not see it and the real transaction is committed.

      How is this okay??

      When would it ever be the desired/intended behavior for a raise ActiveRecord::Rollback to have absolutely no effect? What good is the transaction then??

      What happened to the principle of least surprise?

      Is there any reason we shouldn't just always use requires_new: true?

      If, like they say, the inner transaction "become[s] part of the parent transaction", then if anything, it should roll back the parent transaction too — not roll back nothing.

  45. May 2020
    1. These options have almost deceptively similar wordings, with only subtle difference that is too hard to spot at a glance (takes detailed comparison, which is fatiguing for a user):

      1. can use your browser’s information for providing advertising services for this website and for their own purposes.
      2. cannot use your browser’s information for purposes other than providing advertising services for this website.

      If you rewrite them to use consistent, easy-to-compare wording, then you can see the difference a little easier:

      1. can use your browser’s information for providing advertising services for this website and for their own purposes.
      2. can use your browser’s information for providing advertising services for this website <del>and for their own purposes</del>.

      Standard Advertising Settings

      This means our ad partners can use your browser’s information for providing advertising services for this website and for their own purposes.

      Do Not Share My Information other than for ads on this website

      This means that our ad partners cannot use your browser’s information for purposes other than providing advertising services for this website.

    1. Supports session-less consent policies which will become persistent once the user signs in or signs up

      Why does it need to be session-less? You can have sessions (using technical/necessary cookies) without the user needing to be signed in.

    1. P ⇒ Q

      It may be confusing for a newcomer (or on first read-through) that the variable/predicate/condition that represents the "necessary condition" in this statement P ⇒ Q is the Q.

      One might be forgiven for incorrectly assuming that the P represents the necessary condition. That is because most of the time when one states a statement/relation/implication/etc. about a subject, the sentence/statement begins with the subject. For example, if we're explaining about a "less than" relationship, and we give x < y as an example, one would correctly assume that x is the subject here and x is the thing that is less than.

      So it may be a bit surprising to a newcomer (on first read-through) that the subject of this section — the necessary condition — is represented by the Q and not be the P.

      (Made even more confusing by the fact that the very same implication P ⇒ Q is also used to express the opposite sufficiency relationship in the very next section. I would argue that Q ⇒ P should have been used instead in exactly one of these sections to make it clearer that the subject is different and/or the relation is different, depending how you look at it.)

      Is there any reason we couldn't rewrite this to express the logical relation between P and Q with the subject first? If we let P be the subject (that is, "necessary condition" that we're illustrating/explaining), could we not rewrite this as P ⇐ Q?

      In fact, that is exactly how this relation was expressed below, in https://en.wikipedia.org/wiki/Necessity_and_sufficiency#Simultaneous_necessity_and_sufficiency !:

      that P is necessary for Q, P ⇐ Q, and that P is sufficient for Q, P ⇒ Q

    2. The logical relation is, as before, expressed as "if P, then Q" or "P ⇒ Q"

      It is confusing on first read-through that the exact same logical relation between P and Q is stated for both necessity and sufficiency. Since they are dual of each other, it seems like, in order to allow the same P and Q to be used in both examples (in other words, in order to allow their variable scope to be the entire article instead of just the "Necessity" and "Sufficiency" section's local scope), that P and Q should be reversed in this section.

    1. If you’re a controller based outside of the EU, you’re transferring personal data outside of the EU each time you collect data of users based within the EU. Please make sure you do so according to one of the legal bases for transfer.

      Here they equate collection of personal data with transfer of personal data. But this is not very intuitive: I usually think of collection of data and transfer of data as rather different activities. It would be if we collected the data on a server in EU and then transferred all that data (via some internal process) to a server in US.

      But I guess when you collect the data over the Internet from a user in a different country, the data is technically being transferred directly to your server in the US. But who is doing the transfer? I would argue that it is not me who is transferring it; it is the user who transmitted/sent the data to my app. I'm collecting it from them, but not transferring it. Collecting seems like more of a passive activity, while transfer seems like a more active activity (maybe not if it's all automated).

      So if these terms are equivalent, then they should replace all instances of "transfer" with "collect". That would make it much clearer and harder to mistakenly assume this doesn't apply to oneself. Or if there is a nuanced difference between the two activities, then the differences should be explained, such as examples of when collection may occur without transfer occurring.

    1. Records must be kept in writing. Most organisations will benefit from maintaining their records electronically.

      Isn't "kept in writing" different from "maintaining their records electronically"? How can digital data be kept in writing? Is that meant figuratively then? Why would they use figurative language here? What do they mean by "kept in writing"??

  46. Apr 2020
    1. The common law—so named because it was "common" to all the king's courts across England—originated in the practices of the courts of the English kings in the centuries following the Norman Conquest in 1066.[10] The British Empire spread the English legal system to its colonies, many of which retain the common law system today. These "common law systems" are legal systems that give great weight to judicial precedent, and to the style of reasoning inherited from the English legal system.
    2. the body of law derived from judicial decisions of courts and similar tribunals.[1][2][3][4][5][6] The defining characteristic of “common law” is that it arises as precedent.

      The way "common law" sounds and is used, I would have thought it meant law that is common (in common between) many countries, laws that can be found on the books in all of these many places. (Kind of like commonwealth.)

      But, although it is common to many countries, that is not its defining characteristic. Its defining characteristic is actually something quite different.

      Since the term is so far removed from what it actually means, I would even go so far as to say it is a mild euphemism.

      Much better names for this exist: judicial precedent or judge-made law are the clearest options. But even "case law" is a better term.

    1. This way, personal data is more effectively protected allowing individuals to focus on the risk involved in granting authorization for the use of their personal data and to take appropriate decisions based on the risk assessment. Consequently, the burden and confusion generated by systematic consent forms is constrained.

      Speaking of confusing, this paragraph is confusing and unclear.

      I think what they're basically saying is, don't ask for consent for every single little thing; only ask for consent when there is a real risk involved, so that people don't get desensitized to you asking for consent for every little thing, even things that they probably don't care about.

      Key word:

      systematic consents

    1. it isn't actually -prune itself that causes this, by the way. The issue is that the or operator "short-circuits", and or has lower precedence than and. The end result is that if a file called .snapshot is encountered it will match the first -name, -prune will then do nothing (but return true), and then the or returns true since its left-argument was true. The action (eg: -print) is part of its second argument, so it never has a chance to execute.
    1. Did you expect the temp directory to get printed? In the last example, we saw the directories ./temp and ./C/temp got printed, but not now. This is the effect of the -print option. By default, the find command prints all the files matching the criteria. However, once the -print option is specified, it will print files only on explicit print instructions. In this find command, -print is associated in the other side of the OR condition, and hence nothing will get printed from the 1st part of the condition.
  47. Mar 2020
    1. Such a corporate structure helps contain the otherwise massive potential fines which are derived from the company's worldwide revenue.  However, the worldwide part would in practice be limited to the EU as that is the only market such a subsidiary would operate in.

      How does this structure helps contain the fines which are derived from the company's worldwide revenue?

      If fines are based on worldwide revenue anyway, then what good does having a EU subsidiary even do in that respect? None, it seems.

      This seems to even confirm that, but it is unclear/confusing how this is worded:

      However, the worldwide part would in practice be limited to the EU as that is the only market such a subsidiary would operate in.

    1. the flow page checkbox (right above the code snippet) turns off prior consent server side for the entire site, whilethe prior blocking toggle within the configurator turns off prior consent only on the pages where the Cookie Solution snippet contains "priorConsent":false. This is useful for testing purposes, or if, for example, you’re working on your site/app locally and don’t want to affect your cookie solution analytics or to have your pageviews counted. Please note that if the prior blocking setting has been disabled server side (see above), this (local) configurator-based parameter will be ineffective.

      They could have made this less confusing:

      • Don't even show / allow checking the toggle in the configurator if it is disabled server side.
      • Give them different/better names in the UI that makes their differences more apparent: like "Enabled for your account (required if you want to use this feature at all, even on a page-by-page basis)" and "Enabled for pages containing this code snippet".

      I don't even really see the point of turning it off server side. Just disable it in the code snippet and that should be enough.

  48. Feb 2020
    1. create a new Slack app

      When I saw this in the "Slack API changelog: February 2019" newsletter episode:

      New Slack apps are the default

      New Slack apps, with subtler permissions and more intuitive behavior, are now the default when you create an app. Get started by building or migrating.

      I didn't really understand what they meant. I assumed they were talking about their Slack app -- the Slack app.

      (Of course if I had read the intro to the newsletter for some context, I probably would have understood. The intro said:

      Welcome to the Slack changelog newsletter. You’re receiving this because you built a Slack app, and we want to keep you informed about changes to the Slack APIs. … )

      How does one distinguish between the Slack app (created by Slack) and a Slack app (created by non-Slack)?

  49. Jan 2020
    1. It is difficult to recall a commit that is not pointed at by any ref. The further the user goes from a ref, the harder it will be for them to construct the meaning of a commit. But the further back they go, the less likely it is that someone will have changed history since they last looked5.

      ??

  50. Dec 2019
    1. It's confusing whether one should put things in gemspec development_dependencies or in Gemfile or in both.

      Duplication is bad since the lists could get out of sync. And the gemspec's development_dependencies should be a complete list. Therefore, my opinion is that that should be the canonical list and therefore the only list.

      Actually, what good is gemspec's development_dependencies? A contributor should clone the repo, run bundle, and get the dev dependencies that way. Therefore development_dependencies is unneeded and you should only list them in Gemfile.

      It is simpler to just use Gemfile, since it is a more familiar format. You can copy and paste content into it. For example, if you extract a gem out of an app, you may wan to copy/move some gems from app's Gemfile into new gem's Gemfile. It also generates a Gemfile.lock (which you shouldn't add to git).

    1. Arguably, the rails-team's choice of raising ArgumentError instead of validation error is correct in the sense that we have full control over what options a user can select from a radio buttons group, or can select over a select field, so if a programmer happens to add a new radio button that has a typo for its value, then it is good to raise an error as it is an application error, and not a user error. However, for APIs, this will not work because we do not have any control anymore on what values get sent to the server.
  51. Nov 2019
    1. I'm considering this, although I'm still leaning towards not including it and I'd love to just get rid of first if it wouldn't break so many peoples tests. Newcomers to Capybara don't understand (or aren't willing to learn) the issues that all/first (and last if added) have and massively overuse them. Yes the fact that all and first now wait by default will prevent some of the new user issues/confusion, but it won't fix the non-reloadability issue.
  52. Oct 2019
    1. I don't have anything to add other than "extract_css" in webpacker.yml has been a source of confusion for me as well. When it is "extract_css: false" in development and production, a stylesheet IS included in the document head (shouldn't this be "extract_css: true"?). And when I use "extract_css: true", styles are not included in the document.
  53. Aug 2019
    1. especially funders, that, while sometimes present in research, are especially salient for program evaluation given its origins.

      This last half of the sentence tripped me up a bit. Perhaps consider rewording, or restructuring into multiple sentences, so that the author's main point is more clearly articulated.

    1. As you might have guessed, this approach likely is studying a topic with the most existing research, when compared to the other two.[4]

      Though I think I do understand the author's intended point here, I think the wording is perhaps a bit tricky and potentially confusing for some readers. To make links explicit and content easier to understand, consider revising to something like:

      "As you might have guessed, this approach is more likely to be used if you're studying a topic which already has some existing research in the literature base."

      (I think this section will be clearer, and can stand on its own, without the last "...when compared to the other two" part of the sentence.)

    1. researcher’s focus’s

      I do understand (I think) what the author was saying here. The sheer number of apostrophes in the parenthetical part of this sentence, however, threw me off a bit. Perhaps reword for clarity/simplicity.

    2. perceivgeneralizable findingsed

      Not sure how the linked term "generalizable findings" fits into this particular sentence - a typo, perhaps? If this term was intended to be included in this paragraph, we may want to add an extra/separate sentence to clarify and contextualize.