commit 17a2efdba176c780c5a2db9ec75ff3a0b091c730 Spenser Truex <truex@equwal.com> 2026-09-22 14:50:32 -0700 Remove irc recover pages (#7) * remove the IRC bouncer offer The IRC bouncer does not run any more. No process listens on port 6969. Remove the Stripe payment link from the contact page, and delete the two posts that offer the service. * recover the La Cervido page The Wayback Machine has one capture of equwal.com/cervido, from 2025-02-18. The page is story 16 of Budhismaj Rakontoj, and the budhismaj-rakontoj page links to it. Its audio files were not captured, so MISSING-ASSETS.md lists them. * add sacc to the git mirror equwal/sacc is a new mirror of git://bitreich.org/sacc. Regenerate git/ with stagit-gen.py so that the mirror lists sacc. The run also adds the new public repo ideamine and refreshes pages for repos that changed. Line endings stay LF and file modes stay 644, as in the earlier mirror. * Regenerate the git mirror with the newest repos and commits Run stagit-gen.py against the equwal GitHub account. The mirror gains 18 repos pushed since the last run: assistkey, awesome-rebind, deploy-handoff, equwal, ink-dim, ink-recents, ink-update, rebind, sbm-android, sbm-extension, sbm-suckless, sbm-sync, subplz-web, subread-android, subread-dictionary, subread-extension, subread-overlay, and subread.koplugin. Existing repos with new commits since the last run get updated log, file, and commit pages. * Add a YouTube page and link it from the nav and the lair page Add pages/youtube.md, linking both channels: @therealtruex (the original language-learning channel) and @muhlanguages (languages and AI, current). Add a youtube link to the site nav, next to git, and an entry in the lair page's project list, matching how the git mirror link was added. Rebuild site/ with build.sh.
build.sh | 1 + index.html | 1 + pages/lair.md | 1 + pages/youtube.md | 8 + site/25-noveloj.html | 1 + site/3000-Vocab-Flashcards-3k-Final-Solution.html | 1 + site/A-new-way-to-release-code.html | 1 + ...-All-Japanese-All-The-Time-Mirror-at-xm0co.html | 1 + site/Add-my-RSS-feed-to-your-feed-reader.html | 1 + site/Brazil.html | 1 + site/CSV.html | 1 + site/Dont-Self-Host-Self-Locally.html | 1 + site/Dont-use-make-uninstall.html | 1 + site/Fish-Based-Navigation.html | 1 + site/Forthe.html | 1 + ...Generate-your-OWN-internet-web-site-easily.html | 1 + site/Get-on-mailing-lists-like-it-is-1989.html | 1 + site/Git-extra-worktrees-ROCK.html | 1 + site/Hackermen-neomutt-config.html | 1 + site/Hey-kids-want-to-learn-the-unix-way.html | 1 + site/How-Japanese-Aquire-Books.html | 1 + .../How-to-Beat-Emacs-M-x-dunnet-in-5-minutes.html | 1 + ...Learn-a-Language-According-to-The-Internet.html | 1 + ...anage-100000-digital-books-in-15-languages.html | 1 + site/How-to-take-notes-not-self-help-advice.html | 1 + site/Install-Anki.html | 1 + site/Install-Nix-on-Gentoo.html | 1 + site/Learn-Kanji-in-a-Fortnight.html | 1 + site/Mailing-list-in-one-line.html | 1 + ...Minimal-nvim-config-optional-AI-slop-enjoy.html | 1 + ...arning-for-multiple-languages-PREORDER-NOW.html | 1 + ...bout-polyglot-language-learning-LISTEN-NOW.html | 1 + site/Newport.html | 1 + site/Nixtoo-Genux-released.html | 1 + site/POSIX-pipes-for-Lisp.html | 1 + ...Podcast-Now-Goes-on-The-YouTubecom-Website.html | 1 + ...-Long-Live-The-Queue-Antennapod-shill-post.html | 1 + ...n-analogy-for-proper-AI-Driven-Development.html | 1 + site/SL--Dependency-Language.html | 1 + site/Start-emailing-your-patches-GUIDE.html | 1 + ...-Macros-in-Alexandria-Code-Revival-Project.html | 1 + ...n-android-into-247-portable-polyglot-radio.html | 1 + ...nglo-your-literacy-materials-and-your-life.html | 1 + ...stem-for-many-instances-of-simple-programs.html | 1 + ...YOU-need-NixOS-on-your-desktop-and-servers.html | 1 + site/WhyHow-to-host-a-bunch-of-crap-locally.html | 1 + site/aintitinit-Claude-INITIALIZER.html | 1 + site/alt-hacks-zips.html | 1 + site/alt-hacks.html | 1 + site/biblio.html | 1 + site/books.html | 1 + site/budhismaj-rakontoj.html | 1 + site/call.html | 1 + site/cervido.html | 1 + site/dmenu-scripts-repo-released.html | 1 + site/donate.html | 1 + site/esperantaj-artikoloj.html | 1 + site/esperantaj-audoj.html | 1 + site/esperantaj-libroj.html | 1 + site/esperantaj-noveloj.html | 1 + site/esperantaj-vortaroj.html | 1 + site/esperanto-three-steps.html | 1 + site/esperanto.html | 1 + site/glider.html | 1 + site/iilchat-setup-too-easy.html | 1 + site/index.html | 2 + site/install-9front.html | 1 + site/install-gentoo-hints.html | 1 + site/irc-relay.html | 1 + site/key.html | 1 + site/la-faraono.html | 1 + site/lair.html | 2 + site/lesperant2.html | 1 + site/link-farm.html | 1 + site/lisprant.html | 1 + site/matrix.html | 1 + site/meti-limon.html | 1 + site/newport-reference-manual.html | 1 + site/norda-naturo.html | 1 + site/projects.html | 1 + site/release.html | 1 + site/rss.xml | 1042 ++++++++++---------- site/rut.html | 1 + site/sbm.html | 1 + site/serpentoj-en-la-puto.html | 1 + site/sten-johansson.html | 1 + site/tag-gen.html | 1 + site/tmpl-insanely-simple-templates.html | 1 + site/youtube.html | 48 + 89 files changed, 665 insertions(+), 521 deletions(-)
diff --git a/build.sh b/build.sh index aae99cf..a4dabaf 100755 --- a/build.sh +++ b/build.sh @@ -57,6 +57,7 @@ cat > "$TEMPLATE" << 'TMPL' <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/index.html b/index.html index 6020ad5..1e93ec1 100755 --- a/index.html +++ b/index.html @@ -23,6 +23,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/pages/lair.md b/pages/lair.md index 01013b1..796eab7 100755 --- a/pages/lair.md +++ b/pages/lair.md @@ -14,6 +14,7 @@ Spenser Truex ### Home - [git: mirror of my public repos](git/index.html) +- [youtube: both channels](youtube.html) - [ii/lchat setup for IRC (suckless irc client)](iilchat-setup-too-easy.html) - [sbm: suckless bookmarks](sbm.html) - [sl -- dependency language](SL--Dependency-Language.html) diff --git a/pages/youtube.md b/pages/youtube.md new file mode 100644 index 0000000..de462c4 --- /dev/null +++ b/pages/youtube.md @@ -0,0 +1,8 @@ +--- +title: YouTube +--- + +Two channels. + +- [Truex (\@therealtruex)](https://www.youtube.com/@therealtruex) — the original language-learning channel. +- [мои язычки (\@muhlanguages)](https://www.youtube.com/@muhlanguages) — languages and AI, the current one. diff --git a/site/25-noveloj.html b/site/25-noveloj.html index 4912f97..8012c6b 100755 --- a/site/25-noveloj.html +++ b/site/25-noveloj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/3000-Vocab-Flashcards-3k-Final-Solution.html b/site/3000-Vocab-Flashcards-3k-Final-Solution.html index 2d75ee2..2a606f2 100755 --- a/site/3000-Vocab-Flashcards-3k-Final-Solution.html +++ b/site/3000-Vocab-Flashcards-3k-Final-Solution.html @@ -23,6 +23,7 @@ Solution)" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/A-new-way-to-release-code.html b/site/A-new-way-to-release-code.html index e060e05..e1249c5 100755 --- a/site/A-new-way-to-release-code.html +++ b/site/A-new-way-to-release-code.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/AJATT-All-Japanese-All-The-Time-Mirror-at-xm0co.html b/site/AJATT-All-Japanese-All-The-Time-Mirror-at-xm0co.html index 6b1903b..cac94ab 100755 --- a/site/AJATT-All-Japanese-All-The-Time-Mirror-at-xm0co.html +++ b/site/AJATT-All-Japanese-All-The-Time-Mirror-at-xm0co.html @@ -23,6 +23,7 @@ Mirror) at xm0.co" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Add-my-RSS-feed-to-your-feed-reader.html b/site/Add-my-RSS-feed-to-your-feed-reader.html index 132ccc0..116b228 100755 --- a/site/Add-my-RSS-feed-to-your-feed-reader.html +++ b/site/Add-my-RSS-feed-to-your-feed-reader.html @@ -22,6 +22,7 @@ reader" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Brazil.html b/site/Brazil.html index 9f2d2f2..2b5715d 100755 --- a/site/Brazil.html +++ b/site/Brazil.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/CSV.html b/site/CSV.html index 8c5a2fc..1b7d18d 100755 --- a/site/CSV.html +++ b/site/CSV.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Dont-Self-Host-Self-Locally.html b/site/Dont-Self-Host-Self-Locally.html index b8221f1..2a2747f 100755 --- a/site/Dont-Self-Host-Self-Locally.html +++ b/site/Dont-Self-Host-Self-Locally.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Dont-use-make-uninstall.html b/site/Dont-use-make-uninstall.html index 022844e..8b29e1c 100755 --- a/site/Dont-use-make-uninstall.html +++ b/site/Dont-use-make-uninstall.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Fish-Based-Navigation.html b/site/Fish-Based-Navigation.html index ed3391a..733b76d 100755 --- a/site/Fish-Based-Navigation.html +++ b/site/Fish-Based-Navigation.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Forthe.html b/site/Forthe.html index d5bc31b..1e12d16 100755 --- a/site/Forthe.html +++ b/site/Forthe.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Generate-your-OWN-internet-web-site-easily.html b/site/Generate-your-OWN-internet-web-site-easily.html index 0e4010e..2a66170 100755 --- a/site/Generate-your-OWN-internet-web-site-easily.html +++ b/site/Generate-your-OWN-internet-web-site-easily.html @@ -23,6 +23,7 @@ easily" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Get-on-mailing-lists-like-it-is-1989.html b/site/Get-on-mailing-lists-like-it-is-1989.html index 71aa1e4..f698c6b 100755 --- a/site/Get-on-mailing-lists-like-it-is-1989.html +++ b/site/Get-on-mailing-lists-like-it-is-1989.html @@ -22,6 +22,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Git-extra-worktrees-ROCK.html b/site/Git-extra-worktrees-ROCK.html index e282d12..5b774ee 100755 --- a/site/Git-extra-worktrees-ROCK.html +++ b/site/Git-extra-worktrees-ROCK.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Hackermen-neomutt-config.html b/site/Hackermen-neomutt-config.html index 5f0df95..0674cb3 100755 --- a/site/Hackermen-neomutt-config.html +++ b/site/Hackermen-neomutt-config.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Hey-kids-want-to-learn-the-unix-way.html b/site/Hey-kids-want-to-learn-the-unix-way.html index 19b031e..4b45254 100755 --- a/site/Hey-kids-want-to-learn-the-unix-way.html +++ b/site/Hey-kids-want-to-learn-the-unix-way.html @@ -22,6 +22,7 @@ way" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/How-Japanese-Aquire-Books.html b/site/How-Japanese-Aquire-Books.html index d21eaff..836d813 100755 --- a/site/How-Japanese-Aquire-Books.html +++ b/site/How-Japanese-Aquire-Books.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/How-to-Beat-Emacs-M-x-dunnet-in-5-minutes.html b/site/How-to-Beat-Emacs-M-x-dunnet-in-5-minutes.html index 81524fa..2dd5c99 100755 --- a/site/How-to-Beat-Emacs-M-x-dunnet-in-5-minutes.html +++ b/site/How-to-Beat-Emacs-M-x-dunnet-in-5-minutes.html @@ -23,6 +23,7 @@ minutes." /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/How-to-Learn-a-Language-According-to-The-Internet.html b/site/How-to-Learn-a-Language-According-to-The-Internet.html index ca44716..f16b09e 100755 --- a/site/How-to-Learn-a-Language-According-to-The-Internet.html +++ b/site/How-to-Learn-a-Language-According-to-The-Internet.html @@ -23,6 +23,7 @@ to The Internet" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/How-to-manage-100000-digital-books-in-15-languages.html b/site/How-to-manage-100000-digital-books-in-15-languages.html index 137ea79..8825fd2 100755 --- a/site/How-to-manage-100000-digital-books-in-15-languages.html +++ b/site/How-to-manage-100000-digital-books-in-15-languages.html @@ -23,6 +23,7 @@ in 15 languages" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/How-to-take-notes-not-self-help-advice.html b/site/How-to-take-notes-not-self-help-advice.html index 5890ea7..6f8aa76 100755 --- a/site/How-to-take-notes-not-self-help-advice.html +++ b/site/How-to-take-notes-not-self-help-advice.html @@ -23,6 +23,7 @@ advice" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Install-Anki.html b/site/Install-Anki.html index 2f380eb..da78821 100755 --- a/site/Install-Anki.html +++ b/site/Install-Anki.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Install-Nix-on-Gentoo.html b/site/Install-Nix-on-Gentoo.html index 1b7a816..c9ef3a8 100755 --- a/site/Install-Nix-on-Gentoo.html +++ b/site/Install-Nix-on-Gentoo.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Learn-Kanji-in-a-Fortnight.html b/site/Learn-Kanji-in-a-Fortnight.html index 46076c6..bcf5c38 100755 --- a/site/Learn-Kanji-in-a-Fortnight.html +++ b/site/Learn-Kanji-in-a-Fortnight.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Mailing-list-in-one-line.html b/site/Mailing-list-in-one-line.html index e271c69..9dbbba8 100755 --- a/site/Mailing-list-in-one-line.html +++ b/site/Mailing-list-in-one-line.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Minimal-nvim-config-optional-AI-slop-enjoy.html b/site/Minimal-nvim-config-optional-AI-slop-enjoy.html index 69efead..cd43fde 100755 --- a/site/Minimal-nvim-config-optional-AI-slop-enjoy.html +++ b/site/Minimal-nvim-config-optional-AI-slop-enjoy.html @@ -23,6 +23,7 @@ slop (enjoy!)" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/New-book-coming-soon-about-language-learning-for-multiple-languages-PREORDER-NOW.html b/site/New-book-coming-soon-about-language-learning-for-multiple-languages-PREORDER-NOW.html index 5844872..44a062f 100755 --- a/site/New-book-coming-soon-about-language-learning-for-multiple-languages-PREORDER-NOW.html +++ b/site/New-book-coming-soon-about-language-learning-for-multiple-languages-PREORDER-NOW.html @@ -23,6 +23,7 @@ learning (for multiple languages)! PREORDER NOW!" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html b/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html index 550deeb..84aa514 100755 --- a/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html +++ b/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html @@ -23,6 +23,7 @@ learning (LISTEN NOW!)" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Newport.html b/site/Newport.html index ae2cc28..7418121 100755 --- a/site/Newport.html +++ b/site/Newport.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Nixtoo-Genux-released.html b/site/Nixtoo-Genux-released.html index 17f89cc..a2fa22a 100755 --- a/site/Nixtoo-Genux-released.html +++ b/site/Nixtoo-Genux-released.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/POSIX-pipes-for-Lisp.html b/site/POSIX-pipes-for-Lisp.html index 87ce899..fa1014e 100755 --- a/site/POSIX-pipes-for-Lisp.html +++ b/site/POSIX-pipes-for-Lisp.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Polyglot-Podcast-Now-Goes-on-The-YouTubecom-Website.html b/site/Polyglot-Podcast-Now-Goes-on-The-YouTubecom-Website.html index ed9bfa8..1283331 100755 --- a/site/Polyglot-Podcast-Now-Goes-on-The-YouTubecom-Website.html +++ b/site/Polyglot-Podcast-Now-Goes-on-The-YouTubecom-Website.html @@ -23,6 +23,7 @@ YouTube.com Website" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Polyglot-Radio-is-Dead-Long-Live-The-Queue-Antennapod-shill-post.html b/site/Polyglot-Radio-is-Dead-Long-Live-The-Queue-Antennapod-shill-post.html index f199b4d..d6f81ee 100755 --- a/site/Polyglot-Radio-is-Dead-Long-Live-The-Queue-Antennapod-shill-post.html +++ b/site/Polyglot-Radio-is-Dead-Long-Live-The-Queue-Antennapod-shill-post.html @@ -23,6 +23,7 @@ The Queue (Antennapod shill post)" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/REPL-Driven-Development-as-an-analogy-for-proper-AI-Driven-Development.html b/site/REPL-Driven-Development-as-an-analogy-for-proper-AI-Driven-Development.html index fdb6aaa..0f6fe5b 100755 --- a/site/REPL-Driven-Development-as-an-analogy-for-proper-AI-Driven-Development.html +++ b/site/REPL-Driven-Development-as-an-analogy-for-proper-AI-Driven-Development.html @@ -23,6 +23,7 @@ analogy for proper AI Driven Development" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/SL--Dependency-Language.html b/site/SL--Dependency-Language.html index d431055..3105442 100755 --- a/site/SL--Dependency-Language.html +++ b/site/SL--Dependency-Language.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Start-emailing-your-patches-GUIDE.html b/site/Start-emailing-your-patches-GUIDE.html index 888db1e..e8b54e1 100755 --- a/site/Start-emailing-your-patches-GUIDE.html +++ b/site/Start-emailing-your-patches-GUIDE.html @@ -22,6 +22,7 @@ GUIDE" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Toplevel-Macros-in-Alexandria-Code-Revival-Project.html b/site/Toplevel-Macros-in-Alexandria-Code-Revival-Project.html index 7833629..cf82f69 100755 --- a/site/Toplevel-Macros-in-Alexandria-Code-Revival-Project.html +++ b/site/Toplevel-Macros-in-Alexandria-Code-Revival-Project.html @@ -23,6 +23,7 @@ Revival Project" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Turn-an-android-into-247-portable-polyglot-radio.html b/site/Turn-an-android-into-247-portable-polyglot-radio.html index f25ca6a..44fc2d1 100755 --- a/site/Turn-an-android-into-247-portable-polyglot-radio.html +++ b/site/Turn-an-android-into-247-portable-polyglot-radio.html @@ -23,6 +23,7 @@ polyglot radio" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Unanglo-your-literacy-materials-and-your-life.html b/site/Unanglo-your-literacy-materials-and-your-life.html index e11d5e9..a3b8e63 100755 --- a/site/Unanglo-your-literacy-materials-and-your-life.html +++ b/site/Unanglo-your-literacy-materials-and-your-life.html @@ -23,6 +23,7 @@ life) — Recently Written</title> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Using-an-init-system-for-many-instances-of-simple-programs.html b/site/Using-an-init-system-for-many-instances-of-simple-programs.html index 198f22c..38cd162 100755 --- a/site/Using-an-init-system-for-many-instances-of-simple-programs.html +++ b/site/Using-an-init-system-for-many-instances-of-simple-programs.html @@ -23,6 +23,7 @@ instances of simple programs" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/Why-YOU-need-NixOS-on-your-desktop-and-servers.html b/site/Why-YOU-need-NixOS-on-your-desktop-and-servers.html index c8f25aa..5eb2d68 100755 --- a/site/Why-YOU-need-NixOS-on-your-desktop-and-servers.html +++ b/site/Why-YOU-need-NixOS-on-your-desktop-and-servers.html @@ -23,6 +23,7 @@ and servers" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/WhyHow-to-host-a-bunch-of-crap-locally.html b/site/WhyHow-to-host-a-bunch-of-crap-locally.html index 6d93b9c..f04d211 100755 --- a/site/WhyHow-to-host-a-bunch-of-crap-locally.html +++ b/site/WhyHow-to-host-a-bunch-of-crap-locally.html @@ -23,6 +23,7 @@ locally" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/aintitinit-Claude-INITIALIZER.html b/site/aintitinit-Claude-INITIALIZER.html index 4f4dae8..76ac52a 100755 --- a/site/aintitinit-Claude-INITIALIZER.html +++ b/site/aintitinit-Claude-INITIALIZER.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/alt-hacks-zips.html b/site/alt-hacks-zips.html index aba0b69..675e962 100755 --- a/site/alt-hacks-zips.html +++ b/site/alt-hacks-zips.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/alt-hacks.html b/site/alt-hacks.html index 206830b..86eb078 100755 --- a/site/alt-hacks.html +++ b/site/alt-hacks.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/biblio.html b/site/biblio.html index 782fe07..10d1301 100755 --- a/site/biblio.html +++ b/site/biblio.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/books.html b/site/books.html index dc4ee7b..5cd1722 100755 --- a/site/books.html +++ b/site/books.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/budhismaj-rakontoj.html b/site/budhismaj-rakontoj.html index cbf4b3f..8ea96e6 100755 --- a/site/budhismaj-rakontoj.html +++ b/site/budhismaj-rakontoj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/call.html b/site/call.html index e269fb8..695e6f5 100755 --- a/site/call.html +++ b/site/call.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/cervido.html b/site/cervido.html index c43fdd1..9b9bf6b 100755 --- a/site/cervido.html +++ b/site/cervido.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/dmenu-scripts-repo-released.html b/site/dmenu-scripts-repo-released.html index 4941583..5edfd1d 100755 --- a/site/dmenu-scripts-repo-released.html +++ b/site/dmenu-scripts-repo-released.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/donate.html b/site/donate.html index f8f3967..4271d96 100755 --- a/site/donate.html +++ b/site/donate.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperantaj-artikoloj.html b/site/esperantaj-artikoloj.html index 74b96d5..9b6e7ac 100755 --- a/site/esperantaj-artikoloj.html +++ b/site/esperantaj-artikoloj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperantaj-audoj.html b/site/esperantaj-audoj.html index 878712a..d959b67 100755 --- a/site/esperantaj-audoj.html +++ b/site/esperantaj-audoj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperantaj-libroj.html b/site/esperantaj-libroj.html index 173221d..49a19b8 100755 --- a/site/esperantaj-libroj.html +++ b/site/esperantaj-libroj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperantaj-noveloj.html b/site/esperantaj-noveloj.html index 8a0c4b6..4cb7d57 100755 --- a/site/esperantaj-noveloj.html +++ b/site/esperantaj-noveloj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperantaj-vortaroj.html b/site/esperantaj-vortaroj.html index 4945ebd..e280460 100755 --- a/site/esperantaj-vortaroj.html +++ b/site/esperantaj-vortaroj.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperanto-three-steps.html b/site/esperanto-three-steps.html index 4175ca2..2459455 100755 --- a/site/esperanto-three-steps.html +++ b/site/esperanto-three-steps.html @@ -22,6 +22,7 @@ Mastery" /> <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/esperanto.html b/site/esperanto.html index 4b491cd..c840220 100755 --- a/site/esperanto.html +++ b/site/esperanto.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/glider.html b/site/glider.html index 28e45ae..58731f9 100755 --- a/site/glider.html +++ b/site/glider.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/iilchat-setup-too-easy.html b/site/iilchat-setup-too-easy.html index b64a362..97ca89a 100755 --- a/site/iilchat-setup-too-easy.html +++ b/site/iilchat-setup-too-easy.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/index.html b/site/index.html index d2a8d7e..ab77070 100644 --- a/site/index.html +++ b/site/index.html @@ -23,6 +23,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> @@ -122,6 +123,7 @@ <li><a href="rut.html">rut</a></li> <li><a href="serpentoj-en-la-puto.html">Serpentoj En La Puto</a></li> <li><a href="sten-johansson.html">Noveloj de Sten Johansson</a></li> +<li><a href="youtube.html">YouTube</a></li> </ul> <div id="footer"> diff --git a/site/install-9front.html b/site/install-9front.html index 05515c7..5306b7a 100755 --- a/site/install-9front.html +++ b/site/install-9front.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/install-gentoo-hints.html b/site/install-gentoo-hints.html index 283afd2..c5e2f53 100755 --- a/site/install-gentoo-hints.html +++ b/site/install-gentoo-hints.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/irc-relay.html b/site/irc-relay.html index 51d7fb7..f3c77ca 100755 --- a/site/irc-relay.html +++ b/site/irc-relay.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/key.html b/site/key.html index 26085a4..aa7faa9 100755 --- a/site/key.html +++ b/site/key.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/la-faraono.html b/site/la-faraono.html index eaee870..5b4aaf9 100755 --- a/site/la-faraono.html +++ b/site/la-faraono.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/lair.html b/site/lair.html index 0141d84..46c3008 100755 --- a/site/lair.html +++ b/site/lair.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> @@ -39,6 +40,7 @@ <h3 id="home">Home</h3> <ul> <li><a href="git/index.html">git: mirror of my public repos</a></li> + <li><a href="youtube.html">youtube: both channels</a></li> <li><a href="iilchat-setup-too-easy.html">ii/lchat setup for IRC (suckless irc client)</a></li> <li><a href="sbm.html">sbm: suckless bookmarks</a></li> diff --git a/site/lesperant2.html b/site/lesperant2.html index 1860da6..b9e28c4 100755 --- a/site/lesperant2.html +++ b/site/lesperant2.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/link-farm.html b/site/link-farm.html index 1019a89..d8b4248 100755 --- a/site/link-farm.html +++ b/site/link-farm.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/lisprant.html b/site/lisprant.html index 60ffe10..6578362 100755 --- a/site/lisprant.html +++ b/site/lisprant.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/matrix.html b/site/matrix.html index 1b2d49b..54dbf38 100755 --- a/site/matrix.html +++ b/site/matrix.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/meti-limon.html b/site/meti-limon.html index 2d9fe4e..3e9e482 100755 --- a/site/meti-limon.html +++ b/site/meti-limon.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/newport-reference-manual.html b/site/newport-reference-manual.html index b32aaaf..202c83f 100755 --- a/site/newport-reference-manual.html +++ b/site/newport-reference-manual.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/norda-naturo.html b/site/norda-naturo.html index db6ee20..b190691 100755 --- a/site/norda-naturo.html +++ b/site/norda-naturo.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/projects.html b/site/projects.html index 5dcf1eb..45ca4b1 100644 --- a/site/projects.html +++ b/site/projects.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/release.html b/site/release.html index bbc993b..23b572a 100755 --- a/site/release.html +++ b/site/release.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/rss.xml b/site/rss.xml index c195bf8..c3713b7 100644 --- a/site/rss.xml +++ b/site/rss.xml @@ -11,25 +11,25 @@ <link>https://recentlywritten.com/lisprant.html</link> <guid isPermaLink="true">https://recentlywritten.com/lisprant.html</guid> <pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate> - <description><![CDATA[<p>Read doug hoyte then come back and tell me static typing is better -ecl is good for live servers (eg. “web”) for obvious reasons every -person who “uses lisp at work” refuses to share details so I know that -lisp in production does not exist and they are larping solving the -problem with a well-fitted language and modifying the (lisp) compiler -mogs leet coders because of Kolomogorov complexity (see Graham’s stuff) -props to style_warning for making his username a lisp shibboleth Before -vibecoding I knew plenty of stack overflow copy-pasters etc. Before -vibecode it was still the case that your average interviewee could not -solve a basic coding question. Reading a programming book and doing some -of the exercises will take you farther than l33tcode bullshit ever will. -You can also be vaccinated against AI retardation. Also before vibecode -I started to notice that 99% of the time I could solve problems with -unix-philosophy tools and duct tape instead of reinventing the wheel. -There is so much stuff on the internet which is easily accessible. This -is still the case although the well has been poisoned quite a bit -because tools rarely work anymore. The Bipolar Lisp Programmer finally -won against Mel The Real Programmer. schizo rant over back to your -regular scheduled programming</p> + <description><![CDATA[<p>Read doug hoyte then come back and tell me static typing is better +ecl is good for live servers (eg. “web”) for obvious reasons every +person who “uses lisp at work” refuses to share details so I know that +lisp in production does not exist and they are larping solving the +problem with a well-fitted language and modifying the (lisp) compiler +mogs leet coders because of Kolomogorov complexity (see Graham’s stuff) +props to style_warning for making his username a lisp shibboleth Before +vibecoding I knew plenty of stack overflow copy-pasters etc. Before +vibecode it was still the case that your average interviewee could not +solve a basic coding question. Reading a programming book and doing some +of the exercises will take you farther than l33tcode bullshit ever will. +You can also be vaccinated against AI retardation. Also before vibecode +I started to notice that 99% of the time I could solve problems with +unix-philosophy tools and duct tape instead of reinventing the wheel. +There is so much stuff on the internet which is easily accessible. This +is still the case although the well has been poisoned quite a bit +because tools rarely work anymore. The Bipolar Lisp Programmer finally +won against Mel The Real Programmer. schizo rant over back to your +regular scheduled programming</p> ]]></description> </item> <item> @@ -37,46 +37,46 @@ regular scheduled programming</p> <link>https://recentlywritten.com/aintitinit-Claude-INITIALIZER.html</link> <guid isPermaLink="true">https://recentlywritten.com/aintitinit-Claude-INITIALIZER.html</guid> <pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p><a href="https://github.com/HACKERMEN-ORG/aintitinit" class="external-link">git -hub website repo</a></p> -<h2 id="claude-initializer">Claude INITIALIZER</h2> -<p>INITIALIZES a new git project in the directory if there isn’t one -already,<br /> -various files for claude in the directory to vibe code really -hard,<br /> -and hacks git to not track them.</p> -<p>The bare minimum necessary of course.</p> -<figure> -<a href="https://recentlywritten.com/static/gifmatrix.gif" target="_blank"><img src="https://recentlywritten.com/static/gifmatrix.gif" style="display:block;" alt="gifmatrix.gif" /></a> -</figure> -<h3 id="claude.md">CLAUDE.md</h3> -<p>This is the prompt claude will use in your project. Includes the -prompt<br /> -I had it generate, you can put anything you want in here.</p> -<h3 id="exclude-file">exclude (file)</h3> -<p>Appends this to the git exclusions to not track the claude-related -files</p> -<h3 id="mcp.json">.mcp.json</h3> -<p>The mcp servers you will use. There are a million already added by -the AI if you want to just use it as-ise.</p> -<h3 id="llms-full.txt">llms-full.txt</h3> -<p>Tells claude about the LLMs in -.mcp.jsonquire”cmp.utils.feedkeys”.run(2)<br /> -,</p> -<h3 id="regular-use">regular use</h3> -<pre><code>claude-init ; claude init</code></pre> -<h3 id="alias">alias</h3> -<p><code>ci</code> claude init.<br /> -<code>cli</code> try to continue, otherwise initialize in the -directory.</p> -<pre><code>alias ci='claude-init ; claude init' -alias cli='f(){ mkdir -p "$1" ; cd ${1:-.} ; claude-init ; claude init }; claude --continue || f'</code></pre> -<h3 id="todo">TODO</h3> -<ul> -<li>Automatically remove whitespace and base64 encode the CLAUDE.md -from</li> -</ul> -<p>the readable version to save tokens.</p> + <description><![CDATA[<p><a href="https://github.com/HACKERMEN-ORG/aintitinit" class="external-link">git +hub website repo</a></p> +<h2 id="claude-initializer">Claude INITIALIZER</h2> +<p>INITIALIZES a new git project in the directory if there isn’t one +already,<br /> +various files for claude in the directory to vibe code really +hard,<br /> +and hacks git to not track them.</p> +<p>The bare minimum necessary of course.</p> +<figure> +<a href="https://recentlywritten.com/static/gifmatrix.gif" target="_blank"><img src="https://recentlywritten.com/static/gifmatrix.gif" style="display:block;" alt="gifmatrix.gif" /></a> +</figure> +<h3 id="claude.md">CLAUDE.md</h3> +<p>This is the prompt claude will use in your project. Includes the +prompt<br /> +I had it generate, you can put anything you want in here.</p> +<h3 id="exclude-file">exclude (file)</h3> +<p>Appends this to the git exclusions to not track the claude-related +files</p> +<h3 id="mcp.json">.mcp.json</h3> +<p>The mcp servers you will use. There are a million already added by +the AI if you want to just use it as-ise.</p> +<h3 id="llms-full.txt">llms-full.txt</h3> +<p>Tells claude about the LLMs in +.mcp.jsonquire”cmp.utils.feedkeys”.run(2)<br /> +,</p> +<h3 id="regular-use">regular use</h3> +<pre><code>claude-init ; claude init</code></pre> +<h3 id="alias">alias</h3> +<p><code>ci</code> claude init.<br /> +<code>cli</code> try to continue, otherwise initialize in the +directory.</p> +<pre><code>alias ci='claude-init ; claude init' +alias cli='f(){ mkdir -p "$1" ; cd ${1:-.} ; claude-init ; claude init }; claude --continue || f'</code></pre> +<h3 id="todo">TODO</h3> +<ul> +<li>Automatically remove whitespace and base64 encode the CLAUDE.md +from</li> +</ul> +<p>the readable version to save tokens.</p> ]]></description> </item> <item> @@ -84,53 +84,53 @@ from</li> <link>https://recentlywritten.com/Hackermen-neomutt-config.html</link> <guid isPermaLink="true">https://recentlywritten.com/Hackermen-neomutt-config.html</guid> <pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p><a href="https://github.com/HACKERMEN-ORG/neomutt-config" class="external-link">link -to git hub website repository</a></p> -<h2 id="why-this-exists">Why this exists</h2> -<p>So my friends can send me encrypted mail, bottom post, and -send/apply<br /> -patches.</p> -<p>> “I installed neomutt but I haven’t figured it out”</p> -<p>Neomutt defaults have legacy lock-in issues.</p> -<h2 id="barebones-neomutt-config">Barebones neomutt config</h2> -<h3 id="features">Features</h3> -<ul> -<li><p>optional PGP encryption/signing/both</p></li> -<li><p>Automatic PGP decryption</p></li> -<li><p>hjkl movement: navigate</p></li> -<li><p>n/p movement: read+page mails like in the GNUs client</p></li> -<li><p>open HTML mail in the $BROWSER with a bind</p></li> -<li><p>edit mail in the $EDITOR</p></li> -<li><p>Can setup multiple mailboxes (just source more files like -me-TEMPLATE)</p></li> -<li><p>arcane-config-TEMPLATE to keep user-specific config -separate</p></li> -<li><p>Lots of colors</p></li> -<li><p>A million default setting changes that don’t do much</p></li> -<li><p>signature</p></li> -</ul> -<h3 id="subjective-user-experience">Subjective User Experience</h3> -<p><a href="http://www.booksatoz.com/witsend/tea/orwell.htm" class="external-link">Like -this</a></p> -<h3 id="install">Install</h3> -<ul> -<li><p>clone to ~/.config/neomutt</p></li> -<li><p>install neomutt</p></li> -<li><p>install isync and sendmail for IMAP and SMTP</p></li> -<li><p>install notmuch to search your mails</p></li> -<li><p>install gpg (optional)</p></li> -<li><p>Edit and rename the TEMPLATE files</p></li> -<li><p>Edit the sources at the top of the neomuttrc to fit your -needs</p></li> -</ul> -<h3 -id="good-alias-to-do-background-mail-stuff-when-opening-the-client">Good -alias to do background mail stuff when opening the client</h3> -<h3 id="todo">TODO</h3> -<ul> -<li>Automatic WKD for automatic PGP encryption without manually adding -keys</li> -</ul> + <description><![CDATA[<p><a href="https://github.com/HACKERMEN-ORG/neomutt-config" class="external-link">link +to git hub website repository</a></p> +<h2 id="why-this-exists">Why this exists</h2> +<p>So my friends can send me encrypted mail, bottom post, and +send/apply<br /> +patches.</p> +<p>> “I installed neomutt but I haven’t figured it out”</p> +<p>Neomutt defaults have legacy lock-in issues.</p> +<h2 id="barebones-neomutt-config">Barebones neomutt config</h2> +<h3 id="features">Features</h3> +<ul> +<li><p>optional PGP encryption/signing/both</p></li> +<li><p>Automatic PGP decryption</p></li> +<li><p>hjkl movement: navigate</p></li> +<li><p>n/p movement: read+page mails like in the GNUs client</p></li> +<li><p>open HTML mail in the $BROWSER with a bind</p></li> +<li><p>edit mail in the $EDITOR</p></li> +<li><p>Can setup multiple mailboxes (just source more files like +me-TEMPLATE)</p></li> +<li><p>arcane-config-TEMPLATE to keep user-specific config +separate</p></li> +<li><p>Lots of colors</p></li> +<li><p>A million default setting changes that don’t do much</p></li> +<li><p>signature</p></li> +</ul> +<h3 id="subjective-user-experience">Subjective User Experience</h3> +<p><a href="http://www.booksatoz.com/witsend/tea/orwell.htm" class="external-link">Like +this</a></p> +<h3 id="install">Install</h3> +<ul> +<li><p>clone to ~/.config/neomutt</p></li> +<li><p>install neomutt</p></li> +<li><p>install isync and sendmail for IMAP and SMTP</p></li> +<li><p>install notmuch to search your mails</p></li> +<li><p>install gpg (optional)</p></li> +<li><p>Edit and rename the TEMPLATE files</p></li> +<li><p>Edit the sources at the top of the neomuttrc to fit your +needs</p></li> +</ul> +<h3 +id="good-alias-to-do-background-mail-stuff-when-opening-the-client">Good +alias to do background mail stuff when opening the client</h3> +<h3 id="todo">TODO</h3> +<ul> +<li>Automatic WKD for automatic PGP encryption without manually adding +keys</li> +</ul> ]]></description> </item> <item> @@ -138,64 +138,64 @@ keys</li> <link>https://recentlywritten.com/REPL-Driven-Development-as-an-analogy-for-proper-AI-Driven-Development.html</link> <guid isPermaLink="true">https://recentlywritten.com/REPL-Driven-Development-as-an-analogy-for-proper-AI-Driven-Development.html</guid> <pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p>I recently “discovered” using an LLM to code with, and was looking -forward to doing some “REPL Driven Development” on it. Unfortunately, I -discovered that all of the vibe-coded vim plugins just use vim as a -(terrible) multiplexer for the Claude Code CLI program. The Emacs plugin -<a href="https://github.com/manzaltu/claude-code-ide.el" class="external-link">claude-code-ide.el</a> -does it right by having text selection and other send-to-repl-like -actions like a proper Lisp IDE does.</p> -<p>This was merely a lisp thing to do because the parentheses clearly -define selection to send. That’s no longer an issue, the LLM can filter -out the garbage in a way that a GOFAI symbolic rule-based pattern -matcher can’t.</p> -<p>The command line program likes to use diffs to edit files, and that -is reasonable, but vastly inferior to REPL Driven Development from a -scratch file. Below are some of my notes from 2019 for more context on -using the lisp REPL. With RDD, you will never type something directly -into a REPL again. “Never type into the REPL”.</p> -<p>It’s nice using grep to lookup some code I might have written 5 years -ago that would have been ephemeral and lost at the REPL.</p> -<h3 id="repl-driven-development">REPL driven development</h3> -<p>Stuard Halloway’s 2017 talk at Chicago Clojure:</p> -<p><a href="https://vimeo.com/223309989" class="external-link">vimeo</a><br /> -<a href="https://github.com/matthiasn/talk-transcripts/blob/master/Halloway_Stuart/REPLDrivenDevelopment.md" class="external-link">slide -notes</a></p> -<ul> -<li><p>DON’T type <em>into</em> the repl. Type into a file that you can -search later.</p></li> -<li><p>Use repl-interaction commands (like insert-in-repl, minibuffer, -etc.).</p></li> -<li><p>Have a plan to avoid wasting time (since repls are fun).</p></li> -<li><p>Know <em>all</em> the jump-to-documentation kinds of commands. -Searching for a regex,<br /> -jumping to the source of a thing, etc.</p></li> -<li><p>Analysing data carefully at the repl (don’t just stare at -stacktraces).</p></li> -<li><p>Debugging at O(log n)</p></li> -<li><p>Custom REPLs (especially debuggers/inspectors with breakpoints, -etc.)</p></li> -<li><p>Do use the debugger.</p></li> -</ul> -<h4 id="most-important-keystrokes">MOST important keystrokes</h4> -<ul> -<li><p>Execute a thing in the minibuffer</p></li> -<li><p>Tracing functions (or a short function to execute in the -minibuffer like =trace=)</p></li> -<li><p>Sending to repl from behind the point</p></li> -<li><p>Sending to repl from in front of the point</p></li> -<li><p>Sending the whole top-level expression at point to the -repl</p></li> -<li><p>Jump to the minibuffer (not for typing! just to see big -output)</p></li> -<li><p>A keystroke to jump back to the source file (or something like -windmove)</p></li> -<li><p><em>all</em> the documentation commands (search, jump to source, -doc-at-point, etc.)</p></li> -<li><p>Execute something and replace it with the output/write the output -as</p></li> -</ul> -<p>a comment in the scratch buffer.</p> + <description><![CDATA[<p>I recently “discovered” using an LLM to code with, and was looking +forward to doing some “REPL Driven Development” on it. Unfortunately, I +discovered that all of the vibe-coded vim plugins just use vim as a +(terrible) multiplexer for the Claude Code CLI program. The Emacs plugin +<a href="https://github.com/manzaltu/claude-code-ide.el" class="external-link">claude-code-ide.el</a> +does it right by having text selection and other send-to-repl-like +actions like a proper Lisp IDE does.</p> +<p>This was merely a lisp thing to do because the parentheses clearly +define selection to send. That’s no longer an issue, the LLM can filter +out the garbage in a way that a GOFAI symbolic rule-based pattern +matcher can’t.</p> +<p>The command line program likes to use diffs to edit files, and that +is reasonable, but vastly inferior to REPL Driven Development from a +scratch file. Below are some of my notes from 2019 for more context on +using the lisp REPL. With RDD, you will never type something directly +into a REPL again. “Never type into the REPL”.</p> +<p>It’s nice using grep to lookup some code I might have written 5 years +ago that would have been ephemeral and lost at the REPL.</p> +<h3 id="repl-driven-development">REPL driven development</h3> +<p>Stuard Halloway’s 2017 talk at Chicago Clojure:</p> +<p><a href="https://vimeo.com/223309989" class="external-link">vimeo</a><br /> +<a href="https://github.com/matthiasn/talk-transcripts/blob/master/Halloway_Stuart/REPLDrivenDevelopment.md" class="external-link">slide +notes</a></p> +<ul> +<li><p>DON’T type <em>into</em> the repl. Type into a file that you can +search later.</p></li> +<li><p>Use repl-interaction commands (like insert-in-repl, minibuffer, +etc.).</p></li> +<li><p>Have a plan to avoid wasting time (since repls are fun).</p></li> +<li><p>Know <em>all</em> the jump-to-documentation kinds of commands. +Searching for a regex,<br /> +jumping to the source of a thing, etc.</p></li> +<li><p>Analysing data carefully at the repl (don’t just stare at +stacktraces).</p></li> +<li><p>Debugging at O(log n)</p></li> +<li><p>Custom REPLs (especially debuggers/inspectors with breakpoints, +etc.)</p></li> +<li><p>Do use the debugger.</p></li> +</ul> +<h4 id="most-important-keystrokes">MOST important keystrokes</h4> +<ul> +<li><p>Execute a thing in the minibuffer</p></li> +<li><p>Tracing functions (or a short function to execute in the +minibuffer like =trace=)</p></li> +<li><p>Sending to repl from behind the point</p></li> +<li><p>Sending to repl from in front of the point</p></li> +<li><p>Sending the whole top-level expression at point to the +repl</p></li> +<li><p>Jump to the minibuffer (not for typing! just to see big +output)</p></li> +<li><p>A keystroke to jump back to the source file (or something like +windmove)</p></li> +<li><p><em>all</em> the documentation commands (search, jump to source, +doc-at-point, etc.)</p></li> +<li><p>Execute something and replace it with the output/write the output +as</p></li> +</ul> +<p>a comment in the scratch buffer.</p> ]]></description> </item> <item> @@ -203,74 +203,74 @@ as</p></li> <link>https://recentlywritten.com/Minimal-nvim-config-optional-AI-slop-enjoy.html</link> <guid isPermaLink="true">https://recentlywritten.com/Minimal-nvim-config-optional-AI-slop-enjoy.html</guid> <pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p><a href="https://github.com/HACKERMEN-ORG/hackermen-neovim-config-file" class="external-link">code -on the git hub website</a></p> -<p>A friend sent me a neomutt configuration which was thousands of lines -of LLM code, using libraries where even the READMEs are written by LLMs. -Surprisingly, it worked pretty good. Human being were never any good at -writing VimScript anyway. Of course, to make even tiny edits, due to the -extreme unnecessary complexity brought in by the LLM, requires the use -of another LLM. Blargh!</p> -<p>The solution: actually use a decent, simple init written by a human, -and put the rest in the “optional” slop folder. Problem solved!</p> -<h2 id="install">Install</h2> -<p>Run nvim and do,<code>:PlugInstall</code>. BAM! Future travellers: -you should do <code>:PlugUpdate</code>.</p> -<h2 id="features">FEATURES</h2> -<ul> -<li><p><a href="http://danmidwood.com/content/2014/11/21/animated-paredit.html" class="external-link">Structural -editing</a></p></li> -<li><p>Global leader is Spacebar. Spacevim!</p></li> -<li><p>Local leader is comma.</p></li> -<li><p>Spellcheck and shellcheck keybindings.</p></li> -<li><p>(sane) Completion. See equwal’s -<a href="https://github.com/equwal/tag-gen" class="external-link">tag-gen</a> -project.</p></li> -<li><p>Which-key. Learn vim!</p></li> -<li><p>Goyo (For writing words. Automatically turns on when editing -neomutt buffers)</p></li> -<li><p><++> templating (see my <++> -<a href="https://recentlywritten.com/tmpl-insanely-simple-templates.html" class="external-link">tmpl</a> -project)</p></li> -<li><p>Ask what you meant using fzf when you try try to open a file that -doesn’t exist.</p></li> -<li><p>Save your place in the buffer for later.</p></li> -<li><p>mode line</p></li> -<li><p>Slightly modified vim defaults (very slightly). See the only file -for details.</p></li> -</ul> -<h2 id="non-features">NON-FEATURES</h2> -<ul> -<li><p>Not crazy modifications to vim defaults</p></li> -<li><p>Only one file (everything else in “slop” folder)</p></li> -<li><p>No major changes to the packages used</p></li> -<li><p>No window management. Use a terminal multiplexer.</p></li> -<li><p>No claude code. Same.</p></li> -</ul> -<p>Source your own config at the bottom of the init.lua and work from -these sane defaults.</p> -<h3 id="faq-frequent-answers-to-questions">FAQ: Frequent Answers to -Questions</h3> -<h4 -id="source-your-own-config-at-the-bottom-of-the-init.lua-and-work-from-these-sane-defaults">“Source -your own config at the bottom of the init.lua and work from these sane -defaults”</h4> -<p>Then, make changes to the init.lua and send a pull request.</p> -<h4 id="you-dont-need-claude-in-your-vim">You don’t need claude in your -vim</h4> -<p>ARGH. Just use dvtm/mtm/abduco or your window manager to deal with -it. None of the claude vim projects are smart enough to send parts of -buffers to the claude like slime does for lisp. Those claude vim -packages are just glorified terminals using vim as a (very bad) -multiplexer.</p> -<h4 id="plugged-is-better-than-lazy">Plugged *is* better than Lazy</h4> -<p>Lazy is written by AI. The point of this is to not be written -by<br /> -AI. Complex shit breaks!</p> -<h4 id="here-is-your-prompt-sir">Here is your prompt, SIR:</h4> -<pre><code>start adding individual feature s one by one which only take up 1-10 lines. Don't import all the config, just the most basic config. For individual lines, write what it does and ask to add it in. For packages, read the github pages and their default configuration to minimize the edits needed. Opt for the most default configuration if possible.</code></pre> -<h4 id="dont-add-hundreds-of-lines-of-ai-slop-to-my-config.">Don’t add -hundreds of lines of AI slop to my config.</h4> + <description><![CDATA[<p><a href="https://github.com/HACKERMEN-ORG/hackermen-neovim-config-file" class="external-link">code +on the git hub website</a></p> +<p>A friend sent me a neomutt configuration which was thousands of lines +of LLM code, using libraries where even the READMEs are written by LLMs. +Surprisingly, it worked pretty good. Human being were never any good at +writing VimScript anyway. Of course, to make even tiny edits, due to the +extreme unnecessary complexity brought in by the LLM, requires the use +of another LLM. Blargh!</p> +<p>The solution: actually use a decent, simple init written by a human, +and put the rest in the “optional” slop folder. Problem solved!</p> +<h2 id="install">Install</h2> +<p>Run nvim and do,<code>:PlugInstall</code>. BAM! Future travellers: +you should do <code>:PlugUpdate</code>.</p> +<h2 id="features">FEATURES</h2> +<ul> +<li><p><a href="http://danmidwood.com/content/2014/11/21/animated-paredit.html" class="external-link">Structural +editing</a></p></li> +<li><p>Global leader is Spacebar. Spacevim!</p></li> +<li><p>Local leader is comma.</p></li> +<li><p>Spellcheck and shellcheck keybindings.</p></li> +<li><p>(sane) Completion. See equwal’s +<a href="https://github.com/equwal/tag-gen" class="external-link">tag-gen</a> +project.</p></li> +<li><p>Which-key. Learn vim!</p></li> +<li><p>Goyo (For writing words. Automatically turns on when editing +neomutt buffers)</p></li> +<li><p><++> templating (see my <++> +<a href="https://recentlywritten.com/tmpl-insanely-simple-templates.html" class="external-link">tmpl</a> +project)</p></li> +<li><p>Ask what you meant using fzf when you try try to open a file that +doesn’t exist.</p></li> +<li><p>Save your place in the buffer for later.</p></li> +<li><p>mode line</p></li> +<li><p>Slightly modified vim defaults (very slightly). See the only file +for details.</p></li> +</ul> +<h2 id="non-features">NON-FEATURES</h2> +<ul> +<li><p>Not crazy modifications to vim defaults</p></li> +<li><p>Only one file (everything else in “slop” folder)</p></li> +<li><p>No major changes to the packages used</p></li> +<li><p>No window management. Use a terminal multiplexer.</p></li> +<li><p>No claude code. Same.</p></li> +</ul> +<p>Source your own config at the bottom of the init.lua and work from +these sane defaults.</p> +<h3 id="faq-frequent-answers-to-questions">FAQ: Frequent Answers to +Questions</h3> +<h4 +id="source-your-own-config-at-the-bottom-of-the-init.lua-and-work-from-these-sane-defaults">“Source +your own config at the bottom of the init.lua and work from these sane +defaults”</h4> +<p>Then, make changes to the init.lua and send a pull request.</p> +<h4 id="you-dont-need-claude-in-your-vim">You don’t need claude in your +vim</h4> +<p>ARGH. Just use dvtm/mtm/abduco or your window manager to deal with +it. None of the claude vim projects are smart enough to send parts of +buffers to the claude like slime does for lisp. Those claude vim +packages are just glorified terminals using vim as a (very bad) +multiplexer.</p> +<h4 id="plugged-is-better-than-lazy">Plugged *is* better than Lazy</h4> +<p>Lazy is written by AI. The point of this is to not be written +by<br /> +AI. Complex shit breaks!</p> +<h4 id="here-is-your-prompt-sir">Here is your prompt, SIR:</h4> +<pre><code>start adding individual feature s one by one which only take up 1-10 lines. Don't import all the config, just the most basic config. For individual lines, write what it does and ask to add it in. For packages, read the github pages and their default configuration to minimize the edits needed. Opt for the most default configuration if possible.</code></pre> +<h4 id="dont-add-hundreds-of-lines-of-ai-slop-to-my-config.">Don’t add +hundreds of lines of AI slop to my config.</h4> ]]></description> </item> <item> @@ -278,92 +278,92 @@ hundreds of lines of AI slop to my config.</h4> <link>https://recentlywritten.com/Using-an-init-system-for-many-instances-of-simple-programs.html</link> <guid isPermaLink="true">https://recentlywritten.com/Using-an-init-system-for-many-instances-of-simple-programs.html</guid> <pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p><a href="https://github.com/equwal/tiny-runlevels" class="external-link">mirrored -on github for convenience here</a></p> -<p>Using OpenRC runlevels to have lots of instances of simple (network) -programs like quark for multiple http serving locally or -<a href="https://tools.suckless.org/ii/" class="external-link">ii</a> -(or -<a href="https://tools.suckless.org/sic/" class="external-link">sic</a>) -for IRC server connections.</p> -<p>To keep programs simple, they should not do the same process for -unrelated uses. It is much more complicated to configure and manage -multiple webservers in the same process (like how nginx does it) than -just one. Init systems are designed to manage processes, and should be -used instead. Do one thing etc. etc.</p> -<p>This is how to use the OpenRC runlevels for quark and ii runlevels as -examples.</p> -<h3 id="the-tree-on-my-machine">The Tree (on my machine)</h3> -<pre><code>/etc/runlevels -├── boot -│ └── ... -├── default -│ └── ... -├── irc-base -│ ├── oftc -> /etc/init.d/oftc -│ ├── liberachat -> /etc/init.d/liberachat -│ └── ... -├── net-base -│ ├── default -> ../default -│ └── quark -> ../quark -├── net-offline -│ ├── default -> ../default -│ └── net-base -> ../net-base -├── net-dns -│ ├── dnscrypt-proxy -> /etc/init.d/dnscrypt-proxy -│ └── unbound -> /etc/init.d/unbound -├── net-wifi -│ ├── dhcpcd -> /etc/init.d/dhcpcd -│ ├── net-base -> /etc/runlevels/net-base -│ ├── net-dns -> /etc/runlevels/net-dns -│ └── wpa_supplicant -> /etc/init.d/wpa_supplicant -├── net-wifi-irc -│ ├── irc-base -> ../irc-base -│ └── net-wifi -> ../net-wifi -├── quark -│ ├── quark-docs -> /etc/init.d/quark-docs -│ ├── quark-equwal -> /etc/init.d/quark-equwal -│ └── ... -├── shutdown -│ └── ... -└── sysinit - └── ...</code></pre> -<p>as you can see, IRC is connected after the real internet on wifi -(net-wifi), but quark runs on any network runlevel using net-base.</p> -<h3 id="how-to">How To:</h3> -<p>OpenRC has its own commands for making the runlevels, but I find them -confusing. Let’s just edit the files.</p> -<pre><code># make runlevel -mkdir /etc/runlevels/quark -# add services (as many as needed) -ln -s /etc/int.d/quark-whatever /etc/runlevels/quark -# add runlevel to parent -ln -s /etc/runlevels/default /etc/runlevels/quark -# Reload since openrc is in default -openrc default</code></pre> -<p>That works, but what about for networked IRC on a custom networking -runlevel? Just add it to the networking runlevel.</p> -<pre><code># (first, make a network runlevel that contains default! Without default the system will crash, obviously.) -mkdir /etc/runlevels/net-wifi -ln -s /etc/runlevels/net-wifi /etc/runlevels/default -ln -s /etc/init.d/wpa_supplicant /etc/runlevels/net-wifi -# etc. -# Now add the irc-base to the network runlevel -mkdir /etc/runlevels/irc-base -ln -s /etc/init.d/liberachat irc-base -ln -s /etc/init.d/oftc irc-base -ln -s /etc/runlevels/irc-base /etc/runlevels/net-wifi -openrc net-wifi</code></pre> -<h3 id="tool-restart-runlevel">Tool: restart-runlevel</h3> -<p>Openrc wants switch the whole stack <code>openrc runlevel</code> so I -made a little tool to just restart a specific runlevel. Nice for -debugging.</p> -<pre><code>#!/bin/bash - -for link in /etc/runlevels/${1}/* -do [[ -L "$link" && "$(readlink "$link")" == /etc/init.d/* ]] && \ - rc-service "$(basename "$link")" restart -done</code></pre> + <description><![CDATA[<p><a href="https://github.com/equwal/tiny-runlevels" class="external-link">mirrored +on github for convenience here</a></p> +<p>Using OpenRC runlevels to have lots of instances of simple (network) +programs like quark for multiple http serving locally or +<a href="https://tools.suckless.org/ii/" class="external-link">ii</a> +(or +<a href="https://tools.suckless.org/sic/" class="external-link">sic</a>) +for IRC server connections.</p> +<p>To keep programs simple, they should not do the same process for +unrelated uses. It is much more complicated to configure and manage +multiple webservers in the same process (like how nginx does it) than +just one. Init systems are designed to manage processes, and should be +used instead. Do one thing etc. etc.</p> +<p>This is how to use the OpenRC runlevels for quark and ii runlevels as +examples.</p> +<h3 id="the-tree-on-my-machine">The Tree (on my machine)</h3> +<pre><code>/etc/runlevels +├── boot +│ └── ... +├── default +│ └── ... +├── irc-base +│ ├── oftc -> /etc/init.d/oftc +│ ├── liberachat -> /etc/init.d/liberachat +│ └── ... +├── net-base +│ ├── default -> ../default +│ └── quark -> ../quark +├── net-offline +│ ├── default -> ../default +│ └── net-base -> ../net-base +├── net-dns +│ ├── dnscrypt-proxy -> /etc/init.d/dnscrypt-proxy +│ └── unbound -> /etc/init.d/unbound +├── net-wifi +│ ├── dhcpcd -> /etc/init.d/dhcpcd +│ ├── net-base -> /etc/runlevels/net-base +│ ├── net-dns -> /etc/runlevels/net-dns +│ └── wpa_supplicant -> /etc/init.d/wpa_supplicant +├── net-wifi-irc +│ ├── irc-base -> ../irc-base +│ └── net-wifi -> ../net-wifi +├── quark +│ ├── quark-docs -> /etc/init.d/quark-docs +│ ├── quark-equwal -> /etc/init.d/quark-equwal +│ └── ... +├── shutdown +│ └── ... +└── sysinit + └── ...</code></pre> +<p>as you can see, IRC is connected after the real internet on wifi +(net-wifi), but quark runs on any network runlevel using net-base.</p> +<h3 id="how-to">How To:</h3> +<p>OpenRC has its own commands for making the runlevels, but I find them +confusing. Let’s just edit the files.</p> +<pre><code># make runlevel +mkdir /etc/runlevels/quark +# add services (as many as needed) +ln -s /etc/int.d/quark-whatever /etc/runlevels/quark +# add runlevel to parent +ln -s /etc/runlevels/default /etc/runlevels/quark +# Reload since openrc is in default +openrc default</code></pre> +<p>That works, but what about for networked IRC on a custom networking +runlevel? Just add it to the networking runlevel.</p> +<pre><code># (first, make a network runlevel that contains default! Without default the system will crash, obviously.) +mkdir /etc/runlevels/net-wifi +ln -s /etc/runlevels/net-wifi /etc/runlevels/default +ln -s /etc/init.d/wpa_supplicant /etc/runlevels/net-wifi +# etc. +# Now add the irc-base to the network runlevel +mkdir /etc/runlevels/irc-base +ln -s /etc/init.d/liberachat irc-base +ln -s /etc/init.d/oftc irc-base +ln -s /etc/runlevels/irc-base /etc/runlevels/net-wifi +openrc net-wifi</code></pre> +<h3 id="tool-restart-runlevel">Tool: restart-runlevel</h3> +<p>Openrc wants switch the whole stack <code>openrc runlevel</code> so I +made a little tool to just restart a specific runlevel. Nice for +debugging.</p> +<pre><code>#!/bin/bash + +for link in /etc/runlevels/${1}/* +do [[ -L "$link" && "$(readlink "$link")" == /etc/init.d/* ]] && \ + rc-service "$(basename "$link")" restart +done</code></pre> ]]></description> </item> <item> @@ -371,18 +371,18 @@ done</code></pre> <link>https://recentlywritten.com/Mailing-list-in-one-line.html</link> <guid isPermaLink="true">https://recentlywritten.com/Mailing-list-in-one-line.html</guid> <pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<h1 id="list-of-emails.txt">==> list-of-emails.txt <==</h1> -<pre><code>Your Name <youremail@example.com> -... -... -# ==> mailing-list.sh <== -#!/bin/sh -while read email; do neomutt -H "$MESSAGEFILE" "$email" < /dev/null; done < /dev/stdin</code></pre> -<p>Make an mbox email with neomutt of whatever.<br /> -Now run it.</p> -<pre><code>cat list-of-emails.txt | mailing-list.sh email-file.mbox</code></pre> -<p>Now make an alias in (zsh) for extreme FAST mailing</p> -<pre><code>alias mail2list='f(){ [ -n "$1" ] && cat /home/jose/.config/mailing-list/the-mailing-list | mailing-list "$1" }; f'</code></pre> + <description><![CDATA[<h1 id="list-of-emails.txt">==> list-of-emails.txt <==</h1> +<pre><code>Your Name <youremail@example.com> +... +... +# ==> mailing-list.sh <== +#!/bin/sh +while read email; do neomutt -H "$MESSAGEFILE" "$email" < /dev/null; done < /dev/stdin</code></pre> +<p>Make an mbox email with neomutt of whatever.<br /> +Now run it.</p> +<pre><code>cat list-of-emails.txt | mailing-list.sh email-file.mbox</code></pre> +<p>Now make an alias in (zsh) for extreme FAST mailing</p> +<pre><code>alias mail2list='f(){ [ -n "$1" ] && cat /home/jose/.config/mailing-list/the-mailing-list | mailing-list "$1" }; f'</code></pre> ]]></description> </item> <item> @@ -390,124 +390,124 @@ Now run it.</p> <link>https://recentlywritten.com/Dont-use-make-uninstall.html</link> <guid isPermaLink="true">https://recentlywritten.com/Dont-use-make-uninstall.html</guid> <pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p>Much like “sending a file over the internet”, “installing software” -has not been solved generally. There’s more than one way to do it. A -mixed system that uses both declarative and traditional package managers -in unison is the way to go for now. It would be ideal to package a -non-specific declarative package install definition together with the -source of programs, and make unnecessary the concept of a “package -maintainer” for each package manager. The existence of two declarative -package managers already suggests the need for an arbitrary standard -which can transformed into a definition for any declarative system.</p> -<p>I used an LLM to generate hundreds of uninstall targets for make and -submit patches to the authors. Three authors wouldn’t patch my changes -in. Are they right? The argument goes like this: the software should not -be installed using make because make doesn’t register file install -locations in any way. Therefore make only uninstalles the correct files -by coincidence. For installing, it can do a little bit better using the -<code>install</code> program.</p> -<p>There is a better way which has been around forever: just use the -build from the source tree.</p> -<p>Let’s consider how the ASDF manager for Common Lisp works (and by -extension, quicklisp, which gets ASDF systems from the internet). It has -a central registry variable with a list of paths, and it recurs down it -to findsystem definitions when the definition loader is called. Then it -loads the files into the lisp core. As a result there is no need to have -code and binaries in different places. If compiled, it will just store -the compiled files together with the source. To “uninstall”, just delete -that project’s directory. Let’s call this “in-situ” package -management.</p> -<p>With POSIX make and arbitrary build systems like it, the subordinate -model can’t work, because ASDF can’t possibly predetermine what binaries -to use and where to put them. The logic can’t be generalized in the -package manager, and has to be managed per-project. Every package -manager now needs thousands of packages with hundreds of maintainers. -Typical package managers do installs imperatively and tracking the file -location metadata in the system flies. When the binaries or libraries -are edited or moved by an outside program or a user without editing the -registry, (for example, by trying to re-install gcc manually from -source) it can break the system.</p> -<p>The simplest way to get this kind of management is to use the -symlinks to the files from directories in the PATH. If the installed -files change, but the path stays the same, they can be updated without -changing the “installed” data at all. IT’s still tenuous – an update to -the build system could change the locations of built binaries.</p> -<h2 -id="declarative-and-in-situ-package-managers-nix-and-guix">Declarative -and in-situ package managers: Nix and Guix</h2> -<p>The Nix package manager uses the model of keeping the binaries in the -package manager’s repo without “installing” them. This is why nix -systems can’t break unless impure hacks are used.. Since binaries and -libraries are not <em>moved</em>, there is no chance of overwriting -things or losing track of where they are!</p> -<p>Let’s not distribute installers in the code builders like make, but -instead build it and use it as-is from the folder using an in-situ -package manager. By chance, that’s exactly how declarative package -managers work, and not how traditional registry managers work.</p> -<p>The benefits of declarative package management are plentiful, but -come at the cost of making development of one’s own programs and -installation of as-yet unpackaged software from the source more -difficult. Even simple shell scripts added to the PATH can’t be done -simply, the whole abstraction of the package manager has to be invoked, -or some impure hacks are needed.</p> -<p>The declarative package managers can be installed on another linux -which has a traditional registry package manager and impure environment. -Why not have both? It is “possible” to install two traditional package -managers on the same system, and will almost immediately break it due to -out of sync dependency management. With in-situ and system registry -managers installed together there are no conflicts, because the in-situ -manager stays in its own folder.</p> -<p>Package management solutions:</p> -<ul> -<li><p>In the build system -(<code>make install/uninstall</code>)</p></li> -<li><p>Using symlinks in the path (<code>ln -s</code>)</p></li> -<li><p>In-situ</p></li> -<li><p>Declarative + in-situ</p></li> -<li><p>Traditional system registry package managers</p></li> -<li><p>Declarative meta-package management language (does not exist -yet).</p></li> -</ul> -<h2 -id="final-note-should-there-be-an-uninstall-target-in-the-makefile">Final -note: should there be an uninstall target in the Makefile?</h2> -<ul> -<li><p>No, if the makefile doesn’t “install” the software but just -builds it.</p></li> -<li><p>Yes, if the makefile does “install” the software, it should also -have a way to “uninstall” the software.</p></li> -</ul> -<h2 -id="final-note-but-i-want-to-uninstall-something-anyway-with-nothing-more-than-make-and-not-use-an-uninstall">Final -note: but I want to uninstall something anyway with nothing more than -make and not use an uninstall!</h2> -<h3 -id="use-make-install-to-a-destdir-to-see-what-files-it-installs-and-remove-them">Use -make install to a DESTDIR to see what files it installs and remove -them</h3> -<p>It is the best way, albeit tedious and manual.</p> -<p>“rofl0r” says:</p> -<p>As the maintainer of a -<a href="https://github.com/sabotage-linux/sabotage" class="external-link">linux -distro</a>, i quickly learned that the DESTDIR <<a -href="https://www.gnu.org/prep/standards/html_node/DESTDIR.html" -class="uri">https://www.gnu.org/prep/standards/html_node/DESTDIR.html</a>> -variable is really *the* key to cleanly track the files installed by -arbitrary source projects, apart from much more elaborate solutions such -as doing installs in a sandbox with before/after comparison or using -file-system monitoring (e.g. via ptrace). it allows to install all files -into an arbitrary location, which makes it easy to e.g. create a -filelist, or in the case of my distro, the DESTDIR is used as the final -location where the package actually lives. if we take curl as an -example, it would be installed with empty prefix and DESTDIR=/opt/curl, -so the curl binary would live in /opt/curl/bin/curl, headers in -/opt/curl/include, etc. the package manager, as the last step of the -build/install process, then iterates over all files in /opt/curl and -symlinks them into the root prefix, e.g. /bin/curl will point to -/opt/curl/bin/curl. uninstalling a package then is as easy as to iterate -again over the files in /opt/curl (or in my case a filelist made -thereof, to reduce the amount of syscalls) to remove the symlinks and -finally rm -rf /opt/curl to delete the actual files.</p> + <description><![CDATA[<p>Much like “sending a file over the internet”, “installing software” +has not been solved generally. There’s more than one way to do it. A +mixed system that uses both declarative and traditional package managers +in unison is the way to go for now. It would be ideal to package a +non-specific declarative package install definition together with the +source of programs, and make unnecessary the concept of a “package +maintainer” for each package manager. The existence of two declarative +package managers already suggests the need for an arbitrary standard +which can transformed into a definition for any declarative system.</p> +<p>I used an LLM to generate hundreds of uninstall targets for make and +submit patches to the authors. Three authors wouldn’t patch my changes +in. Are they right? The argument goes like this: the software should not +be installed using make because make doesn’t register file install +locations in any way. Therefore make only uninstalles the correct files +by coincidence. For installing, it can do a little bit better using the +<code>install</code> program.</p> +<p>There is a better way which has been around forever: just use the +build from the source tree.</p> +<p>Let’s consider how the ASDF manager for Common Lisp works (and by +extension, quicklisp, which gets ASDF systems from the internet). It has +a central registry variable with a list of paths, and it recurs down it +to findsystem definitions when the definition loader is called. Then it +loads the files into the lisp core. As a result there is no need to have +code and binaries in different places. If compiled, it will just store +the compiled files together with the source. To “uninstall”, just delete +that project’s directory. Let’s call this “in-situ” package +management.</p> +<p>With POSIX make and arbitrary build systems like it, the subordinate +model can’t work, because ASDF can’t possibly predetermine what binaries +to use and where to put them. The logic can’t be generalized in the +package manager, and has to be managed per-project. Every package +manager now needs thousands of packages with hundreds of maintainers. +Typical package managers do installs imperatively and tracking the file +location metadata in the system flies. When the binaries or libraries +are edited or moved by an outside program or a user without editing the +registry, (for example, by trying to re-install gcc manually from +source) it can break the system.</p> +<p>The simplest way to get this kind of management is to use the +symlinks to the files from directories in the PATH. If the installed +files change, but the path stays the same, they can be updated without +changing the “installed” data at all. IT’s still tenuous – an update to +the build system could change the locations of built binaries.</p> +<h2 +id="declarative-and-in-situ-package-managers-nix-and-guix">Declarative +and in-situ package managers: Nix and Guix</h2> +<p>The Nix package manager uses the model of keeping the binaries in the +package manager’s repo without “installing” them. This is why nix +systems can’t break unless impure hacks are used.. Since binaries and +libraries are not <em>moved</em>, there is no chance of overwriting +things or losing track of where they are!</p> +<p>Let’s not distribute installers in the code builders like make, but +instead build it and use it as-is from the folder using an in-situ +package manager. By chance, that’s exactly how declarative package +managers work, and not how traditional registry managers work.</p> +<p>The benefits of declarative package management are plentiful, but +come at the cost of making development of one’s own programs and +installation of as-yet unpackaged software from the source more +difficult. Even simple shell scripts added to the PATH can’t be done +simply, the whole abstraction of the package manager has to be invoked, +or some impure hacks are needed.</p> +<p>The declarative package managers can be installed on another linux +which has a traditional registry package manager and impure environment. +Why not have both? It is “possible” to install two traditional package +managers on the same system, and will almost immediately break it due to +out of sync dependency management. With in-situ and system registry +managers installed together there are no conflicts, because the in-situ +manager stays in its own folder.</p> +<p>Package management solutions:</p> +<ul> +<li><p>In the build system +(<code>make install/uninstall</code>)</p></li> +<li><p>Using symlinks in the path (<code>ln -s</code>)</p></li> +<li><p>In-situ</p></li> +<li><p>Declarative + in-situ</p></li> +<li><p>Traditional system registry package managers</p></li> +<li><p>Declarative meta-package management language (does not exist +yet).</p></li> +</ul> +<h2 +id="final-note-should-there-be-an-uninstall-target-in-the-makefile">Final +note: should there be an uninstall target in the Makefile?</h2> +<ul> +<li><p>No, if the makefile doesn’t “install” the software but just +builds it.</p></li> +<li><p>Yes, if the makefile does “install” the software, it should also +have a way to “uninstall” the software.</p></li> +</ul> +<h2 +id="final-note-but-i-want-to-uninstall-something-anyway-with-nothing-more-than-make-and-not-use-an-uninstall">Final +note: but I want to uninstall something anyway with nothing more than +make and not use an uninstall!</h2> +<h3 +id="use-make-install-to-a-destdir-to-see-what-files-it-installs-and-remove-them">Use +make install to a DESTDIR to see what files it installs and remove +them</h3> +<p>It is the best way, albeit tedious and manual.</p> +<p>“rofl0r” says:</p> +<p>As the maintainer of a +<a href="https://github.com/sabotage-linux/sabotage" class="external-link">linux +distro</a>, i quickly learned that the DESTDIR <<a +href="https://www.gnu.org/prep/standards/html_node/DESTDIR.html" +class="uri">https://www.gnu.org/prep/standards/html_node/DESTDIR.html</a>> +variable is really *the* key to cleanly track the files installed by +arbitrary source projects, apart from much more elaborate solutions such +as doing installs in a sandbox with before/after comparison or using +file-system monitoring (e.g. via ptrace). it allows to install all files +into an arbitrary location, which makes it easy to e.g. create a +filelist, or in the case of my distro, the DESTDIR is used as the final +location where the package actually lives. if we take curl as an +example, it would be installed with empty prefix and DESTDIR=/opt/curl, +so the curl binary would live in /opt/curl/bin/curl, headers in +/opt/curl/include, etc. the package manager, as the last step of the +build/install process, then iterates over all files in /opt/curl and +symlinks them into the root prefix, e.g. /bin/curl will point to +/opt/curl/bin/curl. uninstalling a package then is as easy as to iterate +again over the files in /opt/curl (or in my case a filelist made +thereof, to reduce the amount of syscalls) to remove the symlinks and +finally rm -rf /opt/curl to delete the actual files.</p> ]]></description> </item> <item> @@ -515,33 +515,33 @@ finally rm -rf /opt/curl to delete the actual files.</p> <link>https://recentlywritten.com/tmpl-insanely-simple-templates.html</link> <guid isPermaLink="true">https://recentlywritten.com/tmpl-insanely-simple-templates.html</guid> <pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p><a href="https://github.com/equwal/tmpl" class="external-link">git -repo here</a></p> -<p>Templates for all kinds of things. Just read a file into your editor -at the cursor and jump to the <++> locations.</p> -<p>Here is one such template:</p> -<pre><code>(defpackage :<++>-system (:use :cl :asdf)) -(in-package :<++>-system) -(defsystem <++> - :name "<++>" - :author "<++> <<++>@<++>.<++>>" - :version "<++>" - :maintainer "<++> <<++>@<++>.<++>>" - :license "GNU GPLv3.0" - :description "<++>" - ;; put the most general files first to minimize the "depends on" use - ;; and in that case you'll need :serial t - :serial <++> - :components ((:file "packages") - (:file "<++>" :depends-on ("<++>"))) - :weakly-depends-on (<++>) - :depends-on (<++>))</code></pre> -<h2 id="using-with-vim">Using with Vim</h2> -<pre><code>:read /path/to/tmpl/thing</code></pre> -<p>Make sure to add a templating shortcut to your leader key to jump to -the <code><++></code> spots.</p> -<pre><code> -- Templating shortcut - map("n", "<leader><Space>", "/<++><CR>dt>a<BS>", { desc = "Jump to next template placeholder" })</code></pre> + <description><![CDATA[<p><a href="https://github.com/equwal/tmpl" class="external-link">git +repo here</a></p> +<p>Templates for all kinds of things. Just read a file into your editor +at the cursor and jump to the <++> locations.</p> +<p>Here is one such template:</p> +<pre><code>(defpackage :<++>-system (:use :cl :asdf)) +(in-package :<++>-system) +(defsystem <++> + :name "<++>" + :author "<++> <<++>@<++>.<++>>" + :version "<++>" + :maintainer "<++> <<++>@<++>.<++>>" + :license "GNU GPLv3.0" + :description "<++>" + ;; put the most general files first to minimize the "depends on" use + ;; and in that case you'll need :serial t + :serial <++> + :components ((:file "packages") + (:file "<++>" :depends-on ("<++>"))) + :weakly-depends-on (<++>) + :depends-on (<++>))</code></pre> +<h2 id="using-with-vim">Using with Vim</h2> +<pre><code>:read /path/to/tmpl/thing</code></pre> +<p>Make sure to add a templating shortcut to your leader key to jump to +the <code><++></code> spots.</p> +<pre><code> -- Templating shortcut + map("n", "<leader><Space>", "/<++><CR>dt>a<BS>", { desc = "Jump to next template placeholder" })</code></pre> ]]></description> </item> <item> @@ -549,52 +549,52 @@ the <code><++></code> spots.</p> <link>https://recentlywritten.com/tag-gen.html</link> <guid isPermaLink="true">https://recentlywritten.com/tag-gen.html</guid> <pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate> - <description><![CDATA[<p><a href="https://github.com/equwal/tag-gen" class="external-link">git -hub website link here</a></p> -<h2 id="purpose">PURPOSE:</h2> -<p>Specify which directories to generate tags for, and what kinds of -files<br /> -to generate them for in each. Good for tag jumping in an editor.</p> -<h2 id="requirements">Requirements</h2> -<ul> -<li><p>An ANSI Common Lisp</p></li> -<li><p>ASDF (for UIOP portable shell facilities)</p></li> -<li><p>A ctags-like program.</p></li> -<li><p>Desire</p></li> -</ul> -<h2 id="non-featuresnon-requirements">Non-features/Non-Requirements</h2> -<ul> -<li><p>Not multithreaded!</p></li> -<li><p>Works with any tag program (doesn’t do any tagging -itself)!</p></li> -<li><p>No special configuration language, just two sexps!</p></li> -<li><p>Does not use Roswell!</p></li> -<li><p>Works on my machine!</p></li> -</ul> -<h2 id="install">Install</h2> -<ol type="1"> -<li><p>put this folder somewhere</p></li> -<li><p>put the config folder somewhere</p></li> -<li><p>put the tag-gen.sh and tag-gen-root.sh somewhere</p></li> -<li><p>put the cron job in</p></li> -<li><p>put your configuration in</p></li> -</ol> -<p>Edit the config/ files with the paths you want tagged.</p> -<p>Add a command to cron like:</p> -<pre><code>*/29 * * * * su username -c 'tag-gen.sh /path/to/tag-gen/local.conf /usr/bin/etags' -*/29 * * * * su root -c 'tag-gen-root.sh /path/to/tag-gen/root.conf /usr/bin/etags'</code></pre> -<p>for routine tagging.</p> -<p>tags.conf needs to contain this kind of format:</p> -<pre><code>"/path/to/ctags/program" - -(("<directory>" ("<ext>"...)) - ...)</code></pre> -<p>The tags program reads the file extensions to infer what language to -do tags for. Specify the directories you want to use tag browsing -programs on.</p> -<p>See examples in config-examples. Configuration is -<strong>mandatory</strong> for the program to work. The format is just -read with the lisp reader and is very simple.</p> + <description><![CDATA[<p><a href="https://github.com/equwal/tag-gen" class="external-link">git +hub website link here</a></p> +<h2 id="purpose">PURPOSE:</h2> +<p>Specify which directories to generate tags for, and what kinds of +files<br /> +to generate them for in each. Good for tag jumping in an editor.</p> +<h2 id="requirements">Requirements</h2> +<ul> +<li><p>An ANSI Common Lisp</p></li> +<li><p>ASDF (for UIOP portable shell facilities)</p></li> +<li><p>A ctags-like program.</p></li> +<li><p>Desire</p></li> +</ul> +<h2 id="non-featuresnon-requirements">Non-features/Non-Requirements</h2> +<ul> +<li><p>Not multithreaded!</p></li> +<li><p>Works with any tag program (doesn’t do any tagging +itself)!</p></li> +<li><p>No special configuration language, just two sexps!</p></li> +<li><p>Does not use Roswell!</p></li> +<li><p>Works on my machine!</p></li> +</ul> +<h2 id="install">Install</h2> +<ol type="1"> +<li><p>put this folder somewhere</p></li> +<li><p>put the config folder somewhere</p></li> +<li><p>put the tag-gen.sh and tag-gen-root.sh somewhere</p></li> +<li><p>put the cron job in</p></li> +<li><p>put your configuration in</p></li> +</ol> +<p>Edit the config/ files with the paths you want tagged.</p> +<p>Add a command to cron like:</p> +<pre><code>*/29 * * * * su username -c 'tag-gen.sh /path/to/tag-gen/local.conf /usr/bin/etags' +*/29 * * * * su root -c 'tag-gen-root.sh /path/to/tag-gen/root.conf /usr/bin/etags'</code></pre> +<p>for routine tagging.</p> +<p>tags.conf needs to contain this kind of format:</p> +<pre><code>"/path/to/ctags/program" + +(("<directory>" ("<ext>"...)) + ...)</code></pre> +<p>The tags program reads the file extensions to infer what language to +do tags for. Specify the directories you want to use tag browsing +programs on.</p> +<p>See examples in config-examples. Configuration is +<strong>mandatory</strong> for the program to work. The format is just +read with the lisp reader and is very simple.</p> ]]></description> </item> </channel> diff --git a/site/rut.html b/site/rut.html index d56f478..be02a87 100755 --- a/site/rut.html +++ b/site/rut.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/sbm.html b/site/sbm.html index 0140773..040e86c 100755 --- a/site/sbm.html +++ b/site/sbm.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/serpentoj-en-la-puto.html b/site/serpentoj-en-la-puto.html index a7461c1..149ebe5 100755 --- a/site/serpentoj-en-la-puto.html +++ b/site/serpentoj-en-la-puto.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/sten-johansson.html b/site/sten-johansson.html index 290af69..edcdb72 100755 --- a/site/sten-johansson.html +++ b/site/sten-johansson.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/tag-gen.html b/site/tag-gen.html index bab79eb..f12e501 100755 --- a/site/tag-gen.html +++ b/site/tag-gen.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/tmpl-insanely-simple-templates.html b/site/tmpl-insanely-simple-templates.html index 106abb6..e82b50f 100755 --- a/site/tmpl-insanely-simple-templates.html +++ b/site/tmpl-insanely-simple-templates.html @@ -21,6 +21,7 @@ <a href="index.html">Home</a> <a href="lair.html">code</a> <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> <a href="esperanto.html">esperanto</a> <a href="call.html">contact</a> <a href="rss.xml">rss</a> diff --git a/site/youtube.html b/site/youtube.html new file mode 100644 index 0000000..bc150e5 --- /dev/null +++ b/site/youtube.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <title>YouTube — Recently Written</title> + <meta property="og:type" content="article" /> + <meta property="og:site_name" content="Recently Written" /> + <meta property="og:title" content="YouTube" /> + <meta property="og:url" content="https://recentlywritten.com/youtube.html" /> + <meta name="twitter:card" content="summary" /> + <link rel="stylesheet" href="style.css" /> + <link rel="alternate" type="application/rss+xml" title="Recently Written" href="rss.xml" /> +</head> +<body> +<div id="container"> + + <div id="top"> + <a class="site-title" href="index.html">Recently Written</a> + <nav> + <a href="index.html">Home</a> + <a href="lair.html">code</a> + <a href="git/index.html">git</a> + <a href="youtube.html">youtube</a> + <a href="esperanto.html">esperanto</a> + <a href="call.html">contact</a> + <a href="rss.xml">rss</a> + </nav> + </div> + + <h1 class="post-title">YouTube</h1> + + <p>Two channels.</p> + <ul> + <li><a href="https://www.youtube.com/@therealtruex">Truex + (@therealtruex)</a> — the original language-learning channel.</li> + <li><a href="https://www.youtube.com/@muhlanguages">мои язычки + (@muhlanguages)</a> — languages and AI, the current one.</li> + </ul> + + <div id="footer"> + <a href="index.html">← Home</a> · + <a href="https://github.com/equwal">Github</a> + </div> + +</div> +</body> +</html>