summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--about/resources.md204
-rw-r--r--about/showcase.md617
-rw-r--r--about/showcase/debroid/image-1.png112
-rw-r--r--gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.md24
-rw-r--r--index.md2
-rw-r--r--uptime-stats.md138
6 files changed, 559 insertions, 538 deletions
diff --git a/about/resources.md b/about/resources.md
index e7ab10f9..f2a275f0 100644
--- a/about/resources.md
+++ b/about/resources.md
@@ -35,110 +35,110 @@ You won't find any links on this site because, over time, the links will break.
In random order:
-* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
-* Modern Perl; Chromatic ; Onyx Neon Press
-* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
+* Raku Fundamentals; Moritz Lenz; Apress
* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
-* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
-* Funktionale Programmierung; Peter Pepper; Springer
-* Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
-* Perl New Features; Joshua McAdams, brian d foy; Perl School
-* Java ist auch eine Insel; Christian Ullenboom;
-* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
-* C++ Programming Language; Bjarne Stroustrup;
-* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
-* Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook
-* The Pragmatic Programmer; David Thomas; Addison-Wesley
-* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
-* Site Reliability Engineering; How Google runs production systems; O'Reilly
-* Effective Java; Joshua Bloch; Addison-Wesley Professional
-* Polished Ruby Programming; Jeremy Evans; Packt Publishing
-* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
-* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
* Terraform Cookbook; Mikael Krief; Packt Publishing
* Developing Games in Java; David Brackeen and others...; New Riders
-* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
-* Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook
-* Leanring eBPF; Liz Rice; O'Reilly
-* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
+* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
+* Ultimate Go Notebook; Bill Kennedy
+* The Docker Book; James Turnbull; Kindle
* 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
+* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
-* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
-* Concurrency in Go; Katherine Cox-Buday; O'Reilly
+* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
+* Modern Perl; Chromatic ; Onyx Neon Press
+* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
+* DNS and BIND; Cricket Liu; O'Reilly
+* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
+* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
+* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
+* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
+* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
+* Effective Java; Joshua Bloch; Addison-Wesley Professional
+* Effective awk programming; Arnold Robbins; O'Reilly
+* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
+* Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook
+* Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
+* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
+* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
-* Data Science at the Command Line; Jeroen Janssens; O'Reilly
-* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+* Java ist auch eine Insel; Christian Ullenboom;
+* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
+* Higher Order Perl; Mark Dominus; Morgan Kaufmann
+* Funktionale Programmierung; Peter Pepper; Springer
* Systemprogrammierung in Go; Frank Müller; dpunkt
+* Leanring eBPF; Liz Rice; O'Reilly
* Raku Recipes; J.J. Merelo; Apress
-* Effective awk programming; Arnold Robbins; O'Reilly
-* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
-* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+* C++ Programming Language; Bjarne Stroustrup;
+* Concurrency in Go; Katherine Cox-Buday; O'Reilly
+* Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook
+* Perl New Features; Joshua McAdams, brian d foy; Perl School
+* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
+* Data Science at the Command Line; Jeroen Janssens; O'Reilly
* Pro Puppet; James Turnbull, Jeffrey McCune; Apress
-* Raku Fundamentals; Moritz Lenz; Apress
-* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
-* DNS and BIND; Cricket Liu; O'Reilly
-* The Docker Book; James Turnbull; Kindle
-* Ultimate Go Notebook; Bill Kennedy
-* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
-* Higher Order Perl; Mark Dominus; Morgan Kaufmann
-* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
+* Site Reliability Engineering; How Google runs production systems; O'Reilly
+* Polished Ruby Programming; Jeremy Evans; Packt Publishing
+* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
+* The Pragmatic Programmer; David Thomas; Addison-Wesley
+* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
## Technical references
I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:
-* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
-* Relayd and Httpd Mastery; Michael W Lucas
* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
-* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
-* The Linux Programming Interface; Michael Kerrisk; No Starch Press
* Go: Design Patterns for Real-World Projects; Mat Ryer; Packt
* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
+* Relayd and Httpd Mastery; Michael W Lucas
+* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
+* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
+* The Linux Programming Interface; Michael Kerrisk; No Starch Press
## Self-development and soft-skills books
In random order:
-* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
-* Psycho-Cybernetics; Maxwell Maltz; Perigee Books
+* The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook
+* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
+* Deep Work; Cal Newport; Piatkus
+* So Good They Can't Ignore You; Cal Newport; Business Plus
+* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
+* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
* The Power of Now; Eckhard Tolle; Yellow Kite
-* Influence without Authority; A. Cohen, D. Bradford; Wiley
+* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
+* Getting Things Done; David Allen
* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
+* Eat That Frog!; Brian Tracy; Hodder Paperbacks
* The Bullet Journal Method; Ryder Carroll; Fourth Estate
-* Atomic Habits; James Clear; Random House Business
-* Ultralearning; Anna Laurent; Self-published via Amazon
+* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook
* The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook
-* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
-* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
+* Slow Productivity; Cal Newport; Penguin Random House
+* Ultralearning; Anna Laurent; Self-published via Amazon
* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook
-* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
-* Deep Work; Cal Newport; Piatkus
-* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
-* Ultralearning; Scott Young; Thorsons
-* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
-* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook
+* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
+* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
+* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
* Soft Skills; John Sommez; Manning Publications
+* Ultralearning; Scott Young; Thorsons
+* The Joy of Missing Out; Christina Crook; New Society Publishers
+* Digital Minimalism; Cal Newport; Portofolio Penguin
+* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
+* Influence without Authority; A. Cohen, D. Bradford; Wiley
+* Meditation for Mortals, Oliver Burkeman, Audiobook
+* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
+* 101 Essays that change the way you think; Brianna Wiest; Audiobook
+* The Good Enough Job; Simone Stolzoff; Ebury Edge
+* 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook
+* Atomic Habits; James Clear; Random House Business
* Eat That Frog; Brian Tracy
-* Slow Productivity; Cal Newport; Penguin Random House
* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
-* Meditation for Mortals, Oliver Burkeman, Audiobook
-* Digital Minimalism; Cal Newport; Portofolio Penguin
+* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
* Stop starting, start finishing; Arne Roock; Lean-Kanban University
-* Eat That Frog!; Brian Tracy; Hodder Paperbacks
-* The Joy of Missing Out; Christina Crook; New Society Publishers
* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
-* So Good They Can't Ignore You; Cal Newport; Business Plus
-* 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook
-* The Good Enough Job; Simone Stolzoff; Ebury Edge
-* Getting Things Done; David Allen
-* The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook
-* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
-* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
-* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
-* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
-* 101 Essays that change the way you think; Brianna Wiest; Audiobook
+* Psycho-Cybernetics; Maxwell Maltz; Perigee Books
[Here are notes of mine for some of the books](../notes/index.md)
@@ -146,29 +146,29 @@ In random order:
Some of these were in-person with exams; others were online learning lectures only. In random order:
-* Protocol buffers; O'Reilly Online
+* Developing IaC with Terraform (with Live Lessons); O'Reilly Online
+* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
+* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
+* Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon
* The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
+* MySQL Deep Dive Workshop; 2-day on-site training
+* Protocol buffers; O'Reilly Online
+* Structure and Interpretation of Computer Programs; Harold Abelson and more...;
* F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
-* AWS Immersion Day; Amazon; 1-day interactive online training
+* Functional programming lecture; Remote University of Hagen
* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
-* Ultimate Go Programming; Bill Kennedy; O'Reilly Online
-* Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon
-* Developing IaC with Terraform (with Live Lessons); O'Reilly Online
-* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
* Apache Tomcat Best Practises; 3-day on-site training
-* Functional programming lecture; Remote University of Hagen
-* Structure and Interpretation of Computer Programs; Harold Abelson and more...;
+* Ultimate Go Programming; Bill Kennedy; O'Reilly Online
+* AWS Immersion Day; Amazon; 1-day interactive online training
* 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)
-* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
* Scripting Vim; Damian Conway; O'Reilly Online
-* MySQL Deep Dive Workshop; 2-day on-site training
## Technical guides
These are not whole books, but guides (smaller or larger) which I found very useful. in random order:
-* How CPUs work at https://cpu.land
* Raku Guide at https://raku.guide
+* How CPUs work at https://cpu.land
* Advanced Bash-Scripting Guide
## Podcasts
@@ -177,58 +177,58 @@ These are not whole books, but guides (smaller or larger) which I found very use
In random order:
+* Fallthrough [Golang]
* The ProdCast (Google SRE Podcast)
-* Modern Mentor
-* Pratical AI
* Cup o' Go [Golang]
+* The Changelog Podcast(s)
+* Modern Mentor
* Backend Banter
+* BSD Now [BSD]
* Wednesday Wisdom
-* Maintainable
* The Pragmatic Engineer Podcast
-* Deep Questions with Cal Newport
* Dev Interrupted
-* The Changelog Podcast(s)
-* Hidden Brain
-* Fallthrough [Golang]
-* BSD Now [BSD]
* Fork Around And Find Out
+* Pratical AI
+* Deep Questions with Cal Newport
+* Hidden Brain
+* Maintainable
### Podcasts I liked
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.
-* Modern Mentor
* Go Time (predecessor of fallthrough)
+* CRE: Chaosradio Express [german]
* FLOSS weekly
-* Java Pub House
+* Modern Mentor
* Ship It (predecessor of Fork Around And Find Out)
-* CRE: Chaosradio Express [german]
+* Java Pub House
## Newsletters I like
This is a mix of tech and non-tech newsletters I am subscribed to. In random order:
-* Register Spill
-* Applied Go Weekly Newsletter
+* Ruby Weekly
+* VK Newsletter
* The Pragmatic Engineer
+* Andreas Brandhorst Newsletter (Sci-Fi author)
* Monospace Mentor
-* Changelog News
-* The Valuable Dev
-* byteSizeGo
* The Imperfectionist
-* VK Newsletter
+* Applied Go Weekly Newsletter
* Golang Weekly
-* Ruby Weekly
-* Andreas Brandhorst Newsletter (Sci-Fi author)
+* The Valuable Dev
+* byteSizeGo
+* Register Spill
+* Changelog News
## Magazines I like(d)
This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:
* LWN (online only)
-* Linux User
-* Linux Magazine
* freeX (not published anymore)
+* Linux Magazine
+* Linux User
# Formal education
diff --git a/about/showcase.md b/about/showcase.md
index 631e5e9a..23dc1796 100644
--- a/about/showcase.md
+++ b/about/showcase.md
@@ -1,6 +1,6 @@
# Project Showcase
-Generated on: 2026-01-08
+Generated on: 2026-01-24
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.
@@ -10,26 +10,26 @@ This page showcases my side projects, providing an overview of what each project
* [⇢ ⇢ Overall Statistics](#overall-statistics)
* [⇢ ⇢ Projects](#projects)
* [⇢ ⇢ ⇢ 1. conf](#1-conf)
-* [⇢ ⇢ ⇢ 2. foo.zone](#2-foozone)
+* [⇢ ⇢ ⇢ 2. log4jbench](#2-log4jbench)
* [⇢ ⇢ ⇢ 3. epimetheus](#3-epimetheus)
* [⇢ ⇢ ⇢ 4. perc](#4-perc)
* [⇢ ⇢ ⇢ 5. hexai](#5-hexai)
* [⇢ ⇢ ⇢ 6. yoga](#6-yoga)
-* [⇢ ⇢ ⇢ 7. gitsyncer](#7-gitsyncer)
-* [⇢ ⇢ ⇢ 8. totalrecall](#8-totalrecall)
+* [⇢ ⇢ ⇢ 7. totalrecall](#7-totalrecall)
+* [⇢ ⇢ ⇢ 8. gitsyncer](#8-gitsyncer)
* [⇢ ⇢ ⇢ 9. foostats](#9-foostats)
-* [⇢ ⇢ ⇢ 10. timr](#10-timr)
-* [⇢ ⇢ ⇢ 11. tasksamurai](#11-tasksamurai)
-* [⇢ ⇢ ⇢ 12. ior](#12-ior)
-* [⇢ ⇢ ⇢ 13. dtail](#13-dtail)
-* [⇢ ⇢ ⇢ 14. gos](#14-gos)
-* [⇢ ⇢ ⇢ 15. ds-sim](#15-ds-sim)
-* [⇢ ⇢ ⇢ 16. gemtexter](#16-gemtexter)
-* [⇢ ⇢ ⇢ 17. wireguardmeshgenerator](#17-wireguardmeshgenerator)
-* [⇢ ⇢ ⇢ 18. rcm](#18-rcm)
-* [⇢ ⇢ ⇢ 19. gogios](#19-gogios)
-* [⇢ ⇢ ⇢ 20. sillybench](#20-sillybench)
-* [⇢ ⇢ ⇢ 21. terraform](#21-terraform)
+* [⇢ ⇢ ⇢ 10. gogios](#10-gogios)
+* [⇢ ⇢ ⇢ 11. timr](#11-timr)
+* [⇢ ⇢ ⇢ 12. tasksamurai](#12-tasksamurai)
+* [⇢ ⇢ ⇢ 13. ior](#13-ior)
+* [⇢ ⇢ ⇢ 14. dtail](#14-dtail)
+* [⇢ ⇢ ⇢ 15. gos](#15-gos)
+* [⇢ ⇢ ⇢ 16. ds-sim](#16-ds-sim)
+* [⇢ ⇢ ⇢ 17. gemtexter](#17-gemtexter)
+* [⇢ ⇢ ⇢ 18. wireguardmeshgenerator](#18-wireguardmeshgenerator)
+* [⇢ ⇢ ⇢ 19. rcm](#19-rcm)
+* [⇢ ⇢ ⇢ 20. terraform](#20-terraform)
+* [⇢ ⇢ ⇢ 21. sillybench](#21-sillybench)
* [⇢ ⇢ ⇢ 22. quicklogger](#22-quicklogger)
* [⇢ ⇢ ⇢ 23. gorum](#23-gorum)
* [⇢ ⇢ ⇢ 24. guprecords](#24-guprecords)
@@ -37,58 +37,59 @@ This page showcases my side projects, providing an overview of what each project
* [⇢ ⇢ ⇢ 26. geheim](#26-geheim)
* [⇢ ⇢ ⇢ 27. algorithms](#27-algorithms)
* [⇢ ⇢ ⇢ 28. randomjournalpage](#28-randomjournalpage)
-* [⇢ ⇢ ⇢ 29. photoalbum](#29-photoalbum)
-* [⇢ ⇢ ⇢ 30. ioriot](#30-ioriot)
-* [⇢ ⇢ ⇢ 31. sway-autorotate](#31-sway-autorotate)
-* [⇢ ⇢ ⇢ 32. mon](#32-mon)
-* [⇢ ⇢ ⇢ 33. staticfarm-apache-handlers](#33-staticfarm-apache-handlers)
-* [⇢ ⇢ ⇢ 34. pingdomfetch](#34-pingdomfetch)
-* [⇢ ⇢ ⇢ 35. ychat](#35-ychat)
-* [⇢ ⇢ ⇢ 36. xerl](#36-xerl)
-* [⇢ ⇢ ⇢ 37. perl-c-fibonacci](#37-perl-c-fibonacci)
-* [⇢ ⇢ ⇢ 38. fapi](#38-fapi)
+* [⇢ ⇢ ⇢ 29. ioriot](#29-ioriot)
+* [⇢ ⇢ ⇢ 30. sway-autorotate](#30-sway-autorotate)
+* [⇢ ⇢ ⇢ 31. mon](#31-mon)
+* [⇢ ⇢ ⇢ 32. staticfarm-apache-handlers](#32-staticfarm-apache-handlers)
+* [⇢ ⇢ ⇢ 33. pingdomfetch](#33-pingdomfetch)
+* [⇢ ⇢ ⇢ 34. xerl](#34-xerl)
+* [⇢ ⇢ ⇢ 35. fapi](#35-fapi)
+* [⇢ ⇢ ⇢ 36. photoalbum](#36-photoalbum)
+* [⇢ ⇢ ⇢ 37. ychat](#37-ychat)
+* [⇢ ⇢ ⇢ 38. perl-c-fibonacci](#38-perl-c-fibonacci)
* [⇢ ⇢ ⇢ 39. netcalendar](#39-netcalendar)
* [⇢ ⇢ ⇢ 40. loadbars](#40-loadbars)
* [⇢ ⇢ ⇢ 41. gotop](#41-gotop)
-* [⇢ ⇢ ⇢ 42. vs-sim](#42-vs-sim)
+* [⇢ ⇢ ⇢ 42. fype](#42-fype)
* [⇢ ⇢ ⇢ 43. rubyfy](#43-rubyfy)
-* [⇢ ⇢ ⇢ 44. fype](#44-fype)
-* [⇢ ⇢ ⇢ 45. pwgrep](#45-pwgrep)
-* [⇢ ⇢ ⇢ 46. perldaemon](#46-perldaemon)
-* [⇢ ⇢ ⇢ 47. jsmstrade](#47-jsmstrade)
-* [⇢ ⇢ ⇢ 48. japi](#48-japi)
-* [⇢ ⇢ ⇢ 49. perl-poetry](#49-perl-poetry)
-* [⇢ ⇢ ⇢ 50. muttdelay](#50-muttdelay)
-* [⇢ ⇢ ⇢ 51. netdiff](#51-netdiff)
-* [⇢ ⇢ ⇢ 52. debroid](#52-debroid)
-* [⇢ ⇢ ⇢ 53. hsbot](#53-hsbot)
-* [⇢ ⇢ ⇢ 54. cpuinfo](#54-cpuinfo)
-* [⇢ ⇢ ⇢ 55. template](#55-template)
-* [⇢ ⇢ ⇢ 56. ipv6test](#56-ipv6test)
-* [⇢ ⇢ ⇢ 57. awksite](#57-awksite)
-* [⇢ ⇢ ⇢ 58. dyndns](#58-dyndns)
+* [⇢ ⇢ ⇢ 44. pwgrep](#44-pwgrep)
+* [⇢ ⇢ ⇢ 45. perldaemon](#45-perldaemon)
+* [⇢ ⇢ ⇢ 46. jsmstrade](#46-jsmstrade)
+* [⇢ ⇢ ⇢ 47. japi](#47-japi)
+* [⇢ ⇢ ⇢ 48. perl-poetry](#48-perl-poetry)
+* [⇢ ⇢ ⇢ 49. muttdelay](#49-muttdelay)
+* [⇢ ⇢ ⇢ 50. netdiff](#50-netdiff)
+* [⇢ ⇢ ⇢ 51. debroid](#51-debroid)
+* [⇢ ⇢ ⇢ 52. hsbot](#52-hsbot)
+* [⇢ ⇢ ⇢ 53. cpuinfo](#53-cpuinfo)
+* [⇢ ⇢ ⇢ 54. template](#54-template)
+* [⇢ ⇢ ⇢ 55. ipv6test](#55-ipv6test)
+* [⇢ ⇢ ⇢ 56. awksite](#56-awksite)
+* [⇢ ⇢ ⇢ 57. dyndns](#57-dyndns)
+* [⇢ ⇢ ⇢ 58. vs-sim](#58-vs-sim)
+* [⇢ ⇢ ⇢ 59. foo.zone](#59-foozone)
## Overall Statistics
-* 📦 Total Projects: 58
-* 📊 Total Commits: 11,672
-* 📈 Total Lines of Code: 314,725
-* 📄 Total Lines of Documentation: 32,713
-* 💻 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%)
-* 📚 Documentation: Markdown (55.8%), Text (33.7%), LaTeX (10.5%)
-* 🚀 Release Status: 38 released, 20 experimental (65.5% with releases, 34.5% experimental)
+* 📦 Total Projects: 59
+* 📊 Total Commits: 12,767
+* 📈 Total Lines of Code: 293,318
+* 📄 Total Lines of Documentation: 31,738
+* 💻 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%)
+* 📚 Documentation: Markdown (62.6%), Text (35.6%), LaTeX (1.8%)
+* 🚀 Release Status: 38 released, 21 experimental (64.4% with releases, 35.6% experimental)
## Projects
### 1. conf
-* 💻 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%)
-* 📚 Documentation: Markdown (94.8%), Text (5.2%)
-* 📊 Commits: 1148
-* 📈 Lines of Code: 10970
-* 📄 Lines of Documentation: 3649
-* 📅 Development Period: 2021-12-28 to 2026-01-08
-* 🏆 Score: 707.8 (combines code size and activity)
+* 💻 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%)
+* 📚 Documentation: Markdown (96.1%), Text (3.9%)
+* 📊 Commits: 2167
+* 📈 Lines of Code: 14113
+* 📄 Lines of Documentation: 4886
+* 📅 Development Period: 2021-12-28 to 2026-01-23
+* 🏆 Score: 622.2 (combines code size and activity)
* ⚖️ License: No license found
* 🧪 Status: Experimental (no releases yet)
@@ -102,23 +103,25 @@ The project is organized into distinct subdirectories: `dotfiles/` contains shel
---
-### 2. foo.zone
+### 2. log4jbench
-* 💻 Languages: XML (98.5%), Shell (1.1%), Go (0.4%)
-* 📚 Documentation: Text (86.7%), Markdown (13.3%)
-* 📊 Commits: 3376
-* 📈 Lines of Code: 17290
-* 📄 Lines of Documentation: 173
-* 📅 Development Period: 2021-04-29 to 2026-01-08
-* 🏆 Score: 448.1 (combines code size and activity)
-* ⚖️ License: No license found
+* 💻 Languages: Java (78.9%), XML (21.1%)
+* 📚 Documentation: Markdown (100.0%)
+* 📊 Commits: 4
+* 📈 Lines of Code: 774
+* 📄 Lines of Documentation: 119
+* 📅 Development Period: 2026-01-09 to 2026-01-09
+* 🏆 Score: 184.8 (combines code size and activity)
+* ⚖️ License: MIT
* 🧪 Status: Experimental (no releases yet)
-foo.zone: source code repository.
+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.
-[View on Codeberg](https://codeberg.org/snonux/foo.zone)
-[View on GitHub](https://github.com/snonux/foo.zone)
+The implementation uses a fat JAR built with Maven, requiring Java 17+. It'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.
+
+[View on Codeberg](https://codeberg.org/snonux/log4jbench)
+[View on GitHub](https://github.com/snonux/log4jbench)
---
@@ -130,7 +133,7 @@ foo.zone: source code repository.
* 📈 Lines of Code: 3869
* 📄 Lines of Documentation: 3700
* 📅 Development Period: 2025-12-30 to 2026-01-06
-* 🏆 Score: 393.4 (combines code size and activity)
+* 🏆 Score: 144.0 (combines code size and activity)
* ⚖️ License: No license found
* 🧪 Status: Experimental (no releases yet)
@@ -154,7 +157,7 @@ The architecture routes current data (<5 min old) through Pushgateway where Prom
* 📈 Lines of Code: 452
* 📄 Lines of Documentation: 80
* 📅 Development Period: 2025-11-25 to 2025-11-25
-* 🏆 Score: 59.2 (combines code size and activity)
+* 🏆 Score: 43.8 (combines code size and activity)
* ⚖️ License: No license found
* 🏷️ Latest Release: v0.1.0 (2025-11-25)
@@ -176,7 +179,7 @@ The tool is built as a simple Go CLI application with a standard project layout
* 📈 Lines of Code: 28331
* 📄 Lines of Documentation: 562
* 📅 Development Period: 2025-08-01 to 2025-11-03
-* 🏆 Score: 41.9 (combines code size and activity)
+* 🏆 Score: 36.5 (combines code size and activity)
* ⚖️ License: No license found
* 🏷️ Latest Release: v0.15.3 (2025-11-03)
@@ -200,7 +203,7 @@ The project is implemented as an LSP server written in Go, with a TUI component
* 📈 Lines of Code: 3408
* 📄 Lines of Documentation: 82
* 📅 Development Period: 2025-10-01 to 2025-10-24
-* 🏆 Score: 37.5 (combines code size and activity)
+* 🏆 Score: 32.1 (combines code size and activity)
* ⚖️ License: No license found
* 🏷️ Latest Release: v0.3.0 (2025-10-24)
@@ -216,15 +219,41 @@ The implementation follows clean Go architecture with domain logic organized und
---
-### 7. gitsyncer
+### 7. totalrecall
+
+* 💻 Languages: Go (99.0%), Shell (0.5%), YAML (0.4%)
+* 📚 Documentation: Markdown (99.5%), Text (0.5%)
+* 📊 Commits: 101
+* 📈 Lines of Code: 13129
+* 📄 Lines of Documentation: 377
+* 📅 Development Period: 2025-07-14 to 2026-01-21
+* 🏆 Score: 31.8 (combines code size and activity)
+* ⚖️ License: MIT
+* 🏷️ Latest Release: v0.8.0 (2026-01-21)
+
+
+[![totalrecall screenshot](showcase/totalrecall/image-1.png "totalrecall screenshot")](showcase/totalrecall/image-1.png)
+
+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.
+
+[![totalrecall screenshot](showcase/totalrecall/image-2.png "totalrecall screenshot")](showcase/totalrecall/image-2.png)
+
+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'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.
+
+[View on Codeberg](https://codeberg.org/snonux/totalrecall)
+[View on GitHub](https://github.com/snonux/totalrecall)
+
+---
+
+### 8. gitsyncer
* 💻 Languages: Go (92.2%), Shell (7.4%), JSON (0.4%)
* 📚 Documentation: Markdown (100.0%)
-* 📊 Commits: 114
+* 📊 Commits: 116
* 📈 Lines of Code: 10075
* 📄 Lines of Documentation: 2432
* 📅 Development Period: 2025-06-23 to 2025-12-31
-* 🏆 Score: 25.8 (combines code size and activity)
+* 🏆 Score: 23.4 (combines code size and activity)
* ⚖️ License: BSD-2-Clause
* 🏷️ Latest Release: v0.11.0 (2025-12-31)
@@ -238,32 +267,6 @@ The implementation uses a git remotes approach: it clones from one organization,
---
-### 8. totalrecall
-
-* 💻 Languages: Go (98.9%), Shell (0.5%), YAML (0.5%)
-* 📚 Documentation: Markdown (100.0%)
-* 📊 Commits: 88
-* 📈 Lines of Code: 12003
-* 📄 Lines of Documentation: 361
-* 📅 Development Period: 2025-07-14 to 2025-08-02
-* 🏆 Score: 23.8 (combines code size and activity)
-* ⚖️ License: MIT
-* 🏷️ Latest Release: v0.7.5 (2025-08-02)
-
-
-[![totalrecall screenshot](showcase/totalrecall/image-1.png "totalrecall screenshot")](showcase/totalrecall/image-1.png)
-
-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.
-
-[![totalrecall screenshot](showcase/totalrecall/image-2.png "totalrecall screenshot")](showcase/totalrecall/image-2.png)
-
-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'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.
-
-[View on Codeberg](https://codeberg.org/snonux/totalrecall)
-[View on GitHub](https://github.com/snonux/totalrecall)
-
----
-
### 9. foostats
* 💻 Languages: Perl (100.0%)
@@ -272,7 +275,7 @@ The project offers both a keyboard-driven GUI for interactive use and a CLI for
* 📈 Lines of Code: 1902
* 📄 Lines of Documentation: 423
* 📅 Development Period: 2023-01-02 to 2025-11-01
-* 🏆 Score: 23.3 (combines code size and activity)
+* 🏆 Score: 21.0 (combines code size and activity)
* ⚖️ License: Custom License
* 🏷️ Latest Release: v0.2.0 (2025-10-21)
@@ -286,7 +289,31 @@ The implementation uses a modular Perl architecture with specialized components:
---
-### 10. timr
+### 10. gogios
+
+* 💻 Languages: Go (98.5%), JSON (0.9%), YAML (0.6%)
+* 📚 Documentation: Markdown (94.9%), Text (5.1%)
+* 📊 Commits: 101
+* 📈 Lines of Code: 2921
+* 📄 Lines of Documentation: 394
+* 📅 Development Period: 2023-04-17 to 2026-01-22
+* 🏆 Score: 19.1 (combines code size and activity)
+* ⚖️ License: Custom License
+* 🏷️ Latest Release: v1.3.0 (2026-01-06)
+
+
+[![gogios screenshot](showcase/gogios/image-1.png "gogios screenshot")](showcase/gogios/image-1.png)
+
+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.
+
+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.
+
+[View on Codeberg](https://codeberg.org/snonux/gogios)
+[View on GitHub](https://github.com/snonux/gogios)
+
+---
+
+### 11. timr
* 💻 Languages: Go (96.0%), Shell (4.0%)
* 📚 Documentation: Markdown (100.0%)
@@ -294,7 +321,7 @@ The implementation uses a modular Perl architecture with specialized components:
* 📈 Lines of Code: 1538
* 📄 Lines of Documentation: 99
* 📅 Development Period: 2025-06-25 to 2026-01-02
-* 🏆 Score: 20.7 (combines code size and activity)
+* 🏆 Score: 18.7 (combines code size and activity)
* ⚖️ License: MIT
* 🏷️ Latest Release: v0.3.0 (2026-01-02)
@@ -308,7 +335,7 @@ The architecture is straightforward: it's a Go-based CLI application that persis
---
-### 11. tasksamurai
+### 12. tasksamurai
* 💻 Languages: Go (99.8%), YAML (0.2%)
* 📚 Documentation: Markdown (100.0%)
@@ -316,7 +343,7 @@ The architecture is straightforward: it's a Go-based CLI application that persis
* 📈 Lines of Code: 6168
* 📄 Lines of Documentation: 164
* 📅 Development Period: 2025-06-19 to 2025-11-02
-* 🏆 Score: 19.8 (combines code size and activity)
+* 🏆 Score: 18.3 (combines code size and activity)
* ⚖️ License: BSD-2-Clause
* 🏷️ Latest Release: v0.9.3 (2025-10-05)
@@ -334,7 +361,7 @@ Under the hood, Task Samurai acts as a front-end wrapper that invokes the native
---
-### 12. ior
+### 13. ior
* 💻 Languages: Go (50.4%), C (43.1%), Raku (4.5%), Make (1.1%), C/C++ (1.0%)
* 📚 Documentation: Text (69.7%), Markdown (30.3%)
@@ -342,7 +369,7 @@ Under the hood, Task Samurai acts as a front-end wrapper that invokes the native
* 📈 Lines of Code: 13072
* 📄 Lines of Documentation: 680
* 📅 Development Period: 2024-01-18 to 2025-10-09
-* 🏆 Score: 19.6 (combines code size and activity)
+* 🏆 Score: 18.3 (combines code size and activity)
* ⚖️ License: No license found
* 🧪 Status: Experimental (no releases yet)
@@ -360,15 +387,15 @@ The tool is implemented in Go and C, leveraging libbpfgo for BPF interaction. It
---
-### 13. dtail
+### 14. dtail
* 💻 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%)
* 📚 Documentation: Text (79.4%), Markdown (20.6%)
-* 📊 Commits: 1046
+* 📊 Commits: 1050
* 📈 Lines of Code: 20091
* 📄 Lines of Documentation: 5674
* 📅 Development Period: 2020-01-09 to 2025-06-20
-* 🏆 Score: 18.2 (combines code size and activity)
+* 🏆 Score: 17.0 (combines code size and activity)
* ⚖️ License: Apache-2.0
* 🏷️ Latest Release: v4.3.3 (2024-08-23)
@@ -386,7 +413,7 @@ The architecture follows a client-server model where DTail servers run on target
---
-### 14. gos
+### 15. gos
* 💻 Languages: Go (99.8%), JSON (0.2%)
* 📚 Documentation: Markdown (100.0%)
@@ -394,7 +421,7 @@ The architecture follows a client-server model where DTail servers run on target
* 📈 Lines of Code: 4102
* 📄 Lines of Documentation: 357
* 📅 Development Period: 2024-05-04 to 2025-12-27
-* 🏆 Score: 17.7 (combines code size and activity)
+* 🏆 Score: 16.4 (combines code size and activity)
* ⚖️ License: Custom License
* 🏷️ Latest Release: v1.2.2 (2025-12-27)
@@ -412,7 +439,7 @@ The implementation uses OAuth2 for LinkedIn authentication, stores configuration
---
-### 15. ds-sim
+### 16. ds-sim
* 💻 Languages: Java (98.9%), Shell (0.6%), CSS (0.5%)
* 📚 Documentation: Markdown (98.7%), Text (1.3%)
@@ -420,7 +447,7 @@ The implementation uses OAuth2 for LinkedIn authentication, stores configuration
* 📈 Lines of Code: 25762
* 📄 Lines of Documentation: 3101
* 📅 Development Period: 2008-05-15 to 2025-06-27
-* 🏆 Score: 16.4 (combines code size and activity)
+* 🏆 Score: 15.5 (combines code size and activity)
* ⚖️ License: Custom License
* 🧪 Status: Experimental (no releases yet)
@@ -436,14 +463,14 @@ The implementation follows a modular Java architecture with clear separation bet
---
-### 16. gemtexter
+### 17. gemtexter
-* 💻 Languages: Shell (68.2%), CSS (28.5%), Config (1.9%), HTML (1.3%)
-* 📚 Documentation: Text (76.1%), Markdown (23.9%)
+* 💻 Languages: CSS (55.3%), Python (16.1%), HTML (15.3%), JSON (6.6%), Shell (5.3%), Config (1.5%)
+* 📚 Documentation: Text (70.2%), Markdown (29.8%)
* 📊 Commits: 472
-* 📈 Lines of Code: 2288
-* 📄 Lines of Documentation: 1180
-* 📅 Development Period: 2021-05-21 to 2025-12-31
+* 📈 Lines of Code: 30319
+* 📄 Lines of Documentation: 1280
+* 📅 Development Period: 2021-05-21 to 2025-06-22
* 🏆 Score: 11.1 (combines code size and activity)
* ⚖️ License: GPL-3.0
* 🏷️ Latest Release: 3.0.0 (2024-10-01)
@@ -458,15 +485,15 @@ The architecture leverages GNU utilities (sed, grep, date) and optional tools li
---
-### 17. wireguardmeshgenerator
+### 18. wireguardmeshgenerator
-* 💻 Languages: Ruby (73.5%), YAML (26.5%)
+* 💻 Languages: Ruby (65.4%), YAML (34.6%)
* 📚 Documentation: Markdown (100.0%)
-* 📊 Commits: 33
-* 📈 Lines of Code: 396
+* 📊 Commits: 36
+* 📈 Lines of Code: 563
* 📄 Lines of Documentation: 24
-* 📅 Development Period: 2025-04-18 to 2025-05-11
-* 🏆 Score: 10.2 (combines code size and activity)
+* 📅 Development Period: 2025-04-18 to 2026-01-20
+* 🏆 Score: 11.0 (combines code size and activity)
* ⚖️ License: Custom License
* 🏷️ Latest Release: v1.0.0 (2025-05-11)
@@ -480,7 +507,7 @@ The tool reads host definitions from a YAML file specifying network interfaces (
---
-### 18. rcm
+### 19. rcm
* 💻 Languages: Ruby (99.8%), TOML (0.2%)
* 📚 Documentation: Markdown (100.0%)
@@ -488,7 +515,7 @@ The tool reads host definitions from a YAML file specifying network interfaces (
* 📈 Lines of Code: 1377
* 📄 Lines of Documentation: 113
* 📅 Development Period: 2024-12-05 to 2025-11-26
-* 🏆 Score: 9.9 (combines code size and activity)
+* 🏆 Score: 9.5 (combines code size and activity)
* ⚖️ License: Custom License
* 🧪 Status: Experimental (no releases yet)
@@ -502,31 +529,29 @@ The implementation centers around a DSL module that provides keywords like `file
---
-### 19. gogios
+### 20. terraform
-* 💻 Languages: Go (98.0%), JSON (1.2%), YAML (0.9%)
+* 💻 Languages: HCL (96.6%), Make (1.9%), YAML (1.5%)
* 📚 Documentation: Markdown (100.0%)
-* 📊 Commits: 85
-* 📈 Lines of Code: 2063
-* 📄 Lines of Documentation: 211
-* 📅 Development Period: 2023-04-17 to 2026-01-06
-* 🏆 Score: 6.3 (combines code size and activity)
-* ⚖️ License: Custom License
-* 🏷️ Latest Release: v1.3.0 (2026-01-06)
-
+* 📊 Commits: 125
+* 📈 Lines of Code: 2851
+* 📄 Lines of Documentation: 52
+* 📅 Development Period: 2023-08-27 to 2025-08-08
+* 🏆 Score: 5.1 (combines code size and activity)
+* ⚖️ License: MIT
+* 🧪 Status: Experimental (no releases yet)
-[![gogios screenshot](showcase/gogios/image-1.png "gogios screenshot")](showcase/gogios/image-1.png)
-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.
+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.
-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.
+The infrastructure uses a **modular, layered architecture** with separate Terraform modules for foundational resources (`org-buetow-base` for VPC/networking), compute layers (`org-buetow-ecs`, `org-buetow-eks`), load balancing (`org-buetow-elb`), storage (`s3-*`), and management (`org-buetow-bastion`). 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.
-[View on Codeberg](https://codeberg.org/snonux/gogios)
-[View on GitHub](https://github.com/snonux/gogios)
+[View on Codeberg](https://codeberg.org/snonux/terraform)
+[View on GitHub](https://github.com/snonux/terraform)
---
-### 20. sillybench
+### 21. sillybench
* 💻 Languages: Go (90.9%), Shell (9.1%)
* 📚 Documentation: Markdown (100.0%)
@@ -534,7 +559,7 @@ The architecture is straightforward: JSON configuration defines checks (plugin p
* 📈 Lines of Code: 33
* 📄 Lines of Documentation: 3
* 📅 Development Period: 2025-04-03 to 2025-04-03
-* 🏆 Score: 5.4 (combines code size and activity)
+* 🏆 Score: 5.1 (combines code size and activity)
* ⚖️ License: No license found
* 🧪 Status: Experimental (no releases yet)
@@ -548,28 +573,6 @@ The implementation is intentionally straightforward, using Go's built-in testing
---
-### 21. terraform
-
-* 💻 Languages: HCL (96.6%), Make (1.9%), YAML (1.5%)
-* 📚 Documentation: Markdown (100.0%)
-* 📊 Commits: 125
-* 📈 Lines of Code: 2851
-* 📄 Lines of Documentation: 52
-* 📅 Development Period: 2023-08-27 to 2025-08-08
-* 🏆 Score: 5.2 (combines code size and activity)
-* ⚖️ License: MIT
-* 🧪 Status: Experimental (no releases yet)
-
-
-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.
-
-The infrastructure uses a **modular, layered architecture** with separate Terraform modules for foundational resources (`org-buetow-base` for VPC/networking), compute layers (`org-buetow-ecs`, `org-buetow-eks`), load balancing (`org-buetow-elb`), storage (`s3-*`), and management (`org-buetow-bastion`). 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.
-
-[View on Codeberg](https://codeberg.org/snonux/terraform)
-[View on GitHub](https://github.com/snonux/terraform)
-
----
-
### 22. quicklogger
* 💻 Languages: Go (96.1%), XML (1.9%), Shell (1.2%), TOML (0.7%)
@@ -578,7 +581,7 @@ The infrastructure uses a **modular, layered architecture** with separate Terraf
* 📈 Lines of Code: 1133
* 📄 Lines of Documentation: 78
* 📅 Development Period: 2024-01-20 to 2025-09-13
-* 🏆 Score: 5.2 (combines code size and activity)
+* 🏆 Score: 5.1 (combines code size and activity)
* ⚖️ License: MIT
* 🏷️ Latest Release: v0.0.4 (2025-09-13)
@@ -604,7 +607,7 @@ The implementation leverages Go's cross-compilation capabilities and Fyne's UI a
* 📈 Lines of Code: 1525
* 📄 Lines of Documentation: 15
* 📅 Development Period: 2023-04-17 to 2023-11-19
-* 🏆 Score: 3.6 (combines code size and activity)
+* 🏆 Score: 3.5 (combines code size and activity)
* ⚖️ License: Custom License
* 🧪 Status: Experimental (no releases yet)
@@ -627,7 +630,7 @@ The architecture consists of client/server components for inter-node communicati
* 📈 Lines of Code: 312
* 📄 Lines of Documentation: 416
* 📅 Development Period: 2013-03-22 to 2025-05-18
-* 🏆 Score: 2.7 (combines code size and activity)
+* 🏆 Score: 2.6 (combines code size and activity)
* ⚖️ License: No license found
* 🏷️ Latest Release: v1.0.0 (2023-04-29)
@@ -649,7 +652,7 @@ The implementation uses an object-oriented architecture with specialized classes
* 📈 Lines of Code: 40
* 📄 Lines of Documentation: 3
* 📅 Development Period: 2023-12-31 to 2025-08-11
-* 🏆 Score: 2.6 (combines code size and activity)
+* 🏆 Score: 2.5 (combines code size and activity)
* ⚖️ License: No license found
* 🧪 Status: Experimental (no releases yet)
@@ -731,30 +734,7 @@ The implementation is a straightforward bash script using `qpdf` for PDF extract
---
-### 29. photoalbum
-
-* 💻 Languages: Shell (80.1%), Make (12.3%), Config (7.6%)
-* 📚 Documentation: Markdown (100.0%)
-* 📊 Commits: 153
-* 📈 Lines of Code: 342
-* 📄 Lines of Documentation: 39
-* 📅 Development Period: 2011-11-19 to 2022-04-02
-* 🏆 Score: 1.7 (combines code size and activity)
-* ⚖️ License: No license found
-* 🏷️ Latest Release: 0.5.0 (2022-02-21)
-
-⚠️ **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.
-
-**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's `convert` utility for image processing and employs Bash-HTML template files that users can customize to match their preferences.
-
-The architecture is straightforward and Unix-philosophy driven: users configure a source directory containing photos via an `photoalbumrc` configuration file, run the generation command, and receive a fully static `./dist` 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.
-
-[View on Codeberg](https://codeberg.org/snonux/photoalbum)
-[View on GitHub](https://github.com/snonux/photoalbum)
-
----
-
-### 30. ioriot
+### 29. ioriot
* 💻 Languages: C (55.5%), C/C++ (24.0%), Config (19.6%), Make (1.0%)
* 📚 Documentation: Markdown (100.0%)
@@ -762,7 +742,7 @@ The architecture is straightforward and Unix-philosophy driven: users configure
* 📈 Lines of Code: 12420
* 📄 Lines of Documentation: 610
* 📅 Development Period: 2018-03-01 to 2020-01-22
-* 🏆 Score: 1.6 (combines code size and activity)
+* 🏆 Score: 1.5 (combines code size and activity)
* ⚖️ License: Apache-2.0
* 🏷️ Latest Release: 0.5.1 (2019-01-04)
@@ -779,7 +759,7 @@ The key advantage over traditional benchmarking tools is that it reproduces actu
---
-### 31. sway-autorotate
+### 30. sway-autorotate
* 💻 Languages: Shell (100.0%)
* 📚 Documentation: Markdown (100.0%)
@@ -801,7 +781,7 @@ The implementation uses a bash script that continuously monitors the `monitor-se
---
-### 32. mon
+### 31. mon
* 💻 Languages: Perl (96.5%), Shell (1.8%), Make (1.2%), Config (0.4%)
* 📚 Documentation: Text (100.0%)
@@ -824,7 +804,7 @@ Implemented in Perl, `mon` features automatic JSON backup before modifications (
---
-### 33. staticfarm-apache-handlers
+### 32. staticfarm-apache-handlers
* 💻 Languages: Perl (96.4%), Make (3.6%)
* 📚 Documentation: Text (100.0%)
@@ -847,7 +827,7 @@ Both handlers are implemented as Perl modules using Apache2's mod_perl API, conf
---
-### 34. pingdomfetch
+### 33. pingdomfetch
* 💻 Languages: Perl (97.3%), Make (2.7%)
* 📚 Documentation: Text (100.0%)
@@ -870,30 +850,7 @@ The tool is implemented around a hierarchical configuration system (`/etc/pingdo
---
-### 35. ychat
-
-* 💻 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%)
-* 📚 Documentation: Text (100.0%)
-* 📊 Commits: 67
-* 📈 Lines of Code: 67884
-* 📄 Lines of Documentation: 127
-* 📅 Development Period: 2008-05-15 to 2014-06-30
-* 🏆 Score: 0.9 (combines code size and activity)
-* ⚖️ License: GPL-2.0
-* 🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)
-
-⚠️ **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.
-
-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.
-
-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.
-
-[View on Codeberg](https://codeberg.org/snonux/ychat)
-[View on GitHub](https://github.com/snonux/ychat)
-
----
-
-### 36. xerl
+### 34. xerl
* 💻 Languages: Perl (98.3%), Config (1.2%), Make (0.5%)
* 📊 Commits: 670
@@ -914,47 +871,92 @@ The implementation follows strict OO Perl conventions with explicit typing and p
---
-### 37. perl-c-fibonacci
+### 35. fapi
-* 💻 Languages: C (80.4%), Make (19.6%)
+* 💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)
+* 📚 Documentation: Text (98.3%), Markdown (1.7%)
+* 📊 Commits: 221
+* 📈 Lines of Code: 1681
+* 📄 Lines of Documentation: 539
+* 📅 Development Period: 2014-03-10 to 2026-01-10
+* 🏆 Score: 0.8 (combines code size and activity)
+* ⚖️ License: No license found
+* 🏷️ Latest Release: 1.0.2 (2014-11-17)
+
+
+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.
+
+The tool is implemented in Python and depends on the bigsuds library (F5's iControl wrapper) to communicate with the F5 API. It's designed as a lightweight alternative to the web GUI or raw API calls, with a straightforward command syntax (e.g., `fapi pool foopool create`, `fapi vserver example.com:80 set pool foopool`) 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.
+
+[View on Codeberg](https://codeberg.org/snonux/fapi)
+[View on GitHub](https://github.com/snonux/fapi)
+
+---
+
+### 36. photoalbum
+
+* 💻 Languages: Shell (78.1%), Make (13.5%), Config (8.4%)
* 📚 Documentation: Text (100.0%)
-* 📊 Commits: 4
-* 📈 Lines of Code: 51
-* 📄 Lines of Documentation: 69
-* 📅 Development Period: 2014-03-24 to 2022-04-23
+* 📊 Commits: 153
+* 📈 Lines of Code: 311
+* 📄 Lines of Documentation: 45
+* 📅 Development Period: 2011-11-19 to 2022-02-20
* 🏆 Score: 0.8 (combines code size and activity)
* ⚖️ License: No license found
-* 🧪 Status: Experimental (no releases yet)
+* 🏷️ Latest Release: 0.5.0 (2022-02-21)
⚠️ **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.
-perl-c-fibonacci: source code repository.
+**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's `convert` utility for image processing and employs Bash-HTML template files that users can customize to match their preferences.
-[View on Codeberg](https://codeberg.org/snonux/perl-c-fibonacci)
-[View on GitHub](https://github.com/snonux/perl-c-fibonacci)
+The architecture is straightforward and Unix-philosophy driven: users configure a source directory containing photos via an `photoalbumrc` configuration file, run the generation command, and receive a fully static `./dist` 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.
+
+[View on Codeberg](https://codeberg.org/snonux/photoalbum)
+[View on GitHub](https://github.com/snonux/photoalbum)
---
-### 38. fapi
+### 37. ychat
-* 💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)
-* 📚 Documentation: Text (98.3%), Markdown (1.7%)
-* 📊 Commits: 219
-* 📈 Lines of Code: 1681
-* 📄 Lines of Documentation: 539
-* 📅 Development Period: 2014-03-10 to 2021-11-03
+* 💻 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%)
+* 📚 Documentation: Text (100.0%)
+* 📊 Commits: 67
+* 📈 Lines of Code: 45956
+* 📄 Lines of Documentation: 101
+* 📅 Development Period: 2008-05-15 to 2014-06-30
* 🏆 Score: 0.8 (combines code size and activity)
-* ⚖️ License: No license found
-* 🏷️ Latest Release: 1.0.2 (2014-11-17)
+* ⚖️ License: GPL-2.0
+* 🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)
⚠️ **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.
-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.
+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.
-The tool is implemented in Python and depends on the bigsuds library (F5's iControl wrapper) to communicate with the F5 API. It's designed as a lightweight alternative to the web GUI or raw API calls, with a straightforward command syntax (e.g., `fapi pool foopool create`, `fapi vserver example.com:80 set pool foopool`) 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.
+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.
-[View on Codeberg](https://codeberg.org/snonux/fapi)
-[View on GitHub](https://github.com/snonux/fapi)
+[View on Codeberg](https://codeberg.org/snonux/ychat)
+[View on GitHub](https://github.com/snonux/ychat)
+
+---
+
+### 38. perl-c-fibonacci
+
+* 💻 Languages: C (80.4%), Make (19.6%)
+* 📚 Documentation: Text (100.0%)
+* 📊 Commits: 4
+* 📈 Lines of Code: 51
+* 📄 Lines of Documentation: 69
+* 📅 Development Period: 2014-03-24 to 2022-04-23
+* 🏆 Score: 0.8 (combines code size and activity)
+* ⚖️ License: No license found
+* 🧪 Status: Experimental (no releases yet)
+
+⚠️ **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.
+
+perl-c-fibonacci: source code repository.
+
+[View on Codeberg](https://codeberg.org/snonux/perl-c-fibonacci)
+[View on GitHub](https://github.com/snonux/perl-c-fibonacci)
---
@@ -1029,28 +1031,26 @@ The implementation uses a concurrent architecture with goroutines for data colle
---
-### 42. vs-sim
+### 42. fype
-* 💻 Languages: Java (98.8%), Shell (0.7%), XML (0.4%)
-* 📚 Documentation: LaTeX (98.4%), Text (1.4%), Markdown (0.2%)
-* 📊 Commits: 411
-* 📈 Lines of Code: 16303
-* 📄 Lines of Documentation: 2903
-* 📅 Development Period: 2008-05-15 to 2021-05-01
+* 💻 Languages: C (71.1%), C/C++ (20.7%), HTML (6.6%), Make (1.5%)
+* 📚 Documentation: Text (69.5%), LaTeX (30.5%)
+* 📊 Commits: 99
+* 📈 Lines of Code: 8952
+* 📄 Lines of Documentation: 1867
+* 📅 Development Period: 2008-05-15 to 2021-11-03
* 🏆 Score: 0.7 (combines code size and activity)
* ⚖️ License: Custom License
-* 🏷️ Latest Release: v1.0 (2008-08-24)
+* 🧪 Status: Experimental (no releases yet)
⚠️ **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.
-[![vs-sim screenshot](showcase/vs-sim/image-1.jpg "vs-sim screenshot")](showcase/vs-sim/image-1.jpg)
-
-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.
+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's namespace) and functions (with lexical scoping). The language uses a straightforward syntax with single-character comments (#) and statement-based execution terminated by semicolons.
-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.
+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'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's capabilities while potentially adding modern features like function pointers and closures, though explicitly avoiding complexity like OOP, Unicode, or threading.
-[View on Codeberg](https://codeberg.org/snonux/vs-sim)
-[View on GitHub](https://github.com/snonux/vs-sim)
+[View on Codeberg](https://codeberg.org/snonux/fype)
+[View on GitHub](https://github.com/snonux/fype)
---
@@ -1077,30 +1077,7 @@ The tool is implemented as a lightweight Ruby script that prioritizes simplicity
---
-### 44. fype
-
-* 💻 Languages: C (71.3%), C/C++ (20.6%), HTML (6.6%), Make (1.5%)
-* 📚 Documentation: Text (60.2%), LaTeX (39.8%)
-* 📊 Commits: 99
-* 📈 Lines of Code: 8906
-* 📄 Lines of Documentation: 1431
-* 📅 Development Period: 2008-05-15 to 2021-04-29
-* 🏆 Score: 0.7 (combines code size and activity)
-* ⚖️ License: Custom License
-* 🧪 Status: Experimental (no releases yet)
-
-⚠️ **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.
-
-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's namespace) and functions (with lexical scoping). The language uses a straightforward syntax with single-character comments (#) and statement-based execution terminated by semicolons.
-
-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'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's capabilities while potentially adding modern features like function pointers and closures, though explicitly avoiding complexity like OOP, Unicode, or threading.
-
-[View on Codeberg](https://codeberg.org/snonux/fype)
-[View on GitHub](https://github.com/snonux/fype)
-
----
-
-### 45. pwgrep
+### 44. pwgrep
* 💻 Languages: Shell (85.0%), Make (15.0%)
* 📚 Documentation: Text (80.8%), Markdown (19.2%)
@@ -1123,7 +1100,7 @@ The architecture is lightweight and Unix-philosophy driven: password databases a
---
-### 46. perldaemon
+### 45. perldaemon
* 💻 Languages: Perl (72.3%), Shell (23.8%), Config (3.9%)
* 📊 Commits: 110
@@ -1144,7 +1121,7 @@ The implementation centers around an event loop with configurable intervals that
---
-### 47. jsmstrade
+### 46. jsmstrade
* 💻 Languages: Java (76.0%), Shell (15.4%), XML (8.6%)
* 📚 Documentation: Markdown (100.0%)
@@ -1169,7 +1146,7 @@ The implementation is minimalistic, consisting of just three main Java classes (
---
-### 48. japi
+### 47. japi
* 💻 Languages: Perl (78.3%), Make (21.7%)
* 📚 Documentation: Text (100.0%)
@@ -1192,7 +1169,7 @@ Implemented in Perl using the JIRA::REST CPAN module, japi supports flexible con
---
-### 49. perl-poetry
+### 48. perl-poetry
* 💻 Languages: Perl (100.0%)
* 📚 Documentation: Markdown (100.0%)
@@ -1215,7 +1192,7 @@ This project exemplifies creative coding where Perl keywords and constructs are
---
-### 50. muttdelay
+### 49. muttdelay
* 💻 Languages: Make (47.1%), Shell (46.3%), Vim Script (5.9%), Config (0.7%)
* 📚 Documentation: Text (100.0%)
@@ -1238,7 +1215,7 @@ The architecture uses three components working together: a Vim plugin that provi
---
-### 51. netdiff
+### 50. netdiff
* 💻 Languages: Shell (52.2%), Make (46.3%), Config (1.5%)
* 📚 Documentation: Text (100.0%)
@@ -1261,7 +1238,7 @@ The tool uses a clever client-server architecture where you run the identical co
---
-### 52. debroid
+### 51. debroid
* 💻 Languages: Shell (92.0%), Make (8.0%)
* 📚 Documentation: Markdown (100.0%)
@@ -1286,7 +1263,7 @@ The implementation uses a two-stage debootstrap process: first creating a Debian
---
-### 53. hsbot
+### 52. hsbot
* 💻 Languages: Haskell (98.5%), Make (1.5%)
* 📊 Commits: 80
@@ -1307,7 +1284,7 @@ The implementation uses a modular design with core components separated into Bas
---
-### 54. cpuinfo
+### 53. cpuinfo
* 💻 Languages: Shell (53.2%), Make (46.8%)
* 📚 Documentation: Text (100.0%)
@@ -1330,7 +1307,7 @@ The implementation is elegantly simple: a single shell script ([src/cpuinfo](fil
---
-### 55. template
+### 54. template
* 💻 Languages: Make (89.2%), Shell (10.8%)
* 📚 Documentation: Text (100.0%)
@@ -1353,7 +1330,7 @@ The implementation uses a **Makefile-based build system** with targets for compi
---
-### 56. ipv6test
+### 55. ipv6test
* 💻 Languages: Perl (100.0%)
* 📊 Commits: 7
@@ -1374,7 +1351,7 @@ The implementation uses a simple CGI script ([index.pl](file:///home/paul/git/gi
---
-### 57. awksite
+### 56. awksite
* 💻 Languages: AWK (72.1%), HTML (16.4%), Config (11.5%)
* 📚 Documentation: Text (60.0%), Markdown (40.0%)
@@ -1397,7 +1374,7 @@ The architecture is remarkably simple: a single AWK script ([index.cgi](file:///
---
-### 58. dyndns
+### 57. dyndns
* 💻 Languages: Shell (100.0%)
* 📚 Documentation: Text (100.0%)
@@ -1417,3 +1394,45 @@ The implementation uses a two-tier security architecture: SSH public key authent
[View on Codeberg](https://codeberg.org/snonux/dyndns)
[View on GitHub](https://github.com/snonux/dyndns)
+
+---
+
+### 58. vs-sim
+
+* 📚 Documentation: Markdown (100.0%)
+* 📊 Commits: 411
+* 📈 Lines of Code: 0
+* 📄 Lines of Documentation: 7
+* 📅 Development Period: 2008-05-15 to 2015-05-23
+* 🏆 Score: 0.0 (combines code size and activity)
+* ⚖️ License: No license found
+* 🏷️ Latest Release: v1.0 (2008-08-24)
+
+⚠️ **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.
+
+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.
+
+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.
+
+[View on Codeberg](https://codeberg.org/snonux/vs-sim)
+[View on GitHub](https://github.com/snonux/vs-sim)
+
+---
+
+### 59. foo.zone
+
+* 📚 Documentation: Markdown (100.0%)
+* 📊 Commits: 3408
+* 📈 Lines of Code: 0
+* 📄 Lines of Documentation: 23
+* 📅 Development Period: 2021-05-21 to 2022-04-02
+* 🏆 Score: 0.0 (combines code size and activity)
+* ⚖️ License: No license found
+* 🧪 Status: Experimental (no releases yet)
+
+⚠️ **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.
+
+foo.zone: source code repository.
+
+[View on Codeberg](https://codeberg.org/snonux/foo.zone)
+[View on GitHub](https://github.com/snonux/foo.zone)
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.md b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.md
index 46465122..9d1ca40f 100644
--- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.md
+++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.md
@@ -300,7 +300,7 @@ Data replication is the cornerstone of high availability. While CARP handles IP
Our storage system has different replication needs:
* NFS data (`/data/nfs/k3svolumes`): Soon, it will contain active Kubernetes persistent volumes. Needs frequent replication (every minute) to minimise data loss during failover.
-* VM data (`/zroot/bhyve/fedora`): Contains VM images that change less frequently. Can tolerate longer replication intervals (every 10 minutes).
+* VM data (`/zroot/bhyve/freebsd`): Contains VM images that change less frequently. Can tolerate longer replication intervals (every 10 minutes).
The 1-minute replication window is perfectly acceptable for my personal use cases. This isn't a high-frequency trading system or a real-time database—it'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.
@@ -401,13 +401,13 @@ jobs:
grid: 4x7d | 6x30d
regex: "^zrepl_.*"
- - name: f0_to_f1_fedora
+ - name: f0_to_f1_freebsd
type: push
connect:
type: tcp
address: "192.168.2.131:8888"
filesystems:
- "zroot/bhyve/fedora": true
+ "zroot/bhyve/freebsd": true
send:
encrypted: true
snapshotting:
@@ -433,9 +433,9 @@ EOF
We're using two separate replication jobs with different intervals:
* `f0_to_f1_nfsdata`: Replicates NFS data every minute for faster failover recovery
-* `f0_to_f1_fedora`: Replicates Fedora VM every ten minutes (less critical)
+* `f0_to_f1_freebsd`: Replicates FreeBSD VM every ten minutes (less critical)
-The Fedora VM is only used for development purposes, so it doesn't require as frequent replication as the NFS data. It's off-topic to this blog series, but it showcases, hows `zrepl`'s flexibility in handling different datasets with varying replication needs.
+The FreeBSD VM is only used for development purposes, so it doesn't require as frequent replication as the NFS data. It's off-topic to this blog series, but it showcases, hows `zrepl`'s flexibility in handling different datasets with varying replication needs.
Furthermore:
@@ -534,12 +534,12 @@ paul@f0:~ % doas zrepl status
[![zrepl status](./f3s-kubernetes-with-freebsd-part-6/zrepl.png "zrepl status")](./f3s-kubernetes-with-freebsd-part-6/zrepl.png)
-With this setup, both `zdata/enc/nfsdata` and `zroot/bhyve/fedora` on `f0` will be automatically replicated to `f1` 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.
+With this setup, both `zdata/enc/nfsdata` and `zroot/bhyve/freebsd` on `f0` will be automatically replicated to `f1` 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.
The replicated data appears on `f1` under `zdata/sink/` with the source host and dataset hierarchy preserved:
* `zdata/enc/nfsdata` → `zdata/sink/f0/zdata/enc/nfsdata`
-* `zroot/bhyve/fedora` → `zdata/sink/f0/zroot/bhyve/fedora`
+* `zroot/bhyve/freebsd` → `zdata/sink/f0/zroot/bhyve/freebsd`
This is by design - `zrepl` preserves the complete path from the source to ensure there are no conflicts when replicating from multiple sources.
@@ -560,14 +560,14 @@ zrepl is running as pid 2309.
# Check that new snapshots are being created and replicated
paul@f0:~ % doas zfs list -t snapshot | grep `zrepl` | tail -2
zdata/enc/nfsdata@zrepl_20250701_202530_000 0B - 200K -
-zroot/bhyve/fedora@zrepl_20250701_202530_000 0B - 2.97G -
+zroot/bhyve/freebsd@zrepl_20250701_202530_000 0B - 2.97G -
.
.
.
paul@f1:~ % doas zfs list -t snapshot -r zdata/sink | grep 202530
zdata/sink/f0/zdata/enc/nfsdata@zrepl_20250701_202530_000 0B - 176K -
-zdata/sink/f0/zroot/bhyve/fedora@zrepl_20250701_202530_000 0B - 2.97G -
+zdata/sink/f0/zroot/bhyve/freebsd@zrepl_20250701_202530_000 0B - 2.97G -
.
.
.
@@ -763,12 +763,12 @@ paul@f1:~ % doas zfs list -t snapshot | grep nfsdata
# Destroy the entire destination dataset to allow clean replication
paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zdata/enc/nfsdata
-# For VM replication, do the same for the fedora dataset
-paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zroot/bhyve/fedora
+# For VM replication, do the same for the freebsd dataset
+paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zroot/bhyve/freebsd
# Wake up zrepl to start fresh replication
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
# Check replication status
paul@f0:~ % doas zrepl status --mode raw
diff --git a/index.md b/index.md
index 881878df..1eba2bb6 100644
--- a/index.md
+++ b/index.md
@@ -1,6 +1,6 @@
# Hello!
-> This site was generated at 2026-01-17T00:21:37+02:00 by `Gemtexter`
+> This site was generated at 2026-01-24T23:12:38+02:00 by `Gemtexter`
Welcome to the foo.zone!
diff --git a/uptime-stats.md b/uptime-stats.md
index 77c56e53..4a8722fc 100644
--- a/uptime-stats.md
+++ b/uptime-stats.md
@@ -1,6 +1,6 @@
# My machine uptime stats
-> This site was last updated at 2026-01-17T00:21:36+02:00
+> This site was last updated at 2026-01-24T23:12:38+02:00
The following stats were collected via `uptimed` on all of my personal computers over many years and the output was generated by `guprecords`, the global uptime records stats analyser of mine.
@@ -18,30 +18,30 @@ Also check out my blog post:
Boots is the total number of host boots over the entire lifespan.
```
-+-----+----------------+-------+-------------------------------+
-| 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 |
++-----+----------------+-------+------------------------------+
```
## Top 20 Uptime's by Host
@@ -54,7 +54,7 @@ Uptime is the total uptime of a host over the entire lifespan.
+-----+----------------+-----------------------------+-----------------------------------+
| 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 |
@@ -64,8 +64,8 @@ Uptime is the total uptime of a host over the entire lifespan.
| 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 |
@@ -84,7 +84,7 @@ Score is calculated by combining all other metrics.
| 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 |
@@ -99,7 +99,7 @@ Score is calculated by combining all other metrics.
| 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 |
@@ -111,30 +111,30 @@ Score is calculated by combining all other metrics.
Downtime is the total downtime of a host over the entire lifespan.
```
-+-----+----------------+-----------------------------+-------------------------------+
-| 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 |
++-----+----------------+-----------------------------+------------------------------+
```
## Top 20 Lifespan's by Host
@@ -149,7 +149,7 @@ Lifespan is the total uptime + the total downtime of a host.
| 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 |
@@ -164,7 +164,7 @@ Lifespan is the total uptime + the total downtime of a host.
| 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 |
+-----+----------------+-----------------------------+-----------------------------------+
```
@@ -179,7 +179,7 @@ Boots is the total number of host boots over the entire lifespan.
| 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 |
@@ -194,7 +194,7 @@ Boots is the total number of host boots over the entire lifespan.
| 16. | Darwin 15... | 15 |
| 17. | Darwin 22... | 12 |
| 18. | Darwin 18... | 11 |
-| 19. | FreeBSD 6... | 10 |
+| 19. | FreeBSD 7... | 10 |
| 20. | OpenBSD 4... | 10 |
+-----+----------------+-------+
```
@@ -211,14 +211,14 @@ Uptime is the total uptime of a host over the entire lifespan.
| 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 |
@@ -242,22 +242,22 @@ Score is calculated by combining all other metrics.
| 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 |
+-----+----------------+-------+
```
@@ -270,7 +270,7 @@ Boots is the total number of host boots over the entire lifespan.
| Pos | KernelName | Boots |
+-----+------------+-------+
| 1. | *FreeBSD | 1204 |
-| 2. | *Linux | 1102 |
+| 2. | *Linux | 1104 |
| 3. | *Darwin | 155 |
| 4. | *OpenBSD | 115 |
| 5. | NetBSD | 1 |
@@ -285,10 +285,10 @@ Uptime is the total uptime of a host over the entire lifespan.
+-----+------------+-----------------------------+
| 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 |
+-----+------------+-----------------------------+
```
@@ -301,10 +301,10 @@ Score is calculated by combining all other metrics.
+-----+------------+-------+
| Pos | KernelName | Score |
+-----+------------+-------+
-| 1. | *Linux | 1883 |
+| 1. | *Linux | 1884 |
| 2. | *FreeBSD | 912 |
| 3. | *OpenBSD | 557 |
-| 4. | *Darwin | 343 |
+| 4. | *Darwin | 344 |
| 5. | NetBSD | 0 |
+-----+------------+-------+
```