570 Matching Annotations
  1. Last 7 days
    1. Lean Canvas

      For the builders collective, I created some tools that are open source and useful for design and social architecture. Other projects are coding challenges to experiment with what is possible on the web.

      This experiment is based on the Lean Canvas, based on the Business Model Canvas from the book Business Model Generation.

      Type in the grey box at the top of the page. Click or tap in the boxes to add the text as a box in each section of the Lean Canvas. Click on the box to delete.

      There is no save functionality, so be sure to take a screenshot. Or roll your own by using the code on Codepen and GitHub.

  2. Oct 2021
  3. matspike.github.io matspike.github.io
    1. Log into TopHat and select the course “Origins and Evolution of Language” Navigate to the ‘Assigned’ tab Select the relevant quiz and complete all items (note that the quiz will automatically close on Monday at 1pm)

      I logged in to Top Hat and found two courses called Origins and Evolution... both do not have any quizzes in the assigned tab. Can someone please point me to the right course? What's the join code?

  4. Sep 2021
    1. this.ontokencontent = this.ontokencontent.call(this, result)

      The implicitness that this "protocol" pushes into the implementing methods (seemingly odd return values) is undesirable. Make it explicit. The implementing methods should be able to do something like Validator.changeExpectation(this, this.onresource) (which in turn changes the target's ontokencontent handler).



    1. (art. R. 421-20 du code de l’éducation)

      Le conseil d'administration est l'organe décisionnel de l'établissement. Il adopte le projet d'établissement, le budget et le compte financier de l’établissement ainsi que le règlement intérieur de l’établissement. Il donne notamment son accord sur le programme de l'association sportive, sur les principes du dialogue avec les parents d'élèves. Il délibère sur les questions relatives à l'hygiène, la santé et la sécurité. Il donne son avis sur les principes de choix des manuels et outils pédagogiques, sur la création d'options et de sections (art. R. 421-20 du code de l’éducation).

  5. Aug 2021
    1. def compare_state_dict(dict1, dict2): # compare keys for key in dict1: if key not in dict2: return False for key in dict2: if key not in dict1: return False for (k,v) in dict1.items(): if not torch.all(torch.isclose(v, dict2[k])) return False return True

      Comparing two pytorch dicts

    1. Since the reader was able to shape hand and finger as he or she saw fit, we can sometimes recognise a particular reader within a single manuscript, or even within the books of a library. The charming hands function as a kind of fingerprint of a particular reader, allowing us to assess what he or she found important about a book or a collection of books.

      I've heard the word "hand" as in the phrase "an operator's hand" used in telegraphy to indicate how an experienced telegraph operator could identify the person at the other end with whom they were communicating by the pace and timbre of the code. I've particularly heard reference to it by code breakers during wartime. It's much the same sort of information as identifying someone by their voice on the phone or in a distinctive walk as seen at a distance. I've also thought of using this idea in typing as a means of secondary confirmation for identifying someone while they input a password on a keyboard.

      I wonder if that reference predates this sort of similar "hand" use for identifying someone, if this may have come first, or if they're independent of each other?

    1. Aside to global and local scope there is also something one could call a “block” scope. This is not an “official” type of scope, but it does exist. Block scope was introduced to JavaScript as a part of the ES6 specification. It was introduced along with two new types of variables let and const.
    1. Using a flag to disable prettier for a line, the next line or until I activate it again (ESLint like syntax). // prettier-disable border: { sep: "║", topLeft: "╔", topMid: "╦", top: "═", topRight: "╗", midLeft: "╠", midMid: "╬", mid: "═", midRight: "╣", botLeft: "╚", botMid: "╩", bot: "═", botRight: "╝" }, // prettier-enable
    1. Copy and pastethe module’s code into your system and make whatever changes you find nec-essary.This is usually the right thing to do for a small component
    1. conda env update --prune --quiet --name $envname --file "$envfile"
    2. jupyter nbconvert --to notebook --execute --ExecutePreprocessor.kernel_name=python3 --output output.ipynb <path_to_ipynb>
    1. If you want more, you can do so by directly specifying TextMate theme color rules


        "editor.tokenColorCustomizations": {
          "[Noctis]": {
            "textMateRules": [
                "scope": "markup.list",
                "settings": { "fontStyle": "" }
                "scope": "text.markdown.notes.tag",
                "settings": { "fontStyle": "italic" }

      Inspect the scope using the command "Developer: Inspect Editor Tokens and Scopes"

    1. no browsers support the Knuth-Plass algorithm for hyphenation so you can't use nicely justified paragraphs

      You could use a JS payload to do it, though, right?

  6. Jul 2021
    1. body script, body style {

      This doesn't work well with scripts (and style elements) injected by the Hypothesis bookmarklet or the Wayback Machine's toolbar. On that note, it's pretty poor hygiene on their part to (a) inject this stuff in the body to begin with, and (b) not include at the very least a class attribute clearly defining the origin/role of the injected content. As I described elsewhere:

      set the class on the injected element to an abbreviated address like <style class="example.org/sidebar/2.4/injected-content/">. And then drop a page there explaining the purpose and requirements (read: assumptions) of your injected element. This is virtually guaranteed not to conflict with any other class use (e.g. CSS rules in applied style sheets), and it makes it easier for other add-ons (or the page author or end user) to avoid conflicts with you.

    2. * Monospace fonts always render at 80% of normal body text for some * reason that I don't understand but is still annoying all the same.

      Dealing with it this way is a mistake. The only reasonable thing to do is to tell the user to adjust their browser's default font settings or deal with it. (This seems to only affect Firefox's default UA stylesheet/preferences, not Chrome.)

      Check out how the most recent iteration of the w2g streamline "client" https://graph.5apps.com/LP/streamline approaches styling.

    1. this._figureElement = this._page.querySelector("script");

      Better to use querySelectorAll and then filter based on figure designation (e.g. nodeValue.startsWith(" (Fig. 1) ")).

    2. document


      (Caller should also probably look more like:

      let system = new SystemB(document);

      ... where the querySelectorAll return value's role is to act as a list of document figures, for the reasons described elsewhere https://hypothes.is/a/-n-RYt4WEeu5WIejr9cfKA.)

    1. I only allowed smaller closures in the code and refactored the rest into separate top-level functions. This is a deliberate move against the common practice of js programmers. Why? Because I noticed closures make code harder to read.
  7. Jun 2021
    1. We’ve broken our project up into three different types of packages: apps which are preact apps intended to be bundled and deployed somewhere, modules which are plain npm packages for node/browsers and do not bundle their dependencies, and workers which are either Worker or ServiceWorker scripts entirely bundled up with no imports or exports. We don’t have to keep these three types of packages separated, but it helps us navigate around.
    1. Rather than write new tooling we decided to take advantage of tooling we had in place for our unit tests. Our unit tests already used FactoryBot, a test data generation library, for building up test datasets for a variety of test scenarios. Plus, we had already built up a nice suite of helpers that we coud re-use. By using tools and libraries already a part of the backend technology’s ecosystem we were able to spend less time building additional tooling. We had less code to maintain because of this and more time to work on solving our customer’s pain points.
    1. On the security side I think code injection is still a danger. If someone does smuggle js into your js app they'll be able to read your CSRF cookie and make ajax requests using your logged-in http session, just like your own code does
    1. That means if an attacker can inject some JavaScript code that runs on the web app’s domain, they can steal all the data in localStorage. The same is true for any third-party JavaScript libraries used by the web app. Indeed, any sensitive data stored in localStorage can be compromised by JavaScript. In particular, if an attacker is able to snag an API token, then they can access the API masquerading as an authenticated user.
    1. I am not sure if this is an improvement. To me it does not seem very pretty. Of course I am biased since I also prefer () in method definitions if they have arguments; although I think it is fine that ruby does not mind omitting the (). For my brain, I like the () for visual separation.
    1. One of the consequences (although arguably not the primary motivation) of DRY is that you tend to end up with chunks of complex code expressed once, with simpler code referencing it throughout the codebase. I can't speak for anyone else, but I consider it a win if I can reduce repetition and tuck it away in some framework or initialisation code. Having a single accessor definition for a commonly used accessor makes me happy - and the new Object class code can be tested to hell and back. The upshot is more beautiful, readable code.

      new tag?:

      • extract reusable functions to reduce duplication / allow elegant patterns elsewhere
  8. May 2021
    1. You can see the implementation here: https://github.com/sveltejs/sapper/blob/339c417b24e8429d3adc9c9f196bf159a5fce874/runtime/src/server/middleware/get_page_handler.ts#L137
    1. select * from users

      We can preview the data, and since that looks good, let's add a table to the canvas to display it. When we do this, it helpful pre-fills the data from our last query.

    1. Article D511-51Création Décret n°2009-553 du 15 mai 2009 - art.La commission académique est présidée par le recteur ou son représentant. Elle comprend en outre cinq membres : 1° Un inspecteur d'académie, directeur des services départementaux de l'éducation nationale ; 2° Un chef d'établissement ; 3° Un professeur ; 4° Deux représentants des parents d'élèves. Les membres autres que le président sont nommés pour deux ans par le recteur ou son représentant. Un suppléant est nommé dans les mêmes conditions pour chacun des membres de la commission, à l'exception de son président. Pour la désignation des représentants des parents d'élèves, le recteur recueille les propositions des associations représentées au conseil académique de l'éducation nationale.Décret n° 2009-627 du 6 juin 2009 article 1 : Les dispositions réglementaires instituant les commissions administratives à caractère consultatif dont la liste est annexée au présent décret sont prorogées pour une durée de cinq ans (Commission académique d'appel).
    1. MJML comes out of the box with a set of standard components to help you build easily your first templates without having to reinvent the wheel.
  9. Apr 2021
    1. :structured - Lumberjack::Formatter::StructuredFormatter - crawls the object and applies the formatter recursively to Enumerable objects found in it (arrays, hashes, etc.).
    1. Bugs The man page is longer than the program.

      I assume "the program" is referring to this file:


      , which compared to the source for man page, is in fact much smaller (about 1/2 the length).

    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!).
    2. “It is less clear that way” — that is just arbitrary, even uninformed. There is nothing clearer about def self.method. As demonstrated earlier, once you grasp the true meaning of it, def self.method is actually more vague as it mixes scopes
    3. I wish to define methods within the class they belong to. Using class << self demonstrates that approach clearly — we are defining methods within the actual singleton class scope.
    4. When we usedef self.method, though, we are defining a method across scopes: we are present in the regular class scope, but we use Ruby’s ability to define methods upon specific instances from anywhere; self within a class definition is the Class instance we are working on (i.e. the class itself). Therefore, usingdef self.method is a leap to another scope, and this feels wrong to me.
    5. Similarly to fashion, code style reflects our credo as developers, our values and philosophy.
    6. Yet, it certainly is important to make the proper choices when picking up style. Similarly to fashion, code style reflects our credo as developers, our values and philosophy. In order to make an informed decision, it’s mandatory to understand the issue at stake well. We all have defined class methods many times, but do we really know how do they work?
    1. Quelques textesArticle R. 421-46 du code de l’éducation«Le comité d'éducation à la santé et à la citoyenneté réunit, sous la présidence du chefd'établissement, les personnels d'éducation, sociaux et de santé de l'établissement et desreprésentants des personnels enseignants, des parents et des élèves, désignés par le chefd'établissement sur proposition des membres du conseil d'administration appartenant à leurscatégories respectives, ainsi que les représentants de la commune et de la collectivitéterritoriale de rattachement au sein de ce conseil. En fonction des sujets traités, il peutassocier à ses travaux toute personne dont il estime l'avis utile»
  10. Mar 2021
    1. Il peut opposer un refus à la tenue d'une réunion ou à la participation de personnalités extérieures lorsque celles-ci sont de nature à porter atteinte au fonctionnement normal de l'établissement ou à contrevenir aux principes du service public de l'enseignement.
    1. When bullshit is legitimized and codified, itspreads more easily and is likely to be moreinfluential. This in turn fosters the future produc-tion of more bullshit.
    1. This is not a fork. This is a repository of scripts to automatically build Microsoft's vscode repository into freely-licensed binaries with a community-driven default configuration.

      almost without a doubt, inspired by: chromium vs. chrome

    1. Si un élève mineur est entendu en tant que témoin, il doit être accompagné de son représentant légal.(Art. D511-31)
    2. Effacement des sanctions et amnistieLes sanctions, même assorties du sursis à leur exécution, sont inscrites au dossier administratif de l'élève. L'avertissementest effacé du dossier administratif de l'élève à l'issue de l'année scolaire, le blâme et la mesure de responsabilisationsont effacés du dossier administratif de l’élève à l’issue de l’année suivant celle qui a suivi le prononcé de la sanction. Les autres sanctions, hormis l'exclusion définitive, sont effacées du dossier administratif de l'élève à l’issue de la deuxième année suivant celle du prononcé de la sanction.Toutefois, un élève peut demander(même s’il est mineur)l'effacement des sanctions inscrites, y compris l’exclusion définitive, dans son dossier administratif lorsqu'il change d'établissement(art R511-13).Les sanctions, y compris l’exclusion définitive, sont effacées du dossier administratif de l'élève au terme de sa scolarité dans le second degré (art R511-13).
    3. Les nouvelles dispositions émanant du décret n°2019-906 prévoient que le Conseil d’Administration de l’établissement doit désormais établir, à partir des enquêtes trimestriellessur les sanctions, un rapport relatif au fonctionnement pédagogique et des conditions matérielles de fonctionnement dont une partie est consacrée au bilan des décisions rendues en matière disciplinaire, élaboré à partir du registre des sanctions de l’établissement, et des suites données par le chef d’établissement aux demandes écrites de saisine du conseil de discipline émanant d’un membre de la communauté éducative
    4. Le règlement intérieur doit désormais prévoir les mesures de prévention, de responsabilisation et d’accompagnement pour les élèves ayant fait l’objet d’une exclusion temporaire (article R 421-5):«... prévoit les modalités de mise en œuvre des mesures de prévention, de responsabilisation et d'accompagnement, notamment lorsqu'elles font suite à la réintégration d'un élève exclu temporairement pour des faits de violence.»
    1. Essentially we're trying to figure out when it's appropriate for "my" code to become "everyones" code, and if there are steps in between. ("Standard library", for example.)
    2. 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
    1. Open Gmail on your web browser to land on the login page. Click on the Forgot password option under the username and password columns. Gmail will ask you to insert the last password that you remember. Enter the latest password you remember. Follow the on-screen instructions to receive the verification code on either you email or your number that is registered with your Gmail account. Upon receiving the Gmail forgot password verification code, insert it in the column that asks for it. Next, enter a new password and then re-enter it to confirm. You Gmail password will be changed.

  11. 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).