Typescript 2023-10-08

09:08:32

09:08:32 From Ward Cunningham curl -s http://search.fed.wiki.org:3030/scraped.json

09:08:39 From Jeff Miller jq!

09:09:11 From Paul Rodwell https://jqlang.github.io/jq/

09:09:24 From Brian Marc, my chicken coop got priority this weekend, so haven't gotten back to your site yet.

09:10:50 From Ward Cunningham jq -r '.[]|select(.[2]<1)|.[0]' | grep viki | wc -l curl -s http://search.fed.wiki.org:3030/scraped.json | jq -r '.[]|select(.[2]>1)|(1696779388888-.[2])/1000/60/60/24/30 |floor' | sort -nr | uniq -c | perl -anE 'print $F[1], "\t", $F[0], "\t", "|"x$F[0], "\n"'

09:14:33

09:14:33 From Jeff Miller crunch crunch crunch a histogram generator

09:15:46 From Jeff Miller <3 "what we have in common" among schools of aikido (thematically important for kung fu as well) beginner kung fu was "here, let's learn basic forms from six different schools" (Eric talks about his experience at an aikido meetup)

09:16:56 From Jeff Miller a diversity of training and practice, and also what we have in common similar themes among fedwiki's chorus of voices and perspectives, and aikido

09:17:45 From Brian [e]bike it.

09:17:45 From Jeff Miller makes a difference if you have a walking buddy (biking is a thing I can do) oh that's interesting

09:18:56 From Jeff Miller what is walking to a person, is it wandering or is it focused striding to make distance at speed [I actually don't have good walking shoes right now, which is a strange thing for me] shoepub brewpub "first round sponsored by [shoe company]"

09:20:47 From Jeff Miller bicycle groups are a thing as well - sorting for bicycle groups that are welcoming to non-model bodies, non-high-speed cadences Indiana Dunes? hm making the sand faintly warmer

09:23:27

09:23:27 From Jeff Miller https://en.wikipedia.org/wiki/Great_Sand_Dunes_National_Park_and_Preserve

09:23:59 From Eric Dobbs Here’s how the National Park Service explains it: https://www.nps.gov/grsa/learn/nature/sanddunes.htm

09:28:05

09:28:05 From Brian We need our moon based telescopes.

09:29:40 From Jeff Miller how you gonna send a grad student to swap out the instrument on a moon based telescope? (me = the grad student, once upon a time, using a bicycle pump to fill the CCD dewar with liquid nitrogen)

09:30:15 From Brian Well, there is a moon base and they are living there...

09:30:34 From Jeff Miller so they get to build instruments out of stone knives and moondust? :( kind of like running everything off a seafloor base, but less pressure differential also the grad students will have drama, and there's no where to go

09:31:44 From Brian Jeff, https://www.preposterousuniverse.com/podcast/2023/07/17/243-joseph-silk-on-science-on-the-moon/

09:31:50 From Jeff Miller time for a marketing demo, load up the database! a Gerard K O'Neill style argument moon is not for people who need to install and operate the instruments not great for people

09:33:18 From Jeff Miller (was just reading Wil McCarthy's "Poor Man's Sky" about construction labor in space and on the moon)

09:33:47 From Brian A lot would be done by robots...

09:33:50 From Jeff Miller hahaha AI assisted augmented stats for baseball? right, basically large bits of astronomy are going the way of particle physics

09:34:22 From Eric Dobbs Gonna disconnect for a minute. I’ll be back in a few.

09:34:24 From Jeff Miller need to join up with a huge team

09:36:24 From Jeff Miller part of the ongoing theme of being a student of planetary astronomy was that the human space program's cost overruns would be made up by givebacks from already-awarded research grants

09:37:46 From Jeff Miller so although I really like the idea of humans in space for a number of um, longtermist reasons? the individual arguments in the short term are kind of eh. Disappointingly.

09:38:53 From Jeff Miller (discussion of different slide / presentation automation platforms and techniques, like PowerPoint)

09:38:53 From Brian I'm so turned off of long-termism right now. We need to table longtermism for 1000 years and take care of the short term for a while and get that under control.

09:39:26 From Jeff Miller right, not impressed by the folks who went deep there, they ended up getting caught by philosophical word traps definitely a Truman sort of person: "show me"

09:40:35 From Brian Guess I'm showing my age, but really dislike mural boards... I've had much better success with shared power points or the whiteboard feature in Jitsi.

09:41:05 From Jeff Miller Miro boards, yeah I should try out Jitsi whiteboards sometime

09:41:52 From Brian Last time I used gather town, people basically clumped into two conversations...

09:41:54 From Jeff Miller (collaborative workboards over the internet, like Gather dot Town0 n ~ 30 people, like an Open Space (to Ward's suggestion of a good number for a gather town grouping)

09:43:09 From Brian 2nd life had too much in common with NTFs...

09:44:20 From Paul Rodwell https://en.wikipedia.org/wiki/Animal_Crossing

09:44:34 From Brian I'd guess that animal crossing is targeted towards tablets.

09:44:37 From Jeff Miller ACNH animal crossing new horizons; very like Second Life with islands. have your friends come visit during the early pandemic

09:47:53

09:47:53 From Jeff Miller Ward demonstrates Search Script Annotations Search Script Annotations are represented as a sequence of actions in the scripts, cron.sh and scrape.rb and rollup.rb

09:49:16 From Jeff Miller http://search.dojo.fed.wiki/view/federation-search-explained/view/search-services showing a roster-like view of activity on the Search Services page, which is an active declaration, like a specification, of federation searching, with a view into sites with recent activity.

09:50:43 From Jeff Miller Search Nodes and Relations as a reference for how the pieces of Federation Search work, how scripts coordinate how scripts and subscripts collaborate, how an invocation provides context (like output) such that the output location depends on the invocation rather than the output depending on the sub-script.

09:51:44 From Jeff Miller a subscript is invoked with context the invocation with context helps clarify the dependency of information flow, more than the script itself "I don't record how old the site is when I read them, so let me go ahead and run a program that does that!"

09:53:12 From Jeff Miller http://search.dojo.fed.wiki/view/federation-search-explained/view/search-services/view/search-nodes-and-relations "Let me write that out to nail it down." - Ward when it's fun writing a spec!

09:53:54 From Paul Rodwell Loosely related to earlier sand dunes discussion, White Sands in this case, https://t.co/s8jIBuluhY

09:53:59 From Jeff Miller an example: when I saw 35-40 missing sites due to erroring out when I visualized it it was easy to track them down; I could then exclude permanently closed sites, and perhaps for Glitch, I give them some extra time for warm-up.

09:55:22 From Jeff Miller Eric observes: maybe there's something I can put into the indexable results to clue in Federation Search that a site is a Glitch site and is likely to be a slow starter. Ward observes: "I remember what went wrong when I try to index a site; here's an example of the history of trying to index a Glitch site, and if I get six hits out of twenty-eight, maybe that's fine to get timeouts."

09:57:06 From Jeff Miller Eric suggests that perhaps a site which is observed to time out frequently could be adjusted in its search profile to wait longer during a scrape.

09:58:27 From Jeff Miller Ward thinks: hmm, maybe a prewarming phase, ping the Glitch sites before the search and then start the scraping job? Eric thinks: hmm, maybe the behavior could either be generic (exponential backoff)? or could be adaptable to observed behavior.

10:01:54

10:01:54 From Jeff Miller Ward's process on federation search:
1. it was getting too long to run a full scrape;
2. I wanted the search index to be fresher;
3. so I started investigating the behavior of what things were slow;
4. and built a tool to examine the behavior of the sites being searched, when we were scraping them;
5. the effect of the visualizing tool was interesting in itself, I like to look at it.
6. and I have made changes which speed up the search, according to the purpose of the work, to freshen up the search for activity

10:03:03 From Jeff Miller also the tool makes it easier to get a sense of what's going on during the scrape, which also helps get a sense of what sites are most active for changes, ones that show up frequently on the scrape visualization this sounds like it could be a Jonathan Swift satire toolmakers trying to perfect their art

10:04:19 From Brian To some degree, I think that summaries the current Red vs Blue discourse...

10:04:42 From Jeff Miller Eric observes: Cook (practicioner) vs. Woods (academic)

10:06:16 From Jeff Miller Richard Cook x David Woods (Ohio State) https://www.researchgate.net/publication/276139783_Four_concepts_for_resilience_and_the_implications_for_the_future_of_resilience_engineering "Four Concepts for Resilience and the Implications for the Future of Resilience Engineering"

10:08:15 From Jeff Miller I recalled Five Days at Memorial as a story that spoke to the concepts of resilience that Woods was trying to distinguish, including the "what previous history helps a system be resilient".

10:09:05 From Brian That is where understanding the various growths: factorial, combinatoric, exponential, polynomial, linear etc and what assumptions or conditions/constraints can be used to keep you out of a higher growth space. And also really understanding how big n needs to be before you need to worry too much about this scaling...

10:10:04 From Jeff Miller Marc describes a systems engineer -- we'll work on how to integrate OPM into our work, that was Friday. E F Schumacher "Small is Beautiful" https://en.wikipedia.org/wiki/Small_Is_Beautiful "a study of economics as if people mattered"

10:10:50 From Paul Rodwell https://en.wikipedia.org/wiki/E._F._Schumacher

10:11:37 From Jeff Miller British economist; a set of successors in Britain, and the Schumacher institute in the US.

10:11:55 From Paul Rodwell https://schumacherinstitute.org.uk/

10:13:07 From Jeff Miller (looks like the UK, thank you for the correction)

10:15:01 From Jeff Miller https://schumacherinstitute.org.uk/wp-content/uploads/2021/11/Home-page-quadrants-.jpg "expanding or contracting resource use; increasing or decreasing equality"

10:16:19 From Jeff Miller https://campus.dartington.org/schumacher-college "Schumacher College for ecological studies at Dartington" Eric demonstrates some code, "frame.js"

10:17:32 From Jeff Miller It's a javascript plugin for the wiki client front end.

10:18:52 From Jeff Miller "frame.js" has frameListener(event) which receives events, which can be used to let frames see and interact with each other's states

10:20:02 From Jeff Miller "event" is a message, it's a conventional web browser event with DOM objects attached; we have a convention of setting wiki context on the event before sending it const {action, keepLineup=false, pageKey=null, page=null, pages={}, title=null, site=null} = data; // a Javascript destructuring assignment

10:21:07 From Jeff Miller action is the required property of event the other properties are conventional for wiki client frontend events but not required "About Frame Integrations" page conventional messages supported by the frame to its parent

10:22:35 From Jeff Miller messages in "About Frame Integrations" open an existing page, open a remote page, create a ghost page, import many pages with an importer, send frame context, resize to frame content "if I request frame context, I need to set up a listener for sendFrameContext to get the reply" an async protocol

10:23:43 From Jeff Miller "it'll be the lineup info instead of just the page info, coming back as the async message" This explains why I switch on action name, the listener might catch different message types by action. (Eric's explication of the frame.js code continues)

10:25:28 From Jeff Miller event.source.postMessage({action: "lineupData", lineupData}, "*"}

10:26:56 From Jeff Miller so why am I saying lineupData specifically? it's because "lineup" is a concept in the wiki client. I don't want to convey to someone who understands the lineup to be an object in the client which can receive messages, to be confused that "lineup" means data here and means "an object with methods" over there; that's why this is "lineupData".

10:27:12 From Brian away for a few minutes.

10:27:22 From Jeff Miller Eric opens "lineup.coffee" which is the CoffeeScript definition of the Lineup object. "I could get the keys using the Lineup's state using debugKeys - but that looks into the internal state; instead I send a message that gets a response, rather than exposing something that's listed as a debug function."

10:28:53 From Jeff Miller Every page in the wiki lineup has a class named Page, so I could ask the document for all of the pages (as a DOM query). document.querySelectorAll(".page") // Ward comments that this is a jquery idiom

10:30:44 From Jeff Miller "Since querying the DOM is a jquery idiom, and had some complications in it; instead we moved things from the DOM into client objects such as the lineup, making those the place where state interactions happen, not using jquery queries as the way of exchanging information."

10:31:45 From Jeff Miller Eric says: d3 ("data-driven documents") idioms are more directly structured with the DOM as output and with d3 / Observable objects as mediators for changes. Jeff muses: "mediator pattern? is D3 arranged around the mediator pattern?"

10:33:17 From Jeff Miller Eric says: so I'm responding to this request from six months ago; how do items within the lineup know what's in the lineup? How can a frame script interact with the lineup gracefully?" Eric says: a NodeList (result of querySelectorAll()) cannot be used as a Mappable, but I can convert the NodeList to a javascript array and can map a function over each of the items resulting from querySelectorAll (the pages from the lineup)

10:35:22 From Jeff Miller Eric says: we put data on the stuff on the div elements, we can then send the data on the page items that we got from the query, that look like pages in the lineup; the results of my query and map over the page data is something which a frame script could use to operate on the lineup.

10:36:45 From Jeff Miller Eric says: this raises questions on what do the frame scripts really want, beyond a simple list of the pages and their data. But before that, let's go ahead and implement the "get the lineup, turn it into an array of page data items, convert the data structure and pack it into a reply of lineupData..."

10:38:12 From Jeff Miller to Ward's question: (Eric): I'm taking the "data" field and renaming it to "page", as part of the destructuring binding of the page data in the query and calling it "page"; that's useful in Javascript where it doesn't clobber something called "data" in the local context. excerpt of code

10:39:14 From Jeff Miller "jQuery is using some shorthand alternative aliases for selectors here" "all the other places, we use $ to wrap the element; now I'm using the explicit window.jQuery because that felt right today, but different from how we used $ previously"

10:41:24 From Jeff Miller .map(el +> { const {key, data: page} = window. jQuery(el).data(); return {key, page} } "maybe that answers my question, I call it pageKey here" - it's not just "key" because you need the context of it, it's an index into the lineup

10:43:01 From Jeff Miller "the native data structure of the lineup is not an array, but maybe there's a sortable array by what the order of the pages is, left to right..." "We anticipate framed content needing information to facilitate collaboration with the wiki client..." (describing the data structure including pageKey)

10:44:29 From Jeff Miller Ward observes: there's probably information in the DOM that would be useful to have in the lineup data for the page data, for example if the page is a particular color, is it remote, is it a ghost page, etc.

10:46:27 From Jeff Miller Ward says: "I don't think you can have a remote ghost page" (a ghost page exists in the client, without needing to have a particular binding to a saved page; a fork will attempt to create/update the named page, if writing is possible; if writing fails the ghost page becomes a yellow [browser-local] page)

10:47:53 From Jeff Miller Eric also reflects on plugin documentation pages as an interesting particular

10:48:51 From Robert Best Would be neat to be able to specify active page in a link, so when shared with someone, they are shifted there when they land on the page.

10:49:15 From Jeff Miller also the "recycler page" is distinctive in an interesting way from the wiki content pages

10:49:16 From Robert Best Could you add it to a new page and do like a reverse image lookup with the hash through the commons folder? :P

10:50:11 From Ward Cunningham http://glossary.asia.wiki.org/view/how-wiki-colors-move

10:50:29 From Jeff Miller Thanks Ward! Google Search was defeating me

10:52:12 From Jeff Miller http://glossary.asia.wiki.org/view/how-wiki-colors-move/view/halo ("Halo" has the text version of How Wiki Colors Move) Eric reflects on local plugin development workflow, including managing assets

10:53:18 From Jeff Miller "I have both a dev and a deploy local wiki"

10:54:46 From Jeff Miller "I save the wiki client into the assets folder, and use the assets folders as source for custom npm packages, served from assets, to manage the state of the plugin when I'm developing and iterating on it."

10:56:26 From Jeff Miller "The part in my head that's not in my notes should be made explicit, why there's apparent duplication in the Local Plugin Development page incantations. The npm command installs from the assets folders served via http://dev.localhost/assets/packages"

10:58:23 From Jeff Miller "This is where I install the plugin client, by name and tag, into the assets folder; this is where I use assets served to NPM using a local wiki server."

10:59:40 From Paul Rodwell If you are have test wiki install, and the repos along side each other, you can do something like `npm i $(npm pack ../../../wiki-server -1)`

11:00:17 From Jeff Miller Eric says: I worked on the calendar and method plugins earlier, and I worked on the Frame plugin quite a bit; because I've worked on multiple plugins, I want my instructions for preparation to be general across plugins; I'm familiar with runbooks, which often read as a do this command but change the name; and I can have the bash shell to do variable interpolation, that makes it closer to a script for configuration and deployment." Eric is describing the template scripts in "Local Plugin Development" which include binding and interpolation of things, like which source control tag and which plugin name

11:01:36 From Jeff Miller and following those bindings, a set of commands setup the wiki instance for development work zsh (a recent choice for the default user shell on MacOS) zsh command-line history is nice in particular ways

11:03:48 From Jeff Miller Eric says: now I'm second-guessing my own installation instructions. Looking at the git diff, I see I was hacking on the graphviz plugin using a file-based URL rather than the dev.localhost npm provider, so I don't always follow what was written down.

11:05:45 From Jeff Miller Eric demonstrates how to look at the shape of the filesystem, to see if it matches expectations of the instructions; OK, "npm install $PKG", it's actually in the '.data' folder and not in the './data' folder! Eric revises Local Plugin Development to simplify the steps. "I still like the plugin part... let's go back to plugin/frame ...".

11:07:37 From Jeff Miller "This incantation avoids setting a version to one that has a git tag, and npm wants to know you're serious about not wanting a tag version." npm version prerelease --prid=wip --force --no-git-tag-version argh npm version prerelease --preid=wip --force --no-git-tag-version "you might not be able to follow these instructions unless you have the same filesystem layout"

11:09:34 From Jeff Miller "Now I've pulled upstream changes -- not in my written instructions -- to develop my plugin changes against the current wiki package versions."

11:11:02 From Jeff Miller Eric notes that a zsh feature, part of command-line editing, is that zsh will interactively substitute the literal value of a variable like $PKG with its value, so that you can see that it's a package tagged "wip" off the filesystem. "You can see that it has all the packages for wiki plugins from github, but the one we're working on, the frame plugin, is bound to the local copy."

11:12:27 From Jeff Miller I have some pages sitting on the filesystem as test data.

11:13:56 From Jeff Miller Jeff: "what does plugmatic look like in a local dev wiki?"

11:15:16 From Jeff Miller Eric looks at Plugmatic, "it works, and shows the plugin versions; but I started it as a non-admin user"

11:16:42 From Jeff Miller Eric demonstrates a page with a green halo "About Frame Source", and "Discover both Dimensions and Limits" "If I hover over the lines in About Frame Source, then it reorients the diagram in Discover Both Dimensions and Limits according to what data I am hovering over"

11:18:54 From Jeff Miller "Here is my Left Frame and Right Frame example" - the Left Frame sends random points, or a stream of random points; the Right Frame has a listener which draws a line in a continuous pen-down mode according to the single point or stream of points.

11:19:57 From Jeff Miller Frame Test Case, "give the frame access to the hosting page json", let's look at the frame script asset, accept-greeting.html

11:21:17 From Jeff Miller the frame script shows up as "not quite blank" text rendered into a wiki page, but contains Javascript listeners for handling frame events So when I accept a greeting now, I add something that looks for the lineupData message action.

11:22:22 From Jeff Miller and when I get the lineupData, I remove the listener that was expecting that data

11:22:46 From Brian My funny observation is how this is interesting, yet I have no interest in the front end development part of that stack. :)

11:22:56 From Jeff Miller "an array, [ {pagekey, page} ]"

11:23:22 From Brian I'm also wondering if there is opportunity for some Vue or similar templates for some of these things to simplify some kinds of plugin development.

11:23:23 From Jeff Miller Brian: I keep thinking I'm not a frontend dev, but probably I'm a hyper-low-complexity frontend dev.

11:24:22 From Brian I rely on static type checking at compile time, so untyped/runtime frustrates me (a bit irrationally).

11:24:22 From Jeff Miller "Death to all frameworks!" bc dependency hell; but Eric's demonstrations seem accessible enough to endorse my notion of the browser + inspector as a new app dev platform all by itself. Eric watches the server log and the console to see if the lineup data arrives.

11:25:36 From Jeff Miller "Are you running the right version of the script?" "OK, yes, that's the right particular version."

11:25:45 From Brian Very cool to see this sort of "pair programming" going on though,

11:26:16 From Jeff Miller Eric says: "ah, I haven't installed it as a handler, I probably need to do a thing like window.addEventListener("message", handleLIneupData) " aha, yes!

11:26:22 From Brian There used to be a WC# craze...so Eric has a 0 or 1 now, if he didn't before. :)

11:27:20 From Jeff Miller (he did before; I paired on the federation Java command-line explorer, which was its own very spare view of a lineup and navigation)

11:28:01 From Brian commit in your dev branch!...

11:28:02 From Jeff Miller Look in the console! There's lineupData, are there three pages? yes! Let's look at the lineupData in the console, we now have a test case for the lineupData protocol.

11:29:32 From Jeff Miller Ward observes: "we reviewed all the lines of code that you were talking about, and maybe it was an hour total to get this up and alive, it takes a while to get back in sync, but that gives you some sense: it takes about an hour, coming in cold, to add capability to a plugin." Eric observes: "my code didn't actually need to change, other than a little renaming for clarification; the testing was more difficult than the implementation."

11:30:48 From Brian You're setting up to have a "file explorer" type view...

11:30:54 From Jeff Miller Eric observes: "with Ward as the customer of the lineup data, that helps me understand what additional data, like what the color (halo) is; so now I can explore what the right API is for a frame script which wants the lineup." Eric observes: "what are things which I do as an occasional plugin author, what are ways to put myself back in context, what is present in the console, etc."

11:31:53 From Brian It would have taken me a full week to get to that point, with my lack of familiarity of JS, NPM, fedwiki plugins, etc...

11:32:47 From Jeff Miller Ward observes: "anyone could have written this plugin, this behavior which adds new capabilities to the Frame plugin, but the demo was really particular to the tools and the ways that you were able to be successful, about npm, about zsh, about restructuring assignments."

11:33:14 From Paul Rodwell the site for the page is non-obvious, either from location(), or looking at where the flag is from. but that doesn’t cover everything like `plugin`

11:34:10 From Jeff Miller Pete observes: "java is the new COBOL, a lot of production software..."

11:34:19 From Brian The v8 engine is world class work of art.

11:35:28 From Jeff Miller Ward observes: I have a Deno script which reads radio data from a websocket, and restarts whenever the websocket breaks; but a power failure kills the script without an obvious restart; so I wrote a little script that tries every minute to check if my Deno script is running. So how do I run it again? If I run it from my terminal, it works great, but from a cron, it doesn't work well.

11:36:05 From Brian Looks like "Automator.app" will run scripts after login. or use launchd with launchctl

11:37:15 From Brian I've not done it on mac, just what the webscraping is showing...

11:38:20 From Jeff Miller Jeff observes that the MacOS cron is fake cron over its own automation framework.

11:38:25 From Brian I bet the system service is running in it's own environment, so have to set that up in a service configureation thing.

11:39:04 From Jeff Miller (discussion of ways to find things, what is the environment)

11:40:18 From Brian wifi on the boat...lol.

11:40:30 From Jeff Miller streaming from under the water :) (Pete's trip to Hawaii)

11:41:18 From Brian Big Island used to be pretty ag oriented...but last 20 years, has a lot more tourism too... All the tiny holes in the wall are gone or turned commercial, like Kona Brewing.

11:42:36 From Brian We could have a discord fedwiki server...

11:43:50 From Brian according to Wolfram Alpha or ?

11:43:55 From Paul Rodwell can’t say “1 before 10”

11:44:20 From Brian 42 = "The answer to everything"... 2^7-1

11:45:54 From Brian suc(suc(suc(….(0))) 1 based....

11:47:16 From Jeff Miller (a Discord game about counting)

11:49:38 From Brian That should run in a sandbox...

11:50:23 From Jeff Miller a discussion about local development workflow; can we have a plugin sandbox? is there a container that it could talk with?

11:51:32 From Jeff Miller Pete describes "podman" as the successor to Docker, which has a read-only version of an operating system, which can be augmented.

https://podman.io/ You can dispatch a command to a Podman sandbox

11:52:38 From Brian If you are messing with the "data" part, that wouldn't necessarily be part of the container, so could be messed up unless you've copied the data.

11:52:44 From Jeff Miller (Is that something we'd like as a server-side wiki plugin, which might create an isolated instance of wiki for development, which could then generate a pull request as part of the workflow?)

11:53:53 From Jeff Miller "flatpak", a cross-OS packaging mechanism which isolates versions of dependencies

https://docs.flatpak.org/en/latest/under-the-hood.html https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/ (built on Podman)

11:55:58 From Jeff Miller Toolbox on GitHub: https://github.com/containers/toolbox "interactive command-line environments for development and troubleshooting the host OS without having to install software on the host" NixOS also has a mechanism for temporarily installing software (within a shell session).

11:57:42 From Jeff Miller "run a server within your browser" as an alternative way of isolating a temporary dev version

11:59:25 From Jeff Miller Ward considers plugins which can pull in variants, like "take this Coffeescript, compile it and bring it in" or "take these pages and install them in browser-local storage". You could demonstrate that you have a production-ready plugin in this sandbox. Brian asks for some perspective and context.

12:01:11 From Jeff Miller Ward says: starting from Eric's workflow for package development, using shell scripts to create a version of the wiki client and deploy it for testing, is there a more general way of hoisting a safe development environment "maybe we could fully develop a plugin in a browser-hosted environment"

12:02:40 From Jeff Miller Some of the current experiments with wiki are browser-centric, like Progressive Web Applications; but plugin development adds enough of a distinct case to make it worth looking at. What if the plugins need to interact with the environment? What do we need to bring in? Pete says: if it's npm-installable, and doesn't depend on filesystem or external binary libraries, you could bring it into the browser.

12:04:41 From Jeff Miller Brian says: my experience trying to migrate wikis from the public access side, considering assets, makes me think about how we can make more of that accessible.

12:05:56 From Jeff Miller Ward and Paul discussed a question about adding behavior to the Assets plugin to provide automation hooks; one of Paul's suggestions was "we could provide a tar archive if the assets" - maybe this would be sufficient for Marc's purposes.

12:06:24 From Paul Rodwell thinking about tar, I notice that node has zip built in, so zip might be a lot easier.

12:06:46 From Jeff Miller Brian says: yes, mostly the way that the assets in Marc's wikis are present; you don't want your assets folders to become a generic fileserver for everyone. an embedded tar file for migration would be pretty compelling as a federation capability what's the use case for "moving my wiki to another server and federating from there?"

12:10:07

12:10:07 From Jeff Miller Ward considers different ways to afford migration when starting with one host and then re-hosting. Brian observes that editing the journals of pages with 'sed -i' helped in localizing the history into the newly migrated host.

12:11:39 From Jeff Miller Ward suggests: what would a Power Assets plugin look like? what would be the use cases which could support Marc's workflows?

12:13:11 From Jeff Miller Ward considers a "rent to buy" model for orgs who want to export a working neighborhood / a working wiki farm to be managed by that organization?

12:14:15 From Jeff Miller Brian considers: what is the lifecycle of a given fedwiki? what are ways you could take the same content and reorganize it for a purpose? what if the particular wiki records a project or a job, what is the "finished" state of that project or job? do I export using a static site creator?

12:16:10 From Pete DAT now Hypercore https://dat-ecosystem.org/

12:16:23 From Paul Rodwell https://docs.holepunch.to/

12:16:29 From Pete https://github.com/beakerbrowser/beaker/blob/master/archive-notice.md

12:17:10 From Jeff Miller Ward suggests: Paul designed a way of exporting wiki to DAT / Hypercore format, but it hasn't been stable as a format.

12:19:58

12:19:58 From Jeff Miller Ward considers the history of Assets in FedWiki.
At first it was a server-side "where do we put stuff?"
It opened up doors for facilities like frame scripting, but also opened up trouble in the old sense of the Web being difficult to compose.
It was a door out of embedding images in the Javascript story, which did not scale well for the journal.

12:20:09 From Paul Rodwell An alternative would be https://earthstar-project.org one of the future things there is identity with capabilities.

12:22:21 From Jeff Miller Brian considers some of Marc's pages, which begin with a dash ; it can mess up your glob operator by being misinterpreted as a flag instead of data for the command. (discussion of page names, slugs as canonical page references, embedded whitespace in page titles) https://en.wikipedia.org/wiki/Use%E2%80%93mention_distinction

12:23:44 From Jeff Miller Cheese is a food. / "Cheese" is a word.

12:25:29 From Jeff Miller Ward and Brian will consider migration cases together, and learn from what Marc's cases need. or like a Microsoft enterprise service, "Power ~".

12:28:10

12:28:10 From Paul Rodwell Brian, some of the scripts load modules from the assets folder, so there will be some assets that are not referenced in the pages.

12:28:58 From Jeff Miller "if an asset is not mentioned by a page, is it needed?" / "when an asset is only mentioned by a frame plugin, then it isn't really mentioned by a page, even if I can pretend the asset plugin exists by recovering the page from the journal, and dropping the updated version into the ghost asset page" (Ward's discussion of managing assets)

12:30:27 From Paul Rodwell https://git-lfs.com/

12:30:48 From Jeff Miller Eric observes: 'git' has different conventions for large binary assets, versus text which can be version controlled by diffs of thext. When Microsoft started using GitHub, they contributed a facility for asset management where there's a pointer from a tag which exists in the main Git repo."

12:32:18 From Jeff Miller Brian observes: a flat "wget" of all the assets in Marc's wiki might end up clobbering the same named asset which has different versions in different assets subdirectories. hmm names as a hash bucket with side chaining?

12:35:50

12:35:50 From Brian Thank you Eric! and everyone else. too.