summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-01-24 23:13:41 +0200
committerPaul Buetow <paul@buetow.org>2026-01-24 23:13:41 +0200
commit5a1ad4520aac86c7371c8bee9488396122dfc79c (patch)
treeb64d16d5af164480271da83f8f1f6666e87b2469
parentfc17cbab55fddac2f19efdccc2d37f5e5275e60d (diff)
Update content for html
-rw-r--r--about/resources.html204
-rw-r--r--about/showcase.html628
-rw-r--r--about/showcase/debroid/image-1.png112
-rw-r--r--gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html24
-rw-r--r--gemfeed/atom.xml26
-rw-r--r--index.html2
-rw-r--r--uptime-stats.html138
7 files changed, 578 insertions, 556 deletions
diff --git a/about/resources.html b/about/resources.html
index 153192f6..ea534198 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -50,112 +50,112 @@
<span>In random order:</span><br />
<br />
<ul>
-<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
-<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
-<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
+<li>Raku Fundamentals; Moritz Lenz; Apress</li>
<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li>
-<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
-<li>Funktionale Programmierung; Peter Pepper; Springer</li>
-<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
-<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
-<li>Java ist auch eine Insel; Christian Ullenboom; </li>
-<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
-<li>C++ Programming Language; Bjarne Stroustrup;</li>
-<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
-<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li>
-<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
-<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
-<li>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
-<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
-<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
-<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
-<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
-<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
-<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li>
-<li>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
-<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
+<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
+<li>Ultimate Go Notebook; Bill Kennedy</li>
+<li>The Docker Book; James Turnbull; Kindle</li>
<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li>
+<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
+<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li>
-<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
-<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
+<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
+<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
+<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
+<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
+<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
+<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
+<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
+<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
+<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
+<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
+<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
+<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
+<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li>
+<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
+<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
+<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O&#39;Reilly</li>
-<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
-<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
+<li>Java ist auch eine Insel; Christian Ullenboom; </li>
+<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
+<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
+<li>Funktionale Programmierung; Peter Pepper; Springer</li>
<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li>
+<li>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
<li>Raku Recipes; J.J. Merelo; Apress</li>
-<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
-<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
-<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
+<li>C++ Programming Language; Bjarne Stroustrup;</li>
+<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
+<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li>
+<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
+<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
+<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
-<li>Raku Fundamentals; Moritz Lenz; Apress</li>
-<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
-<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
-<li>The Docker Book; James Turnbull; Kindle</li>
-<li>Ultimate Go Notebook; Bill Kennedy</li>
-<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
-<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
-<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
+<li>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
+<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
+<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
+<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
+<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
</ul><br />
<h2 style='display: inline' id='technical-references'>Technical references</h2><br />
<br />
<span>I didn&#39;t read them from the beginning to the end, but I am using them to look up things. The books are in random order:</span><br />
<br />
<ul>
-<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O&#39;Reilly</li>
-<li>Relayd and Httpd Mastery; Michael W Lucas</li>
<li>Groovy Kurz &amp; Gut; Joerg Staudemeier; O&#39;Reilly</li>
-<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
-<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li>
<li>Implementing Service Level Objectives; Alex Hidalgo; O&#39;Reilly</li>
+<li>Relayd and Httpd Mastery; Michael W Lucas</li>
+<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
+<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
+<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
</ul><br />
<h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br />
<br />
<span>In random order:</span><br />
<br />
<ul>
-<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
-<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
+<li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li>
+<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
+<li>Deep Work; Cal Newport; Piatkus</li>
+<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
+<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
+<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
-<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
+<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
+<li>Getting Things Done; David Allen</li>
<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon &amp; Schuster UK</li>
+<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
-<li>Atomic Habits; James Clear; Random House Business</li>
-<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
+<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
<li>The Software Engineer&#39;s Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li>
-<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
-<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
+<li>Slow Productivity; Cal Newport; Penguin Random House</li>
+<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
-<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
-<li>Deep Work; Cal Newport; Piatkus</li>
-<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
-<li>Ultralearning; Scott Young; Thorsons</li>
-<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
-<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
+<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
+<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
+<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
<li>Soft Skills; John Sommez; Manning Publications</li>
+<li>Ultralearning; Scott Young; Thorsons</li>
+<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li>
+<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
+<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
+<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
+<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
+<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
+<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
+<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li>
+<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li>
+<li>Atomic Habits; James Clear; Random House Business</li>
<li>Eat That Frog; Brian Tracy</li>
-<li>Slow Productivity; Cal Newport; Penguin Random House</li>
<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li>
-<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
-<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
+<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
-<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
-<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li>
<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li>
-<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
-<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li>
-<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li>
-<li>Getting Things Done; David Allen</li>
-<li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li>
-<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
-<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
-<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
-<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
-<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
+<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
</ul><br />
<a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br />
<br />
@@ -164,30 +164,30 @@
<span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br />
<br />
<ul>
-<li>Protocol buffers; O&#39;Reilly Online</li>
+<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
+<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
+<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
+<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
<li>The Ultimate Kubernetes Bootcamp; School of Devops; O&#39;Reilly Online</li>
+<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
+<li>Protocol buffers; O&#39;Reilly Online</li>
+<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li>
-<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
+<li>Functional programming lecture; Remote University of Hagen</li>
<li>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</li>
-<li>Ultimate Go Programming; Bill Kennedy; O&#39;Reilly Online</li>
-<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
-<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
-<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
<li>Apache Tomcat Best Practises; 3-day on-site training</li>
-<li>Functional programming lecture; Remote University of Hagen</li>
-<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
+<li>Ultimate Go Programming; Bill Kennedy; O&#39;Reilly Online</li>
+<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li>
-<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
<li>Scripting Vim; Damian Conway; O&#39;Reilly Online</li>
-<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
</ul><br />
<h2 style='display: inline' id='technical-guides'>Technical guides</h2><br />
<br />
<span>These are not whole books, but guides (smaller or larger) which I found very useful. in random order:</span><br />
<br />
<ul>
-<li>How CPUs work at https://cpu.land</li>
<li>Raku Guide at https://raku.guide </li>
+<li>How CPUs work at https://cpu.land</li>
<li>Advanced Bash-Scripting Guide </li>
</ul><br />
<h2 style='display: inline' id='podcasts'>Podcasts</h2><br />
@@ -197,51 +197,51 @@
<span>In random order:</span><br />
<br />
<ul>
+<li>Fallthrough [Golang]</li>
<li>The ProdCast (Google SRE Podcast)</li>
-<li>Modern Mentor</li>
-<li>Pratical AI</li>
<li>Cup o&#39; Go [Golang]</li>
+<li>The Changelog Podcast(s)</li>
+<li>Modern Mentor</li>
<li>Backend Banter</li>
+<li>BSD Now [BSD]</li>
<li>Wednesday Wisdom</li>
-<li>Maintainable</li>
<li>The Pragmatic Engineer Podcast</li>
-<li>Deep Questions with Cal Newport</li>
<li>Dev Interrupted</li>
-<li>The Changelog Podcast(s)</li>
-<li>Hidden Brain</li>
-<li>Fallthrough [Golang]</li>
-<li>BSD Now [BSD]</li>
<li>Fork Around And Find Out</li>
+<li>Pratical AI</li>
+<li>Deep Questions with Cal Newport</li>
+<li>Hidden Brain</li>
+<li>Maintainable</li>
</ul><br />
<h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br />
<br />
<span>I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.</span><br />
<br />
<ul>
-<li>Modern Mentor</li>
<li>Go Time (predecessor of fallthrough)</li>
+<li>CRE: Chaosradio Express [german]</li>
<li>FLOSS weekly</li>
-<li>Java Pub House</li>
+<li>Modern Mentor</li>
<li>Ship It (predecessor of Fork Around And Find Out)</li>
-<li>CRE: Chaosradio Express [german]</li>
+<li>Java Pub House</li>
</ul><br />
<h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br />
<br />
<span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br />
<br />
<ul>
-<li>Register Spill</li>
-<li>Applied Go Weekly Newsletter</li>
+<li>Ruby Weekly</li>
+<li>VK Newsletter</li>
<li>The Pragmatic Engineer</li>
+<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
<li>Monospace Mentor</li>
-<li>Changelog News</li>
-<li>The Valuable Dev</li>
-<li>byteSizeGo</li>
<li>The Imperfectionist</li>
-<li>VK Newsletter</li>
+<li>Applied Go Weekly Newsletter</li>
<li>Golang Weekly</li>
-<li>Ruby Weekly</li>
-<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
+<li>The Valuable Dev</li>
+<li>byteSizeGo</li>
+<li>Register Spill</li>
+<li>Changelog News</li>
</ul><br />
<h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br />
<br />
@@ -249,9 +249,9 @@
<br />
<ul>
<li>LWN (online only)</li>
-<li>Linux User</li>
-<li>Linux Magazine</li>
<li>freeX (not published anymore)</li>
+<li>Linux Magazine</li>
+<li>Linux User</li>
</ul><br />
<h1 style='display: inline' id='formal-education'>Formal education</h1><br />
<br />
diff --git a/about/showcase.html b/about/showcase.html
index aacec2c3..c9b8c16a 100644
--- a/about/showcase.html
+++ b/about/showcase.html
@@ -13,7 +13,7 @@
</p>
<h1 style='display: inline' id='project-showcase'>Project Showcase</h1><br />
<br />
-<span>Generated on: 2026-01-08</span><br />
+<span>Generated on: 2026-01-24</span><br />
<br />
<span>This page showcases my side projects, providing an overview of what each project does, its technical implementation, and key metrics. Each project summary includes information about the programming languages used, development activity, and licensing. The projects are ranked by score, which combines project size and recent activity.</span><br />
<br />
@@ -24,26 +24,26 @@
<li>⇢ <a href='#overall-statistics'>Overall Statistics</a></li>
<li>⇢ <a href='#projects'>Projects</a></li>
<li>⇢ ⇢ <a href='#1-conf'>1. conf</a></li>
-<li>⇢ ⇢ <a href='#2-foozone'>2. foo.zone</a></li>
+<li>⇢ ⇢ <a href='#2-log4jbench'>2. log4jbench</a></li>
<li>⇢ ⇢ <a href='#3-epimetheus'>3. epimetheus</a></li>
<li>⇢ ⇢ <a href='#4-perc'>4. perc</a></li>
<li>⇢ ⇢ <a href='#5-hexai'>5. hexai</a></li>
<li>⇢ ⇢ <a href='#6-yoga'>6. yoga</a></li>
-<li>⇢ ⇢ <a href='#7-gitsyncer'>7. gitsyncer</a></li>
-<li>⇢ ⇢ <a href='#8-totalrecall'>8. totalrecall</a></li>
+<li>⇢ ⇢ <a href='#7-totalrecall'>7. totalrecall</a></li>
+<li>⇢ ⇢ <a href='#8-gitsyncer'>8. gitsyncer</a></li>
<li>⇢ ⇢ <a href='#9-foostats'>9. foostats</a></li>
-<li>⇢ ⇢ <a href='#10-timr'>10. timr</a></li>
-<li>⇢ ⇢ <a href='#11-tasksamurai'>11. tasksamurai</a></li>
-<li>⇢ ⇢ <a href='#12-ior'>12. ior</a></li>
-<li>⇢ ⇢ <a href='#13-dtail'>13. dtail</a></li>
-<li>⇢ ⇢ <a href='#14-gos'>14. gos</a></li>
-<li>⇢ ⇢ <a href='#15-ds-sim'>15. ds-sim</a></li>
-<li>⇢ ⇢ <a href='#16-gemtexter'>16. gemtexter</a></li>
-<li>⇢ ⇢ <a href='#17-wireguardmeshgenerator'>17. wireguardmeshgenerator</a></li>
-<li>⇢ ⇢ <a href='#18-rcm'>18. rcm</a></li>
-<li>⇢ ⇢ <a href='#19-gogios'>19. gogios</a></li>
-<li>⇢ ⇢ <a href='#20-sillybench'>20. sillybench</a></li>
-<li>⇢ ⇢ <a href='#21-terraform'>21. terraform</a></li>
+<li>⇢ ⇢ <a href='#10-gogios'>10. gogios</a></li>
+<li>⇢ ⇢ <a href='#11-timr'>11. timr</a></li>
+<li>⇢ ⇢ <a href='#12-tasksamurai'>12. tasksamurai</a></li>
+<li>⇢ ⇢ <a href='#13-ior'>13. ior</a></li>
+<li>⇢ ⇢ <a href='#14-dtail'>14. dtail</a></li>
+<li>⇢ ⇢ <a href='#15-gos'>15. gos</a></li>
+<li>⇢ ⇢ <a href='#16-ds-sim'>16. ds-sim</a></li>
+<li>⇢ ⇢ <a href='#17-gemtexter'>17. gemtexter</a></li>
+<li>⇢ ⇢ <a href='#18-wireguardmeshgenerator'>18. wireguardmeshgenerator</a></li>
+<li>⇢ ⇢ <a href='#19-rcm'>19. rcm</a></li>
+<li>⇢ ⇢ <a href='#20-terraform'>20. terraform</a></li>
+<li>⇢ ⇢ <a href='#21-sillybench'>21. sillybench</a></li>
<li>⇢ ⇢ <a href='#22-quicklogger'>22. quicklogger</a></li>
<li>⇢ ⇢ <a href='#23-gorum'>23. gorum</a></li>
<li>⇢ ⇢ <a href='#24-guprecords'>24. guprecords</a></li>
@@ -51,60 +51,61 @@
<li>⇢ ⇢ <a href='#26-geheim'>26. geheim</a></li>
<li>⇢ ⇢ <a href='#27-algorithms'>27. algorithms</a></li>
<li>⇢ ⇢ <a href='#28-randomjournalpage'>28. randomjournalpage</a></li>
-<li>⇢ ⇢ <a href='#29-photoalbum'>29. photoalbum</a></li>
-<li>⇢ ⇢ <a href='#30-ioriot'>30. ioriot</a></li>
-<li>⇢ ⇢ <a href='#31-sway-autorotate'>31. sway-autorotate</a></li>
-<li>⇢ ⇢ <a href='#32-mon'>32. mon</a></li>
-<li>⇢ ⇢ <a href='#33-staticfarm-apache-handlers'>33. staticfarm-apache-handlers</a></li>
-<li>⇢ ⇢ <a href='#34-pingdomfetch'>34. pingdomfetch</a></li>
-<li>⇢ ⇢ <a href='#35-ychat'>35. ychat</a></li>
-<li>⇢ ⇢ <a href='#36-xerl'>36. xerl</a></li>
-<li>⇢ ⇢ <a href='#37-perl-c-fibonacci'>37. perl-c-fibonacci</a></li>
-<li>⇢ ⇢ <a href='#38-fapi'>38. fapi</a></li>
+<li>⇢ ⇢ <a href='#29-ioriot'>29. ioriot</a></li>
+<li>⇢ ⇢ <a href='#30-sway-autorotate'>30. sway-autorotate</a></li>
+<li>⇢ ⇢ <a href='#31-mon'>31. mon</a></li>
+<li>⇢ ⇢ <a href='#32-staticfarm-apache-handlers'>32. staticfarm-apache-handlers</a></li>
+<li>⇢ ⇢ <a href='#33-pingdomfetch'>33. pingdomfetch</a></li>
+<li>⇢ ⇢ <a href='#34-xerl'>34. xerl</a></li>
+<li>⇢ ⇢ <a href='#35-fapi'>35. fapi</a></li>
+<li>⇢ ⇢ <a href='#36-photoalbum'>36. photoalbum</a></li>
+<li>⇢ ⇢ <a href='#37-ychat'>37. ychat</a></li>
+<li>⇢ ⇢ <a href='#38-perl-c-fibonacci'>38. perl-c-fibonacci</a></li>
<li>⇢ ⇢ <a href='#39-netcalendar'>39. netcalendar</a></li>
<li>⇢ ⇢ <a href='#40-loadbars'>40. loadbars</a></li>
<li>⇢ ⇢ <a href='#41-gotop'>41. gotop</a></li>
-<li>⇢ ⇢ <a href='#42-vs-sim'>42. vs-sim</a></li>
+<li>⇢ ⇢ <a href='#42-fype'>42. fype</a></li>
<li>⇢ ⇢ <a href='#43-rubyfy'>43. rubyfy</a></li>
-<li>⇢ ⇢ <a href='#44-fype'>44. fype</a></li>
-<li>⇢ ⇢ <a href='#45-pwgrep'>45. pwgrep</a></li>
-<li>⇢ ⇢ <a href='#46-perldaemon'>46. perldaemon</a></li>
-<li>⇢ ⇢ <a href='#47-jsmstrade'>47. jsmstrade</a></li>
-<li>⇢ ⇢ <a href='#48-japi'>48. japi</a></li>
-<li>⇢ ⇢ <a href='#49-perl-poetry'>49. perl-poetry</a></li>
-<li>⇢ ⇢ <a href='#50-muttdelay'>50. muttdelay</a></li>
-<li>⇢ ⇢ <a href='#51-netdiff'>51. netdiff</a></li>
-<li>⇢ ⇢ <a href='#52-debroid'>52. debroid</a></li>
-<li>⇢ ⇢ <a href='#53-hsbot'>53. hsbot</a></li>
-<li>⇢ ⇢ <a href='#54-cpuinfo'>54. cpuinfo</a></li>
-<li>⇢ ⇢ <a href='#55-template'>55. template</a></li>
-<li>⇢ ⇢ <a href='#56-ipv6test'>56. ipv6test</a></li>
-<li>⇢ ⇢ <a href='#57-awksite'>57. awksite</a></li>
-<li>⇢ ⇢ <a href='#58-dyndns'>58. dyndns</a></li>
+<li>⇢ ⇢ <a href='#44-pwgrep'>44. pwgrep</a></li>
+<li>⇢ ⇢ <a href='#45-perldaemon'>45. perldaemon</a></li>
+<li>⇢ ⇢ <a href='#46-jsmstrade'>46. jsmstrade</a></li>
+<li>⇢ ⇢ <a href='#47-japi'>47. japi</a></li>
+<li>⇢ ⇢ <a href='#48-perl-poetry'>48. perl-poetry</a></li>
+<li>⇢ ⇢ <a href='#49-muttdelay'>49. muttdelay</a></li>
+<li>⇢ ⇢ <a href='#50-netdiff'>50. netdiff</a></li>
+<li>⇢ ⇢ <a href='#51-debroid'>51. debroid</a></li>
+<li>⇢ ⇢ <a href='#52-hsbot'>52. hsbot</a></li>
+<li>⇢ ⇢ <a href='#53-cpuinfo'>53. cpuinfo</a></li>
+<li>⇢ ⇢ <a href='#54-template'>54. template</a></li>
+<li>⇢ ⇢ <a href='#55-ipv6test'>55. ipv6test</a></li>
+<li>⇢ ⇢ <a href='#56-awksite'>56. awksite</a></li>
+<li>⇢ ⇢ <a href='#57-dyndns'>57. dyndns</a></li>
+<li>⇢ ⇢ <a href='#58-vs-sim'>58. vs-sim</a></li>
+<li>⇢ ⇢ <a href='#59-foozone'>59. foo.zone</a></li>
</ul><br />
<h2 style='display: inline' id='overall-statistics'>Overall Statistics</h2><br />
<br />
<ul>
-<li>📦 Total Projects: 58</li>
-<li>📊 Total Commits: 11,672</li>
-<li>📈 Total Lines of Code: 314,725</li>
-<li>📄 Total Lines of Documentation: 32,713</li>
-<li>💻 Languages: Go (28.6%), Java (18.0%), C++ (11.8%), C/C++ (6.6%), C (6.1%), XML (5.6%), Perl (5.6%), Shell (5.2%), HTML (4.6%), YAML (1.9%), Config (1.4%), Ruby (0.9%), HCL (0.9%), Python (0.7%), Make (0.6%), CSS (0.4%), JSON (0.4%), Raku (0.3%), Haskell (0.2%)</li>
-<li>📚 Documentation: Markdown (55.8%), Text (33.7%), LaTeX (10.5%)</li>
-<li>🚀 Release Status: 38 released, 20 experimental (65.5% with releases, 34.5% experimental)</li>
+<li>📦 Total Projects: 59</li>
+<li>📊 Total Commits: 12,767</li>
+<li>📈 Total Lines of Code: 293,318</li>
+<li>📄 Total Lines of Documentation: 31,738</li>
+<li>💻 Languages: Go (31.3%), Java (14.0%), C++ (7.7%), C (6.6%), HTML (6.2%), Shell (6.2%), CSS (5.9%), Perl (5.9%), C/C++ (4.9%), YAML (2.8%), Python (2.4%), Config (1.5%), JSON (1.1%), Ruby (1.0%), HCL (0.9%), Make (0.6%), Raku (0.3%), XML (0.3%), Haskell (0.2%), TOML (0.1%)</li>
+<li>📚 Documentation: Markdown (62.6%), Text (35.6%), LaTeX (1.8%)</li>
+<li>🚀 Release Status: 38 released, 21 experimental (64.4% with releases, 35.6% experimental)</li>
</ul><br />
<h2 style='display: inline' id='projects'>Projects</h2><br />
<br />
<h3 style='display: inline' id='1-conf'>1. conf</h3><br />
<br />
<ul>
-<li>💻 Languages: YAML (51.5%), Perl (17.4%), Shell (14.0%), Python (3.9%), Config (3.1%), CSS (3.0%), TOML (2.7%), Ruby (2.3%), Docker (0.8%), Lua (0.6%), JSON (0.3%), HTML (0.2%)</li>
-<li>📚 Documentation: Markdown (94.8%), Text (5.2%)</li>
-<li>📊 Commits: 1148</li>
-<li>📈 Lines of Code: 10970</li>
-<li>📄 Lines of Documentation: 3649</li>
-<li>📅 Development Period: 2021-12-28 to 2026-01-08</li>
-<li>🏆 Score: 707.8 (combines code size and activity)</li>
+<li>💻 Languages: YAML (55.0%), Shell (18.0%), Perl (13.5%), Python (3.1%), Config (2.4%), CSS (2.3%), TOML (2.1%), Ruby (1.8%), Docker (0.9%), Lua (0.5%), JSON (0.2%), HTML (0.2%)</li>
+<li>📚 Documentation: Markdown (96.1%), Text (3.9%)</li>
+<li>📊 Commits: 2167</li>
+<li>📈 Lines of Code: 14113</li>
+<li>📄 Lines of Documentation: 4886</li>
+<li>📅 Development Period: 2021-12-28 to 2026-01-23</li>
+<li>🏆 Score: 622.2 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -118,24 +119,26 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='2-foozone'>2. foo.zone</h3><br />
+<h3 style='display: inline' id='2-log4jbench'>2. log4jbench</h3><br />
<br />
<ul>
-<li>💻 Languages: XML (98.5%), Shell (1.1%), Go (0.4%)</li>
-<li>📚 Documentation: Text (86.7%), Markdown (13.3%)</li>
-<li>📊 Commits: 3376</li>
-<li>📈 Lines of Code: 17290</li>
-<li>📄 Lines of Documentation: 173</li>
-<li>📅 Development Period: 2021-04-29 to 2026-01-08</li>
-<li>🏆 Score: 448.1 (combines code size and activity)</li>
-<li>⚖️ License: No license found</li>
+<li>💻 Languages: Java (78.9%), XML (21.1%)</li>
+<li>📚 Documentation: Markdown (100.0%)</li>
+<li>📊 Commits: 4</li>
+<li>📈 Lines of Code: 774</li>
+<li>📄 Lines of Documentation: 119</li>
+<li>📅 Development Period: 2026-01-09 to 2026-01-09</li>
+<li>🏆 Score: 184.8 (combines code size and activity)</li>
+<li>⚖️ License: MIT</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
<br />
-<span>foo.zone: source code repository.</span><br />
+<span>This is a Java-based benchmarking tool for measuring Log4j2 logging throughput under different configurations. It allows developers to compare synchronous vs. asynchronous logging strategies by testing five built-in configurations: immediate-flush sync, buffered sync, and async loggers with varying LMAX Disruptor ring buffer sizes (1K/4K/10K). The tool supports configurable thread counts, duration or event-count based testing, custom message sizes, and CSV export for analysis.</span><br />
<br />
-<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br />
+<span>The implementation uses a fat JAR built with Maven, requiring Java 17+. It&#39;s designed for realistic benchmarking—including warmup periods and optional Linux filesystem cache dropping between tests. This helps developers make informed decisions about Log4j2 configuration tradeoffs between latency (immediate flush), throughput (buffered/async), and memory usage (ring buffer sizing) for their specific workloads.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/log4jbench'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/log4jbench'>View on GitHub</a><br />
<br />
<span>---</span><br />
<br />
@@ -148,7 +151,7 @@
<li>📈 Lines of Code: 3869</li>
<li>📄 Lines of Documentation: 3700</li>
<li>📅 Development Period: 2025-12-30 to 2026-01-06</li>
-<li>🏆 Score: 393.4 (combines code size and activity)</li>
+<li>🏆 Score: 144.0 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -173,7 +176,7 @@
<li>📈 Lines of Code: 452</li>
<li>📄 Lines of Documentation: 80</li>
<li>📅 Development Period: 2025-11-25 to 2025-11-25</li>
-<li>🏆 Score: 59.2 (combines code size and activity)</li>
+<li>🏆 Score: 43.8 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🏷️ Latest Release: v0.1.0 (2025-11-25)</li>
</ul><br />
@@ -196,7 +199,7 @@
<li>📈 Lines of Code: 28331</li>
<li>📄 Lines of Documentation: 562</li>
<li>📅 Development Period: 2025-08-01 to 2025-11-03</li>
-<li>🏆 Score: 41.9 (combines code size and activity)</li>
+<li>🏆 Score: 36.5 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🏷️ Latest Release: v0.15.3 (2025-11-03)</li>
</ul><br />
@@ -221,7 +224,7 @@
<li>📈 Lines of Code: 3408</li>
<li>📄 Lines of Documentation: 82</li>
<li>📅 Development Period: 2025-10-01 to 2025-10-24</li>
-<li>🏆 Score: 37.5 (combines code size and activity)</li>
+<li>🏆 Score: 32.1 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🏷️ Latest Release: v0.3.0 (2025-10-24)</li>
</ul><br />
@@ -237,16 +240,43 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='7-gitsyncer'>7. gitsyncer</h3><br />
+<h3 style='display: inline' id='7-totalrecall'>7. totalrecall</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Go (99.0%), Shell (0.5%), YAML (0.4%)</li>
+<li>📚 Documentation: Markdown (99.5%), Text (0.5%)</li>
+<li>📊 Commits: 101</li>
+<li>📈 Lines of Code: 13129</li>
+<li>📄 Lines of Documentation: 377</li>
+<li>📅 Development Period: 2025-07-14 to 2026-01-21</li>
+<li>🏆 Score: 31.8 (combines code size and activity)</li>
+<li>⚖️ License: MIT</li>
+<li>🏷️ Latest Release: v0.8.0 (2026-01-21)</li>
+</ul><br />
+<br />
+<a href='showcase/totalrecall/image-1.png'><img alt='totalrecall screenshot' title='totalrecall screenshot' src='showcase/totalrecall/image-1.png' /></a><br />
+<br />
+<span>TotalRecall is a Go-based tool that generates comprehensive Anki flashcard materials for Bulgarian language learning. It creates high-quality audio pronunciations using OpenAI TTS (with 11 voice options), AI-generated contextual images via DALL-E, IPA phonetic transcriptions, and automatic Bulgarian-English translations. The tool supports both single-word and batch processing, making it efficient for building large vocabulary decks. It outputs Anki-compatible packages (APKG) with all media files bundled, ready for immediate import.</span><br />
+<br />
+<a href='showcase/totalrecall/image-2.png'><img alt='totalrecall screenshot' title='totalrecall screenshot' src='showcase/totalrecall/image-2.png' /></a><br />
+<br />
+<span>The project offers both a keyboard-driven GUI for interactive use and a CLI for automation, built with Go using the Cobra framework for command handling. It leverages OpenAI&#39;s APIs for both audio synthesis and image generation, creating memorable visual contexts with random art styles to enhance retention. The architecture follows clean Go package structure with separate internal packages for audio, image, config, and Anki format generation, making it maintainable and extensible for future enhancements.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/totalrecall'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/totalrecall'>View on GitHub</a><br />
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='8-gitsyncer'>8. gitsyncer</h3><br />
<br />
<ul>
<li>💻 Languages: Go (92.2%), Shell (7.4%), JSON (0.4%)</li>
<li>📚 Documentation: Markdown (100.0%)</li>
-<li>📊 Commits: 114</li>
+<li>📊 Commits: 116</li>
<li>📈 Lines of Code: 10075</li>
<li>📄 Lines of Documentation: 2432</li>
<li>📅 Development Period: 2025-06-23 to 2025-12-31</li>
-<li>🏆 Score: 25.8 (combines code size and activity)</li>
+<li>🏆 Score: 23.4 (combines code size and activity)</li>
<li>⚖️ License: BSD-2-Clause</li>
<li>🏷️ Latest Release: v0.11.0 (2025-12-31)</li>
</ul><br />
@@ -260,33 +290,6 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='8-totalrecall'>8. totalrecall</h3><br />
-<br />
-<ul>
-<li>💻 Languages: Go (98.9%), Shell (0.5%), YAML (0.5%)</li>
-<li>📚 Documentation: Markdown (100.0%)</li>
-<li>📊 Commits: 88</li>
-<li>📈 Lines of Code: 12003</li>
-<li>📄 Lines of Documentation: 361</li>
-<li>📅 Development Period: 2025-07-14 to 2025-08-02</li>
-<li>🏆 Score: 23.8 (combines code size and activity)</li>
-<li>⚖️ License: MIT</li>
-<li>🏷️ Latest Release: v0.7.5 (2025-08-02)</li>
-</ul><br />
-<br />
-<a href='showcase/totalrecall/image-1.png'><img alt='totalrecall screenshot' title='totalrecall screenshot' src='showcase/totalrecall/image-1.png' /></a><br />
-<br />
-<span>TotalRecall is a Go-based tool that generates comprehensive Anki flashcard materials for Bulgarian language learning. It creates high-quality audio pronunciations using OpenAI TTS (with 11 voice options), AI-generated contextual images via DALL-E, IPA phonetic transcriptions, and automatic Bulgarian-English translations. The tool supports both single-word and batch processing, making it efficient for building large vocabulary decks. It outputs Anki-compatible packages (APKG) with all media files bundled, ready for immediate import.</span><br />
-<br />
-<a href='showcase/totalrecall/image-2.png'><img alt='totalrecall screenshot' title='totalrecall screenshot' src='showcase/totalrecall/image-2.png' /></a><br />
-<br />
-<span>The project offers both a keyboard-driven GUI for interactive use and a CLI for automation, built with Go using the Cobra framework for command handling. It leverages OpenAI&#39;s APIs for both audio synthesis and image generation, creating memorable visual contexts with random art styles to enhance retention. The architecture follows clean Go package structure with separate internal packages for audio, image, config, and Anki format generation, making it maintainable and extensible for future enhancements.</span><br />
-<br />
-<a class='textlink' href='https://codeberg.org/snonux/totalrecall'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/totalrecall'>View on GitHub</a><br />
-<br />
-<span>---</span><br />
-<br />
<h3 style='display: inline' id='9-foostats'>9. foostats</h3><br />
<br />
<ul>
@@ -296,7 +299,7 @@
<li>📈 Lines of Code: 1902</li>
<li>📄 Lines of Documentation: 423</li>
<li>📅 Development Period: 2023-01-02 to 2025-11-01</li>
-<li>🏆 Score: 23.3 (combines code size and activity)</li>
+<li>🏆 Score: 21.0 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
<li>🏷️ Latest Release: v0.2.0 (2025-10-21)</li>
</ul><br />
@@ -310,7 +313,32 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='10-timr'>10. timr</h3><br />
+<h3 style='display: inline' id='10-gogios'>10. gogios</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Go (98.5%), JSON (0.9%), YAML (0.6%)</li>
+<li>📚 Documentation: Markdown (94.9%), Text (5.1%)</li>
+<li>📊 Commits: 101</li>
+<li>📈 Lines of Code: 2921</li>
+<li>📄 Lines of Documentation: 394</li>
+<li>📅 Development Period: 2023-04-17 to 2026-01-22</li>
+<li>🏆 Score: 19.1 (combines code size and activity)</li>
+<li>⚖️ License: Custom License</li>
+<li>🏷️ Latest Release: v1.3.0 (2026-01-06)</li>
+</ul><br />
+<br />
+<a href='showcase/gogios/image-1.png'><img alt='gogios screenshot' title='gogios screenshot' src='showcase/gogios/image-1.png' /></a><br />
+<br />
+<span>Gogios is a minimalistic monitoring tool written in Go for small-scale infrastructure (e.g., personal servers and VMs). It executes standard Nagios/Icinga monitoring plugins via CRON jobs, tracks state changes in a JSON file, and sends email notifications through a local MTA only when check statuses change. Unlike full-featured monitoring solutions (Nagios, Icinga, Prometheus), Gogios deliberately avoids complexity—no databases, web UIs, clustering, or contact groups—making it ideal for simple, self-hosted environments with limited monitoring needs.</span><br />
+<br />
+<span>The architecture is straightforward: JSON configuration defines checks (plugin paths, arguments, timeouts, dependencies, retries), a state directory persists check results between runs, and concurrent execution with configurable limits keeps things efficient. Key features include check dependencies (skip HTTP checks if ping fails), retry logic, stale alert detection, re-notification schedules, and support for remote checks via NRPE. A basic high-availability setup is achievable by running Gogios on two servers with staggered CRON intervals, though this results in duplicate notifications when both servers are operational—a deliberate trade-off for simplicity.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/gogios'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/gogios'>View on GitHub</a><br />
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='11-timr'>11. timr</h3><br />
<br />
<ul>
<li>💻 Languages: Go (96.0%), Shell (4.0%)</li>
@@ -319,7 +347,7 @@
<li>📈 Lines of Code: 1538</li>
<li>📄 Lines of Documentation: 99</li>
<li>📅 Development Period: 2025-06-25 to 2026-01-02</li>
-<li>🏆 Score: 20.7 (combines code size and activity)</li>
+<li>🏆 Score: 18.7 (combines code size and activity)</li>
<li>⚖️ License: MIT</li>
<li>🏷️ Latest Release: v0.3.0 (2026-01-02)</li>
</ul><br />
@@ -333,7 +361,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='11-tasksamurai'>11. tasksamurai</h3><br />
+<h3 style='display: inline' id='12-tasksamurai'>12. tasksamurai</h3><br />
<br />
<ul>
<li>💻 Languages: Go (99.8%), YAML (0.2%)</li>
@@ -342,7 +370,7 @@
<li>📈 Lines of Code: 6168</li>
<li>📄 Lines of Documentation: 164</li>
<li>📅 Development Period: 2025-06-19 to 2025-11-02</li>
-<li>🏆 Score: 19.8 (combines code size and activity)</li>
+<li>🏆 Score: 18.3 (combines code size and activity)</li>
<li>⚖️ License: BSD-2-Clause</li>
<li>🏷️ Latest Release: v0.9.3 (2025-10-05)</li>
</ul><br />
@@ -360,7 +388,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='12-ior'>12. ior</h3><br />
+<h3 style='display: inline' id='13-ior'>13. ior</h3><br />
<br />
<ul>
<li>💻 Languages: Go (50.4%), C (43.1%), Raku (4.5%), Make (1.1%), C/C++ (1.0%)</li>
@@ -369,7 +397,7 @@
<li>📈 Lines of Code: 13072</li>
<li>📄 Lines of Documentation: 680</li>
<li>📅 Development Period: 2024-01-18 to 2025-10-09</li>
-<li>🏆 Score: 19.6 (combines code size and activity)</li>
+<li>🏆 Score: 18.3 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -387,16 +415,16 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='13-dtail'>13. dtail</h3><br />
+<h3 style='display: inline' id='14-dtail'>14. dtail</h3><br />
<br />
<ul>
<li>💻 Languages: Go (93.9%), JSON (2.8%), C (2.0%), Make (0.5%), C/C++ (0.3%), Config (0.2%), Shell (0.2%), Docker (0.1%)</li>
<li>📚 Documentation: Text (79.4%), Markdown (20.6%)</li>
-<li>📊 Commits: 1046</li>
+<li>📊 Commits: 1050</li>
<li>📈 Lines of Code: 20091</li>
<li>📄 Lines of Documentation: 5674</li>
<li>📅 Development Period: 2020-01-09 to 2025-06-20</li>
-<li>🏆 Score: 18.2 (combines code size and activity)</li>
+<li>🏆 Score: 17.0 (combines code size and activity)</li>
<li>⚖️ License: Apache-2.0</li>
<li>🏷️ Latest Release: v4.3.3 (2024-08-23)</li>
</ul><br />
@@ -414,7 +442,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='14-gos'>14. gos</h3><br />
+<h3 style='display: inline' id='15-gos'>15. gos</h3><br />
<br />
<ul>
<li>💻 Languages: Go (99.8%), JSON (0.2%)</li>
@@ -423,7 +451,7 @@
<li>📈 Lines of Code: 4102</li>
<li>📄 Lines of Documentation: 357</li>
<li>📅 Development Period: 2024-05-04 to 2025-12-27</li>
-<li>🏆 Score: 17.7 (combines code size and activity)</li>
+<li>🏆 Score: 16.4 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
<li>🏷️ Latest Release: v1.2.2 (2025-12-27)</li>
</ul><br />
@@ -441,7 +469,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='15-ds-sim'>15. ds-sim</h3><br />
+<h3 style='display: inline' id='16-ds-sim'>16. ds-sim</h3><br />
<br />
<ul>
<li>💻 Languages: Java (98.9%), Shell (0.6%), CSS (0.5%)</li>
@@ -450,7 +478,7 @@
<li>📈 Lines of Code: 25762</li>
<li>📄 Lines of Documentation: 3101</li>
<li>📅 Development Period: 2008-05-15 to 2025-06-27</li>
-<li>🏆 Score: 16.4 (combines code size and activity)</li>
+<li>🏆 Score: 15.5 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -466,15 +494,15 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='16-gemtexter'>16. gemtexter</h3><br />
+<h3 style='display: inline' id='17-gemtexter'>17. gemtexter</h3><br />
<br />
<ul>
-<li>💻 Languages: Shell (68.2%), CSS (28.5%), Config (1.9%), HTML (1.3%)</li>
-<li>📚 Documentation: Text (76.1%), Markdown (23.9%)</li>
+<li>💻 Languages: CSS (55.3%), Python (16.1%), HTML (15.3%), JSON (6.6%), Shell (5.3%), Config (1.5%)</li>
+<li>📚 Documentation: Text (70.2%), Markdown (29.8%)</li>
<li>📊 Commits: 472</li>
-<li>📈 Lines of Code: 2288</li>
-<li>📄 Lines of Documentation: 1180</li>
-<li>📅 Development Period: 2021-05-21 to 2025-12-31</li>
+<li>📈 Lines of Code: 30319</li>
+<li>📄 Lines of Documentation: 1280</li>
+<li>📅 Development Period: 2021-05-21 to 2025-06-22</li>
<li>🏆 Score: 11.1 (combines code size and activity)</li>
<li>⚖️ License: GPL-3.0</li>
<li>🏷️ Latest Release: 3.0.0 (2024-10-01)</li>
@@ -489,16 +517,16 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='17-wireguardmeshgenerator'>17. wireguardmeshgenerator</h3><br />
+<h3 style='display: inline' id='18-wireguardmeshgenerator'>18. wireguardmeshgenerator</h3><br />
<br />
<ul>
-<li>💻 Languages: Ruby (73.5%), YAML (26.5%)</li>
+<li>💻 Languages: Ruby (65.4%), YAML (34.6%)</li>
<li>📚 Documentation: Markdown (100.0%)</li>
-<li>📊 Commits: 33</li>
-<li>📈 Lines of Code: 396</li>
+<li>📊 Commits: 36</li>
+<li>📈 Lines of Code: 563</li>
<li>📄 Lines of Documentation: 24</li>
-<li>📅 Development Period: 2025-04-18 to 2025-05-11</li>
-<li>🏆 Score: 10.2 (combines code size and activity)</li>
+<li>📅 Development Period: 2025-04-18 to 2026-01-20</li>
+<li>🏆 Score: 11.0 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
<li>🏷️ Latest Release: v1.0.0 (2025-05-11)</li>
</ul><br />
@@ -512,7 +540,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='18-rcm'>18. rcm</h3><br />
+<h3 style='display: inline' id='19-rcm'>19. rcm</h3><br />
<br />
<ul>
<li>💻 Languages: Ruby (99.8%), TOML (0.2%)</li>
@@ -521,7 +549,7 @@
<li>📈 Lines of Code: 1377</li>
<li>📄 Lines of Documentation: 113</li>
<li>📅 Development Period: 2024-12-05 to 2025-11-26</li>
-<li>🏆 Score: 9.9 (combines code size and activity)</li>
+<li>🏆 Score: 9.5 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -535,32 +563,30 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='19-gogios'>19. gogios</h3><br />
+<h3 style='display: inline' id='20-terraform'>20. terraform</h3><br />
<br />
<ul>
-<li>💻 Languages: Go (98.0%), JSON (1.2%), YAML (0.9%)</li>
+<li>💻 Languages: HCL (96.6%), Make (1.9%), YAML (1.5%)</li>
<li>📚 Documentation: Markdown (100.0%)</li>
-<li>📊 Commits: 85</li>
-<li>📈 Lines of Code: 2063</li>
-<li>📄 Lines of Documentation: 211</li>
-<li>📅 Development Period: 2023-04-17 to 2026-01-06</li>
-<li>🏆 Score: 6.3 (combines code size and activity)</li>
-<li>⚖️ License: Custom License</li>
-<li>🏷️ Latest Release: v1.3.0 (2026-01-06)</li>
+<li>📊 Commits: 125</li>
+<li>📈 Lines of Code: 2851</li>
+<li>📄 Lines of Documentation: 52</li>
+<li>📅 Development Period: 2023-08-27 to 2025-08-08</li>
+<li>🏆 Score: 5.1 (combines code size and activity)</li>
+<li>⚖️ License: MIT</li>
+<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
<br />
-<a href='showcase/gogios/image-1.png'><img alt='gogios screenshot' title='gogios screenshot' src='showcase/gogios/image-1.png' /></a><br />
-<br />
-<span>Gogios is a minimalistic monitoring tool written in Go for small-scale infrastructure (e.g., personal servers and VMs). It executes standard Nagios/Icinga monitoring plugins via CRON jobs, tracks state changes in a JSON file, and sends email notifications through a local MTA only when check statuses change. Unlike full-featured monitoring solutions (Nagios, Icinga, Prometheus), Gogios deliberately avoids complexity—no databases, web UIs, clustering, or contact groups—making it ideal for simple, self-hosted environments with limited monitoring needs.</span><br />
+<span>This is a **Terraform-based AWS infrastructure project** that automates the deployment of a multi-service, self-hosted application platform. It orchestrates containerized services (Nextcloud, Vaultwarden, Wallabag, Anki Sync Server, Audiobookshelf) on AWS ECS/Fargate with shared persistent storage via EFS, load balancing, and proper network isolation. The setup includes automated TLS certificate management, DNS configuration, and a bastion host for administrative access.</span><br />
<br />
-<span>The architecture is straightforward: JSON configuration defines checks (plugin paths, arguments, timeouts, dependencies, retries), a state directory persists check results between runs, and concurrent execution with configurable limits keeps things efficient. Key features include check dependencies (skip HTTP checks if ping fails), retry logic, stale alert detection, re-notification schedules, and support for remote checks via NRPE. A basic high-availability setup is achievable by running Gogios on two servers with staggered CRON intervals, though this results in duplicate notifications when both servers are operational—a deliberate trade-off for simplicity.</span><br />
+<span>The infrastructure uses a **modular, layered architecture** with separate Terraform modules for foundational resources (<span class='inlinecode'>org-buetow-base</span> for VPC/networking), compute layers (<span class='inlinecode'>org-buetow-ecs</span>, <span class='inlinecode'>org-buetow-eks</span>), load balancing (<span class='inlinecode'>org-buetow-elb</span>), storage (<span class='inlinecode'>s3-*</span>), and management (<span class='inlinecode'>org-buetow-bastion</span>). This approach allows incremental deployment and clear separation of concerns, making it useful for anyone wanting to host multiple personal/team services on AWS with infrastructure-as-code practices while maintaining security, scalability, and automated backups.</span><br />
<br />
-<a class='textlink' href='https://codeberg.org/snonux/gogios'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/gogios'>View on GitHub</a><br />
+<a class='textlink' href='https://codeberg.org/snonux/terraform'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/terraform'>View on GitHub</a><br />
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='20-sillybench'>20. sillybench</h3><br />
+<h3 style='display: inline' id='21-sillybench'>21. sillybench</h3><br />
<br />
<ul>
<li>💻 Languages: Go (90.9%), Shell (9.1%)</li>
@@ -569,7 +595,7 @@
<li>📈 Lines of Code: 33</li>
<li>📄 Lines of Documentation: 3</li>
<li>📅 Development Period: 2025-04-03 to 2025-04-03</li>
-<li>🏆 Score: 5.4 (combines code size and activity)</li>
+<li>🏆 Score: 5.1 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -583,29 +609,6 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='21-terraform'>21. terraform</h3><br />
-<br />
-<ul>
-<li>💻 Languages: HCL (96.6%), Make (1.9%), YAML (1.5%)</li>
-<li>📚 Documentation: Markdown (100.0%)</li>
-<li>📊 Commits: 125</li>
-<li>📈 Lines of Code: 2851</li>
-<li>📄 Lines of Documentation: 52</li>
-<li>📅 Development Period: 2023-08-27 to 2025-08-08</li>
-<li>🏆 Score: 5.2 (combines code size and activity)</li>
-<li>⚖️ License: MIT</li>
-<li>🧪 Status: Experimental (no releases yet)</li>
-</ul><br />
-<br />
-<span>This is a **Terraform-based AWS infrastructure project** that automates the deployment of a multi-service, self-hosted application platform. It orchestrates containerized services (Nextcloud, Vaultwarden, Wallabag, Anki Sync Server, Audiobookshelf) on AWS ECS/Fargate with shared persistent storage via EFS, load balancing, and proper network isolation. The setup includes automated TLS certificate management, DNS configuration, and a bastion host for administrative access.</span><br />
-<br />
-<span>The infrastructure uses a **modular, layered architecture** with separate Terraform modules for foundational resources (<span class='inlinecode'>org-buetow-base</span> for VPC/networking), compute layers (<span class='inlinecode'>org-buetow-ecs</span>, <span class='inlinecode'>org-buetow-eks</span>), load balancing (<span class='inlinecode'>org-buetow-elb</span>), storage (<span class='inlinecode'>s3-*</span>), and management (<span class='inlinecode'>org-buetow-bastion</span>). This approach allows incremental deployment and clear separation of concerns, making it useful for anyone wanting to host multiple personal/team services on AWS with infrastructure-as-code practices while maintaining security, scalability, and automated backups.</span><br />
-<br />
-<a class='textlink' href='https://codeberg.org/snonux/terraform'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/terraform'>View on GitHub</a><br />
-<br />
-<span>---</span><br />
-<br />
<h3 style='display: inline' id='22-quicklogger'>22. quicklogger</h3><br />
<br />
<ul>
@@ -615,7 +618,7 @@
<li>📈 Lines of Code: 1133</li>
<li>📄 Lines of Documentation: 78</li>
<li>📅 Development Period: 2024-01-20 to 2025-09-13</li>
-<li>🏆 Score: 5.2 (combines code size and activity)</li>
+<li>🏆 Score: 5.1 (combines code size and activity)</li>
<li>⚖️ License: MIT</li>
<li>🏷️ Latest Release: v0.0.4 (2025-09-13)</li>
</ul><br />
@@ -642,7 +645,7 @@
<li>📈 Lines of Code: 1525</li>
<li>📄 Lines of Documentation: 15</li>
<li>📅 Development Period: 2023-04-17 to 2023-11-19</li>
-<li>🏆 Score: 3.6 (combines code size and activity)</li>
+<li>🏆 Score: 3.5 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -666,7 +669,7 @@
<li>📈 Lines of Code: 312</li>
<li>📄 Lines of Documentation: 416</li>
<li>📅 Development Period: 2013-03-22 to 2025-05-18</li>
-<li>🏆 Score: 2.7 (combines code size and activity)</li>
+<li>🏆 Score: 2.6 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🏷️ Latest Release: v1.0.0 (2023-04-29)</li>
</ul><br />
@@ -689,7 +692,7 @@
<li>📈 Lines of Code: 40</li>
<li>📄 Lines of Documentation: 3</li>
<li>📅 Development Period: 2023-12-31 to 2025-08-11</li>
-<li>🏆 Score: 2.6 (combines code size and activity)</li>
+<li>🏆 Score: 2.5 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
@@ -774,31 +777,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='29-photoalbum'>29. photoalbum</h3><br />
-<br />
-<ul>
-<li>💻 Languages: Shell (80.1%), Make (12.3%), Config (7.6%)</li>
-<li>📚 Documentation: Markdown (100.0%)</li>
-<li>📊 Commits: 153</li>
-<li>📈 Lines of Code: 342</li>
-<li>📄 Lines of Documentation: 39</li>
-<li>📅 Development Period: 2011-11-19 to 2022-04-02</li>
-<li>🏆 Score: 1.7 (combines code size and activity)</li>
-<li>⚖️ License: No license found</li>
-<li>🏷️ Latest Release: 0.5.0 (2022-02-21)</li>
-</ul><br />
-<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
-<br />
-<span>**photoalbum** is a minimal Bash-based static site generator specifically designed for creating web photo albums on Unix-like systems. It transforms a directory of photos into a pure HTML+CSS website without any JavaScript, making it lightweight, fast, and accessible. The tool uses ImageMagick&#39;s <span class='inlinecode'>convert</span> utility for image processing and employs Bash-HTML template files that users can customize to match their preferences.</span><br />
-<br />
-<span>The architecture is straightforward and Unix-philosophy driven: users configure a source directory containing photos via an <span class='inlinecode'>photoalbumrc</span> configuration file, run the generation command, and receive a fully static <span class='inlinecode'>./dist</span> directory ready for deployment to any web server. This approach is useful for users who want a simple, dependency-light solution for sharing photo collections online without the overhead of dynamic web applications, databases, or JavaScript frameworks—just clean, static HTML that works everywhere.</span><br />
-<br />
-<a class='textlink' href='https://codeberg.org/snonux/photoalbum'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/photoalbum'>View on GitHub</a><br />
-<br />
-<span>---</span><br />
-<br />
-<h3 style='display: inline' id='30-ioriot'>30. ioriot</h3><br />
+<h3 style='display: inline' id='29-ioriot'>29. ioriot</h3><br />
<br />
<ul>
<li>💻 Languages: C (55.5%), C/C++ (24.0%), Config (19.6%), Make (1.0%)</li>
@@ -807,7 +786,7 @@
<li>📈 Lines of Code: 12420</li>
<li>📄 Lines of Documentation: 610</li>
<li>📅 Development Period: 2018-03-01 to 2020-01-22</li>
-<li>🏆 Score: 1.6 (combines code size and activity)</li>
+<li>🏆 Score: 1.5 (combines code size and activity)</li>
<li>⚖️ License: Apache-2.0</li>
<li>🏷️ Latest Release: 0.5.1 (2019-01-04)</li>
</ul><br />
@@ -824,7 +803,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='31-sway-autorotate'>31. sway-autorotate</h3><br />
+<h3 style='display: inline' id='30-sway-autorotate'>30. sway-autorotate</h3><br />
<br />
<ul>
<li>💻 Languages: Shell (100.0%)</li>
@@ -847,7 +826,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='32-mon'>32. mon</h3><br />
+<h3 style='display: inline' id='31-mon'>31. mon</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (96.5%), Shell (1.8%), Make (1.2%), Config (0.4%)</li>
@@ -871,7 +850,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='33-staticfarm-apache-handlers'>33. staticfarm-apache-handlers</h3><br />
+<h3 style='display: inline' id='32-staticfarm-apache-handlers'>32. staticfarm-apache-handlers</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (96.4%), Make (3.6%)</li>
@@ -895,7 +874,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='34-pingdomfetch'>34. pingdomfetch</h3><br />
+<h3 style='display: inline' id='33-pingdomfetch'>33. pingdomfetch</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (97.3%), Make (2.7%)</li>
@@ -919,31 +898,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='35-ychat'>35. ychat</h3><br />
-<br />
-<ul>
-<li>💻 Languages: C++ (54.9%), C/C++ (23.0%), Shell (13.8%), Perl (2.5%), HTML (2.5%), Config (2.3%), Make (0.8%), CSS (0.2%)</li>
-<li>📚 Documentation: Text (100.0%)</li>
-<li>📊 Commits: 67</li>
-<li>📈 Lines of Code: 67884</li>
-<li>📄 Lines of Documentation: 127</li>
-<li>📅 Development Period: 2008-05-15 to 2014-06-30</li>
-<li>🏆 Score: 0.9 (combines code size and activity)</li>
-<li>⚖️ License: GPL-2.0</li>
-<li>🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)</li>
-</ul><br />
-<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
-<br />
-<span>yChat is a high-performance, web-based chat server written in C++ that allows users to connect through standard web browsers without requiring special client software. It functions as a standalone HTTP server on a customizable port (default 2000), eliminating the need for Apache or other web servers, and uses only HTML, CSS, and JavaScript on the client side. The project was developed under the GNU GPL and designed for portability across POSIX-compliant systems including Linux, FreeBSD, and other UNIX variants.</span><br />
-<br />
-<span>The architecture emphasizes speed and scalability through several key design choices: multi-threaded POSIX implementation with thread pooling to efficiently handle concurrent users, hash maps for O(1) data lookups, and a smart garbage collection system that caches inactive user and room objects for quick reuse. It features MySQL database support for registered users, a modular plugin system through dynamically loadable modules, HTML template-based customization, XML configuration, and an ncurses-based administration interface with CLI support. The codebase can also be converted to yhttpd, a standalone web server subset. Performance benchmarks show it handling over 1000 requests/second while using minimal CPU resources, with the system supporting comprehensive logging, multi-language support, and Apache-compatible log formats.</span><br />
-<br />
-<a class='textlink' href='https://codeberg.org/snonux/ychat'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/ychat'>View on GitHub</a><br />
-<br />
-<span>---</span><br />
-<br />
-<h3 style='display: inline' id='36-xerl'>36. xerl</h3><br />
+<h3 style='display: inline' id='34-xerl'>34. xerl</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (98.3%), Config (1.2%), Make (0.5%)</li>
@@ -965,49 +920,96 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='37-perl-c-fibonacci'>37. perl-c-fibonacci</h3><br />
+<h3 style='display: inline' id='35-fapi'>35. fapi</h3><br />
<br />
<ul>
-<li>💻 Languages: C (80.4%), Make (19.6%)</li>
+<li>💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)</li>
+<li>📚 Documentation: Text (98.3%), Markdown (1.7%)</li>
+<li>📊 Commits: 221</li>
+<li>📈 Lines of Code: 1681</li>
+<li>📄 Lines of Documentation: 539</li>
+<li>📅 Development Period: 2014-03-10 to 2026-01-10</li>
+<li>🏆 Score: 0.8 (combines code size and activity)</li>
+<li>⚖️ License: No license found</li>
+<li>🏷️ Latest Release: 1.0.2 (2014-11-17)</li>
+</ul><br />
+<br />
+<span>fapi is a command-line tool for managing F5 BigIP load balancers through the iControl API. It provides a simple, human-friendly interface for common load balancer operations including managing nodes, pools, virtual servers, monitors, and network components like VLANs and self IPs. The tool supports various deployment patterns including nPath services, NAT/SNAT configurations, and SSL offloading, while offering intelligent features like automatic FQDN-to-IP resolution and flexible naming conventions.</span><br />
+<br />
+<span>The tool is implemented in Python and depends on the bigsuds library (F5&#39;s iControl wrapper) to communicate with the F5 API. It&#39;s designed as a lightweight alternative to the web GUI or raw API calls, with a straightforward command syntax (e.g., <span class='inlinecode'>fapi pool foopool create</span>, <span class='inlinecode'>fapi vserver example.com:80 set pool foopool</span>) that makes common tasks quick and scriptable. The project is open source and hosted on Codeberg, originally developed as a personal project for Debian-based systems.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/fapi'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/fapi'>View on GitHub</a><br />
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='36-photoalbum'>36. photoalbum</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Shell (78.1%), Make (13.5%), Config (8.4%)</li>
<li>📚 Documentation: Text (100.0%)</li>
-<li>📊 Commits: 4</li>
-<li>📈 Lines of Code: 51</li>
-<li>📄 Lines of Documentation: 69</li>
-<li>📅 Development Period: 2014-03-24 to 2022-04-23</li>
+<li>📊 Commits: 153</li>
+<li>📈 Lines of Code: 311</li>
+<li>📄 Lines of Documentation: 45</li>
+<li>📅 Development Period: 2011-11-19 to 2022-02-20</li>
<li>🏆 Score: 0.8 (combines code size and activity)</li>
<li>⚖️ License: No license found</li>
-<li>🧪 Status: Experimental (no releases yet)</li>
+<li>🏷️ Latest Release: 0.5.0 (2022-02-21)</li>
</ul><br />
<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
<br />
-<span>perl-c-fibonacci: source code repository.</span><br />
+<span>**photoalbum** is a minimal Bash-based static site generator specifically designed for creating web photo albums on Unix-like systems. It transforms a directory of photos into a pure HTML+CSS website without any JavaScript, making it lightweight, fast, and accessible. The tool uses ImageMagick&#39;s <span class='inlinecode'>convert</span> utility for image processing and employs Bash-HTML template files that users can customize to match their preferences.</span><br />
<br />
-<a class='textlink' href='https://codeberg.org/snonux/perl-c-fibonacci'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/perl-c-fibonacci'>View on GitHub</a><br />
+<span>The architecture is straightforward and Unix-philosophy driven: users configure a source directory containing photos via an <span class='inlinecode'>photoalbumrc</span> configuration file, run the generation command, and receive a fully static <span class='inlinecode'>./dist</span> directory ready for deployment to any web server. This approach is useful for users who want a simple, dependency-light solution for sharing photo collections online without the overhead of dynamic web applications, databases, or JavaScript frameworks—just clean, static HTML that works everywhere.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/photoalbum'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/photoalbum'>View on GitHub</a><br />
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='38-fapi'>38. fapi</h3><br />
+<h3 style='display: inline' id='37-ychat'>37. ychat</h3><br />
<br />
<ul>
-<li>💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)</li>
-<li>📚 Documentation: Text (98.3%), Markdown (1.7%)</li>
-<li>📊 Commits: 219</li>
-<li>📈 Lines of Code: 1681</li>
-<li>📄 Lines of Documentation: 539</li>
-<li>📅 Development Period: 2014-03-10 to 2021-11-03</li>
+<li>💻 Languages: C++ (48.9%), Shell (22.7%), C/C++ (20.7%), Perl (2.5%), HTML (2.1%), Config (1.9%), Make (0.9%), CSS (0.2%)</li>
+<li>📚 Documentation: Text (100.0%)</li>
+<li>📊 Commits: 67</li>
+<li>📈 Lines of Code: 45956</li>
+<li>📄 Lines of Documentation: 101</li>
+<li>📅 Development Period: 2008-05-15 to 2014-06-30</li>
<li>🏆 Score: 0.8 (combines code size and activity)</li>
-<li>⚖️ License: No license found</li>
-<li>🏷️ Latest Release: 1.0.2 (2014-11-17)</li>
+<li>⚖️ License: GPL-2.0</li>
+<li>🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)</li>
</ul><br />
<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
<br />
-<span>fapi is a command-line tool for managing F5 BigIP load balancers through the iControl API. It provides a simple, human-friendly interface for common load balancer operations including managing nodes, pools, virtual servers, monitors, and network components like VLANs and self IPs. The tool supports various deployment patterns including nPath services, NAT/SNAT configurations, and SSL offloading, while offering intelligent features like automatic FQDN-to-IP resolution and flexible naming conventions.</span><br />
+<span>yChat is a high-performance, web-based chat server written in C++ that allows users to connect through standard web browsers without requiring special client software. It functions as a standalone HTTP server on a customizable port (default 2000), eliminating the need for Apache or other web servers, and uses only HTML, CSS, and JavaScript on the client side. The project was developed under the GNU GPL and designed for portability across POSIX-compliant systems including Linux, FreeBSD, and other UNIX variants.</span><br />
<br />
-<span>The tool is implemented in Python and depends on the bigsuds library (F5&#39;s iControl wrapper) to communicate with the F5 API. It&#39;s designed as a lightweight alternative to the web GUI or raw API calls, with a straightforward command syntax (e.g., <span class='inlinecode'>fapi pool foopool create</span>, <span class='inlinecode'>fapi vserver example.com:80 set pool foopool</span>) that makes common tasks quick and scriptable. The project is open source and hosted on Codeberg, originally developed as a personal project for Debian-based systems.</span><br />
+<span>The architecture emphasizes speed and scalability through several key design choices: multi-threaded POSIX implementation with thread pooling to efficiently handle concurrent users, hash maps for O(1) data lookups, and a smart garbage collection system that caches inactive user and room objects for quick reuse. It features MySQL database support for registered users, a modular plugin system through dynamically loadable modules, HTML template-based customization, XML configuration, and an ncurses-based administration interface with CLI support. The codebase can also be converted to yhttpd, a standalone web server subset. Performance benchmarks show it handling over 1000 requests/second while using minimal CPU resources, with the system supporting comprehensive logging, multi-language support, and Apache-compatible log formats.</span><br />
<br />
-<a class='textlink' href='https://codeberg.org/snonux/fapi'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/fapi'>View on GitHub</a><br />
+<a class='textlink' href='https://codeberg.org/snonux/ychat'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/ychat'>View on GitHub</a><br />
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='38-perl-c-fibonacci'>38. perl-c-fibonacci</h3><br />
+<br />
+<ul>
+<li>💻 Languages: C (80.4%), Make (19.6%)</li>
+<li>📚 Documentation: Text (100.0%)</li>
+<li>📊 Commits: 4</li>
+<li>📈 Lines of Code: 51</li>
+<li>📄 Lines of Documentation: 69</li>
+<li>📅 Development Period: 2014-03-24 to 2022-04-23</li>
+<li>🏆 Score: 0.8 (combines code size and activity)</li>
+<li>⚖️ License: No license found</li>
+<li>🧪 Status: Experimental (no releases yet)</li>
+</ul><br />
+<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
+<br />
+<span>perl-c-fibonacci: source code repository.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/perl-c-fibonacci'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/perl-c-fibonacci'>View on GitHub</a><br />
<br />
<span>---</span><br />
<br />
@@ -1085,29 +1087,27 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='42-vs-sim'>42. vs-sim</h3><br />
+<h3 style='display: inline' id='42-fype'>42. fype</h3><br />
<br />
<ul>
-<li>💻 Languages: Java (98.8%), Shell (0.7%), XML (0.4%)</li>
-<li>📚 Documentation: LaTeX (98.4%), Text (1.4%), Markdown (0.2%)</li>
-<li>📊 Commits: 411</li>
-<li>📈 Lines of Code: 16303</li>
-<li>📄 Lines of Documentation: 2903</li>
-<li>📅 Development Period: 2008-05-15 to 2021-05-01</li>
+<li>💻 Languages: C (71.1%), C/C++ (20.7%), HTML (6.6%), Make (1.5%)</li>
+<li>📚 Documentation: Text (69.5%), LaTeX (30.5%)</li>
+<li>📊 Commits: 99</li>
+<li>📈 Lines of Code: 8952</li>
+<li>📄 Lines of Documentation: 1867</li>
+<li>📅 Development Period: 2008-05-15 to 2021-11-03</li>
<li>🏆 Score: 0.7 (combines code size and activity)</li>
<li>⚖️ License: Custom License</li>
-<li>🏷️ Latest Release: v1.0 (2008-08-24)</li>
+<li>🧪 Status: Experimental (no releases yet)</li>
</ul><br />
<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
<br />
-<a href='showcase/vs-sim/image-1.jpg'><img alt='vs-sim screenshot' title='vs-sim screenshot' src='showcase/vs-sim/image-1.jpg' /></a><br />
-<br />
-<span>VS-Sim is a Java-based open source simulator for distributed systems, designed to help students and researchers visualize and understand distributed computing concepts. Based on the roadmap, it appears to support simulating various distributed systems protocols including Lamport and vector clocks for logical time management, and potentially distributed file systems like NFS and AFS. The simulator features event-based simulation, logging capabilities, and a plugin architecture.</span><br />
+<span>Fype is a 32-bit scripting language designed as a fun, AWK-inspired alternative with a simpler syntax. It supports variables with automatic type conversion, functions, loops, control structures, and built-in operations for math, I/O, and system calls. A notable feature is its support for "synonyms" (references/aliases to variables and functions), along with both procedures (using the caller&#39;s namespace) and functions (with lexical scoping). The language uses a straightforward syntax with single-character comments (#) and statement-based execution terminated by semicolons.</span><br />
<br />
-<span>The project appears to be currently inactive, with the repository containing minimal source code at present. It was originally developed as part of academic work (referenced as "diplomarbeit.pdf" in the roadmap), likely for teaching distributed systems concepts through interactive simulation and protocol visualization.</span><br />
+<span>The implementation uses a simple top-down parser with maximum lookahead of 1, interpreting code simultaneously as it parses, which means syntax errors are only caught at runtime. Written in C and compiled with GCC, it&#39;s designed for BSD systems (tested on FreeBSD 7.0) and uses NetBSD Make for building. The project is still unreleased and incomplete, but aims to eventually match AWK&#39;s capabilities while potentially adding modern features like function pointers and closures, though explicitly avoiding complexity like OOP, Unicode, or threading.</span><br />
<br />
-<a class='textlink' href='https://codeberg.org/snonux/vs-sim'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/vs-sim'>View on GitHub</a><br />
+<a class='textlink' href='https://codeberg.org/snonux/fype'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/fype'>View on GitHub</a><br />
<br />
<span>---</span><br />
<br />
@@ -1135,31 +1135,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='44-fype'>44. fype</h3><br />
-<br />
-<ul>
-<li>💻 Languages: C (71.3%), C/C++ (20.6%), HTML (6.6%), Make (1.5%)</li>
-<li>📚 Documentation: Text (60.2%), LaTeX (39.8%)</li>
-<li>📊 Commits: 99</li>
-<li>📈 Lines of Code: 8906</li>
-<li>📄 Lines of Documentation: 1431</li>
-<li>📅 Development Period: 2008-05-15 to 2021-04-29</li>
-<li>🏆 Score: 0.7 (combines code size and activity)</li>
-<li>⚖️ License: Custom License</li>
-<li>🧪 Status: Experimental (no releases yet)</li>
-</ul><br />
-<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
-<br />
-<span>Fype is a 32-bit scripting language designed as a fun, AWK-inspired alternative with a simpler syntax. It supports variables with automatic type conversion, functions, loops, control structures, and built-in operations for math, I/O, and system calls. A notable feature is its support for "synonyms" (references/aliases to variables and functions), along with both procedures (using the caller&#39;s namespace) and functions (with lexical scoping). The language uses a straightforward syntax with single-character comments (#) and statement-based execution terminated by semicolons.</span><br />
-<br />
-<span>The implementation uses a simple top-down parser with maximum lookahead of 1, interpreting code simultaneously as it parses, which means syntax errors are only caught at runtime. Written in C and compiled with GCC, it&#39;s designed for BSD systems (tested on FreeBSD 7.0) and uses NetBSD Make for building. The project is still unreleased and incomplete, but aims to eventually match AWK&#39;s capabilities while potentially adding modern features like function pointers and closures, though explicitly avoiding complexity like OOP, Unicode, or threading.</span><br />
-<br />
-<a class='textlink' href='https://codeberg.org/snonux/fype'>View on Codeberg</a><br />
-<a class='textlink' href='https://github.com/snonux/fype'>View on GitHub</a><br />
-<br />
-<span>---</span><br />
-<br />
-<h3 style='display: inline' id='45-pwgrep'>45. pwgrep</h3><br />
+<h3 style='display: inline' id='44-pwgrep'>44. pwgrep</h3><br />
<br />
<ul>
<li>💻 Languages: Shell (85.0%), Make (15.0%)</li>
@@ -1183,7 +1159,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='46-perldaemon'>46. perldaemon</h3><br />
+<h3 style='display: inline' id='45-perldaemon'>45. perldaemon</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (72.3%), Shell (23.8%), Config (3.9%)</li>
@@ -1205,7 +1181,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='47-jsmstrade'>47. jsmstrade</h3><br />
+<h3 style='display: inline' id='46-jsmstrade'>46. jsmstrade</h3><br />
<br />
<ul>
<li>💻 Languages: Java (76.0%), Shell (15.4%), XML (8.6%)</li>
@@ -1231,7 +1207,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='48-japi'>48. japi</h3><br />
+<h3 style='display: inline' id='47-japi'>47. japi</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (78.3%), Make (21.7%)</li>
@@ -1255,7 +1231,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='49-perl-poetry'>49. perl-poetry</h3><br />
+<h3 style='display: inline' id='48-perl-poetry'>48. perl-poetry</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (100.0%)</li>
@@ -1279,7 +1255,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='50-muttdelay'>50. muttdelay</h3><br />
+<h3 style='display: inline' id='49-muttdelay'>49. muttdelay</h3><br />
<br />
<ul>
<li>💻 Languages: Make (47.1%), Shell (46.3%), Vim Script (5.9%), Config (0.7%)</li>
@@ -1303,7 +1279,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='51-netdiff'>51. netdiff</h3><br />
+<h3 style='display: inline' id='50-netdiff'>50. netdiff</h3><br />
<br />
<ul>
<li>💻 Languages: Shell (52.2%), Make (46.3%), Config (1.5%)</li>
@@ -1327,7 +1303,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='52-debroid'>52. debroid</h3><br />
+<h3 style='display: inline' id='51-debroid'>51. debroid</h3><br />
<br />
<ul>
<li>💻 Languages: Shell (92.0%), Make (8.0%)</li>
@@ -1353,7 +1329,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='53-hsbot'>53. hsbot</h3><br />
+<h3 style='display: inline' id='52-hsbot'>52. hsbot</h3><br />
<br />
<ul>
<li>💻 Languages: Haskell (98.5%), Make (1.5%)</li>
@@ -1375,7 +1351,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='54-cpuinfo'>54. cpuinfo</h3><br />
+<h3 style='display: inline' id='53-cpuinfo'>53. cpuinfo</h3><br />
<br />
<ul>
<li>💻 Languages: Shell (53.2%), Make (46.8%)</li>
@@ -1399,7 +1375,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='55-template'>55. template</h3><br />
+<h3 style='display: inline' id='54-template'>54. template</h3><br />
<br />
<ul>
<li>💻 Languages: Make (89.2%), Shell (10.8%)</li>
@@ -1423,7 +1399,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='56-ipv6test'>56. ipv6test</h3><br />
+<h3 style='display: inline' id='55-ipv6test'>55. ipv6test</h3><br />
<br />
<ul>
<li>💻 Languages: Perl (100.0%)</li>
@@ -1445,7 +1421,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='57-awksite'>57. awksite</h3><br />
+<h3 style='display: inline' id='56-awksite'>56. awksite</h3><br />
<br />
<ul>
<li>💻 Languages: AWK (72.1%), HTML (16.4%), Config (11.5%)</li>
@@ -1469,7 +1445,7 @@
<br />
<span>---</span><br />
<br />
-<h3 style='display: inline' id='58-dyndns'>58. dyndns</h3><br />
+<h3 style='display: inline' id='57-dyndns'>57. dyndns</h3><br />
<br />
<ul>
<li>💻 Languages: Shell (100.0%)</li>
@@ -1490,6 +1466,50 @@
<br />
<a class='textlink' href='https://codeberg.org/snonux/dyndns'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/dyndns'>View on GitHub</a><br />
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='58-vs-sim'>58. vs-sim</h3><br />
+<br />
+<ul>
+<li>📚 Documentation: Markdown (100.0%)</li>
+<li>📊 Commits: 411</li>
+<li>📈 Lines of Code: 0</li>
+<li>📄 Lines of Documentation: 7</li>
+<li>📅 Development Period: 2008-05-15 to 2015-05-23</li>
+<li>🏆 Score: 0.0 (combines code size and activity)</li>
+<li>⚖️ License: No license found</li>
+<li>🏷️ Latest Release: v1.0 (2008-08-24)</li>
+</ul><br />
+<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
+<br />
+<span>VS-Sim is a Java-based open source simulator for distributed systems, designed to help students and researchers visualize and understand distributed computing concepts. Based on the roadmap, it appears to support simulating various distributed systems protocols including Lamport and vector clocks for logical time management, and potentially distributed file systems like NFS and AFS. The simulator features event-based simulation, logging capabilities, and a plugin architecture.</span><br />
+<br />
+<span>The project appears to be currently inactive, with the repository containing minimal source code at present. It was originally developed as part of academic work (referenced as "diplomarbeit.pdf" in the roadmap), likely for teaching distributed systems concepts through interactive simulation and protocol visualization.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/vs-sim'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/vs-sim'>View on GitHub</a><br />
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='59-foozone'>59. foo.zone</h3><br />
+<br />
+<ul>
+<li>📚 Documentation: Markdown (100.0%)</li>
+<li>📊 Commits: 3408</li>
+<li>📈 Lines of Code: 0</li>
+<li>📄 Lines of Documentation: 23</li>
+<li>📅 Development Period: 2021-05-21 to 2022-04-02</li>
+<li>🏆 Score: 0.0 (combines code size and activity)</li>
+<li>⚖️ License: No license found</li>
+<li>🧪 Status: Experimental (no releases yet)</li>
+</ul><br />
+<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br />
+<br />
+<span>foo.zone: source code repository.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br />
<p class="footer">
Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
diff --git a/about/showcase/debroid/image-1.png b/about/showcase/debroid/image-1.png
index a922de9f..98cbc5b6 100644
--- a/about/showcase/debroid/image-1.png
+++ b/about/showcase/debroid/image-1.png
@@ -46,44 +46,46 @@
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-c37d781e2da5.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-dc3bfaf4b78e.css" />
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-b22d9c324b1b.css" />
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-7b2c79a47cf5.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-14019852d837.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-6d0965b43add.css" />
- <script type="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_status_checks_ruleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_enable_snapshot_keyword","actions_image_version_event","allow_react_navs_in_turbo","alternate_user_config_repo","api_insights_show_missing_data_banner","arianotify_comprehensive_migration","arianotify_partial_migration","codespaces_prebuild_region_target_update","coding_agent_model_selection","contentful_lp_footnotes","copilot_3p_agent_hovercards","copilot_agent_cli_public_preview","copilot_agent_sessions_alive_updates","copilot_agent_task_list_v2","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_api_draft_issue_reference_with_project_id","copilot_api_github_draft_update_issue_skill","copilot_chat_agents_empty_state","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_raycast_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_generate_thread_name_async","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_org_policy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_security_alert_assignee_options","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_public_access_to_user_owned_spaces","copilot_spaces_read_access_to_user_owned_spaces","copilot_spaces_report_abuse","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_spark_loading_webgl","copilot_stable_conversation_view","copilot_swe_agent_progress_commands","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dom_node_counts","dotcom_chat_client_side_skills","enterprise_ai_controls","failbot_report_error_react_apps_on_page","fetch_graphql_improved_error_serialization","flex_cta_groups_mvp","global_nav_react_edit_status_dialog","global_nav_react_feature_preview","global_nav_react_teams_settings_page","global_nav_react_top_repos_api_caching","hyperspace_2025_logged_out_batch_1","initial_per_page_pagination_updates","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cca_assign_actor_with_agent","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_client_side_caching_analytics","issues_react_prohibit_title_fallback","issues_react_use_turbo_for_cross_repo_navigation","issues_report_sidebar_interactions","lifecycle_label_name_updates","link_contact_sales_swp_marketo","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_grouped_by_edit_route","memex_mwl_filter_field_delimiter","mission_control_use_body_html","new_traffic_page_banner","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","projects_assignee_max_limit","react_fetch_graphql_ignore_expected_errors","render_user_display_name","repo_traffic_job","repos_insights_remove_new_url","ruleset_deletion_confirmation","sample_network_conn_type","scheduled_reminders_updated_limits","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","site_homepage_contentful","site_homepage_eyebrow_banner","site_homepage_universe_animations","site_msbuild_webgl_hero","spark_prompt_secret_scanning","swe_agent_member_requests","viewscreen_sandbox","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"}</script>
+ <script type="application/json" id="client-env">{"locale":"en","featureFlags":["a11y_status_checks_ruleset","action_yml_language_service","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_enable_snapshot_keyword","actions_image_version_event","actions_workflow_language_service","alternate_user_config_repo","api_insights_show_missing_data_banner","arianotify_comprehensive_migration","codespaces_prebuild_region_target_update","coding_agent_model_selection","contentful_lp_footnotes","copilot_3p_agent_hovercards","copilot_agent_cli_public_preview","copilot_agent_sessions_alive_updates","copilot_agent_task_list_v2","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_chat_agents_empty_state","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_raycast_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_generate_thread_name_async","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_org_policy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_security_alert_assignee_options","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_public_access_to_user_owned_spaces","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_progress_commands","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","custom_properties_split_properties_editing_page","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dom_node_counts","enterprise_ai_controls","failbot_report_error_react_apps_on_page","flex_cta_groups_mvp","global_nav_react","global_nav_react_feature_preview","global_nav_react_teams_settings_page","hyperspace_2025_logged_out_batch_1","initial_per_page_pagination_updates","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cache_operation_timeout","issues_cca_assign_actor_with_agent","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_preheating_dependency_issues","issues_preheating_issue_row","issues_preheating_memex","issues_preheating_parent_issue","issues_preheating_secondary","issues_preheating_sub_issues","issues_preheating_timeline_issues","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_client_side_caching_analytics","issues_react_client_side_caching_cb","issues_react_extended_preheat_analytics","issues_react_hot_cache","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_turbo_cache_navigation","issues_react_use_turbo_for_cross_repo_navigation","issues_report_sidebar_interactions","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_display_button_config_menu","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","projects_assignee_max_limit","prs_conversations_react_split","pull_request_files_changed_opt_out_notice","pull_request_files_virtualization_containment","react_compiler_sso","react_quality_profiling","repos_insights_remove_new_url","ruleset_deletion_confirmation","sample_network_conn_type","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","swe_agent_member_requests","viewscreen_sandbox","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"}</script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/high-contrast-cookie-ff2c933fbe48.js"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-6b433bcc407d.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/913-ca2305638c53.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-d1388b999201.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/6488-de87864e6818.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-fb75ae3199db.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/78298-e2b301acbc0e.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/82075-fd36cf520df4.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-112a4ebf88e5.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/97068-2c8e697c6e8c.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/43784-4652ae97a661.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/4712-6fc930a63a4b.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/81028-5b8c5e07a4fa.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/74911-6a311b93ee8e.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/81028-4fa90b716172.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/74911-498f12492577.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/91853-448038d8f9ef.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/78143-31968346cf4c.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/87434-48bfcf328cc4.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-526e07998dd3.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-88f5a90e5bf0.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/78954-eeadcb8a29db.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-0fb6acf0f24b.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-44c4d3e56996.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-core-b53e33f6993e.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-b492ee0e2c35.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/react-core-8586c8dbbead.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/90780-1a0f3d593ff0.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/28546-ee41c9313871.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/17688-a9e16fb5ed13.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/2869-a4ba8f17edb3.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/15938-1bc2c363d5ed.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/70191-36bdeb9f5eb6.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/7332-5ea4ccf72018.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/3561-5983d983527e.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/24077-adc459723b71.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/51519-0c79d9af86e7.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/27376-4ba8ab45cab5.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/96384-750ef5263abe.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/66721-c03c0d8e4fbe.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/89708-97b7bb596019.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/51519-08058b4d6d41.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/2608-450177e3aea5.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/96384-94f4e11ad43a.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/19718-302da6273821.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-bd33b4bccad6.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/37911-4e7b34638358.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-d4747c5b0c07.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-054e9e1af0ce.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/37911-8ca53539e04e.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-09b60cb040de.js" defer="defer"></script>
<title>Page not found · GitHub · GitHub</title>
@@ -93,13 +95,13 @@
<meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient>
<meta name="route-controller" content="blob" data-turbo-transient>
<meta name="route-action" content="show" data-turbo-transient>
- <meta name="fetch-nonce" content="v2:29cf13c1-e6c6-b28a-2ff0-696a48dd9f65">
+ <meta name="fetch-nonce" content="v2:682a9268-d482-c6f9-a2d4-f51a1458f5ec">
<meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">
- <meta name="request-id" content="CC92:259C0E:4FB6C52:432292A:695FEDBA" data-pjax-transient="true"/><meta name="html-safe-nonce" content="1a8d9ca1b6271790ce2f1c4e92d2bb1acf2f788f3e99cd6f38e19cb8fb2dffef" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQzkyOjI1OUMwRTo0RkI2QzUyOjQzMjI5MkE6Njk1RkVEQkEiLCJ2aXNpdG9yX2lkIjoiNTg4NzUyMzc3MjIxMjE3ODM2MiIsInJlZ2lvbl9lZGdlIjoiZnJhIiwicmVnaW9uX3JlbmRlciI6ImZyYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="953b94504937854dd9ceba4ee559a13b8c26fb99abc3f80d11ca2ebceb0dafbd" data-pjax-transient="true"/>
+ <meta name="request-id" content="C17E:F0E37:30DC596:25DC21D:6974BD94" data-pjax-transient="true"/><meta name="html-safe-nonce" content="2479b0b49461fef2f3ccfadb2fda78ee9d9aa533752de96d0c1c0ca3d48d1df9" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMTdFOkYwRTM3OjMwREM1OTY6MjVEQzIxRDo2OTc0QkQ5NCIsInZpc2l0b3JfaWQiOiI3NDE1MjkxMjA2MTYzNTQ1NDkyIiwicmVnaW9uX2VkZ2UiOiJmcmEiLCJyZWdpb25fcmVuZGVyIjoiZnJhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="7dfd758df9970d28a0931799ccea909e11f19c319fa3d523a1c7c44356d4902b" data-pjax-transient="true"/>
@@ -175,14 +177,14 @@
<meta name="expected-hostname" content="github.com">
- <meta http-equiv="x-pjax-version" content="6a001b80b6041f0eebdb89ae60d5900b119515734675721fa264b4a2d0751387" data-turbo-track="reload">
+ <meta http-equiv="x-pjax-version" content="559ee17a41dae78c6af2867e7d68ac436884ec056145d7dbe9d241c3eb1b3c15" data-turbo-track="reload">
<meta http-equiv="x-pjax-csp-version" content="21a43568025709b66240454fc92d4f09335a96863f8ab1c46b4a07f6a5b67102" data-turbo-track="reload">
- <meta http-equiv="x-pjax-css-version" content="1629ebc0fb2e8697986ed25f7b1629323621a13719b92f13f56e1ac4fffad60c" data-turbo-track="reload">
- <meta http-equiv="x-pjax-js-version" content="1bd537a5a8c6433e0ad1fb6275b3b424409275afbc13f90d081a108d6a29fd0b" data-turbo-track="reload">
+ <meta http-equiv="x-pjax-css-version" content="11db81fa29d9c0cc06e1edce1a65a9d290233af282800834cf371831e6dfea11" data-turbo-track="reload">
+ <meta http-equiv="x-pjax-js-version" content="4a4bf5f4e28041a9d2e5c107d7d20b78b4294ba261cab243b28167c16a623a1f" data-turbo-track="reload">
<meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-a2f470d940d8.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-f5cc67eb9a08.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/error-4eb12c8f65b5.css" />
<meta name="is_logged_out_page" content="true">
<meta name="octolytics-page-type" content="marketing">
@@ -203,7 +205,7 @@
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
- <meta name="release" content="65ce3d45d51e39c2ff9cfffc751f733edcb8c5c6">
+ <meta name="release" content="488b30e96dfd057fbbe44c6665ccbc030b729dde">
<meta name="ui-target" content="full">
<link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
@@ -232,14 +234,14 @@
<span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.708873d0ee1f75685f85.module.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.29aaeaafa90f007c6f61.module.css" />
<react-partial
partial-name="keyboard-shortcuts-dialog"
data-ssr="false"
data-attempted-ssr="false"
- data-react-profiling="false"
+ data-react-profiling="true"
>
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
@@ -257,7 +259,7 @@
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/43862-5c4df3ba1119.js" defer="defer"></script>
<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/85110-5c8beb884518.js" defer="defer"></script>
-<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-85a353edb2a3.js" defer="defer"></script>
+<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-dc7eea68d186.js" defer="defer"></script>
<style>
/* Override primer focus outline color for marketing header dropdown links for better contrast */
@@ -267,7 +269,7 @@
}
</style>
-<header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark>
+<header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=auto data-light-theme=light data-dark-theme=dark>
<h2 class="sr-only">Navigation Menu</h2>
<button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation">
@@ -305,20 +307,20 @@
</a>
<div class="AppHeader-appearanceSettings">
<react-partial-anchor>
- <button data-target="react-partial-anchor.anchor" id="icon-button-d88b6b56-e056-4a49-a3e2-c2a819cc7e5b" aria-labelledby="tooltip-c88d835c-57e8-4f53-be11-44befca17458" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual">
+ <button data-target="react-partial-anchor.anchor" id="icon-button-b4fdf5a2-72da-440f-83f4-3e97de0faca4" aria-labelledby="tooltip-6c82bc0a-49fa-460b-8d5d-cac9bff0aa16" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual">
<path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path>
</svg>
-</button><tool-tip id="tooltip-c88d835c-57e8-4f53-be11-44befca17458" for="icon-button-d88b6b56-e056-4a49-a3e2-c2a819cc7e5b" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip>
+</button><tool-tip id="tooltip-6c82bc0a-49fa-460b-8d5d-cac9bff0aa16" for="icon-button-b4fdf5a2-72da-440f-83f4-3e97de0faca4" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip>
<template data-target="react-partial-anchor.template">
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.708873d0ee1f75685f85.module.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.753d458774a2f782559b.module.css" />
<react-partial
partial-name="appearance-settings"
data-ssr="false"
data-attempted-ssr="false"
- data-react-profiling="false"
+ data-react-profiling="true"
>
<script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
@@ -336,14 +338,14 @@
<div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0">
<div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0">
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.708873d0ee1f75685f85.module.css" />
-<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-navigation.4bd5b20d56a72071b91a.module.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" />
+<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/marketing-navigation.2a752a3c708bb38a3035.module.css" />
<react-partial
partial-name="marketing-navigation"
data-ssr="true"
data-attempted-ssr="true"
- data-react-profiling="false"
+ data-react-profiling="true"
>
<script type="application/json" data-target="react-partial.embeddedData">{"props":{"should_use_dotcom_links":true}}</script>
@@ -356,7 +358,7 @@
-<qbsearch-input class="search-input" data-scope="owner:buetow" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="xc2RxR8rC_RFgJTefvO7dx-hDThg6PHGEaTFjwsCUOubITm2St_TfJYldUoQaOcF4DYyDt8HNM0xwesqNCqIfw" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true">
+<qbsearch-input class="search-input" data-scope="owner:buetow" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="5_ES8haZCPX3gM9VSogG9D8p_lCZuL1u1QzTbDTL7vM-9ztoI5kJ5eyWcYSm2ct7W3G1UQGqk4Ym9-daAlwGeQ" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true">
<div
class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded"
data-action="click:qbsearch-input#searchInputContainerClicked"
@@ -420,7 +422,7 @@
></div>
<div class="QueryBuilder-InputWrapper">
<div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div>
- <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-bcb85fc3-7638-4110-8b50-ad0555301438" data-target="query-builder.input" data-action="
+ <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-a913ac83-98a9-4fb8-94fe-cbdfe3b43f06" data-target="query-builder.input" data-action="
input:query-builder#inputChange
blur:query-builder#inputBlur
keydown:query-builder#inputKeydown
@@ -658,7 +660,7 @@
tabindex="-1"
></ul>
</div>
- <div class="FormControl-inlineValidation" id="validation-bcb85fc3-7638-4110-8b50-ad0555301438" hidden="hidden">
+ <div class="FormControl-inlineValidation" id="validation-a913ac83-98a9-4fb8-94fe-cbdfe3b43f06" hidden="hidden">
<span class="FormControl-inlineValidation--visual">
<svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill">
<path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path>
@@ -699,7 +701,7 @@
</div>
<scrollable-region data-labelled-by="feedback-dialog-title">
- <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="x5xVp0K6VxKbVo8P9RO+5lEQ/Ekbf+vzu/liFHQY9lAYD/7Sc1z8/xpzG6JF8DS/CZW7cZMu/6CU7kA70WfD9A==" />
+ <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="zw7oaXfXkx1vPa/BIBDdQo44Z0CEHCf+AjU+W3nllPwh/ZmoR+mNDFDeM1I+cPKUHehfkQ31kAaJWwga6TiroQ==" />
<p>We read every piece of feedback, and take your input very seriously.</p>
<textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea>
<input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox">
@@ -737,7 +739,7 @@
<div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div>
<div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm">
- <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="5h63W/n1GjjyzuMFayTlyi0iutywkVkvz08iqFJRANiqCKNo+XfzEDONqpU2u4/M6HgcjUPzidEqbtyhqC85qQ==" />
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="TKgFi2+z5+wpmD3DssGidHno8WpjPXv9XyVtVLrplEjTi2HuFsryqjI3FlTEAGYj2CVS+fFruzaa6su7dQyRlA==" />
<div data-target="custom-scopes.customScopesModalDialogFlash"></div>
<input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField">
@@ -755,7 +757,7 @@
placeholder="github-ruby"
required
maxlength="50">
- <input type="hidden" data-csrf="true" value="sdo25p4xmbIV9cEOQ587FRwp28AiwUjFaRGmPuqMxoco0bNOtURWBd3EOT7Uuhj0MSeZ9jvbSfkx6N0F99gvYA==" />
+ <input type="hidden" data-csrf="true" value="AH/Aaa2zAIKpKtkx1Ebp0tS/KsnHUrAR85AkOtB89ImLwP+x7rDv2nqvP/AACpwFZQbAIH4PtIZp/KoGJQP4yw==" />
</auto-check>
</div>
@@ -810,7 +812,7 @@
<h4 data-view-component="true" class="color-fg-default mb-2"> Sign in to GitHub
</h4>
-<!-- '"` --><!-- </textarea></xmp> --></option></form><form data-turbo="false" action="/session" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="LjitOiGusVGTvOklEb5DniNNqBOAFZJnEZzlVZy29P64b/HxX4K8HfSssqCXrDVTY0+BloQ6szUTgttsoCSKSQ==" /> <input type="hidden" name="add_account" id="add_account" autocomplete="off" class="form-control" />
+<!-- '"` --><!-- </textarea></xmp> --></option></form><form data-turbo="false" action="/session" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="2LU7T2z2cCwKm3H0hffqaNG6tDjLXvq0DTlFeAxKw80b3TreUq1KIvS4kJhvSpu/U43x1iBsX3THfFg6Avm03A==" /> <input type="hidden" name="add_account" id="add_account" autocomplete="off" class="form-control" />
<label for="login_field">
Username or email address
@@ -832,9 +834,9 @@
<input type="hidden" name="allow_signup" id="allow_signup" autocomplete="off" class="form-control" />
<input type="hidden" name="client_id" id="client_id" autocomplete="off" class="form-control" />
<input type="hidden" name="integration" id="integration" autocomplete="off" class="form-control" />
-<input class="form-control" type="text" name="required_field_871e" hidden="hidden" />
-<input class="form-control" type="hidden" name="timestamp" value="1767894458763" />
-<input class="form-control" type="hidden" name="timestamp_secret" value="01d971ae1c8c58b532c22a6dc1322b8bfaef79ddb9c7dd88b645f65b31826115" />
+<input class="form-control" type="text" name="required_field_8a4b" hidden="hidden" />
+<input class="form-control" type="hidden" name="timestamp" value="1769258388833" />
+<input class="form-control" type="hidden" name="timestamp_secret" value="87ddb805434adc94333a6cbdd0e771598bc4734535a7a090e225671404db87c0" />
<input type="submit" name="commit" value="Sign in" class="btn btn-primary btn-block js-sign-in-button" data-disable-with="Signing in…" data-signin-label="Sign in" data-sso-label="Sign in with your identity provider" development="false" disable-emu-sso="false" />
@@ -861,20 +863,20 @@
<div class="AppHeader-appearanceSettings">
<react-partial-anchor>
- <button data-target="react-partial-anchor.anchor" id="icon-button-16fed6f9-28ec-4204-acad-3994b4007730" aria-labelledby="tooltip-4c1e24f3-5bb7-4c20-8402-2af791ab1d33" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual">
+ <button data-target="react-partial-anchor.anchor" id="icon-button-fc923268-3a9e-45a4-98af-9962f965fc9c" aria-labelledby="tooltip-957c7f76-00f0-45f0-9161-c7ef2aaf41a2" type="button" disabled="disabled" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sliders Button-visual">
<path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path>
</svg>
-</button><tool-tip id="tooltip-4c1e24f3-5bb7-4c20-8402-2af791ab1d33" for="icon-button-16fed6f9-28ec-4204-acad-3994b4007730" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip>
+</button><tool-tip id="tooltip-957c7f76-00f0-45f0-9161-c7ef2aaf41a2" for="icon-button-fc923268-3a9e-45a4-98af-9962f965fc9c" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Appearance settings</tool-tip>
<template data-target="react-partial-anchor.template">
- <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.708873d0ee1f75685f85.module.css" />
+ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.272733bb6899c5359cf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.753d458774a2f782559b.module.css" />
<react-partial
partial-name="appearance-settings"
data-ssr="false"
data-attempted-ssr="false"
- data-react-profiling="false"
+ data-react-profiling="true"
>
<script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
@@ -902,10 +904,10 @@
<span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
<span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
- <button id="icon-button-0f276785-66a4-4c6d-804f-7d6c20e1b548" aria-labelledby="tooltip-733fad38-112c-4343-9003-73a85adf138a" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
+ <button id="icon-button-5d1e2b70-3e47-4c01-a223-df5e6a2516b6" aria-labelledby="tooltip-d2f6d2d9-d0bc-48ce-996f-ed2f452811a4" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
<path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
-</button><tool-tip id="tooltip-733fad38-112c-4343-9003-73a85adf138a" for="icon-button-0f276785-66a4-4c6d-804f-7d6c20e1b548" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>
+</button><tool-tip id="tooltip-d2f6d2d9-d0bc-48ce-996f-ed2f452811a4" for="icon-button-5d1e2b70-3e47-4c01-a223-df5e6a2516b6" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>
diff --git a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
index fe828914..3df72356 100644
--- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
+++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
@@ -345,7 +345,7 @@ zroot/bhyve/rocky keystatus available -
<br />
<ul>
<li>NFS data (<span class='inlinecode'>/data/nfs/k3svolumes</span>): Soon, it will contain active Kubernetes persistent volumes. Needs frequent replication (every minute) to minimise data loss during failover.</li>
-<li>VM data (<span class='inlinecode'>/zroot/bhyve/fedora</span>): Contains VM images that change less frequently. Can tolerate longer replication intervals (every 10 minutes).</li>
+<li>VM data (<span class='inlinecode'>/zroot/bhyve/freebsd</span>): Contains VM images that change less frequently. Can tolerate longer replication intervals (every 10 minutes).</li>
</ul><br />
<span>The 1-minute replication window is perfectly acceptable for my personal use cases. This isn&#39;t a high-frequency trading system or a real-time database—it&#39;s storage for personal projects, development work, and home lab experiments. Losing at most 1 minute of work in a disaster scenario is a reasonable trade-off for the reliability and simplicity of snapshot-based replication. Additionally, in the case of a "1 minute of data loss," I would likely still have the data available on the client side.</span><br />
<br />
@@ -462,13 +462,13 @@ global:
grid: 4x7d | 6x30d
regex: <font color="#808080">"^zrepl_.*"</font>
- - name: f0_to_f1_fedora
+ - name: f0_to_f1_freebsd
<b><u><font color="#000000">type</font></u></b>: push
connect:
<b><u><font color="#000000">type</font></u></b>: tcp
address: <font color="#808080">"192.168.2.131:8888"</font>
filesystems:
- <font color="#808080">"zroot/bhyve/fedora"</font>: <b><u><font color="#000000">true</font></u></b>
+ <font color="#808080">"zroot/bhyve/freebsd"</font>: <b><u><font color="#000000">true</font></u></b>
send:
encrypted: <b><u><font color="#000000">true</font></u></b>
snapshotting:
@@ -495,9 +495,9 @@ EOF
<br />
<ul>
<li><span class='inlinecode'>f0_to_f1_nfsdata</span>: Replicates NFS data every minute for faster failover recovery</li>
-<li><span class='inlinecode'>f0_to_f1_fedora</span>: Replicates Fedora VM every ten minutes (less critical)</li>
+<li><span class='inlinecode'>f0_to_f1_freebsd</span>: Replicates FreeBSD VM every ten minutes (less critical)</li>
</ul><br />
-<span>The Fedora VM is only used for development purposes, so it doesn&#39;t require as frequent replication as the NFS data. It&#39;s off-topic to this blog series, but it showcases, hows <span class='inlinecode'>zrepl</span>&#39;s flexibility in handling different datasets with varying replication needs.</span><br />
+<span>The FreeBSD VM is only used for development purposes, so it doesn&#39;t require as frequent replication as the NFS data. It&#39;s off-topic to this blog series, but it showcases, hows <span class='inlinecode'>zrepl</span>&#39;s flexibility in handling different datasets with varying replication needs.</span><br />
<br />
<span>Furthermore:</span><br />
<br />
@@ -609,13 +609,13 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a href='./f3s-kubernetes-with-freebsd-part-6/zrepl.png'><img alt='zrepl status' title='zrepl status' src='./f3s-kubernetes-with-freebsd-part-6/zrepl.png' /></a><br />
<br />
-<span>With this setup, both <span class='inlinecode'>zdata/enc/nfsdata</span> and <span class='inlinecode'>zroot/bhyve/fedora</span> on <span class='inlinecode'>f0</span> will be automatically replicated to <span class='inlinecode'>f1</span> every 1 minute (or 10 minutes in the case of the Fedora VM), with encrypted snapshots preserved on both sides. The pruning policy ensures that we keep the last 10 snapshots while managing disk space efficiently.</span><br />
+<span>With this setup, both <span class='inlinecode'>zdata/enc/nfsdata</span> and <span class='inlinecode'>zroot/bhyve/freebsd</span> on <span class='inlinecode'>f0</span> will be automatically replicated to <span class='inlinecode'>f1</span> every 1 minute (or 10 minutes in the case of the FreeBSD VM), with encrypted snapshots preserved on both sides. The pruning policy ensures that we keep the last 10 snapshots while managing disk space efficiently.</span><br />
<br />
<span>The replicated data appears on <span class='inlinecode'>f1</span> under <span class='inlinecode'>zdata/sink/</span> with the source host and dataset hierarchy preserved:</span><br />
<br />
<ul>
<li><span class='inlinecode'>zdata/enc/nfsdata</span> → <span class='inlinecode'>zdata/sink/f0/zdata/enc/nfsdata</span></li>
-<li><span class='inlinecode'>zroot/bhyve/fedora</span> → <span class='inlinecode'>zdata/sink/f0/zroot/bhyve/fedora</span></li>
+<li><span class='inlinecode'>zroot/bhyve/freebsd</span> → <span class='inlinecode'>zdata/sink/f0/zroot/bhyve/freebsd</span></li>
</ul><br />
<span>This is by design - <span class='inlinecode'>zrepl</span> preserves the complete path from the source to ensure there are no conflicts when replicating from multiple sources.</span><br />
<br />
@@ -639,14 +639,14 @@ zrepl is running as pid <font color="#000000">2309</font>.
<i><font color="silver"># Check that new snapshots are being created and replicated</font></i>
paul@f0:~ % doas zfs list -t snapshot | grep `zrepl` | tail -<font color="#000000">2</font>
zdata/enc/nfsdata@zrepl_20250701_202530_000 0B - 200K -
-zroot/bhyve/fedora@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
+zroot/bhyve/freebsd@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
.
.
.
paul@f1:~ % doas zfs list -t snapshot -r zdata/sink | grep <font color="#000000">202530</font>
zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata@zrepl_20250701_202530_000 0B - 176K -
-zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/fedora@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
+zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/freebsd@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
.
.
.
@@ -875,12 +875,12 @@ paul@f1:~ % doas zfs list -t snapshot | grep nfsdata
<i><font color="silver"># Destroy the entire destination dataset to allow clean replication</font></i>
paul@f1:~ % doas zfs destroy -r zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata
-<i><font color="silver"># For VM replication, do the same for the fedora dataset</font></i>
-paul@f1:~ % doas zfs destroy -r zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/fedora
+<i><font color="silver"># For VM replication, do the same for the freebsd dataset</font></i>
+paul@f1:~ % doas zfs destroy -r zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/freebsd
<i><font color="silver"># Wake up zrepl to start fresh replication</font></i>
paul@f0:~ % doas zrepl signal wakeup f0_to_f1_nfsdata
-paul@f0:~ % doas zrepl signal wakeup f0_to_f1_fedora
+paul@f0:~ % doas zrepl signal wakeup f0_to_f1_freebsd
<i><font color="silver"># Check replication status</font></i>
paul@f0:~ % doas zrepl status --mode raw
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index b8cf30b2..14c0f6a0 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2026-01-17T00:21:37+02:00</updated>
+ <updated>2026-01-24T23:12:38+02:00</updated>
<title>foo.zone feed</title>
<subtitle>To be in the .zone!</subtitle>
<link href="https://foo.zone/gemfeed/atom.xml" rel="self" />
@@ -6791,7 +6791,7 @@ zroot/bhyve/rocky keystatus available -
<br />
<ul>
<li>NFS data (<span class='inlinecode'>/data/nfs/k3svolumes</span>): Soon, it will contain active Kubernetes persistent volumes. Needs frequent replication (every minute) to minimise data loss during failover.</li>
-<li>VM data (<span class='inlinecode'>/zroot/bhyve/fedora</span>): Contains VM images that change less frequently. Can tolerate longer replication intervals (every 10 minutes).</li>
+<li>VM data (<span class='inlinecode'>/zroot/bhyve/freebsd</span>): Contains VM images that change less frequently. Can tolerate longer replication intervals (every 10 minutes).</li>
</ul><br />
<span>The 1-minute replication window is perfectly acceptable for my personal use cases. This isn&#39;t a high-frequency trading system or a real-time database—it&#39;s storage for personal projects, development work, and home lab experiments. Losing at most 1 minute of work in a disaster scenario is a reasonable trade-off for the reliability and simplicity of snapshot-based replication. Additionally, in the case of a "1 minute of data loss," I would likely still have the data available on the client side.</span><br />
<br />
@@ -6908,13 +6908,13 @@ global:
grid: 4x7d | 6x30d
regex: <font color="#808080">"^zrepl_.*"</font>
- - name: f0_to_f1_fedora
+ - name: f0_to_f1_freebsd
<b><u><font color="#000000">type</font></u></b>: push
connect:
<b><u><font color="#000000">type</font></u></b>: tcp
address: <font color="#808080">"192.168.2.131:8888"</font>
filesystems:
- <font color="#808080">"zroot/bhyve/fedora"</font>: <b><u><font color="#000000">true</font></u></b>
+ <font color="#808080">"zroot/bhyve/freebsd"</font>: <b><u><font color="#000000">true</font></u></b>
send:
encrypted: <b><u><font color="#000000">true</font></u></b>
snapshotting:
@@ -6941,9 +6941,9 @@ EOF
<br />
<ul>
<li><span class='inlinecode'>f0_to_f1_nfsdata</span>: Replicates NFS data every minute for faster failover recovery</li>
-<li><span class='inlinecode'>f0_to_f1_fedora</span>: Replicates Fedora VM every ten minutes (less critical)</li>
+<li><span class='inlinecode'>f0_to_f1_freebsd</span>: Replicates FreeBSD VM every ten minutes (less critical)</li>
</ul><br />
-<span>The Fedora VM is only used for development purposes, so it doesn&#39;t require as frequent replication as the NFS data. It&#39;s off-topic to this blog series, but it showcases, hows <span class='inlinecode'>zrepl</span>&#39;s flexibility in handling different datasets with varying replication needs.</span><br />
+<span>The FreeBSD VM is only used for development purposes, so it doesn&#39;t require as frequent replication as the NFS data. It&#39;s off-topic to this blog series, but it showcases, hows <span class='inlinecode'>zrepl</span>&#39;s flexibility in handling different datasets with varying replication needs.</span><br />
<br />
<span>Furthermore:</span><br />
<br />
@@ -7055,13 +7055,13 @@ http://www.gnu.org/software/src-highlite -->
<br />
<a href='./f3s-kubernetes-with-freebsd-part-6/zrepl.png'><img alt='zrepl status' title='zrepl status' src='./f3s-kubernetes-with-freebsd-part-6/zrepl.png' /></a><br />
<br />
-<span>With this setup, both <span class='inlinecode'>zdata/enc/nfsdata</span> and <span class='inlinecode'>zroot/bhyve/fedora</span> on <span class='inlinecode'>f0</span> will be automatically replicated to <span class='inlinecode'>f1</span> every 1 minute (or 10 minutes in the case of the Fedora VM), with encrypted snapshots preserved on both sides. The pruning policy ensures that we keep the last 10 snapshots while managing disk space efficiently.</span><br />
+<span>With this setup, both <span class='inlinecode'>zdata/enc/nfsdata</span> and <span class='inlinecode'>zroot/bhyve/freebsd</span> on <span class='inlinecode'>f0</span> will be automatically replicated to <span class='inlinecode'>f1</span> every 1 minute (or 10 minutes in the case of the FreeBSD VM), with encrypted snapshots preserved on both sides. The pruning policy ensures that we keep the last 10 snapshots while managing disk space efficiently.</span><br />
<br />
<span>The replicated data appears on <span class='inlinecode'>f1</span> under <span class='inlinecode'>zdata/sink/</span> with the source host and dataset hierarchy preserved:</span><br />
<br />
<ul>
<li><span class='inlinecode'>zdata/enc/nfsdata</span> → <span class='inlinecode'>zdata/sink/f0/zdata/enc/nfsdata</span></li>
-<li><span class='inlinecode'>zroot/bhyve/fedora</span> → <span class='inlinecode'>zdata/sink/f0/zroot/bhyve/fedora</span></li>
+<li><span class='inlinecode'>zroot/bhyve/freebsd</span> → <span class='inlinecode'>zdata/sink/f0/zroot/bhyve/freebsd</span></li>
</ul><br />
<span>This is by design - <span class='inlinecode'>zrepl</span> preserves the complete path from the source to ensure there are no conflicts when replicating from multiple sources.</span><br />
<br />
@@ -7085,14 +7085,14 @@ zrepl is running as pid <font color="#000000">2309</font>.
<i><font color="silver"># Check that new snapshots are being created and replicated</font></i>
paul@f0:~ % doas zfs list -t snapshot | grep `zrepl` | tail -<font color="#000000">2</font>
zdata/enc/nfsdata@zrepl_20250701_202530_000 0B - 200K -
-zroot/bhyve/fedora@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
+zroot/bhyve/freebsd@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
.
.
.
paul@f1:~ % doas zfs list -t snapshot -r zdata/sink | grep <font color="#000000">202530</font>
zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata@zrepl_20250701_202530_000 0B - 176K -
-zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/fedora@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
+zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/freebsd@zrepl_20250701_202530_000 0B - <font color="#000000">2</font>.97G -
.
.
.
@@ -7321,12 +7321,12 @@ paul@f1:~ % doas zfs list -t snapshot | grep nfsdata
<i><font color="silver"># Destroy the entire destination dataset to allow clean replication</font></i>
paul@f1:~ % doas zfs destroy -r zdata/sink/f<font color="#000000">0</font>/zdata/enc/nfsdata
-<i><font color="silver"># For VM replication, do the same for the fedora dataset</font></i>
-paul@f1:~ % doas zfs destroy -r zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/fedora
+<i><font color="silver"># For VM replication, do the same for the freebsd dataset</font></i>
+paul@f1:~ % doas zfs destroy -r zdata/sink/f<font color="#000000">0</font>/zroot/bhyve/freebsd
<i><font color="silver"># Wake up zrepl to start fresh replication</font></i>
paul@f0:~ % doas zrepl signal wakeup f0_to_f1_nfsdata
-paul@f0:~ % doas zrepl signal wakeup f0_to_f1_fedora
+paul@f0:~ % doas zrepl signal wakeup f0_to_f1_freebsd
<i><font color="silver"># Check replication status</font></i>
paul@f0:~ % doas zrepl status --mode raw
diff --git a/index.html b/index.html
index 4d363dcd..fc05293e 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
</p>
<h1 style='display: inline' id='hello'>Hello!</h1><br />
<br />
-<span class='quote'>This site was generated at 2026-01-17T00:21:37+02:00 by <span class='inlinecode'>Gemtexter</span></span><br />
+<span class='quote'>This site was generated at 2026-01-24T23:12:38+02:00 by <span class='inlinecode'>Gemtexter</span></span><br />
<br />
<span>Welcome to the foo.zone!</span><br />
<br />
diff --git a/uptime-stats.html b/uptime-stats.html
index 6d28d604..299a6bb2 100644
--- a/uptime-stats.html
+++ b/uptime-stats.html
@@ -13,7 +13,7 @@
</p>
<h1 style='display: inline' id='my-machine-uptime-stats'>My machine uptime stats</h1><br />
<br />
-<span class='quote'>This site was last updated at 2026-01-17T00:21:36+02:00</span><br />
+<span class='quote'>This site was last updated at 2026-01-24T23:12:38+02:00</span><br />
<br />
<span>The following stats were collected via <span class='inlinecode'>uptimed</span> on all of my personal computers over many years and the output was generated by <span class='inlinecode'>guprecords</span>, the global uptime records stats analyser of mine.</span><br />
<br />
@@ -31,30 +31,30 @@
<span>Boots is the total number of host boots over the entire lifespan.</span><br />
<br />
<pre>
-+-----+----------------+-------+-------------------------------+
-| Pos | Host | Boots | Last Kernel |
-+-----+----------------+-------+-------------------------------+
-| 1. | alphacentauri | 671 | FreeBSD 11.4-RELEASE-p7 |
-| 2. | *earth | 222 | Linux 6.17.12-300.fc43.x86_64 |
-| 3. | mars | 207 | Linux 3.2.0-4-amd64 |
-| 4. | callisto | 153 | Linux 4.0.4-303.fc22.x86_64 |
-| 5. | dionysus | 136 | FreeBSD 13.0-RELEASE-p11 |
-| 6. | tauceti-e | 120 | Linux 3.2.0-4-amd64 |
-| 7. | *f2 | 109 | FreeBSD 14.3-RELEASE-p7 |
-| 8. | *f1 | 107 | FreeBSD 14.3-RELEASE-p7 |
-| 9. | *f0 | 103 | FreeBSD 14.3-RELEASE-p7 |
-| 10. | *makemake | 81 | Linux 6.9.9-200.fc40.x86_64 |
-| 11. | uranus | 59 | NetBSD 10.1 |
-| 12. | pluto | 51 | Linux 3.2.0-4-amd64 |
-| 13. | *mega-m3-pro | 50 | Darwin 24.6.0 |
-| 14. | *fishfinger | 50 | OpenBSD 7.7 |
-| 15. | mega15289 | 50 | Darwin 23.4.0 |
-| 16. | *t450 | 46 | FreeBSD 14.2-RELEASE |
-| 17. | *blowfish | 45 | OpenBSD 7.7 |
-| 18. | phobos | 40 | Linux 3.4.0-CM-g1dd7cdf |
-| 19. | mega8477 | 40 | Darwin 13.4.0 |
-| 20. | sun | 33 | FreeBSD 10.3-RELEASE-p24 |
-+-----+----------------+-------+-------------------------------+
++-----+----------------+-------+------------------------------+
+| Pos | Host | Boots | Last Kernel |
++-----+----------------+-------+------------------------------+
+| 1. | alphacentauri | 671 | FreeBSD 11.4-RELEASE-p7 |
+| 2. | *earth | 224 | Linux 6.18.4-200.fc43.x86_64 |
+| 3. | mars | 207 | Linux 3.2.0-4-amd64 |
+| 4. | callisto | 153 | Linux 4.0.4-303.fc22.x86_64 |
+| 5. | dionysus | 136 | FreeBSD 13.0-RELEASE-p11 |
+| 6. | tauceti-e | 120 | Linux 3.2.0-4-amd64 |
+| 7. | *f2 | 109 | FreeBSD 14.3-RELEASE-p7 |
+| 8. | *f1 | 107 | FreeBSD 14.3-RELEASE-p7 |
+| 9. | *f0 | 103 | FreeBSD 14.3-RELEASE-p7 |
+| 10. | *makemake | 81 | Linux 6.9.9-200.fc40.x86_64 |
+| 11. | uranus | 59 | NetBSD 10.1 |
+| 12. | pluto | 51 | Linux 3.2.0-4-amd64 |
+| 13. | mega15289 | 50 | Darwin 23.4.0 |
+| 14. | *mega-m3-pro | 50 | Darwin 24.6.0 |
+| 15. | *fishfinger | 50 | OpenBSD 7.7 |
+| 16. | *t450 | 46 | FreeBSD 14.2-RELEASE |
+| 17. | *blowfish | 45 | OpenBSD 7.7 |
+| 18. | mega8477 | 40 | Darwin 13.4.0 |
+| 19. | phobos | 40 | Linux 3.4.0-CM-g1dd7cdf |
+| 20. | sun | 33 | FreeBSD 10.3-RELEASE-p24 |
++-----+----------------+-------+------------------------------+
</pre>
<br />
<h2 style='display: inline' id='top-20-uptime-s-by-host'>Top 20 Uptime&#39;s by Host</h2><br />
@@ -67,7 +67,7 @@
+-----+----------------+-----------------------------+-----------------------------------+
| 1. | vulcan | 4 years, 5 months, 6 days | Linux 3.10.0-1160.81.1.el7.x86_64 |
| 2. | *blowfish | 4 years, 1 months, 6 days | OpenBSD 7.7 |
-| 3. | *earth | 3 years, 12 months, 24 days | Linux 6.17.12-300.fc43.x86_64 |
+| 3. | *earth | 3 years, 12 months, 30 days | Linux 6.18.4-200.fc43.x86_64 |
| 4. | sun | 3 years, 9 months, 26 days | FreeBSD 10.3-RELEASE-p24 |
| 5. | uranus | 3 years, 9 months, 5 days | NetBSD 10.1 |
| 6. | uugrn | 3 years, 5 months, 5 days | FreeBSD 11.2-RELEASE-p4 |
@@ -77,8 +77,8 @@
| 10. | tauceti | 2 years, 3 months, 19 days | Linux 3.2.0-4-amd64 |
| 11. | mega15289 | 1 years, 12 months, 17 days | Darwin 23.4.0 |
| 12. | tauceti-f | 1 years, 9 months, 18 days | Linux 3.2.0-3-amd64 |
-| 13. | *t450 | 1 years, 7 months, 26 days | FreeBSD 14.2-RELEASE |
-| 14. | *mega-m3-pro | 1 years, 7 months, 22 days | Darwin 24.6.0 |
+| 13. | *mega-m3-pro | 1 years, 7 months, 28 days | Darwin 24.6.0 |
+| 14. | *t450 | 1 years, 7 months, 26 days | FreeBSD 14.2-RELEASE |
| 15. | mega8477 | 1 years, 3 months, 25 days | Darwin 13.4.0 |
| 16. | host0 | 1 years, 3 months, 9 days | FreeBSD 6.2-RELEASE-p5 |
| 17. | *makemake | 1 years, 3 months, 7 days | Linux 6.9.9-200.fc40.x86_64 |
@@ -97,7 +97,7 @@
| Pos | Host | Score | Last Kernel |
+-----+----------------+-------+-----------------------------------+
| 1. | uranus | 340 | NetBSD 10.1 |
-| 2. | *earth | 279 | Linux 6.17.12-300.fc43.x86_64 |
+| 2. | *earth | 281 | Linux 6.18.4-200.fc43.x86_64 |
| 3. | vulcan | 275 | Linux 3.10.0-1160.81.1.el7.x86_64 |
| 4. | *blowfish | 259 | OpenBSD 7.7 |
| 5. | sun | 238 | FreeBSD 10.3-RELEASE-p24 |
@@ -112,7 +112,7 @@
| 14. | *makemake | 139 | Linux 6.9.9-200.fc40.x86_64 |
| 15. | *t450 | 128 | FreeBSD 14.2-RELEASE |
| 16. | tauceti-f | 108 | Linux 3.2.0-3-amd64 |
-| 17. | *mega-m3-pro | 105 | Darwin 24.6.0 |
+| 17. | *mega-m3-pro | 106 | Darwin 24.6.0 |
| 18. | tauceti-e | 96 | Linux 3.2.0-4-amd64 |
| 19. | callisto | 86 | Linux 4.0.4-303.fc22.x86_64 |
| 20. | mega8477 | 80 | Darwin 13.4.0 |
@@ -124,30 +124,30 @@
<span>Downtime is the total downtime of a host over the entire lifespan.</span><br />
<br />
<pre>
-+-----+----------------+-----------------------------+-------------------------------+
-| Pos | Host | Downtime | Last Kernel |
-+-----+----------------+-----------------------------+-------------------------------+
-| 1. | dionysus | 8 years, 3 months, 16 days | FreeBSD 13.0-RELEASE-p11 |
-| 2. | uranus | 6 years, 7 months, 31 days | NetBSD 10.1 |
-| 3. | alphacentauri | 5 years, 11 months, 18 days | FreeBSD 11.4-RELEASE-p7 |
-| 4. | *makemake | 3 years, 8 months, 11 days | Linux 6.9.9-200.fc40.x86_64 |
-| 5. | moon | 2 years, 1 months, 1 days | FreeBSD 14.0-RELEASE-p3 |
-| 6. | *t450 | 1 years, 7 months, 7 days | FreeBSD 14.2-RELEASE |
-| 7. | callisto | 1 years, 5 months, 15 days | Linux 4.0.4-303.fc22.x86_64 |
-| 8. | mega15289 | 1 years, 4 months, 24 days | Darwin 23.4.0 |
-| 9. | mars | 1 years, 2 months, 10 days | Linux 3.2.0-4-amd64 |
-| 10. | tauceti-e | 0 years, 12 months, 9 days | Linux 3.2.0-4-amd64 |
-| 11. | *f0 | 0 years, 8 months, 24 days | FreeBSD 14.3-RELEASE-p7 |
-| 12. | *f2 | 0 years, 8 months, 22 days | FreeBSD 14.3-RELEASE-p7 |
-| 13. | *f1 | 0 years, 8 months, 22 days | FreeBSD 14.3-RELEASE-p7 |
-| 14. | sirius | 0 years, 8 months, 20 days | Linux 2.6.32-042stab111.12 |
-| 15. | *earth | 0 years, 6 months, 29 days | Linux 6.17.12-300.fc43.x86_64 |
-| 16. | deimos | 0 years, 5 months, 15 days | Linux 4.4.5-300.fc23.x86_64 |
-| 17. | joghurt | 0 years, 2 months, 9 days | FreeBSD 7.0-PRERELEASE |
-| 18. | host0 | 0 years, 2 months, 1 days | FreeBSD 6.2-RELEASE-p5 |
-| 19. | *mega-m3-pro | 0 years, 1 months, 28 days | Darwin 24.6.0 |
-| 20. | fibonacci | 0 years, 1 months, 11 days | FreeBSD 5.3-RELEASE-p15 |
-+-----+----------------+-----------------------------+-------------------------------+
++-----+----------------+-----------------------------+------------------------------+
+| Pos | Host | Downtime | Last Kernel |
++-----+----------------+-----------------------------+------------------------------+
+| 1. | dionysus | 8 years, 3 months, 16 days | FreeBSD 13.0-RELEASE-p11 |
+| 2. | uranus | 6 years, 7 months, 31 days | NetBSD 10.1 |
+| 3. | alphacentauri | 5 years, 11 months, 18 days | FreeBSD 11.4-RELEASE-p7 |
+| 4. | *makemake | 3 years, 8 months, 11 days | Linux 6.9.9-200.fc40.x86_64 |
+| 5. | moon | 2 years, 1 months, 1 days | FreeBSD 14.0-RELEASE-p3 |
+| 6. | *t450 | 1 years, 7 months, 7 days | FreeBSD 14.2-RELEASE |
+| 7. | callisto | 1 years, 5 months, 15 days | Linux 4.0.4-303.fc22.x86_64 |
+| 8. | mega15289 | 1 years, 4 months, 24 days | Darwin 23.4.0 |
+| 9. | mars | 1 years, 2 months, 10 days | Linux 3.2.0-4-amd64 |
+| 10. | tauceti-e | 0 years, 12 months, 9 days | Linux 3.2.0-4-amd64 |
+| 11. | *f0 | 0 years, 8 months, 24 days | FreeBSD 14.3-RELEASE-p7 |
+| 12. | *f2 | 0 years, 8 months, 22 days | FreeBSD 14.3-RELEASE-p7 |
+| 13. | *f1 | 0 years, 8 months, 22 days | FreeBSD 14.3-RELEASE-p7 |
+| 14. | sirius | 0 years, 8 months, 20 days | Linux 2.6.32-042stab111.12 |
+| 15. | *earth | 0 years, 6 months, 30 days | Linux 6.18.4-200.fc43.x86_64 |
+| 16. | deimos | 0 years, 5 months, 15 days | Linux 4.4.5-300.fc23.x86_64 |
+| 17. | joghurt | 0 years, 2 months, 9 days | FreeBSD 7.0-PRERELEASE |
+| 18. | host0 | 0 years, 2 months, 1 days | FreeBSD 6.2-RELEASE-p5 |
+| 19. | *mega-m3-pro | 0 years, 1 months, 28 days | Darwin 24.6.0 |
+| 20. | fibonacci | 0 years, 1 months, 11 days | FreeBSD 5.3-RELEASE-p15 |
++-----+----------------+-----------------------------+------------------------------+
</pre>
<br />
<h2 style='display: inline' id='top-20-lifespan-s-by-host'>Top 20 Lifespan&#39;s by Host</h2><br />
@@ -162,7 +162,7 @@
| 2. | dionysus | 8 years, 6 months, 17 days | FreeBSD 13.0-RELEASE-p11 |
| 3. | alphacentauri | 6 years, 9 months, 13 days | FreeBSD 11.4-RELEASE-p7 |
| 4. | *makemake | 4 years, 10 months, 16 days | Linux 6.9.9-200.fc40.x86_64 |
-| 5. | *earth | 4 years, 6 months, 22 days | Linux 6.17.12-300.fc43.x86_64 |
+| 5. | *earth | 4 years, 6 months, 28 days | Linux 6.18.4-200.fc43.x86_64 |
| 6. | vulcan | 4 years, 5 months, 6 days | Linux 3.10.0-1160.81.1.el7.x86_64 |
| 7. | *blowfish | 4 years, 1 months, 7 days | OpenBSD 7.7 |
| 8. | sun | 3 years, 10 months, 2 days | FreeBSD 10.3-RELEASE-p24 |
@@ -177,7 +177,7 @@
| 17. | callisto | 2 years, 3 months, 13 days | Linux 4.0.4-303.fc22.x86_64 |
| 18. | tauceti-e | 2 years, 1 months, 29 days | Linux 3.2.0-4-amd64 |
| 19. | tauceti-f | 1 years, 9 months, 20 days | Linux 3.2.0-3-amd64 |
-| 20. | mars | 1 years, 8 months, 19 days | Linux 3.2.0-4-amd64 |
+| 20. | *mega-m3-pro | 1 years, 8 months, 24 days | Darwin 24.6.0 |
+-----+----------------+-----------------------------+-----------------------------------+
</pre>
<br />
@@ -192,7 +192,7 @@
| 1. | FreeBSD 10... | 551 |
| 2. | Linux 3... | 550 |
| 3. | *FreeBSD 14... | 339 |
-| 4. | *Linux 6... | 207 |
+| 4. | *Linux 6... | 209 |
| 5. | Linux 5... | 162 |
| 6. | Linux 4... | 161 |
| 7. | FreeBSD 11... | 153 |
@@ -207,7 +207,7 @@
| 16. | Darwin 15... | 15 |
| 17. | Darwin 22... | 12 |
| 18. | Darwin 18... | 11 |
-| 19. | FreeBSD 6... | 10 |
+| 19. | FreeBSD 7... | 10 |
| 20. | OpenBSD 4... | 10 |
+-----+----------------+-------+
</pre>
@@ -224,14 +224,14 @@
| 2. | *OpenBSD 7... | 8 years, 1 months, 7 days |
| 3. | FreeBSD 10... | 5 years, 9 months, 9 days |
| 4. | Linux 5... | 4 years, 10 months, 21 days |
-| 5. | *Linux 6... | 3 years, 3 months, 24 days |
+| 5. | *Linux 6... | 3 years, 3 months, 30 days |
| 6. | *FreeBSD 14... | 2 years, 11 months, 5 days |
| 7. | Linux 4... | 2 years, 7 months, 22 days |
| 8. | FreeBSD 11... | 2 years, 4 months, 28 days |
| 9. | Linux 2... | 1 years, 11 months, 21 days |
| 10. | Darwin 13... | 1 years, 3 months, 25 days |
| 11. | FreeBSD 6... | 1 years, 3 months, 9 days |
-| 12. | *Darwin 24... | 0 years, 11 months, 28 days |
+| 12. | *Darwin 24... | 0 years, 12 months, 4 days |
| 13. | Darwin 23... | 0 years, 11 months, 3 days |
| 14. | OpenBSD 4... | 0 years, 8 months, 12 days |
| 15. | Darwin 21... | 0 years, 8 months, 2 days |
@@ -255,22 +255,22 @@
| 2. | *OpenBSD 7... | 517 |
| 3. | FreeBSD 10... | 406 |
| 4. | Linux 5... | 317 |
-| 5. | *Linux 6... | 224 |
+| 5. | *Linux 6... | 225 |
| 6. | *FreeBSD 14... | 211 |
| 7. | Linux 4... | 175 |
| 8. | FreeBSD 11... | 159 |
| 9. | Linux 2... | 121 |
| 10. | Darwin 13... | 80 |
| 11. | FreeBSD 6... | 75 |
-| 12. | *Darwin 24... | 62 |
+| 12. | *Darwin 24... | 63 |
| 13. | Darwin 23... | 55 |
| 14. | OpenBSD 4... | 39 |
| 15. | Darwin 21... | 38 |
| 16. | Darwin 18... | 32 |
| 17. | Darwin 22... | 30 |
| 18. | Darwin 15... | 29 |
-| 19. | FreeBSD 5... | 25 |
-| 20. | FreeBSD 13... | 25 |
+| 19. | FreeBSD 13... | 25 |
+| 20. | FreeBSD 5... | 25 |
+-----+----------------+-------+
</pre>
<br />
@@ -283,7 +283,7 @@
| Pos | KernelName | Boots |
+-----+------------+-------+
| 1. | *FreeBSD | 1204 |
-| 2. | *Linux | 1102 |
+| 2. | *Linux | 1104 |
| 3. | *Darwin | 155 |
| 4. | *OpenBSD | 115 |
| 5. | NetBSD | 1 |
@@ -298,10 +298,10 @@
+-----+------------+-----------------------------+
| Pos | KernelName | Uptime |
+-----+------------+-----------------------------+
-| 1. | *Linux | 28 years, 4 months, 16 days |
+| 1. | *Linux | 28 years, 4 months, 22 days |
| 2. | *FreeBSD | 12 years, 10 months, 8 days |
| 3. | *OpenBSD | 8 years, 8 months, 18 days |
-| 4. | *Darwin | 5 years, 3 months, 12 days |
+| 4. | *Darwin | 5 years, 3 months, 18 days |
| 5. | NetBSD | 0 years, 1 months, 1 days |
+-----+------------+-----------------------------+
</pre>
@@ -314,10 +314,10 @@
+-----+------------+-------+
| Pos | KernelName | Score |
+-----+------------+-------+
-| 1. | *Linux | 1883 |
+| 1. | *Linux | 1884 |
| 2. | *FreeBSD | 912 |
| 3. | *OpenBSD | 557 |
-| 4. | *Darwin | 343 |
+| 4. | *Darwin | 344 |
| 5. | NetBSD | 0 |
+-----+------------+-------+
</pre>