home.social

#tracery — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #tracery, aggregated by home.social.

  1. #tracery and #botmaker peeps, I have a question
    how do it get it to select two (or more) items from a list with no repeats?
    often, something like:
    "origin":["I like #animal.s# and #animal.s#"]
    "animal":["cat", "dog", "rabbit", "fish", "llama"]
    will come up with "i like cats and cats"
    which is stupid

  2. I have made a thing today: a cross-over between #blockly and #tracery !
    Code is available at github.com/loic-fejoz/blockly- but more importantly, you can directly use it in your browser. Follow the README to see an example.
    So many years after discovering @galaxykate , I can build on her ideas. Eventually it may even fly in a satellite!

  3. #HowToThing #030 — Procedural, rule-based & stochastic text generation using a custom DSL, parse grammar (via thi.ng/parse) and abstract syntax tree transformation (via thi.ng/defmulti).

    Since it's #NaNoWriMo & #NaNoGenMo [1], I'm closing out this first season of 30 #HowToThing's with a related topic & maybe someone even finds it useful/interesting... 😉🤷‍♂️

    This example is in principle inspired by @galaxykate's oldie & goodie #Tracery, but is using a super simple custom text format instead of JSON to define variables and template text. Variables are expanded recursively and I've also added features like dynamic, indirect pointer-like variable lookups to derive variables based on current values (useful for conditionals & context-specific expansions), hidden assignments, chainable modifiers... I've included 5 different "story" templates (incl. comments) showing various features. Just press "regenerate" to create new random variations...

    Similar to the previous #HowToThing, I'm hoping this example also shows that approaching use cases like this via small domain-specific languages with proper grammar rules, does not require much ceremony and is often more amenable to change during prototyping (and later also more maintainable!) than just regex bashing approaches...

    The parser grammar itself is explained in the thi.ng/parse readme. As usual, the grammar was created/prototyped with the Parser Playground[2], which we developed from scratch during the first thi.ng livestream[3] (2.5h video)...

    Demo (example project #145):
    demo.thi.ng/umbrella/procedura

    Source code:
    github.com/thi-ng/umbrella/tre

    If you have any questions about this topic or the packages used here, please reply in thread or use the discussion forum (or issue tracker):

    github.com/thi-ng/umbrella/dis

    [1] github.com/NaNoGenMo/2023/
    [2] demo.thi.ng/umbrella/parse-pla
    [3] youtube.com/watch?v=mXp92s_VP4

    #ThingUmbrella #NaNoWriMo2023 #NaNoGenMo2023 #ProcGen #Generative #TextGeneration #Ngram #TypeScript #JavaScript #Tutorial