196 Matching Annotations
  1. Mar 2024
    1. This pattern is often called monorepo when used in conjunction with a repository.
  2. Jan 2024
    1. Here’s my common practice: Every page in the app needs the standard HTML boilerplate with my common stylesheets and JavaScripts. I need a layout that provides these, but makes no assumptions on the actual body of the page. This is my “base” layout. Most – but not all – pages in the app need a common header and footer. This is my “application” (default) layout. I’d like the application layout to reuse the base layout to keep my code DRY.
  3. Nov 2023
  4. Oct 2023
    1. These string figures are thinking as well as making practices, peda-gogical practices and cosmological performances. Some Navajo thinkersdescribe string games as one kind of patterning for restoring hózhó, aterm imperfectly translated into English as “harmony,” “beauty,” “order,”and “right relations of the world,” including right relations of humansand nonhumans.

      positive (harmonious, ordered) pattern-seeking

    2. Relays, string figures, pass-ing patterns back and forth, giving and receiving, patterning, holdingthe unasked-for pattern in one’s hands, response-ability; that is core towhat I mean by staying with the trouble in serious multispecies worlds.Becoming-with, not becoming, is the name of the game; becoming-withis how partners are, in Vinciane Despret’s terms, rendered capable.7 On-

      cooperative pattern-seeking as the only meaningful and useful becoming (becoming-with)


    3. It matters what matters we use to think othermatters with; it matters what stories we tell to tell other stories with;it matters what knots knot knots, what thoughts think thoughts, whatdescriptions describe descriptions, what ties tie ties. It matters whatstories make worlds, what worlds make stories

      tool-patterns determine what patterns can be found with them. the union of the codomains of every tool-pattern we are applying is all we can find at any given point in time.

    4. Playinggames of string figures is about giving and receiving patterns, droppingthreads and failing but sometimes finding something that works, some-thing consequential and maybe even beautiful, that wasn’t there before,of relaying connections that matter, of telling stories in hand upon hand,digit upon digit, attachment site upon attachment site, to craft condi-tions for finite flourishing on terra, on earth.

      cooperative pattern-seeking as existential kin-making

  5. Sep 2023
    1. 12. Creativity and Pattern RecognitionTrigger Type: Creative triggerCreativity involves generating novel and original ideas or solutions. When you’re engaged in creative endeavors, you’re challenged to think outside the box, explore unconventional approaches, and break away from routine thought patterns. Pattern recognition refers to the ability to discern meaningful patterns or connections within information or experiences. It involves finding order and coherence in complexity and identifying recurring themes or elements. Pattern recognition is crucial in various activities, such as problem-solving, artistic expression, or learning new skills. Creativity and pattern recognition complement each other in the flow state, leading to a profound sense of engagement. Creative insights often emerge from recognizing patterns and making connections between seemingly unrelated elements.

      pattern recognition as discernment of patterns and connections between info (complementary to creativity)

      What about discerning patterns between your interests, combining them, and so forth? (combining first and twelfth flow trigger)

  6. Jul 2023
  7. bafybeihzua2lldmlutkxlie7jfppxheow6my62x2qmywif2wukoswo5hqi.ipfs.w3s.link bafybeihzua2lldmlutkxlie7jfppxheow6my62x2qmywif2wukoswo5hqi.ipfs.w3s.link
    1. forms might be asso-ciated with structures
      • comment
        • A Deep Humanity analog to the word "structure" is the word "pattern"
        • Hence we have the equivalency:
          • platonic form = structure = pattern
        • and the author's prior statement that
          • These mental and subsequently materialized ideas then
          • have the potential to
            • influence the physical world and to
              • feedback into the mental world to produce additional structure and
              • physical material
        • is equivalent to Indyweb / Deep Humanity statement that
          • individual and collective learning are deeply entangled
          • cumulative cultural evolution is mediated through this entanglement
          • that is best represented by the idea of dependent origination
          • individuals articulate ideas and externally present them to other consciousnesses
          • a multi-meaningverse exists whenever social learning occurs and
            • multiple perspectives, multiple meaningverses converge
          • each individual perspective surfaces their own adjacencies of ideas drawn from their own salience landscape
            • which in turn emerge from their own respective unique lebenswelt
        • We might also say that to the degree that internal patterns of the symbolosphere correlate with external patterns of the physiosphere, then
        • that is the degree to which the universal pattern manifests in both nature nature and in human nature
        • since humans (human nature) are an expression of nature (nature nature), we should not expect otherwise
  8. Jun 2023
    1. Five core layers: 1. Presentation Layer 2. Application Layer 3. Domain Layer 4. Persistence Layer 5. Database Layer

    2. In the layered architecture pattern, each layer fulfills a specific responsibility and role within the application. Some focus on user interface logic, while others handle the execution of business rules. These layers complement each other's unique purposes, but they aren't explicitly reliant on one another to perform their own tasks.
    3. In software architecture, layers act as individual processes within the infrastructure of an application. These layers typically form a pattern, also called the n-tier architecture pattern.
  9. May 2023
  10. Mar 2023
    1. We know from modern neuroscience that prediction is a core property of human intelligence. Perhaps the game of predict-the-next-word is what children unconsciously play when they are acquiring language themselves: listening to what initially seems to be a random stream of phonemes from the adults around them, gradually detecting patterns in that stream and testing those hypotheses by anticipating words as they are spoken. Perhaps that game is the initial scaffolding beneath all the complex forms of thinking that language makes possible.

      Is language acquisition a very complex method of pattern recognition?

      • Matches by Object property ```js const { matches } = require('z')

      const person = { name: 'Maria' } matches(person)( (x = { name: 'John' }) => console.log('John you are not welcome!'), (x) => console.log(Hey ${x.name}, you are welcome!) ) - Matches by type or instancesjs const { matches } = require('z')

      const result = matches(1)( (x = 2) => 'number 2 is the best!!!', (x = Number) => number ${x} is not that good, (x = Date) => 'blaa.. dates are awful!' )

      console.log(result) // output: number 1 is not that good - Matches Array contentjs const { matches } = require('z')

      matches([1, 2, 3, 4, 5])( (a, b, c, tail) => 'a = 1, b = 2, c = 3, tail = [4, 5]'<br /> )

      matches([1, 2])( (a, tail) => 'a = 1, tail = [2]'<br /> )

      matches([1])( (a, b, tail) => 'Will not match here', (a = 2, tail = []) => 'Will not match here', (a = 1, tail) => 'Will match here, tail = []' ) ```

      • Powerful recursive code which will remove sequential repeated items from Array ```js const { matches } = require('z')

      const compress = (numbers) => { return matches(numbers)( (x, y, xs) => x === y ? compress([x].concat(xs)) : [x].concat(compress([y].concat(xs))), (x, xs) => x // stopping condition ) }

      compress([1, 1, 2, 3, 4, 4, 4]) //output: [1, 2, 3, 4] ```

    1. js match (res) { if (isEmpty(res)) { … } when ({ pages, data }) if (pages > 1) { … } when ({ pages, data }) if (pages === 1) { … } else { … } }

      js match (arithmeticStr) { when (/(?<left>\d+) \+ (?<right>\d+)/) as ({ groups: { left, right } }) { process(left, right); } when (/(?<left>\d+) \+ (?<right>\d+)/) { process(left, right); } // maybe? else { ... } }

      ```js class Name { static Symbol.matcher { const pieces = matchable.split(' '); if (pieces.length === 2) { return { matched: true, value: pieces }; } } }

      match ('Tab Atkins-Bittner') { when (^Name with [first, last]) if (last.includes('-')) { … } when (^Name with [first, last]) { … } else { ... } } ```

      js const res = await fetch(jsonService) match (res) { when ({ status: 200, headers: { 'Content-Length': s } }) { console.log(`size is ${s}`); } when ({ status: 404 }) { console.log('JSON not found'); } when ({ status }) if (status >= 400) { throw new RequestError(res); } };

      ```js function todoApp(state = initialState, action) { return match (action) { when ({ type: 'set-visibility-filter', payload: visFilter }) { ({ ...state, visFilter }); } when ({ type: 'add-todo', payload: text }) { ({ ...state, todos: [...state.todos, { text, completed: false }] }); } when ({ type: 'toggle-todo', payload: index }) { const newTodos = state.todos.map((todo, i) => { return i !== index ? todo : { ...todo, completed: !todo.completed }; });

          todos: newTodos,
      else { state } // ignore unknown actions

      } } ```

      jsx <Fetch url={API_URL}> {props => match (props) { when ({ loading }) { <Loading />; } when ({ error }) { <Error error={error} />; } when ({ data }) { <Page data={data} />; } }} </Fetch>

  11. Jan 2023
  12. Dec 2022
  13. Nov 2022
    1. “pattern language” to describe the show’s plot formulas, which they and ultimately other users would then apply to a variety of programs.

      Tropes are shorthand storytelling methods that rely on a common storytelling grammar or pattern language to quickly relay information to the viewer or listener.

  14. Sep 2022
  15. Aug 2022
    1. First, it taught me that there was a history to this stuff, and it also expanded the frontiers of what I understood I was doing

      'History of stuff' not being seen is a recurring pattern. e.g. wrt Luhmann vs commonplacing, in the Roam/Obsidian wave e.g. wrt open data around 2010 when there was little realisation of efforts by re-users to get to the PSI Directive, only the new wave of coders using the fact it existed.

      It's also a repeating pattern in generations. Open Space and unconferencing e.g. needs to be retaught with every new wave of people. The open web of two decades ago needs to be explained to those now starting their professional work using online tools.

      Spaced repetition for groups/society?

      In order to expand understanding what one is actually doing / building on.

      Doet me denken aan die '90s exchange student die me ooit vroeg of ik geschiedenis studeerde ipv elektro: ik legde bij alles ook het ontwikkelingspad uit.

  16. Jul 2022
    1. But it's not a trivial problem. I have compiled, at latest reckoning, 35,669 posts - my version of a Zettelkasten. But how to use them when writing a paper? It's not straightforward - and I find myself typically looking outside my own notes to do searches on Google and elsewhere. So how is my own Zettel useful? For me, the magic happens in the creation, not in the subsequent use. They become grist for pattern recognition. I don't find value in classifying them or categorizing them (except for historical purposes, to create a chronology of some concept over time), but by linking them intuitively to form overarching themes or concepts not actually contained in the resources themselves. But this my brain does, not my software. Then I write a paper (or an outline) based on those themes (usually at the prompt of an interview, speaking or paper invitation) and then I flesh out the paper by doing a much wider search, and not just my limited collection of resources.

      Stephen Downes describes some of his note taking process for creation here. He doesn't actively reuse his notes (or in this case blog posts, bookmarks, etc.) which number a sizeable 35669, directly, at least in the sort of cut and paste method suggested by Sönke Ahrens. Rather he follows a sort of broad idea, outline creation, and search plan akin to that described by Cory Doctorow in 20 years a blogger

      Link to: - https://hyp.is/_XgTCm9GEeyn4Dv6eR9ypw/pluralistic.net/2021/01/13/two-decades/

      Downes suggests that the "magic happens in the creation" of his notes. He uses them as "grist for pattern recognition". He doesn't mention words like surprise or serendipity coming from his notes by linking them, though he does use them "intuitively to form overarching themes or concepts not actually contained in the resources themselves." This is closely akin to the broader ideas ensconced in inventio, Llullan Wheels, triangle thinking, ideas have sex, combinatorial creativity, serendipity (Luhmann), insight, etc. which have been described by others.

      Note that Downes indicates that his brain creates the links and he doesn't rely on his software to do this. The break is compounded by the fact that he doesn't find value in classifying or categorizing his notes.

      I appreciate that Downes uses the word "grist" to describe part of his note taking practice which evokes the idea of grinding up complex ideas (the grain) to sort out the portions of the whole to find simpler ideas (the flour) which one might use later to combine to make new ideas (bread, cake, etc.) Similar analogies might be had in the grain harvesting space including winnowing or threshing.

      One can compare this use of a grist mill analogy of thinking with the analogy of the crucible, which implies a chamber or space in which elements are brought together often with work or extreme conditions to create new products by their combination.

      Of course these also follow the older classical analogy of imitating the bees (apes).

  17. Jun 2022
    1. What is color for?" And instead of telling you, I'll just show you. What you see here is a jungle scene, 00:02:08 and you see the surfaces according to the amount of light that those surfaces reflect. Now, can any of you see the predator that's about to jump out at you? And if you haven't seen it yet, you're dead, right? (Laughter) Can anyone see it? Anyone? No? Now let's see the surfaces according to the quality of light that they reflect. And now you see it. So, color enables us to see 00:02:32 the similarities and differences between surfaces, according to the full spectrum of light that they reflect. But what you've just done is in many respects mathematically impossible. Why? Because, as Berkeley tells us, we have no direct access to our physical world, other than through our senses. And the light that falls onto our eyes is determined by multiple things in the world, not only the color of objects, 00:02:56 but also the color of their illumination, and the color of the space between us and those objects. You vary any one of those parameters, and you'll change the color of the light that falls onto your eye. This is a huge problem, because it means that the same image could have an infinite number of possible real-world sources

      BEing journey 2 pattern detection

  18. May 2022
    1. DICER1 syndrome is a rare genetic condition predisposing to hereditary cancer and caused by variants in the DICER1

      GeneName: DICER1 PMCID: PMC7859642 HGNCID: Unavailable Inheritance Pattern: Autosomal dominant. Disease Entity: Familial pleuropulmonary blastoma (PPB), cervix embryonal rhabdomyosarcoma, multinodular goiter, nasal chondromesenchymal hemartoma, Ciliary body medulloepithelioma, Sertoli-Leydig Cell Tumor (SLCT), differentiated thyroid carcinoma, pituitary blastoma, pineoblastoma, cystic nephroma, Wilm's tumor and sarcomas of different sites including, amongst others, the uterine cervix, kidney and brain. Mutation: Germline Zygosity: Heterozygose Variant: No ClinVarID present. Family Information: No family outline Case: No specified information of patients included. CasePresentingHPO's: n/a CasePrevious Testing: n/a gnomAD: n/a Mutation Type: nonsense, frameshift, or splice affected.

    1. Pathogenic germline variants in DICER1 underlie an autosomal dominant, pleiotropic tumor-predisposition disorder.

      gene name: DICER 1 PMID (PubMed ID): 33570641 HGNCID: n/a Inheritance Pattern: autosomal dominant Disease Entity: benign and malignant tumor mutation Mutation: somatic Zygosity: heterozygous Variant: n/a Family Information: n/a Case: people of all sexes, ages, ethnicities and races participated CasePresentingHPOs: individuals with DICER1-associated tumors or pathogenic germline DICER1 variants were recruited to participate CasePreviousTesting: n/a gnomAD: n/a

    1. DICER1 syndrome is an autosomal-dominant,pleiotropic, tumor-predisposition disorder arisingfrom pathogenic germline variants in DICER1, whichencodes an endoribonuclease integral to processingmicroRNAs

      DICER1 is the gene name. PubMed ID, HGCNCID, and Variant: I can't find Inheritance Pattern: autosomal-dominant The disease entity: DICER1 syndrome The type of mutation: germline. Zygosity: not known. Family Information: a family was used, DICER1 carriers, and non DICER1 variant used, some of the family members had tumors from DICER1 Case Information: mean age is 34, the range of age is 18.6 to 43 years, male, and female used, ethnicity can't find Case Presenting HPO: cancer testing, chemotherapy, radiotherapy gnomeAD: 9.2,8.3.2 Mutation type: Pleiotropic, loss of function, missense

  19. Apr 2022
    1. DICER1 syndrome is a rare genetic condition predisposing to hereditary cancer and caused by variants in the DICER1 gene.

      Gene Name: DICER1 PMID:33552988 HGNCID: Unavailable Inheritance Pattern:Autosomal Dominant Disease Entity: familial pleuropulmonary blastoma (PPB),cystic nephroma, ovarian Sertoli-Leydig cell tumor (SLCT), multinodular goiter, cervix embryonal rhabdomyosarcoma, Wilms’ tumor, nasal chondromesenchymal hamartoma, ciliary body medulloepithelioma, differentiated thyroid carcinoma, pituitary blastoma, pineoblastoma, and sarcomas of different sites. Mutation: Nonsense, Frameshift<br /> Zygosity: Heterosygosity Variant:No ClinVar ID present Family Information:no diseases mentioned in family Case: no specified case in this article gnomAD: n/a Mutation type: Nonsense. frameshift

    1. The DICER1 syndrome is an autosomal dominant tumor‐predisposi-tion disorder associated with pleuropulmonary blastoma, a rare pediatric lung cancer

      GeneName:DICER1 PMID (PubMed ID): PMCID: PMC6418698 PMID: 30672147 HGNCID: NOT LISTED<br /> Inheritance Pattern: Autosomal Dominant Disease Entity: Cancer; benign and malignant tumors including pleuropulmonary blastoma, cystic nephroma, Sertoli-Leydig cell tumors, multinodular goiter, Thryoid cancer, rhabdomyosarcoma, and pineoblastoma. Mutation: Somatic missense variation Mutation type: missense Zygosity: None stated Variant: unregistered…. Family Information: Characterize germline variants in familial early-onset clorectal cancer patients; The observation of germline DICER1 variation with uterine corpus endometrial carcinoma merits additional investigation. CasePresentingHPOs: uterine and rectal cancers in germline mutation

  20. Mar 2022
    1. The URLPattern API provides a web platform primitive for matching URLs based on a convenient pattern syntax.
  21. Feb 2022
  22. Jan 2022
    1. I have a nice self-contained example of breaking up a big change here. I wanted to change the internal representation used throughout the compiler. Instead of trying to do it all at once, I made a parallel pipeline for the new version and built it out stage by stage while keeping the old version working. Once the new version was complete and produced the same results on all the tests I deleted the old version.
    1. <script> import { fibonacci } from './math.js'; $: result = fibonacci(n, 0); </script> <input type=number bind:value={n}> <p>The {n}th Fibonacci number is {$result.data}</p> {#if $result.loading} <p>Show a spinner, add class or whatever you need.</p> <p>You are not limited to the syntax of an #await block. You are free to do whatever you want.</p> {/if}
    1. Oh, I just figured out a workaround for my project, in case it helps someone. If you want the source of truth on the prop to come from the child component, then leave it undefined in the parent. Then, you can make the reactive variable have a condition on the presence of that variable. eg: <script> let prop; $: prop && console.log(prop); </script> <Child bind:prop/> Might not work for every use case but maybe that helps someone.
  23. Dec 2021
  24. Nov 2021
    1. https://archive.nytimes.com/www.nytimes.com/interactive/2009/09/04/opinion/20090908_opart.html?_r=0

      We recognize letters in reading much better by reading the top of letters rather than by reading the bottom of letters.

      As a result of this, closing the tops of letters properly is important in writing.

      An alternate method of holding one's writing instrument between fore-finter and middle finer with the thumb near the tip can alleviate forearm, wrist, and thumb pain.

  25. Oct 2021
    1. So if I just forward the cookie header (which contains the access-token), wouldn't that be just what I am not supposed to do. I mean what's the point of using 'HttpOnly' flag if I return the token to the client-side js on every request.
  26. Sep 2021
    1. Final lines of every stanza is a trimeter, which seems relatively shorter than the preceding lines of penta- and tetrameter. This differentiation creates an unusual and unexpected rhythms and draws readers attention to this final line, which contains the major (sole) motive of author for writing this poem, love.

    2. Metric pattern of The Canonization is:

      • Pentameter

      • Tetrameter

      • Pentameter

      • Pentameter

      • Tetrameter

      • Tetrameter

      • Pentameter

      • Tetrameter

      • Trimeter

        However, this pattern is not strictly kept throughout the poem. Since this poem is written in a conversational style between the speaker and his unknown (unseen) provoker, a certain degree of flexibility is accepted to make the poem sound like a natural conversation. For the same reason, there isn't a universal stress pattern in this poem. (Though one might read it in a iambic (da/DUM) rhythm, it would sound very unnatural in some line)

  27. Aug 2021
    1. # And standalone like a case:Qo.match(people.first, Qo.m(age: 10..19) { |person| "#{person.name} is a teen that's #{person.age} years old" }, Qo.m(:*) { |person| "#{person.name} is #{person.age} years old" })
    2. # How about some "right-hand assignment" pattern matchingname_longer_than_three = -> person { person.name.size > 3 }people_with_truncated_names = people.map(&Qo.match_fn( Qo.m(name_longer_than_three) { |person| Person.new(person.name[0..2], person.age) }, Qo.m(:*) # Identity function, catch-all))
    1. John Burn-Murdoch. (2021, May 27). NEW: B.1617.2 is fuelling a third wave in the UK, with not only cases but also hospital admissions rising. Vaccines will make this wave different to those that have come before, but it remains a concern, and one that other countries will soon face. Thread on everything we know: Https://t.co/4825qOqgrl [Tweet]. @jburnmurdoch. https://twitter.com/jburnmurdoch/status/1397995388267810818

  28. Jul 2021
    1. In the examples above, the number 42 on the left hand side isn’t a variable that is being assigned. It is a value to check that the same element in that particular index matches that of the right hand side.
  29. May 2021
    1. By contrast, in our work we have centred circumstances of cultural diversity and human relationships.

      I'm glad to see that we didn't retreat from the critical stance that we initially brought forward. Our perspective was that Kostakis et al. tended towards a 'provisionist' and paternalistic sort of development trajectory, a kind of neo-colonialism, even though they are pitching their work from within peer-to-peer and free software settings. The same issue could easily come up with patterns, i.e., if they are offered as the solution. Realistically, it's possible to read a lot of the patterns literature this way (including Alexander), regardless of what they say about adapting their patterns for local circumstances. The medium of print holds the more egalitarian process of pattern development hostage, and makes pattern authors seem much more arrogant than they ever intended to be! This is why we've focused on participatory processes of pattern development here. Furthermore we're not saying that this is an exhaustive treatment of that topic! Hopefully it is clear (though, if not, this will take more work) that what we're trying to develop is the opposite of 'provisionist' thinking. (BTW, for this term, Cf. Boud and Lee "‘Peer learning’ as pedagogic discourse for research education"

    2. Pattern language development can give us another way to think and talk about the “process of language development” that already goes on inside institutions

      This part could be relevant for thinking about 'pattern mining' and how to contextualise it. Consider the various situations where we run into a problem of language, i.e., where we don't have any language to talk about something that actually urgently matters to the parties involved. Things can either end badly there, or the parties can engage in a process of language development.

  30. Apr 2021
    1. colonial officials in Africa and
      • Colonialism in India affected colonialism in other places by leading by example
    2. hus, they destroyed anything that represent: the authority of the company:

      Very similar to the French Revolution, immense oppression boils to extreme revolution against everything

    3. it was the duty of the wealthy
      • Pattern: underprivileged groups convincing people in power (wealthy Indians) to support a cause for a reason (loss of religious practices) that is only one of the many reasons the underprivileged people support the cause (heavy taxation, loss of rights, etc.).
    4. the import of British
      • Putting a colonized nation in a trade deficit is a common pattern in imperialism (ex. the colonies and Britain)
    5. In return, the Mughal emperor would receive a hefty annual pension.
      • People originally in power in colonized territories striking a deal with the colonizers for their benefit is a common pattern
    6. rebels were tied to cannons and blown to bits to teach Indians a lesson in power

      Brutal punishment used to show colonized peoples who has the power

      • Reminds me of control tactics in slavery
  31. Mar 2021
  32. Feb 2021
    1. I think a better, more immediately understandable name for this concept would be command object, because it lets you pass around commands (or a list of commands) as objects.

      That's the only thing you really need to know abut this pattern. The rest seems like boring implementation details that aren't that important, and that naturally follow from the primary definition above.

    2. Uses
    3. The central ideas of this design pattern closely mirror the semantics of first-class functions and higher-order functions in functional programming languages. Specifically, the invoker object is a higher-order function of which the command object is a first-class argument.
  33. Jan 2021
    1. Popper for Svelte with actions, no wrapper components or component bindings required! Other Popper libraries for Svelte (including the official @popperjs/svelte library) use a wrapper component that takes the required DOM elements as props. Not only does this require multiple bind:this, you also have to pollute your script tag with multiple DOM references. We can do better with Svelte actions!
  34. Dec 2020
  35. Nov 2020
    1. With Lotus Notes, I can combine a hierarchically organized outline view of the documents, with full text searching, hypertext links and traditiona l relational database like reports (for example, a sorted view of items to do).

      What Lotus Notes allowed you to do is to combine a hierarchical organized overview, achieved through an outliner, with search, hyperlinks and relational-database-like reports. Lotus Notes also allowed you to organized different document formats (Word, emails, etc.)

    1. Alexanderproposeshomesandofficesbedesignedandbuiltbytheireventualoccupants.Thesepeople,hereasons,knowbesttheirrequirementsforaparticularstructure.Weagree,andmakethesameargumentforcomputerprograms.Computerusersshouldwritetheirownprograms.KentBeck&WardCunningham,1987 [7]

      Users should program their own programs because they know their requirements the best.

      [7]: Beck, K. and Cunningham, W. Using pattern languages for object-oriented programs. Tektronix, Inc. Technical Report No. CR-87-43 (September 17, 1987), presented at OOPSLA-87 workshop on Specification and Design for Object-Oriented Programming. Available online at http://c2.com/doc/oopsla87.html (accessed 17 September 2009)

    2. Before the publication of the ‘Gang of Four’ book that popularised software patterns [4], Richard Gabriel described Christopher Alexander’s patterns in 1993 as a basis for reusable object‐oriented software in the following way:Habitabilityisthecharacteristicofsourcecodethatenablesprogrammers,coders,bug­fixers,andpeoplecomingtothecodelaterinitslifetounderstanditsconstructionandintentionsandtochangeitcomfortablyandconfidently.

      Interesting concept for how easy to maintain a piece of software is.

    1. Connected to this are Andy Matuschak’s comments about contextual backlinks bootstrapping new concepts before explicit definitions come into play.

      What Joel says here about Contextual Backlinks is that they allow you to "bootstrap" a concept (i.e. start working with it) without explicit definitions coming into play (or as Andy would say, the content is empty).

    2. Easily updated pages: don’t worry about precisely naming something at first. Let the meaning emerge over time and easily change it (propagating through all references).

      Joel highlights a feature here of Roam and ties it to incremental formalisms.

      In Roam you can update a page name and it propagates across all references.

    3. Cognitive Overhead (aka Cognitive Load): often the task of specifying formalism is extraneous to the primary task, or is just plain annoying to do.

      This is the task that you're required to do when you want to save a note in Evernote or Notion. You need to choose where it goes.

    4. The basic intuition is described well by the Shipman & Marshall paper: users enter information in a mostly informal fashion, and then formalize only later in the task when appropriate formalisms become clear and also (more) immediately useful.

      Incremental formalism

      Users enter information in an informal fashion. They only formalize later when the appropriate formalism becomes clear and/or immediately useful.

    5. It’s important to notice something about these examples of synthesis representations: they go quite a bit further than simply grouping or associating things (though that is an important start). They have some kind of formal semantic structure (otherwise known as formality) that specifies what entities exist, and what kinds of relations exist between the entities. This formal structure isn’t just for show: it’s what enables the kind of synthesis that really powers significant knowledge work! Formal structures unlock powerful forms of reasoning like conceptual combination, analogy, and causal reasoning.

      Formalisms enable synthesis to happen.

    1. Systems which display backlinks to a node permit a new behavior: you can define a new node extensionally (rather than intensionally) by simply linking to it from many other nodes—even before it has any content.

      Nodes in a knowledge management system can be defined extensionally, rather than intensionally, through their backlinks and their respective context.

  36. Oct 2020
    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.
    6. However, after solving this problem a few times, a pattern appeared.