1,133 Matching Annotations
  1. Mar 2022
  2. Feb 2022
    1. The remaining problem should be how to declare Ruby-define methods to be 'non-block taking'. Under the current language spec, absence of '& argument' may or may not mean the method would take a block.
  3. Jan 2022
    1. A Mental Squeeze Point is when your unsorted knowledge becomes so messy it overwhelms and discourages you. Either you are equipped with frameworks to overcome the squeeze point, or you are discouraged and possibly abandon your project.

      Cross reference: https://hypothes.is/a/BuMcAnr4EeyxO-PwNBfPrg (Dan Allosso's analogy about the Kuiper Belt)

    1. Maybe once the core onError lifecycle is implemented (if maintainers decide to go that way) everyone will discover you're right and an implementation will be built in. I think that's probably what's going to happen. But until real life has proved it, it's usually best to go for the smallest most broadly applicable solution. I can definitely imagine <svelte:error> eventually being a thing, but it's a pretty dramatic change compared to an added importable function.
    2. I think the issue is that it's not totally perfect. It doesn't define what should happen in parent components, it's not as flexible as onError and it doesn't allow you (for instance) to nest a svelte:head inside, or decide what to do with the rest of the rendering. What do you do with <div>My component</div> in your example? What about changing the <title>? I assume you can inspect the error...does <svelte:error> allow specifying which error types to expect?
    1. it depends on the application but generally, if an authenticated user doesn't have sufficient rights on a resource, you might want to provide a way to change credentials or send a 401.

      A 403 doesn't tell the client / user agent what the next step is or provide a way to change credentials.

      So maybe a 302 redirect is the best answer after all? Even though it sadly lacks the nice semantic distinction that 401/403 provide...

    1. I find it disgusting and degrading that any parent would let their minor child run aroun in shorts and a bra anywhere

      The speaker of this text uses a negative tone (specifically a disgusted tone) when talking about minor children "running around in shorts and a bra". However, bra's are often tied to the female anatomy, however the speaker uses "child" when speaking about the intended argument. This could be because the speaker only has an issue with people who wear bras without a shirt while exercising but doesn't with people who society deems unrequired to wear bras.

    Tags

    Annotators

    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?

  4. Nov 2021
    1. i think the focus was very much on energy supply and to a limited extent on things like um yeah technologies and like vehicle 01:00:07 technologies for example but um much much less in terms of getting people to particularly in developed countries to use less energy and to change diet and to travel less and fly less and all these these things and i think part of 01:00:19 that and it is also reflected in the fact that it was fairly much absent in the uk's net zero strategy is that it is seen as being politically difficult that it might be a you know it might mean that they that politicians lose votes that 01:00:33 it's just too difficult to get people to change their behavior that it's threatening that it might mean lower standards of living um in developed countries etc so i think kind of it's still it's still seen as something and that that was quite explicit i think in 01:00:45 the forward to the uk strategy um so i think in terms of how we move beyond that that's that's difficult but i think it is about reframing behavior change and demand demand management in 01:00:58 much more positive terms to say this isn't a threat there are actually opportunities there are opportunities to improve people's health and well-being to create green jobs to reskill people in new sectors and 01:01:09 and so on and it is not about you know reducing uh quality of life or well-being it's not about people losing jobs etc so this is i think there's a job here to kind of reframe it in terms of those those opportunities and those 01:01:22 co-benefits so that would be my my initial thought

      Reframing loss as gain is one strategy worth exploring for behavior change. Also explore social tipping points of complex contagion.

    1. Social convention, which has for so long worked against us, can if flipped become our greatest source of power, normalising what now seems radical and weird. If we can simultaneously trigger a cascading regime shift in both technology and politics, we might stand a chance. It sounds like a wild hope. But we have no choice. Our survival depends on raising the scale of civil disobedience until we build the greatest mass movement in history, mobilising the 25% who can flip the system.

      This is the core philosophy behind Stop Reset Go, but NOT NECESSARILY just in the direction of civil disobedience. To invest only in that is to put all our eggs in one basket that top down actors will be pressured beyond a certain threshold. It may happen, it may not, or it may just take too long. We must diversify and also invest in systematized bottom-up efforts.

    2. Another paper explored the possibility that the Fridays for Future climate protests could trigger this kind of domino dynamics. It showed how, in 2019, Greta Thunberg’s school strike snowballed into a movement that led to unprecedented electoral results for Green parties in several European nations. Survey data revealed a sharp change of attitudes, as people began to prioritise the environmental crisis. Fridays for Future came close, the researchers suggest, to pushing the European political system into a “critical state”. It was interrupted by the pandemic, and the tipping has not yet happened. But witnessing the power, the organisation and the fury of the movements gathered in Glasgow, I suspect the momentum is building again.

      The space is ripe for interventions that can facilitate social tipping points.

    1. A final cluster gathers lenses that explore phenomena that are arguably more elastic and with the potential to both indirectly maintain and explicitly reject and reshape existing norms. Many of the topics addressed here can be appropriately characterized as bottom-up, with strong and highly diverse cultural foundations. Although they are influenced by global and regional social norms, the expert framing of institutions, and the constraints of physical infrastructure (from housing to transport networks), they are also domains of experimentation, new norms, and cultural change. Building on this potential for either resisting or catalyzing change, the caricature chosen here is one of avian metaphor and myth: the Ostrich and Phoenix cluster. Ostrich-like behavior—keeping heads comfortably hidden in the sand—is evident in different ways across the lenses of inequity (Section 5.1), high-carbon lifestyles (Section 5.2), and social imaginaries (Section 5.3), which make up this cluster. Yet, these lenses also point to the power of ideas, to how people can thrive beyond dominant norms, and to the possibility of rapid cultural change in societies—all forms of transformation reminiscent of the mythological phoenix born from the ashes of its predecessor. It is conceivable that this cluster could begin to redefine the boundaries of analysis that inform the Enabler cluster, which in turn has the potential to erode the legitimacy of the Davos cluster. The very early signs of such disruption are evident in some of the following sections and are subsequently elaborated upon in the latter part of the discussion.

      The bottom-up nature of this cluster makes it the focus area for civil society movements, human inner transformation (HIT) approaches and cultural methodologies.

      Changing the mindset or paradigm from which the system arises is the most powerful place to intervene in a system as Donella Meadows pointed out decades ago in her research on system leverage points: https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/

      The sleeping giant of billions of potential change actors remains dormant. How do we awaken them and mobilize them. If we can do this, it can constitute the emergence of a third unidentified actor in system change.

      The Stop Reset Go (SRG) initiative is focused on this thematic lens, bottom-up, rapid whole system change, with Deep Humanity (DH) as the open-source praxis to address the needed shift in worldview advocated by Meadows. One of the Deep Humanity programs is based on addressing the psychological deficits of the wealthy, and transforming them into heroes for the transition, by redirecting their WEALTH-to-WELLth.

      There are a number of strategic demographics that can be targeted in methodical evidence-based ways. Each of these is a leverage point and can bring about social tipping points.

      A number of 2021 reports characterize the outsized impact of the top 1% and top 10% of humanity. Unless their luxury, high ecological footprint behavior is reeled in, humanity won't stand a chance. Annotation of Oxfam report: https://hyp.is/go?url=https%3A%2F%2Foxfamilibrary.openrepository.com%2Fbitstream%2Fhandle%2F10546%2F621305%2Fbn-carbon-inequality-2030-051121-en.pdf&group=__world__ Annotation of Hot or Cool report: https://hyp.is/go?url=https%3A%2F%2Fhotorcool.org%2Fhc-posts%2Frelease-governments-in-g20-countries-must-enable-1-5-aligned-lifestyles%2F&group=__world__

  5. Oct 2021
  6. Sep 2021
    1. Conversely, the more dynamically typed the language is, the less I am using an IDE and the more I am using a text editor. Of course, my productivity plummets at that point. Refactoring becomes more difficult and more (completely) reliant on unit tests to ensure they are done properly.
  7. Aug 2021
    1. Also note thet width: 100% is relative to it's first parent with a layout. So if you have an element with width:100% inside another element that has a specific width, the child element will only take up the total width of that parent.
    1. The TypeScript team has made it clear. They do not follow semver. "minor" (X.X) releases can contain breaking changes. . The fact that someone has made a bad policy clear, does not mean that the policy is therefore good. Major releases (X) have very little meaning. This negates the usefulness of using such versioning in the first place.
    1. which seems to resolve the issue for me and makes no casts, ensuring that Typescript can keep doing its good job of widening as much as necessary and narrowing as much as possible without me having to claim I know better than the compiler. I'm posting it here since it doesn't seem to have been mentioned anywhere.

      makes no casts, ensuring that Typescript can keep doing its good job of widening as much as necessary and narrowing as much as possible without me having to claim I know better than the compiler.

    1. In the vast majority of cases when I'm using prettier-ignore I'm only really looking to prevent it from breaking my code into new lines, whilst keeping its other transformations such as switching quotes and adding space between brackets. When ignoring single lines, fixing these formatting problems by hand is very manageable. With the ability to have Prettier ignore entire blocks of code I think the ability to specify what you want it to ignore is essential.
  8. Jul 2021
  9. Jun 2021
    1. "Although in the United States it is common to use the term multiculturalism to refer to both liberal forms of multiculturalism and to describe critical multicultural pedagogies, in Canada, Great Britain, Australia, and other areas,anti-racism refers to those enactments of multiculturalism grounded in critical theory and pedagogy. The term anti-racism makes a greater distinction, in my opinion, between the liberal and critical paradigms of multiculturalism, and is one of the reasons I find the anti-racism literature useful for analyzing multiculturalism in music education."

    1. I wouldn't consider it switching behavior. Ultimately it's including a module -- either a manually defined and referenced one from the user, or a RSpec::Core::SharedExampleGroupModule created for the user when they defined the shared example group and referenced via the group name.
    1. I've seen (and fixed) Ruby code that needed to be refactored for the client objects to use the accessor rather than the underlying mechanism, even though instance variables aren't directly visible. The underlying mechanism isn't always an instance variable - it can be delegations to or manipulations of a class you're hiding behind a facade, or a session store with a particular format, or all kinds. And it can change. 'Self-encapsulation' can help if you need to swap a technology, a library, an object specification, etc.
    2. a principle I use is: If you have an accessor, use the accessor rather than the raw variable or mechanism it's hiding. The raw variable is the implementation, the accessor is the interface. Should I ignore the interface because I'm internal to the instance? I wouldn't if it was an attr_accessor.
    1. Anne: And you think that when she told you that getting a job was not an option, you think that broke you?Mike: Yeah. That really hurt like a lot, a lot. Oh man, I'm getting emotional, now because that sucks when you hear that stuff.

      Time in the US, Immigration status, Lost opportunities; Time in the US - Feelings - Despair - Legal Status

  10. May 2021
    1. Linking directly to someone’s blog comment is very useful. Even if a blog doesn’t have an active link for each comment, it’s pretty easy to use developer tools to find the comment’s id and link to it. I’ve done this many times on Smashing Magazine (they don’t have live links on each comment). If there was no way to link to an individual blog comment, this would be a great hindrance to linking on the web. It would not be enough to link to the “#comments” section and then hope for the best. So CMSs like WordPress do the right thing by dynamically adding a unique identifier to each comment.
    2. Yes, the content creator should have the ability to decide how a page is generally divided, if they choose to do so. But the end user should not be restricted from linking to content fragments just because a developer couldn’t be bothered to add id attributes to every element on the page. And that’s besides the fact that it would be a waste of time for a developer to do that or to have to build a CMS that does it automatically.
    3. The simple problem that I see with fragment identifiers is that their existence and functionality relies completely on the developer rather than the browser. Yes, the browser needs to read and interpret the identifier and identify the matching fragment. But if the developer doesn’t include any id attributes in the HTML of the page, then there will be no identifiable fragments. Do you see why this is a problem? Whether the developer has coded identifiers into the HTML has nothing to do with whether or not the page actually has fragments. Virtually every web page has fragments. In fact, sectioning content as defined in the HTML5 spec implies as much. Every element on the page that can contain content can theoretically be categorized as a “fragment”.

      at the mercy of author

  11. Apr 2021
    1. From a practical point of view it's highly desirable to specify them to prevent page reflows as mentioned above. However those suggesting it should be in the html because of this are missing the fact browsers use css when building the page initially. If they didn't the page would have to be redrawn for floated elements, specified padding, margins etc.
    2. Neither question nor answer appears to understand the notion of semantic HTML. Height and width are presentational attributes regardless of where you put them. For semantics we establish what the image means to content in the alt tag. I don't remember why it was so important to width/height in the HTML but I suspect it was in case you hit browsers without CSS rendering. It's not a semantics issue. If anything it thwarts separation of concerns to a degree.

      claim: that the OP's question and this answer are incorrect

      Could we say that this answer (that this comment replies to) missed the point?

      I actually believed and thought this answer was spot on ... until I read this comment, and then I reversed my opinion.

    1. Yes, it shares the name and the look of those previous games, but it lacks the all-important creative heart of its predecessors, and ends up being a by-the-numbers affair that goes through the motions in a shallow attempt to turn Scribblenauts' unique premise into a multiplayer party game.
    1. “Who cares? Let’s just go with the style-guide” — to which my response is that caring about the details is in the heart of much of our doings. Yes, this is not a major issue; def self.method is not even a code smell. Actually, that whole debate is on the verge of being incidental. Yet the learning process and the gained knowledge involved in understanding each choice is alone worth the discussion. Furthermore, I believe that the class << self notation echoes a better, more stable understanding of Ruby and Object Orientation in Ruby. Lastly, remember that style-guides may change or be altered (carefully, though!).
  12. Mar 2021
    1. vim-athena doesn't depend on or use any version of GTK+. If you use sudo apt-get build-dep vim-athena, it probably will install GTK+ and GNOME related libraries, because the vim-athena binary package is built from the same source package as vim and other vim-providing packages. In any case, you shouldn't need to build from source, as the binaries provided by vim-athena are already built against Athena and not against GTK+ or other graphical toolkits.
    1. Generally, CSS selectors refer to markup or, in some cases, to element properties as set with scripting (client-side JavaScript), rather than user actions. For example, :empty matches element with empty content in markup; all input elements are unavoidably empty in this sense. The selector [value=""] tests whether the element has the value attribute in markup and has the empty string as its value. And :checked and :indeterminate are similar things. They are not affected by actual user input.
  13. Feb 2021
    1. Do you have collaborators who could have generated keys and sold them on their own? DIG's Steam keys and other stores' Steam keys must have some source, after all. Keys don't generate themselves, and only your accounts should be able to request them.This particular game was in Bunch Keys Indie Wizardry Bundle. I assume you had a proper contract for that. Maybe DIG or an intermediary bought 50-200 copies of it?
    2. It isn't stealing because you or an associate must have generated and given them the keys in some way or another?Ideally you would ask a DIG bundle buyer to show you their key for your game, so you can figure out what key request batch it came from, and then you can scratch your head and wonder who you gave those keys to and what journey they took afterwards.
    1. 17.3. Fixed point

      QUESTION: What is a fixed-point of a function?

      ANSWER: See this video) at least, and the Fixed-point (mathematics)) wikipedia article:

      In mathematics, a fixed point (sometimes shortened to fixpoint, also known as an invariant point) of a function is an element of the function's domain that is mapped to itself by the function. That is to say, c is a fixed point of the function f if f(c) = c. This means

      f(f(...f(c)...)) = f n(c) = c
      

      an important terminating consideration when recursively computing f. A set of fixed points is sometimes called a fixed set.

      For example, if f is defined on the real numbers by f(x)=x^{2}-3x+4,}, then 2 is a fixed point of f, because f(2) = 2.

      There is also the wiki article fixed-point combinator that actually plays a role here, but read through the articles in this order.

      Then dissect the Stackoverflow thread What is a Y combinator?, and pay attention to the comments! For example:

      According to Mike Vanier's description, your definition for Y is actually not a combinator because it's recursive. Under "Eliminating (most) explicit recursion (lazy version)" he has the lazy scheme equivalent of your C# code but explains in point 2: "It is not a combinator, because the Y in the body of the definition is a free variable which is only bound once the definition is complete..." I think the cool thing about Y-combinators is that they produce recursion by evaluating the fixed-point of a function. In this way, they don't need explicit recursion. – GrantJ Jul 18 '11 at 0:02

      (wut?)

      Other resources in no particular order:


      QUESTION: How the hell did they come up with the idea of using this with Nix and package management? (..and who? I remember a video saved somewhere, but maybe that was about overlays)


      QUESTION: ... and how does it work in this context?

      ANSWER: Well, not an answer yet, but this may be something in the right direction:

      http://blog.tpleyer.de/posts/2020-01-29-Nix-overlay-evaluation-example.html

    1. note that TRB source code modifications are not proprietary

      In other words, you can build on this software in your proprietary software but can't change the Trailblazer source unless you're willing to contribute it back.

      loophole: I wonder if this will actually just push people to move their code -- which at the core is/would be a direction modification to the source code - out to a separate module. That's so easy to do with Ruby, so this restriction hardly seems like it would have any effect on encouraging contributions.

    1. If any of the inputs are invalid, #execute won't be run.

      It does staged/pipelined execution/validation.

      If any of these stages has any errors, then no other stages will be executed:

      1. validations on the inputs of the interaction itself
      2. run execute, which may:
      3. may use compose, which will (IIUC) abort the entire execute/run early if any of them fail, even if there are later composed interactions still to be run
      4. may try to save inputs into models, which themselves may have validation errors, which (assuming we use errors.merge), will show up on the interaction.errors (but won't abort the rest of the execute)
    2. There are times where it is useful to know whether a value was passed to run or the result of a filter default. In particular, it is useful when nil is an acceptable value.

      Yes! An illustration in ruby:

      main > h = {key_with_nil_value: nil}
      => {:key_with_nil_value=>nil}
      
      main > h[:key_with_nil_value]
      => nil
      
      main > h[:missing_key]  # this would be undefined in JavaScript (a useful distinction) rather than null, but in Ruby it's indistinguishable from the case where a nil value was actually explicitly _supplied_ by the caller/user
      => nil
      
      # so we have to check for "missingness" ("undefinedness"?) differently in Ruby
      
      main > h.key?(:key_with_nil_value)
      => true
      
      main > h.key?(:missing_key)
      => false
      

      This is one unfortunate side effect of Ruby having only nil and no built-in way to distinguish between null and undefined like in JavaScript.

    3. When you run this interaction, two things will happen. First ActiveInteraction will type check your inputs. Then ActiveModel will validate them. If both of those are happy, it will be executed.

      Failed type checks generate run-time errors. So it's up to the develop to fix these, permanently, since the user can't (99% of time) do anything to fix these.

      Failed validations add errors to interaction.errors object. These are for the user to fix.

    4. Inside the interaction, we could use #find instead of #find_by_id. That way we wouldn't need the #find_account! helper method in the controller because the error would bubble all the way up. However, you should try to avoid raising errors from interactions. If you do, you'll have to deal with raised exceptions as well as the validity of the outcome.

      What they're referring to:

      Account.find('invalid') will raise an error but Account.find_by(id: 'invalid') will not.

    5. For this one we'll define a helper method to handle raising the correct errors. We have to do this because calling .run! would raise an ActiveInteraction::InvalidInteractionError instead of an ActiveRecord::RecordNotFound. That means Rails would render a 500 instead of a 404.

      True, but why couldn't it handle this for us?

    1. Amid awful suffering and deteriorating conditions, Texas Republicans decided to fight a culture war.

      The author has a criticizing tone, which can be implied by him emphasizing Texas's conditions using a negative diction. It is kind of humorous as he stated "cultural wars" instead of disputes. Usually wars leave a drastic impact on the land, but this time, the "war" is occurring on an already destroyed land, which reflects the author's point of view that leaving a conflict dissolved is worse than creating a new conflict.

    1. If the program was important enough, Microsoft might actually go ahead and add some hack to their implementation so the the program would continue to work, but the cost of that is increased complexity (with all the ensuing problems) of the Windows code. It also makes life extra-hard for the Wine people, because they try to implement the WinAPI as well, but they can only refer to the documentation for how to do this, which leads to many programs not working as they should because they (accidentally or intentionally) rely on some implementation detail.
    1. with ActiveForm-Rails, validations is the responsability of the form and not of the models. There is no need to synchronize errors from the form to the models and vice versa.

      But if you intend to save to a model after the form validates, then you can't escape the models' validations:

      either you check that the models pass their own validations ahead of time (like I want to do, and I think @mattheworiordan was wanting to do), or you have to accept that one of the following outcomes is possible/inevitable if the models' own validations fail:

      1. if you use object.save then it may silently fail to save
      2. if you use object.save then it will fail to save and raise an error

      Are either of those outcomes acceptable to you? To me, they seem not to be. Hence we must also check for / handle the models' validations. Hence we need a way to aggregate errors from both the form object (context-specific validations) and from the models (unconditional/invariant validations that should always be checked by the model), and present them to the user.

      What do you guys find to be the best way to accomplish that?

      I am interested to know what best practices you use / still use today after all these years. I keep finding myself running into this same problem/need, which is how I ended up looking for what the current options are for form objects today...

    1. The press will tell you that "the concept" is great but the execution is bad. What should I tell you? The experience is shallow. The game is mediocre. But listen carefully, when a game is mediocre and can't even make you feel something then it's the worst kind of gaming. I will give it a 4 out of 10. You know, if this was a test in a school then this game should be marked D (someone answered a few questions, but overall missed the point). I understand that many people care about the "concept" of this game, but why if the experience is just... not here. I'm talking about the experience becaus We. The Revolution tried to be an actual experience. And it fails so badly.
    1. Unlike naming children, coding involves naming things on a daily basis. When you write code, naming things isn’t just hard, it’s a relentless demand for creativity. Fortunately, programmers are creative people.
    1. Now let me ask you, do you write JS for a single page application differently from a "traditional" web application? I sure hope you do! In a "traditional" application, you can get away with being sloppy because every time the user navigates to a new page, their browser destroys the DOM and the JavaScript context. SPAs, though, require a more thoughtful approach.
    1. The key phrase here is “children of a grid container.” The specification defines the creation of a grid on the parent element, which child items can be positioned into. It doesn’t define any styling of that grid, not even going as far as to implement something like the column-rule property we have in Multi-column Layout. We style the child items, and not the grid itself, which leaves us needing to have an element of some sort to apply that style to.
  14. Jan 2021
    1. Blocks Don’t Need 100% Width When we understand the difference between block-level elements and inline elements, we’ll know that a block element (such as a <div>, <p>, or <ul>, to name a few) will, by default expand to fit the width of its containing, or parent, element (minus any margins it has or padding its parent has).
    1. From morn to night

      We started the poem at the beginning of the day and now end at night. Not only does this show the "circle motif" in this poem - what I mean is how "all things come to a close" and then restart anew - but it also parallels the journey of the youth, from being naive and blissful to being to falling victim to that naivety and becoming unaware of their fictitious bliss in the unknown; the journey leads to isolation from reality.

    2. delight=bliss in not understanding?

      Does this mean that there is delight in not understanding truth? It is the youths who are delighted, relating to their lack of experience.

      p.s This poem is taken from Selected Poetry and Prose of Blake (section Songs of Experience)

    3. truth new born

      The youth are at the beginning of their lives, and so the image of truth (reality as it is perceived universally) is also in its beginning stages, not fully developed nor fully understood by the youth.

    1. The best place to let the developers know, and track those bugs is in the bug tracker. There are hundreds of forums online, all over the place in many languages. We can’t be expected to read all of them. Anyone with a launchpad ID (thus, anyone who has an account on this discourse instance) has the capability to file a bug. I’d strongly recommend doing so, for each specific issue. Taking just a few minutes to do that will help tremendously.
    2. Progress is made of compromises, this implies that we have to consider not only disadvantages, but also the advantages. Advantages do very clearly outweigh disadvantages. This doesn’t mean it perfect, or that work shouldn’t continue to minimize and reduce the disadvantages, but just considering disadvantages is not the correct way.
    1. The debate about whether a button or link should be used to download a file is a bit silly, as the whole purpose of a link has always been to download content. HTML is a file, and like all other files, it needs to be retrieved from a server and downloaded before it can be presented to a user. The difference between a Photoshop file, HTML, and other understood media files, is that a browser automatically displays the latter two. If one were to link to a Photoshop .psd file, the browser would initiate a document change to render the file, likely be all like, “lol wut?” and then just initiate the OS download prompt. The confusion seems to come from developers getting super literal with the “links go places, buttons perform actions.” Yes, that is true, but links don’t actually go anywhere. They retrieve information and download it. Buttons perform actions, but they don’t inherently “get” documents. While they can be used to get data, it’s often to change state of a current document, not to retrieve and render a new one. They can get data, in regards to the functionality of forms, but it continues to be within the context of updating a web document, not downloading an individual file. Long story short, the download attribute is unique to anchor links for a reason. download augments the inherent functionality of the link retrieving data. It side steps the attempt to render the file in the browser and instead says, “You know what? I’m just going to save this for later…”
  15. Dec 2020
    1. It’s worth mentioning that Svelte limits its scope to being only a UI component framework. Like React, it provides the view layer, but it has more batteries included with its component-scoped CSS and extensible stores for state management. Others like Angular and Vue provide a more all-in-one solution with official routers, opinionated state management, CLIs, and more. Sapper is Svelte’s official app framework that adds routing, server-side rendering, code splitting, and some other essential app features, but it has no opinions about state management and beyond. Some devs prefer Svelte’s minimal approach that defers problems to userland, encouraging more innovation, choice, and fragmentation, and other devs prefer a more fully integrated toolkit with a well-supported happy path.

      tag?: what scope of provided features / recommended happy path is needed?

  16. Nov 2020
    1. Svelte by itself is great, but doing a complete PWA (with service workers, etc) that runs and scales on multiple devices with high quality app-like UI controls quickly gets complex. Flutter just provides much better tooling for that out of the box IMO. You are not molding a website into an app, you are just building an app. If I was building a relatively simple web app that is only meant to run on the web, then I might still prefer Svelte in some cases.
    1. this in particular comes from the addressee

      I think the ruling's main point/distinction here is that while submitting a form might be getting consent from the addressee (the person submitting form might be the addressee, if they own the e-mail address they entered), but we can't know that for sure until they confirm by clicking a link in the e-mail.

      Only then do we know for sure that the actor submitting the form was the addressee and that the consent ostensibly received via the form was in fact from the addressee. But it could otherwise be the case that they entered someone else's address, and you can't give consent on behalf of someone else!

    1. Man, for some reason, I really like this answer. I recognize it's a bit more complicated, but it seems so useful. And given that I'm no bash expert, it leads me to believe that my logic is faulty, and there's something wrong with this methodology, otherwise, I feel others would have given it more praise. So, what's the problem with this function? Is there anything I should be looking out for here?

      I think the main thing wrong with it is the eval (which I think can be changed to $("$@") and it's pretty verbose.

      Also, there are more concise ways to do it that would probably appeal more to most bash experts...

      like set -x

      and it does unnecessary things: why save output to a variable? Just let output go to where it would normally go...

      So yeah, I can see why this solution isn't very popular. And I'm rather surprised by all the praise comments it's gotten.

  17. Oct 2020