import thisHtml from './links.html'; import commonCss from '../web1-common.css'; import thisCss from './links.css'; import stylesCss from '../../../styles.css'; import rootCss from '../../../root.css'; import { extractErrorMsg } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs"; import { IbGibAddr } from "@ibgib/ts-gib/dist/types.mjs"; import { GLOBAL_LOG_A_LOT } from "../../../constants.mjs"; import { Web1ComponentInstanceBase, Web1ComponentMetaBase } from "../web1-component-base-one-file.mjs"; const logalot = GLOBAL_LOG_A_LOT; const WEB1_COMPONENT_NAME: string = 'web1-links-component'; const WEB1_HTML_PATH: string = '/components/web1/links/links.html'; const WEB1_SCRIPT_PATHS: string[] = []; const WEB1_CSS_PATHS: string[] = [ '/styles.css', '/components/web1/web1-common.css', '/components/web1/links/links.css', ]; export const ComponentInfoWeb1_Links = { componentName: WEB1_COMPONENT_NAME, htmlPath: WEB1_HTML_PATH, scriptPaths: WEB1_SCRIPT_PATHS, cssPaths: WEB1_CSS_PATHS, } const LINK_DATA = [ { group: 'motivation', links: [ { name: 'graph of version control systems by cellphone technology', description: `A profound, surprisingly hard-hitting video by a git instructor who made an absolutely striking graphic, depicting version control systems next to each's cellphone of the day. He looked into git alternatives once a student asked why nothing happened after 2005. A must-watch video, also highlighting Pijul's move into non-source code domain (but still text only).`, url: 'https://youtu.be/Ev80GGP5VNc?t=390', embedUrl: 'https://www.youtube.com/embed/Ev80GGP5VNc?start=390', }, { name: 'git technical debt, or: How do I delete a Git branch locally and remotely?', description: `
git is one of the greatest, most successful pieces of software. it's also a natural monopoly.
check out these incredible stats as both a measure of git's success, but also its two decades of technical debt. (all atow)
all of this to do one of the most common actions with the application and it still is a terrible syntax.
`, url: 'https://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-locally-and-remotely?page=1', }, { name: 'Version Control for Data Scientists', description: `An interesting talk about how practicing data scientists are actually kluging git as a workaround for versioning data models. Definite code smell.`, url: 'https://youtu.be/pah3xJ0tPqI', embedUrl: 'https://www.youtube.com/embed/pah3xJ0tPqI', }, ] }, { group: 'NPM packages', links: [ { name: '@ibgib/web-gib', description: 'Framework for creating agentic ibGib web apps. Contains plumbing for ibgib components, agentic framework (currently only Gemini implemented), web-based IndexedDB storage substrate, and more.', url: 'https://www.npmjs.com/package/@ibgib/web-gib', }, { name: '@ibgib/node-gib', description: "Node and server-specific ibGib code, i.e., things that don't run in the browser.", url: 'https://www.npmjs.com/package/@ibgib/node-gib', }, { name: '@ibgib/encrypt-gib', description: `Custom encryption library that uses an ibgib-friendly, custom (unproven and assumed weak) NOVEL hash-based encryption algorithm. AFAICT it should be post quantum secure, but it has not been thoroughly tested/vetted. I like it though, because I can understand all parts, assuming the magic of the underlying hash function.`, url: 'https://www.npmjs.com/package/@ibgib/encrypt-gib', }, { name: '@ibgib/core-gib', description: 'Core functionality like abstract class architecture for witnesses, spaces, etc. Works for both node and the web.', url: 'https://www.npmjs.com/package/@ibgib/core-gib', }, { name: '@ibgib/ts-gib', description: 'Graphing substrate for low-level ibgib protocol DAG.', url: 'https://www.npmjs.com/package/@ibgib/ts-gib', }, { name: '@ibgib/helper-gib', description: 'Utilities used throughout ibgib libs and apps, but not necessarily ibgib-specific. ATOW includes the custom respec-gib testing framework (for more polite developers).', url: 'https://www.npmjs.com/package/@ibgib/helper-gib', }, ] }, { group: 'social', links: [ { name: 'X (Twitter)', description: 'Rarely used, but present.', url: 'https://x.com/ibgibDOTcom', }, { name: 'GitHub', description: `NOTE: OUT-OF-DATE --> Dwindling presence because of onset of dogfooding ibgib's B2tFS. The current repo paradigm is too restrictive. The future is in much more robust and powerful "version control" across multiple domains, source code only being one of them.`, url: 'https://github.com/wraiford', }, { name: 'GitLab', description: `NOTE: OUT-OF-DATE --> Dwindling presence because of onset of dogfooding ibgib's B2tFS. The current repo paradigm is too restrictive. The future is in much more robust and powerful "version control" across multiple domains, source code only being one of them.`, url: 'https://gitlab.com/ibgib', }, ] } ]; export class Web1ComponentMeta_Links extends Web1ComponentMetaBase { protected override lc: string = `[${Web1ComponentMeta_Links.name}]`; protected getComponentName(): string { return WEB1_COMPONENT_NAME; } protected getHtml(): string { return thisHtml; } protected getCss(): string[] | undefined { return [ rootCss, stylesCss, commonCss, thisCss, ]; } componentName: string = this.getComponentName(); routeRegExp?: RegExp = /apps\/web1\/gib\/links.html/; fnHandleRoute = async (arg: { path: string; ibGibAddr?: IbGibAddr | undefined; }) => { if (logalot) { console.log(`Web1Component fnHandleRoute: path: ${arg.path}, ibGibAddr: ${arg.ibGibAddr}`); } return true; } constructor() { super(); } protected registerCustomElements(): void { customElements.define(this.componentName, Web1ComponentInstance_Links); } } const COPY_ICON_SVG = ` `; export class Web1ComponentInstance_Links extends Web1ComponentInstanceBase { protected override lc: string = `[${Web1ComponentInstance_Links.name}]`; constructor() { super(); } override async created(): Promise