873 Matching Annotations
  1. Mar 2021
    1. here is my set of best practices.I review libraries before adding them to my project. This involves skimming the code or reading it in its entirety if short, skimming the list of its dependencies, and making some quality judgements on liveliness, reliability, and maintainability in case I need to fix things myself. Note that length isn't a factor on its own, but may figure into some of these other estimates. I have on occasion pasted short modules directly into my code because I didn't think their recursive dependencies were justified.I then pin the library version and all of its dependencies with npm-shrinkwrap.Periodically, or when I need specific changes, I use npm-check to review updates. Here, I actually do look at all the changes since my pinned version, through a combination of change and commit logs. I make the call on whether the fixes and improvements outweigh the risk of updating; usually the changes are trivial and the answer is yes, so I update, shrinkwrap, skim the diff, done.I prefer not to pull in dependencies at deploy time, since I don't need the headache of github or npm being down when I need to deploy, and production machines may not have external internet access, let alone toolchains for compiling binary modules. Npm-pack followed by npm-install of the tarball is your friend here, and gets you pretty close to 100% reproducible deploys and rollbacks.This list intentionally has lots of judgement calls and few absolute rules. I don't follow all of them for all of my projects, but it is what I would consider a reasonable process for things that matter.
    1. Software that is not currently being used gradually becomes unusable as the remainder of the application changes.
    2. Infrequently used portions of code, such as document filters or interfaces designed to be used by other programs, may contain bugs that go unnoticed. With changes in user requirements and other external factors, this code may be executed later, thereby exposing the bugs and making the software appear less functional.
    1. Microlibraries are easier to understand, develop and test. They make it easier for new people to get involved and contribute. They reduce the distinction between a “core module” and a “plugin”, and increase the pace of development in D3 features.
    1. If you don't mind putting the sourcemap url in the minified JS
    2. While I understand orgs wanting not to expose their unminified source, it's security through obscurity (meaning it's not adding any real security).
    3. The only place I can find it is in the sprockets-rails gem. javascript_include_tag calls this: def find_debug_asset(path) if asset = find_asset(path, pipeline: :debug) raise_unless_precompiled_asset asset.logical_path.sub('.debug', '') asset end end
  2. Feb 2021
    1. To understand this helper, you should understand that every step invocation calls Output() for you behind the scenes. The following DSL use is identical to the one [above]. class Execute < Trailblazer::Activity::Railway step :find_provider, Output(Trailblazer::Activity::Left, :failure) => Track(:failure), Output(Trailblazer::Activity::Right, :success) => Track(:success)
    1. Another thing I don’t like: our asset behavior is decoupled from the assets. If you’re mucking around in your app/assets folder, then you have to first know that such a config exists, and then hunt it down in a totally different config folder. It would be nice if, while we’re working in asset land, we didn’t have to mentally jump around.
    1. While you could program this little piece of logic and flow yourself using a bunch of Ruby methods along with a considerable amount of ifs and elses, and maybe elsif, if you’re feeling fancy, a Trailblazer activity provides you a simple API for creating such flow without having to write and maintain any control code. It is an abstraction.
    2. An activity is a high-level concept to structure code flow
    3. Whether this is the life-cycle of a <user> entity or just a sign-up function, it has to be defined and coded somewhere.
    4. Trailblazer strikes when it comes to organizing business code.
    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. Trailblazer extends the conventional MVC stack in Rails. Keep in mind that adding layers doesn't necessarily mean adding more code and complexity. The opposite is the case: Controller, view and model become lean endpoints for HTTP, rendering and persistence. Redundant code gets eliminated by putting very little application code into the right layer.
    1. ActiveInteraction plays nicely with Rails. You can use interactions to handle your business logic instead of models or controllers.
    2. Why is all this interaction code better? Two reasons: One, you can reuse the FindAccount interaction in other places, like your API controller or a Resque task. And two, if you want to change how accounts are found, you only have to change one place.

      Pretty weak arguments though...

      1. We could just as easily used a plain object or module to extract this for easy reuse and having it in only one place (avoiding duplication).
    1. 2.L’article 40 du code de procédure pénaleL’article 40 du code de procédure pénale, déjà évoqué, dispose que «toute autorité constituée, tout officier public ou fonctionnaire qui, dans l’exercice de ses fonctions, acquiert la connaissance d’un crime ou d’un délit est tenu d’en donner avis sans délai au procureur de la République et de transmettre à ce magistrat tous les renseignements, procès-verbaux et actes qui y sont relatifs». Cet article a donc pour effet de délier du secret professionnel les officiers publics ou les fonctionnaires en leur imposant de dénoncer au procureur de la République les crimes ou délits dont ils ont acquis la connaissance dans l’exercice de leurs fonctions. Cetteobligation de dénonciation s’impose à tous les fonctionnaires et concerne toutes les infractions. Un médecin de PMI, un médecin scolaire ou un médecin hospitalier peut donc être concerné par cette obligation. Cependant, le non-respect de cette obligation de dénonciation n’est pas pénalement sanctionné, ce qui en limite considérablement la portée.
  3. Jan 2021
    1. ’article 434-3 du code pénal prévoit que « toute personne ayant eu connaissance de privations, de mauvais traitements ou d’atteintes sexuelles infligés à un mineur de 15 ans s’expose à des sanctions pénales s’il n’en informe pas les autorités judiciaires ou administratives »
    1. Maybe $$slots like $$props? My use case is that I'd like to wrap a slot's content in an element that applies styling that I'd like absent without the slotted content. Something like this: {#if $$slots.description} <div class="description"> <slot name="description"></slot> </div> {/if}
    1. Monaco is what VScode, and CodeSandBox, use for code editing. It's obviously one of the best code editors in the world. It's always been on my want-to-try-list and this is the perfect proejct.
    1. A Svelte component that monitors an element enters or leaves the viewport/parent element. Performant and efficient thanks to using Intersection Observer under the hood. Can be used in multiple projects including lazy loading images, infinite scrolling, playing/pausing the video when in the viewport, tracking user behaviour firing link pre-fetching and animations and many many more.
    1. By abstracting the cleanup process in the cleanUp function, the three callbacks — timeout, success, and error listener — look exactly the same. The only difference is whether they resolve or reject the promise.
  4. Dec 2020
    1. Treating the web as a compile target has a lot of implications, many negative. For example “view source” is a beloved feature of the web that’s an important part of its history and especially useful for learning, but Svelte’s compiled output is much harder to follow than its source. Source maps, which Svelte uses to map its web language outputs back to its source language, have limitations.
    1. For example, an event handler callback that can be used to handle both fullscreenchange and fullscreenerror might look like this:
  5. Nov 2020
    1. // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>. // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.

      I wish I understood what they meant and why this is necessary

    1. Refactoring at scale is challenging and a significant investment, so communicating the progress is important both from a business perspective but also as a motivational effect to developers. In this case we used a combination of complexity trend visualizations and Code Health Metric as shown in the preceding example.

      [[refactoring at scale]]

    1. they're in the svelte compiler: https://github.com/sveltejs/svelte/blob/master/src/compiler/compile/nodes/Element.ts#L668 (search for the warning text)
    1. When you’re implementing a bad plan yourself, instead of having a mentor bail you out by fixing it, a few really useful things happen:You learn many more details about why it was a bad idea. If someone else tells you your plan is bad, they’ll probably list the top two or three reasons. By actually following through, you’ll also get to learn reasons 4–1,217.You spend about 100x more time thinking about how you’ll avoid ever making that type of mistake again, i.e., digesting what you’ve learned and integrating it into your overall decision-making.By watching my mistakes and successes play out well or badly over the course of months, I was able to build much more detailed, precise models about what does and doesn’t matter for long-term codebase health. Eventually, that let me make architectural decisions with much more conviction.

      There's a benefit to embarking on a challenge without a more experienced authority to bail you out.

      • You learn many more details about why it's a bad idea.
      • The lessons you learn in terms of how to avoid the mistakes you made stick with you longer

      (I would add that the experience is more visceral, it activates more modalities in your brain, and you remember it much more clearly.)

      These types of experiences result in what the author calls more "detailed, precise models". For me they result in a sort of intuition.

  6. Oct 2020
    1. export const validationSchema = {
        field: {
          account: [Validators.required.validator, iban.validator, ibanBlackList],
          name: [Validators.required.validator],
          integerAmount: [
      

      Able to update this schema on the fly, with:

        React.useEffect(() => {
          getDisabledCountryIBANCollection().then(countries => {
            const newValidationSchema = {
              ...validationSchema,
              field: {
                ...validationSchema.field,
                account: [
                  ...validationSchema.field.account,
                  {
                    validator: countryBlackList,
                    customArgs: {
                      countries,
                    },
                  },
                ],
              },
            };
      
            formValidation.updateValidationSchema(newValidationSchema);
          });
        }, []);
      
    1. This simplifies maintenance and keeps things clean by allowing related code to be grouped before inclusion elsewhere.
    1. withindex.js, we have a single source of truth, giving fine grained control on what we expose to the outside world.
    2. import statements will become much smaller, as we will be importing stuff from less files. For example AbstractNode.js has only on import statement now, where it had two before.
    3. The reason that this solves our problem is: we now have full control over the module loading order. Whatever the import order in internal.js is, will be our module loading order.
    4. Here are few, real-life commits of refactorings that make use of this solution:
    5. The crux of this pattern is to introduce an index.js and internal.js file.
    1. Yeah I see what you're saying. In my case, I had a group of classes that relied on each other but they were all part of one conceptual "module" so I made a new file that imports and exposes all of them. In that new file I put the imports in the right order and made sure no code accesses the classes except through the new interface.
    1. In some cases, I could also create a component without any <script> tag at all. So in that way, I could actually bulk up the logic in one place if I could get some help from the #with block.
    1. Separately, I wondered about having a central registry of warnings, since they're a bit scattered around at the moment. That way, we could check that someone wasn't trying to ignore a non-existent warning.

      centralized

    1. The false promise of your source code repository is that everything it contains is “good.” To complete your task, just find something that does something similar, copy, modify, and you’re done. Looking inside the same repository seems like a safety mechanism for quality but, in fact, there is no such guarantee.
    2. What makes it good or bad is the quality of the code being multiplied.
    3. For years, I’ve shared with friends and clients what I call the bunny theory of code. The theory is that code multiplies when you’re not looking, not unlike bunnies that tend to multiply when you’re not looking.
    4. Anyone who’s ever worked with me knows that I place a very high value on what ends up checked-in to a source code repository.
    1. nzaka's theory of bunny code is relevant here
    2. Yes, you can embed loops in it and compose lots of small repeated JSX snippets, but that almost never happens in practice because mixing the turing complete of javascript with the markup of HTML eliminates the readability of JSX so that it is actually harder to parse than a solution like hyperscript (the syntactical approach taken by virtual-dom).
    1. code is read much more often than it is written.
    2. However, know when to be inconsistent -- sometimes style guide recommendations just aren't applicable.
    3. The limits are chosen to avoid wrapping in editors with the window width set to 80, even if the tool places a marker glyph in the final column when wrapping lines.
    4. For code maintained exclusively or primarily by a team that can reach agreement on this issue, it is okay to increase the line length limit up to 99 characters
    1. I'm also persuaded by the arguments that it will be easier to track stuff down by co-location.
    2. About the argument against it, "{@const will make code less consistent ": I think the same is true now, since people can come up with very different ways of dealing with the "computed value inside each loop/if function" problem. Some extract components, some use functions, some will prepare the array differently beforehand.
    3. I also think this would be great in terms of colocation. If I need some intermediate result I no longer have to jump between script and markup.
    4. I'm persuaded that co-locating just this one type of logic will be useful.
    5. I like this, mostly because it allows me to write small components without creating another separate sub-component for holding the value simple computation. I get annoyed every time I need to create a component just to hold a variable, or even move the computation away from the relevant location. It reminds me of the days where variables in C had to be declared at the top of the function.
    6. it also allows for more divergence in how people write there code and where they put their logic, making different svelte codebases potentially even more different due to fewer constraints. This last point is actually something I really value, I read a lot of Svelte code by a lot of different people and broadly speaking things look the same and are in the same places.
    1. When I say that my experience is that it means it's time to split up your components, I guess I mean that there tends to be a logical grouping between all the things that care about (for example) sqr_n, and in Svelte, logical groupings are expressed as components.
    1. Both of these make it difficult to code-split the top of the tree (where the state has to live) from the leaves of the tree (where the state is used).
    1. Clicking through to the photo, there is no mention of this image appearing on this important announcement. Perhaps the author privately contact the photographer about using his image. Since Ken Doctor is so incredible with his media experience (i’m being serious), I’m fairly certain someone from his team would have contacted the photographer to give him a heads up.

      I'm sure I've said it before, but I maintain that if the source of the article and the target both supported the Webmention spec, then when a piece used an image (or really any other type of media, including text) with a link, then the original source (any website, or Flickr in this case) would get a notification and could show—if they chose—the use of that media so that others in the future could see how popular (or not) these types of media are.

      Has anyone in the IndieWeb community got examples of this type of attribution showing on media on their own websites? Perhaps Jeremy Keith or Kevin Marks who are photographers and long time Flickr users?

      Incidentally I've also mentioned using this notification method in the past as a means of decentralizing the journal publishing industry as part of a peer-review, citation, and preprint server set up. It also could be used as part of a citation workflow in the sense of Maria Popova and Tina Roth Eisenberg's Curator's Code<sup>[1]</sup>set up, which could also benefit greatly now with Webmention support.

  7. Sep 2020
    1. These lenses include interpretive frameworks such as structuralism and formalism, and deconstruction; identity- related approaches such as feminism and critical race studies; globally oriented approaches such as postco-lonialism; and many more.

      les code studies s'inscrivent d’emblée dans une pluralité d’approches – pour Marino, elles ne sont pas exhaustives – d’où leur pertinence dans des analyses intersectionnelles – elles informent les autres disciplines comme elles se nourrissent d’elles

    2. o read code critically is to explore the significance of the specific symbolic structures of the code and their effects over time if and when they are executed

      la dimension performative (code exécuté) est fondamentale dans l’étude du code, qu’on ne peut simplement étudier de manière statique: il faut le lancer, le jouer, l’exécuter.

    3. that “state” is the other key dimension to critical code studies

      état

      state ou «état», une facette propre aux code studies

      dans un ouvrage traditionnel, cette question de l’état ne se pose pas (on lit plus ou moins linéairement un texte de bout en bout)

    4. we assert a hierarchy based on an arbitrary judgment of what is “real” or “good” or “right” code

      Comme on l'a déjà fait par le passé (et même encore aujourd'hui) en littérature, finalement. C'est peut-être aussi par là que les critical code studies rejoignent les études littéraires. En laissant de côté une évaluation subjective de la qualité du code, on peut s'intéresser plus spécifiquement à son sens, à son imbrication dans un contexte, à son statut dans un espace culturel, etc.

    5. Code was literally becoming the means of debate, used as evidence in arguments for and against the scientific valid-ity of climate change.

      Intéressant parallèle à faire entre ce traitement du code et celui des publications scientifiques en médecine... Le manque d'informations dont dispose le public pour comprendre et contextualiser les études scientifiques de beaucoup de domaines peut ici se comparer à celui qui est fait de ce code, brandi comme argument mais fallacieux parce que mal interprété, mal contextualisé, etc.

    6. Code thus becomes the means and medium of long- distance control.

      Voir notamment Alexander Galloway, <cite>[Protocol: How Power Exists After Decentralization](https://mitpress.mit.edu/books/protocol)</cite>, 2004.

      Réflexion à l’aulne des systèmes de contrôle par le langage (cf. Michel Foucault, Gilles Deleuze, Félix Guattari).

      Facilité par le protocole, <mark>l’Internet est le média de masse le plus hautement contrôlé connu jusqu’ici.</mark>

      En condensé: cette note.

    7. Critical Code Studies Working Groups (CCSWGs)
    8. Code is a social text, the meaning of which develops and transforms as additional readers encoun-ter it over time and as contexts change

      Le code est une langue et, en tant que telle, est une construction sociale (comme toutes les langues). Comme une œuvre littéraire, son sens n'est pas fixé.

    1. setContext / getContext can only be used once at component init, so how do you share your API result through context? Related: how would you share those API results if the call was made outside of a Svelte component, where setContext would be even more out of the question (and the API call would arguably be better located, for separation of concerns matters)? Well, put a store in your context.
    1. I took the same approach with _layout.svelte and not just for the svelte-apollo client. Except I put all of that setup into another module (setup.js) and imported from _layout. I just couldn't stomach having all that code actually in my _layout file. It's for layout, supposedly, but it's the only component that is a parent to the whole app.
    2. I got this working by using _layout.svelte as the point to initialise and set the Client we can then use getClient in each route that uses this layout.
    1. Svelte will not offer a generic way to support style customizing via contextual class overrides (as we'd do it in plain HTML). Instead we'll invent something new that is entirely different. If a child component is provided and does not anticipate some contextual usage scenario (style wise) you'd need to copy it or hack around that via :global hacks.
    2. Explicit interfaces are preferable, even if it places greater demand on library authors to design both their components and their style interfaces with these things in mind.
    3. Want to use this now? Existing projects A more robust and maintainable way to incorporate this patch into your workflow using patch-package:
    1. You'll have to create a new component that brings in the functionality of both. TooltipButton, TooltipLink, Link, and TooltipRoutedLink. We're starting to get a lot of components to handle a bit of added functionality.
    2. For the tooltip example, if you had a whole bunch of tooltips on different elements, it would be annoying to have different event listeners and "should it be shown" variables for each one.
    1. Perhaps at that point we're better off settling on a way to pass components through as parameters? <!-- App.html --> <Outer contents={Inner}/> <!-- Outer.html --> <div> <div>Something</div> <[contents] foo='bar'/> </div>
    2. I would hope for it to come with React-like behavior where I could pass in a string (like div or a) and have it show up as a normal div/a element when the child component used it.
    1. To me, abandoning all these live upgrades to have only k8s is like someone is asking me to just get rid of all error and exceptions handling and reboot the computer each time a small thing goes wrong.

      the Function-as-a-Service offering often have multiple fine-grained updateable code modules (functions) running within the same vm, which comes pretty close to the Erlang model.

      then add service mesh, which in some cases can do automatic retry at the network layer, and you start to recoup some of the supervisor tree advantages a little more.

      really fun article though, talking about the digital matter that is code & how we handle it. great reminder that there's much to explore. and some really great works we could be looking to.

    1. Références1°'degré:art.1°',2et3del'arrêtédu13mai1985relatifauconseild'école,circulairen°2000-082du9juin2000relativeauxmodalitésd'électiondesreprésentantsdesparentsd'élèvesauconseild'école.2"°'degré:art.R.421-26,R.421-29etR.421-30ducodedel'éducation.
    2. L'articleL.1'|'I-4ducodedel'éducationdisposequelesparentsd'élèvesparticipent,parleursreprésentants,auxconseilsd'écoleetauxconseilsd'administrationdesétablissementsscolairesetauxconseilsdeclasse
    1. There’s a bunch of fiddly syntax here, not to mention 2 separate build stacks and 3 sets of dependencies, but the end result is awesome. Simply renaming a field on a shared model will reveal all the React components using that value on the front-end, and back-end code using it.
    2. The “shared” schema is effectively the API schema. These are the fields exchanged in the API, common to client and server.
    1. À cette fin, comme le prévoit l'article D. 111-8 du Code de l'éducation, les directeurs d'école et les chefs d'établissement doivent communiquer aux associations de parents d'élèves qui en font la demande la liste des parents d'élèves de l'école ou de l'établissement scolaire mentionnant leurs noms, adresses postale et électronique, à la condition que ceux-ci aient donné leur accord exprès à cette communication.
    1. Because of that, it's easy to end up in a situation where the styles for a given piece of markup are defined far away (in terms of number of lines) from the markup itself, which reduces the advantage of having styles and markup co-located in the first place.
  8. Aug 2020
    1. “I came to Rust from Haskell, and I feel that Haskell is a very elegant and safe language. The biggest differentiator for me is that there is a greater difference between high-performance code and idiomatic ‘clean’ code in Haskell than in Rust. Most Rust code looks like most other Rust code, even when it performs well. Haskell can become unfamiliar real quick if someone is operating under different libraries and goals from what you are typically doing. Small differences in syntax can result in huge differences in behavior, and Rust has more uniformity on that axis.”