diff options
| author | Paul Buetow <paul@buetow.org> | 2025-10-17 20:28:05 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-10-17 20:28:05 +0300 |
| commit | 277fa4195d4a5bb7570ef19d23dd416b4c436a6c (patch) | |
| tree | 515eb0465ab60a110c06110f4f19f5168fb0f293 | |
| parent | fa09cd0ab8ebbdc11f61298272d22f52380683af (diff) | |
Update content for html
| -rw-r--r-- | about/index.html | 3 | ||||
| -rw-r--r-- | about/resources.html | 193 | ||||
| -rw-r--r-- | about/self-skills.txt | 1 | ||||
| -rw-r--r-- | about/showcase.html | 409 | ||||
| -rw-r--r-- | about/showcase/debroid/image-1.png | 110 | ||||
| -rw-r--r-- | gemfeed/DRAFT-helix-with-languagetool.html | 30 | ||||
| -rw-r--r-- | gemfeed/DRAFT-using-supernote-nomad-offline.html | 162 | ||||
| -rwxr-xr-x | gemfeed/convert-notes-to-pdfs.sh | 26 | ||||
| -rw-r--r-- | gemfeed/using-supernote-nomad-offline/nomad1.jpg | bin | 0 -> 180262 bytes | |||
| -rw-r--r-- | gemfeed/using-supernote-nomad-offline/nomad2.jpg | bin | 0 -> 141032 bytes | |||
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | uptime-stats.html | 42 |
12 files changed, 600 insertions, 378 deletions
diff --git a/about/index.html b/about/index.html index 2a21835b..d9a61f01 100644 --- a/about/index.html +++ b/about/index.html @@ -46,7 +46,6 @@ <h3 style='display: inline' id='books-i-am-currently-reading'>Books I am currently reading</h3><br /> <br /> <ul> -<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> <li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> <li>Okular; Alastair Reynolds; eBook</li> <li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li> @@ -57,6 +56,8 @@ <li>Inhibitor Phase; Alastair Reynolds; Audiobook</li> <li>A Fire Upon the Deep (german: Ein Feuer auf der Tiefe); Vernor Vinge; eBook (buecher.de)</li> <li>Origin: Die Entdecknug (german); Andreas Brandhorst; eBook (buecher.de)</li> +<li>Origin: Die Erweckung (german); Joschua Tree; eBook (buecher.de)</li> +<li>Origin: Die Erloesung (german); Brandon Q. Morris; eBook (buecher.de)</li> </ul><br /> <h3 style='display: inline' id='books-on-my-wishlist'>Books on my wishlist</h3><br /> <br /> diff --git a/about/resources.html b/about/resources.html index 82a80303..8dce21b4 100644 --- a/about/resources.html +++ b/about/resources.html @@ -50,109 +50,110 @@ <span>In random order:</span><br /> <br /> <ul> -<li>DNS and BIND; Cricket Liu; O'Reilly</li> -<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> <li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> -<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> -<li>Java ist auch eine Insel; Christian Ullenboom; </li> -<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> -<li>Ultimate Go Notebook; Bill Kennedy</li> -<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> -<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> -<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> -<li>C++ Programming Language; Bjarne Stroustrup;</li> -<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> +<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> +<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> +<li>The Docker Book; James Turnbull; Kindle</li> +<li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> <li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> +<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> <li>Systemprogrammierung in Go; Frank Müller; dpunkt</li> -<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> -<li>Raku Fundamentals; Moritz Lenz; Apress</li> -<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> -<li>Modern Perl; Chromatic ; Onyx Neon Press</li> -<li>Effective awk programming; Arnold Robbins; O'Reilly</li> -<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> -<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> <li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> -<li>Raku Recipes; J.J. Merelo; Apress</li> +<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> +<li>DNS and BIND; Cricket Liu; O'Reilly</li> +<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> +<li>Ultimate Go Notebook; Bill Kennedy</li> +<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> <li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> -<li>The Docker Book; James Turnbull; Kindle</li> -<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> <li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> -<li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> +<li>Raku Recipes; J.J. Merelo; Apress</li> +<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> <li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> -<li>Funktionale Programmierung; Peter Pepper; Springer</li> -<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> +<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> +<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> <li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> -<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> -<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> -<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> -<li>Leanring eBPF; Liz Rice; O'Reilly</li> +<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> +<li>Java ist auch eine Insel; Christian Ullenboom; </li> <li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> -<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> +<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>Effective awk programming; Arnold Robbins; O'Reilly</li> +<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> <li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> -<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> -<li>Developing Games in Java; David Brackeen and others...; New Riders</li> +<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> <li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> +<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> +<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> +<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> +<li>C++ Programming Language; Bjarne Stroustrup;</li> +<li>Modern Perl; Chromatic ; Onyx Neon Press</li> <li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> -<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> +<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> <li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> -<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> -<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> +<li>Funktionale Programmierung; Peter Pepper; Springer</li> +<li>Raku Fundamentals; Moritz Lenz; Apress</li> +<li>Leanring eBPF; Liz Rice; O'Reilly</li> +<li>Developing Games in Java; David Brackeen and others...; New Riders</li> +<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> +<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> +<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> </ul><br /> <h2 style='display: inline' id='technical-references'>Technical references</h2><br /> <br /> <span>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:</span><br /> <br /> <ul> -<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> -<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> -<li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> -<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li> +<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> <li>Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly</li> <li>Relayd and Httpd Mastery; Michael W Lucas</li> +<li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> <li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> -<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> +<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> +<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li> +<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> </ul><br /> <h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br /> <br /> <span>In random order:</span><br /> <br /> <ul> -<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> -<li>Getting Things Done; David Allen</li> -<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> -<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> +<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> +<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> +<li>Soft Skills; John Sommez; Manning Publications</li> +<li>Ultralearning; Anna Laurent; Self-published via Amazon</li> +<li>Eat That Frog; Brian Tracy</li> <li>Atomic Habits; James Clear; Random House Business</li> -<li>Slow Productivity; Cal Newport; Penguin Random House</li> -<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> <li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> -<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> -<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> -<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> -<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> -<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> +<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> +<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> <li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> -<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> -<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> -<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> +<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> +<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> +<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> +<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> +<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> <li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> +<li>The Power of Now; Eckhard Tolle; Yellow Kite</li> <li>Ultralearning; Scott Young; Thorsons</li> -<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> -<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> +<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> +<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> +<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> +<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> +<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>Deep Work; Cal Newport; Piatkus</li> +<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> <li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> <li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> -<li>Ultralearning; Anna Laurent; Self-published via Amazon</li> -<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> -<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> -<li>The Power of Now; Eckhard Tolle; Yellow Kite</li> -<li>Deep Work; Cal Newport; Piatkus</li> +<li>Getting Things Done; David Allen</li> <li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> -<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> <li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> +<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> <li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> -<li>Soft Skills; John Sommez; Manning Publications</li> -<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> -<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> -<li>Eat That Frog; Brian Tracy</li> +<li>Slow Productivity; Cal Newport; Penguin Random House</li> +<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> +<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> +<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> +<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> </ul><br /> <a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br /> <br /> @@ -161,22 +162,22 @@ <span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br /> <br /> <ul> -<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> -<li>MySQL Deep Dive Workshop; 2-day on-site training</li> -<li>AWS Immersion Day; Amazon; 1-day interactive online training </li> -<li>Functional programming lecture; Remote University of Hagen</li> -<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> -<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> <li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> +<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> <li>Apache Tomcat Best Practises; 3-day on-site training</li> -<li>Developing IaC with Terraform (with Live Lessons); O'Reilly Online</li> -<li>Protocol buffers; O'Reilly Online</li> +<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> <li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> -<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> <li>Scripting Vim; Damian Conway; O'Reilly Online</li> +<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> +<li>MySQL Deep Dive Workshop; 2-day on-site training</li> +<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> +<li>Protocol buffers; O'Reilly Online</li> <li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li> -<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> -<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> +<li>Functional programming lecture; Remote University of Hagen</li> +<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> +<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> +<li>Developing IaC with Terraform (with Live Lessons); O'Reilly Online</li> +<li>AWS Immersion Day; Amazon; 1-day interactive online training </li> </ul><br /> <h2 style='display: inline' id='technical-guides'>Technical guides</h2><br /> <br /> @@ -194,21 +195,21 @@ <span>In random order:</span><br /> <br /> <ul> -<li>Backend Banter</li> -<li>Fallthrough [Golang]</li> -<li>Dev Interrupted</li> -<li>Modern Mentor</li> <li>BSD Now [BSD]</li> <li>Wednesday Wisdom</li> -<li>Hidden Brain</li> <li>The Pragmatic Engineer Podcast</li> -<li>Deep Questions with Cal Newport</li> -<li>Fork Around And Find Out</li> <li>Maintainable</li> -<li>Cup o' Go [Golang]</li> -<li>Pratical AI</li> +<li>Fallthrough [Golang]</li> <li>The Changelog Podcast(s)</li> +<li>Fork Around And Find Out</li> +<li>Pratical AI</li> +<li>Hidden Brain</li> +<li>Dev Interrupted</li> +<li>Deep Questions with Cal Newport</li> +<li>Cup o' Go [Golang]</li> <li>The ProdCast (Google SRE Podcast)</li> +<li>Modern Mentor</li> +<li>Backend Banter</li> </ul><br /> <h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br /> <br /> @@ -217,28 +218,28 @@ <ul> <li>Go Time (predecessor of fallthrough)</li> <li>Modern Mentor</li> -<li>CRE: Chaosradio Express [german]</li> -<li>FLOSS weekly</li> <li>Java Pub House</li> +<li>FLOSS weekly</li> <li>Ship It (predecessor of Fork Around And Find Out)</li> +<li>CRE: Chaosradio Express [german]</li> </ul><br /> <h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br /> <br /> <span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br /> <br /> <ul> -<li>Applied Go Weekly Newsletter</li> +<li>Ruby Weekly</li> +<li>VK Newsletter</li> <li>The Valuable Dev</li> -<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> +<li>Applied Go Weekly Newsletter</li> +<li>The Imperfectionist</li> +<li>Monospace Mentor</li> +<li>Changelog News</li> <li>Register Spill</li> <li>The Pragmatic Engineer</li> -<li>Ruby Weekly</li> <li>byteSizeGo</li> -<li>Monospace Mentor</li> -<li>The Imperfectionist</li> +<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> <li>Golang Weekly</li> -<li>VK Newsletter</li> -<li>Changelog News</li> </ul><br /> <h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br /> <br /> @@ -246,9 +247,9 @@ <br /> <ul> <li>Linux Magazine</li> -<li>LWN (online only)</li> -<li>freeX (not published anymore)</li> <li>Linux User</li> +<li>freeX (not published anymore)</li> +<li>LWN (online only)</li> </ul><br /> <h1 style='display: inline' id='formal-education'>Formal education</h1><br /> <br /> diff --git a/about/self-skills.txt b/about/self-skills.txt index aa5896e7..9c3a364a 100644 --- a/about/self-skills.txt +++ b/about/self-skills.txt @@ -1,4 +1,5 @@ * 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook +* The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook * Eat That Frog; Brian Tracy * Getting Things Done; David Allen * Solve for Happy; Mo Gawdat (RE-READ 1ST TIME) diff --git a/about/showcase.html b/about/showcase.html index 12d6e905..5a6823bb 100644 --- a/about/showcase.html +++ b/about/showcase.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='project-showcase'>Project Showcase</h1><br /> <br /> -<span>Generated on: 2025-10-06</span><br /> +<span>Generated on: 2025-10-14</span><br /> <br /> <span>This page showcases my side projects, providing an overview of what each project does, its technical implementation, and key metrics. Each project summary includes information about the programming languages used, development activity, and licensing. The projects are ordered by recent activity, with the most actively maintained projects listed first.</span><br /> <br /> @@ -24,8 +24,10 @@ <li>⇢ <a href='#overall-statistics'>Overall Statistics</a></li> <li>⇢ <a href='#projects'>Projects</a></li> <li>⇢ ⇢ <a href='#yoga'>yoga</a></li> +<li><a href='#yoga'>Yoga</a></li> <li>⇢ ⇢ <a href='#hexai'>hexai</a></li> <li>⇢ ⇢ <a href='#conf'>conf</a></li> +<li>⇢ ⇢ <a href='#foozone'>foo.zone</a></li> <li>⇢ ⇢ <a href='#foostats'>foostats</a></li> <li>⇢ ⇢ <a href='#gitsyncer'>gitsyncer</a></li> <li>⇢ ⇢ <a href='#totalrecall'>totalrecall</a></li> @@ -44,14 +46,13 @@ <li>⇢ ⇢ <a href='#terraform'>terraform</a></li> <li>⇢ ⇢ <a href='#gogios'>gogios</a></li> <li>⇢ ⇢ <a href='#gorum'>gorum</a></li> -<li>⇢ ⇢ <a href='#guprecords'>guprecords</a></li> <li>⇢ ⇢ <a href='#randomjournalpage'>randomjournalpage</a></li> <li>⇢ ⇢ <a href='#sway-autorotate'>sway-autorotate</a></li> <li>⇢ ⇢ <a href='#photoalbum'>photoalbum</a></li> <li>⇢ ⇢ <a href='#geheim'>geheim</a></li> <li>⇢ ⇢ <a href='#algorithms'>algorithms</a></li> -<li>⇢ ⇢ <a href='#foozone'>foo.zone</a></li> <li>⇢ ⇢ <a href='#perl-c-fibonacci'>perl-c-fibonacci</a></li> +<li>⇢ ⇢ <a href='#guprecords'>guprecords</a></li> <li>⇢ ⇢ <a href='#ioriot'>ioriot</a></li> <li>⇢ ⇢ <a href='#staticfarm-apache-handlers'>staticfarm-apache-handlers</a></li> <li>⇢ ⇢ <a href='#dyndns'>dyndns</a></li> @@ -65,32 +66,32 @@ <li>⇢ ⇢ <a href='#template'>template</a></li> <li>⇢ ⇢ <a href='#muttdelay'>muttdelay</a></li> <li>⇢ ⇢ <a href='#netdiff'>netdiff</a></li> -<li>⇢ ⇢ <a href='#pwgrep'>pwgrep</a></li> <li>⇢ ⇢ <a href='#japi'>japi</a></li> -<li>⇢ ⇢ <a href='#loadbars'>loadbars</a></li> <li>⇢ ⇢ <a href='#perl-poetry'>perl-poetry</a></li> <li>⇢ ⇢ <a href='#ipv6test'>ipv6test</a></li> <li>⇢ ⇢ <a href='#cpuinfo'>cpuinfo</a></li> +<li>⇢ ⇢ <a href='#loadbars'>loadbars</a></li> +<li>⇢ ⇢ <a href='#pwgrep'>pwgrep</a></li> <li>⇢ ⇢ <a href='#perldaemon'>perldaemon</a></li> <li>⇢ ⇢ <a href='#awksite'>awksite</a></li> <li>⇢ ⇢ <a href='#jsmstrade'>jsmstrade</a></li> <li>⇢ ⇢ <a href='#ychat'>ychat</a></li> <li>⇢ ⇢ <a href='#netcalendar'>netcalendar</a></li> -<li>⇢ ⇢ <a href='#vs-sim'>vs-sim</a></li> <li>⇢ ⇢ <a href='#hsbot'>hsbot</a></li> +<li>⇢ ⇢ <a href='#vs-sim'>vs-sim</a></li> <li>⇢ ⇢ <a href='#fype'>fype</a></li> </ul><br /> <h2 style='display: inline' id='overall-statistics'>Overall Statistics</h2><br /> <br /> <ul> <li>📦 Total Projects: 56</li> -<li>📊 Total Commits: 11,174</li> -<li>📈 Total Lines of Code: 247,835</li> -<li>📄 Total Lines of Documentation: 26,482</li> -<li>💻 Languages: Go (34.0%), Java (22.1%), C (7.8%), C++ (7.1%), Perl (6.7%), Shell (5.0%), C/C++ (4.9%), HTML (4.8%), Config (1.5%), Ruby (1.2%), HCL (1.1%), YAML (0.7%), Python (0.7%), Make (0.6%), CSS (0.5%), Raku (0.4%), JSON (0.3%), XML (0.3%), Haskell (0.2%), TOML (0.1%)</li> -<li>📚 Documentation: Text (44.2%), Markdown (42.8%), LaTeX (12.9%)</li> +<li>📊 Total Commits: 11,220</li> +<li>📈 Total Lines of Code: 274,377</li> +<li>📄 Total Lines of Documentation: 52,861</li> +<li>💻 Languages: Go (31.1%), Java (14.7%), C++ (13.5%), Shell (7.8%), C/C++ (7.4%), C (7.0%), Perl (6.5%), HTML (4.6%), Config (1.7%), Ruby (1.0%), HCL (1.0%), Make (0.7%), YAML (0.6%), Python (0.6%), CSS (0.5%), JSON (0.3%), Raku (0.3%), XML (0.2%), Haskell (0.2%), TOML (0.1%)</li> +<li>📚 Documentation: Markdown (76.7%), Text (22.2%), LaTeX (1.1%)</li> <li>🎵 Vibe-Coded Projects: 4 out of 56 (7.1%)</li> -<li>🤖 AI-Assisted Projects (including vibe-coded): 10 out of 56 (17.9% AI-assisted, 82.1% human-only)</li> +<li>🤖 AI-Assisted Projects (including vibe-coded): 11 out of 56 (19.6% AI-assisted, 80.4% human-only)</li> <li>🚀 Release Status: 36 released, 20 experimental (64.3% with releases, 35.7% experimental)</li> </ul><br /> <h2 style='display: inline' id='projects'>Projects</h2><br /> @@ -100,17 +101,20 @@ <ul> <li>💻 Languages: Go (100.0%)</li> <li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 6</li> -<li>📈 Lines of Code: 2628</li> -<li>📄 Lines of Documentation: 76</li> -<li>📅 Development Period: 2025-10-01 to 2025-10-02</li> -<li>🔥 Recent Activity: 4.7 days (avg. age of last 42 commits)</li> +<li>📊 Commits: 11</li> +<li>📈 Lines of Code: 3376</li> +<li>📄 Lines of Documentation: 82</li> +<li>📅 Development Period: 2025-10-01 to 2025-10-12</li> +<li>🔥 Recent Activity: 8.8 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: v0.2.0 (2025-10-02)</li> +<li>🏷️ Latest Release: v0.2.5 (2025-10-12)</li> <li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> </ul><br /> <br /> <a href='showcase/yoga/image-1.png'><img alt='yoga screenshot' title='yoga screenshot' src='showcase/yoga/image-1.png' /></a><br /> +<br /> +<h1 style='display: inline' id='yoga'>Yoga</h1><br /> +<br /> <a class='textlink' href='https://codeberg.org/snonux/yoga'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/yoga'>View on GitHub</a><br /> <br /> @@ -125,7 +129,7 @@ <li>📈 Lines of Code: 26565</li> <li>📄 Lines of Documentation: 564</li> <li>📅 Development Period: 2025-08-01 to 2025-10-04</li> -<li>🔥 Recent Activity: 13.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 21.7 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: v0.15.1 (2025-10-03)</li> <li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> @@ -145,13 +149,13 @@ <h3 style='display: inline' id='conf'>conf</h3><br /> <br /> <ul> -<li>💻 Languages: Perl (31.6%), Shell (23.1%), YAML (22.9%), Config (5.6%), CSS (5.4%), TOML (4.8%), Ruby (4.2%), Lua (1.2%), Docker (0.6%), JSON (0.5%)</li> +<li>💻 Languages: Perl (31.5%), Shell (23.2%), YAML (22.9%), Config (5.6%), CSS (5.4%), TOML (4.8%), Ruby (4.1%), Lua (1.2%), Docker (0.6%), JSON (0.5%)</li> <li>📚 Documentation: Text (73.7%), Markdown (26.3%)</li> -<li>📊 Commits: 1003</li> -<li>📈 Lines of Code: 6046</li> +<li>📊 Commits: 1008</li> +<li>📈 Lines of Code: 6055</li> <li>📄 Lines of Documentation: 1356</li> -<li>📅 Development Period: 2021-12-28 to 2025-10-03</li> -<li>🔥 Recent Activity: 23.5 days (avg. age of last 42 commits)</li> +<li>📅 Development Period: 2021-12-28 to 2025-10-13</li> +<li>🔥 Recent Activity: 26.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -164,6 +168,30 @@ <br /> <span>---</span><br /> <br /> +<h3 style='display: inline' id='foozone'>foo.zone</h3><br /> +<br /> +<ul> +<li>💻 Languages: Shell (71.8%), Go (27.8%), YAML (0.4%)</li> +<li>📚 Documentation: Markdown (99.5%), Text (0.5%)</li> +<li>📊 Commits: 3131</li> +<li>📈 Lines of Code: 227</li> +<li>📄 Lines of Documentation: 29792</li> +<li>📅 Development Period: 2021-04-29 to 2025-10-12</li> +<li>🔥 Recent Activity: 43.5 days (avg. age of last 42 commits)</li> +<li>⚖️ License: No license found</li> +<li>🧪 Status: Experimental (no releases yet)</li> +<li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> +</ul><br /> +<br /> +<span>This project hosts the static files for the foo.zone website, which is accessible via both the Gemini protocol (gemini://foo.zone) and the web (https://foo.zone). The repository is organized with separate branches for each content format—such as Gemtext, HTML, and Markdown—allowing the site to be served in multiple formats tailored to different protocols and user preferences. This structure makes it easy to maintain and update content across platforms, ensuring consistency and flexibility.</span><br /> +<br /> +<span>The site is maintained using a suite of open-source tools, including Neovim for editing, GNU Bash for scripting, and ShellCheck for shell script linting. It is deployed on OpenBSD, utilizing the vger Gemini server (managed via relayd and inetd) for Gemini content and the native httpd server for the HTML site. Source code and hosting are managed through Codeberg. The static content is generated with the help of the gemtexter tool, which streamlines the process of converting and managing content in various formats. This architecture emphasizes simplicity, security, and portability, making it a robust solution for multi-protocol static site hosting.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> <h3 style='display: inline' id='foostats'>foostats</h3><br /> <br /> <ul> @@ -173,7 +201,7 @@ <li>📈 Lines of Code: 1910</li> <li>📄 Lines of Documentation: 421</li> <li>📅 Development Period: 2023-01-02 to 2025-09-28</li> -<li>🔥 Recent Activity: 51.3 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 59.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v0.1.0 (2025-07-12)</li> </ul><br /> @@ -196,7 +224,7 @@ <li>📈 Lines of Code: 10036</li> <li>📄 Lines of Documentation: 2433</li> <li>📅 Development Period: 2025-06-23 to 2025-09-08</li> -<li>🔥 Recent Activity: 73.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 81.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: BSD-2-Clause</li> <li>🏷️ Latest Release: v0.9.2 (2025-09-08)</li> <li>🎵 Vibe-Coded: This project has been vibe coded</li> @@ -220,7 +248,7 @@ <li>📈 Lines of Code: 12003</li> <li>📄 Lines of Documentation: 361</li> <li>📅 Development Period: 2025-07-14 to 2025-08-02</li> -<li>🔥 Recent Activity: 76.5 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 84.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: MIT</li> <li>🏷️ Latest Release: v0.7.5 (2025-08-02)</li> <li>🎵 Vibe-Coded: This project has been vibe coded</li> @@ -250,7 +278,7 @@ <li>📈 Lines of Code: 929</li> <li>📄 Lines of Documentation: 80</li> <li>📅 Development Period: 2025-06-25 to 2025-09-29</li> -<li>🔥 Recent Activity: 85.6 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 93.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: BSD-2-Clause</li> <li>🏷️ Latest Release: v0.1.1 (2025-09-29)</li> <li>🎵 Vibe-Coded: This project has been vibe coded</li> @@ -276,7 +304,7 @@ <li>📈 Lines of Code: 6168</li> <li>📄 Lines of Documentation: 162</li> <li>📅 Development Period: 2025-06-19 to 2025-10-05</li> -<li>🔥 Recent Activity: 99.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 107.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: BSD-2-Clause</li> <li>🏷️ Latest Release: v0.9.3 (2025-10-05)</li> <li>🎵 Vibe-Coded: This project has been vibe coded</li> @@ -298,13 +326,13 @@ <h3 style='display: inline' id='ior'>ior</h3><br /> <br /> <ul> -<li>💻 Languages: Go (50.2%), C (43.4%), Raku (4.4%), Make (1.1%), C/C++ (0.9%)</li> -<li>📚 Documentation: Text (69.0%), Markdown (31.0%)</li> -<li>📊 Commits: 332</li> -<li>📈 Lines of Code: 12762</li> -<li>📄 Lines of Documentation: 684</li> -<li>📅 Development Period: 2024-01-18 to 2025-09-21</li> -<li>🔥 Recent Activity: 136.3 days (avg. age of last 42 commits)</li> +<li>💻 Languages: Go (50.4%), C (43.1%), Raku (4.5%), Make (1.1%), C/C++ (1.0%)</li> +<li>📚 Documentation: Text (69.7%), Markdown (30.3%)</li> +<li>📊 Commits: 337</li> +<li>📈 Lines of Code: 13072</li> +<li>📄 Lines of Documentation: 680</li> +<li>📅 Development Period: 2024-01-18 to 2025-10-09</li> +<li>🔥 Recent Activity: 122.8 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> <li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> @@ -332,7 +360,7 @@ <li>📈 Lines of Code: 4102</li> <li>📄 Lines of Documentation: 357</li> <li>📅 Development Period: 2024-05-04 to 2025-09-24</li> -<li>🔥 Recent Activity: 138.1 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 146.1 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v1.2.0 (2025-09-24)</li> </ul><br /> @@ -359,7 +387,7 @@ <li>📈 Lines of Code: 20091</li> <li>📄 Lines of Documentation: 5674</li> <li>📅 Development Period: 2020-01-09 to 2025-06-20</li> -<li>🔥 Recent Activity: 141.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 149.7 days (avg. age of last 42 commits)</li> <li>⚖️ License: Apache-2.0</li> <li>🏷️ Latest Release: v4.3.3 (2024-08-23)</li> <li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> @@ -387,7 +415,7 @@ <li>📈 Lines of Code: 396</li> <li>📄 Lines of Documentation: 24</li> <li>📅 Development Period: 2025-04-18 to 2025-05-11</li> -<li>🔥 Recent Activity: 161.0 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 169.0 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v1.0.0 (2025-05-11)</li> </ul><br /> @@ -410,7 +438,7 @@ <li>📈 Lines of Code: 25762</li> <li>📄 Lines of Documentation: 3101</li> <li>📅 Development Period: 2008-05-15 to 2025-06-27</li> -<li>🔥 Recent Activity: 174.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 182.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> <li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> @@ -436,7 +464,7 @@ <li>📈 Lines of Code: 33</li> <li>📄 Lines of Documentation: 3</li> <li>📅 Development Period: 2025-04-03 to 2025-04-03</li> -<li>🔥 Recent Activity: 187.0 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 194.9 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -459,7 +487,7 @@ <li>📈 Lines of Code: 1373</li> <li>📄 Lines of Documentation: 48</li> <li>📅 Development Period: 2024-12-05 to 2025-02-28</li> -<li>🔥 Recent Activity: 227.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 235.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -482,7 +510,7 @@ <li>📈 Lines of Code: 2285</li> <li>📄 Lines of Documentation: 1180</li> <li>📅 Development Period: 2021-05-21 to 2025-08-31</li> -<li>🔥 Recent Activity: 273.0 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 281.0 days (avg. age of last 42 commits)</li> <li>⚖️ License: GPL-3.0</li> <li>🏷️ Latest Release: 3.0.0 (2024-10-01)</li> </ul><br /> @@ -507,7 +535,7 @@ <li>📈 Lines of Code: 1133</li> <li>📄 Lines of Documentation: 78</li> <li>📅 Development Period: 2024-01-20 to 2025-09-13</li> -<li>🔥 Recent Activity: 493.6 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 501.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: MIT</li> <li>🏷️ Latest Release: v0.0.4 (2025-09-13)</li> </ul><br /> @@ -534,7 +562,7 @@ <li>📈 Lines of Code: 40</li> <li>📄 Lines of Documentation: 3</li> <li>📅 Development Period: 2023-12-31 to 2025-08-11</li> -<li>🔥 Recent Activity: 527.3 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 535.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -557,7 +585,7 @@ <li>📈 Lines of Code: 2851</li> <li>📄 Lines of Documentation: 52</li> <li>📅 Development Period: 2023-08-27 to 2025-08-08</li> -<li>🔥 Recent Activity: 563.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 571.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: MIT</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -580,7 +608,7 @@ <li>📈 Lines of Code: 1096</li> <li>📄 Lines of Documentation: 287</li> <li>📅 Development Period: 2023-04-17 to 2025-06-12</li> -<li>🔥 Recent Activity: 604.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 612.3 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v1.1.0 (2024-05-03)</li> <li>🤖 AI-Assisted: This project was partially created with the help of generative AI</li> @@ -606,7 +634,7 @@ <li>📈 Lines of Code: 1525</li> <li>📄 Lines of Documentation: 15</li> <li>📅 Development Period: 2023-04-17 to 2023-11-19</li> -<li>🔥 Recent Activity: 790.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 798.3 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -621,29 +649,6 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='guprecords'>guprecords</h3><br /> -<br /> -<ul> -<li>💻 Languages: Raku (100.0%)</li> -<li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 95</li> -<li>📈 Lines of Code: 312</li> -<li>📄 Lines of Documentation: 416</li> -<li>📅 Development Period: 2013-03-22 to 2025-05-18</li> -<li>🔥 Recent Activity: 840.4 days (avg. age of last 42 commits)</li> -<li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: v1.0.0 (2023-04-29)</li> -</ul><br /> -<br /> -<span><span class='inlinecode'>guprecords</span> is a command-line tool written in Raku that generates comprehensive uptime reports for multiple hosts by aggregating and analyzing raw record files produced by the <span class='inlinecode'>uptimed</span> daemon. Its primary purpose is to provide system administrators and enthusiasts with detailed, customizable statistics on system reliability and availability across a fleet of machines. By supporting various categories (such as Host, Kernel, KernelMajor, and KernelName) and metrics (including Boots, Uptime, Score, Downtime, and Lifespan), <span class='inlinecode'>guprecords</span> enables users to identify trends, compare system stability, and track performance over time. Reports can be output in plaintext, Markdown, or Gemtext formats, making them suitable for different documentation or publishing needs.</span><br /> -<br /> -<span>The architecture of <span class='inlinecode'>guprecords</span> is modular, with classes dedicated to parsing epoch data, aggregating statistics, and formatting output. The tool reads uptime record files collected from multiple hosts (typically centralized via a git repository), processes them to compute the desired metrics, and generates ranked tables highlighting top performers or outliers. Users can tailor reports using command-line options to select categories, metrics, output formats, and entry limits. The design emphasizes flexibility and extensibility, allowing for easy integration into existing monitoring workflows. While <span class='inlinecode'>guprecords</span> does not handle the collection of raw data itself, it complements existing <span class='inlinecode'>uptimed</span> deployments by transforming raw uptime logs into actionable insights and historical records.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/guprecords'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/guprecords'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> <h3 style='display: inline' id='randomjournalpage'>randomjournalpage</h3><br /> <br /> <ul> @@ -653,7 +658,7 @@ <li>📈 Lines of Code: 51</li> <li>📄 Lines of Documentation: 26</li> <li>📅 Development Period: 2022-06-02 to 2024-04-20</li> -<li>🔥 Recent Activity: 855.2 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 863.1 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -677,7 +682,7 @@ <li>📈 Lines of Code: 41</li> <li>📄 Lines of Documentation: 17</li> <li>📅 Development Period: 2020-01-30 to 2025-04-30</li> -<li>🔥 Recent Activity: 1148.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 1156.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: GPL-3.0</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -700,7 +705,7 @@ <li>📈 Lines of Code: 342</li> <li>📄 Lines of Documentation: 39</li> <li>📅 Development Period: 2011-11-19 to 2022-04-02</li> -<li>🔥 Recent Activity: 1368.3 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 1376.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 0.5.0 (2022-02-21)</li> </ul><br /> @@ -726,7 +731,7 @@ <li>📈 Lines of Code: 671</li> <li>📄 Lines of Documentation: 26</li> <li>📅 Development Period: 2018-05-26 to 2025-09-04</li> -<li>🔥 Recent Activity: 1463.0 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 1471.0 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -753,7 +758,7 @@ <li>📈 Lines of Code: 1728</li> <li>📄 Lines of Documentation: 18</li> <li>📅 Development Period: 2020-07-12 to 2023-04-09</li> -<li>🔥 Recent Activity: 1519.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 1527.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -768,29 +773,6 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='foozone'>foo.zone</h3><br /> -<br /> -<ul> -<li>📚 Documentation: Markdown (100.0%)</li> -<li>📊 Commits: 3100</li> -<li>📈 Lines of Code: 0</li> -<li>📄 Lines of Documentation: 23</li> -<li>📅 Development Period: 2021-05-21 to 2022-04-02</li> -<li>🔥 Recent Activity: 1535.0 days (avg. age of last 42 commits)</li> -<li>⚖️ License: No license found</li> -<li>🧪 Status: Experimental (no releases yet)</li> -</ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> -<br /> -<span>This project hosts the static files for the foo.zone website, which is accessible via both the Gemini protocol (gemini://foo.zone) and the web (https://foo.zone). The repository is organized with separate branches for each content format—such as Gemtext, HTML, and Markdown—allowing the site to be served in multiple formats tailored to different protocols and user preferences. This structure makes it easy to maintain and update content across platforms, ensuring consistency and flexibility.</span><br /> -<br /> -<span>The site is maintained using a suite of open-source tools, including Neovim for editing, GNU Bash for scripting, and ShellCheck for shell script linting. It is deployed on OpenBSD, utilizing the vger Gemini server (managed via relayd and inetd) for Gemini content and the native httpd server for the HTML site. Source code and hosting are managed through Codeberg. The static content is generated with the help of the gemtexter tool, which streamlines the process of converting and managing content in various formats. This architecture emphasizes simplicity, security, and portability, making it a robust solution for multi-protocol static site hosting.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> <h3 style='display: inline' id='perl-c-fibonacci'>perl-c-fibonacci</h3><br /> <br /> <ul> @@ -800,7 +782,7 @@ <li>📈 Lines of Code: 51</li> <li>📄 Lines of Documentation: 69</li> <li>📅 Development Period: 2014-03-24 to 2022-04-23</li> -<li>🔥 Recent Activity: 2000.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 2008.3 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -813,6 +795,28 @@ <br /> <span>---</span><br /> <br /> +<h3 style='display: inline' id='guprecords'>guprecords</h3><br /> +<br /> +<ul> +<li>💻 Languages: Raku (100.0%)</li> +<li>📊 Commits: 95</li> +<li>📈 Lines of Code: 195</li> +<li>📅 Development Period: 2013-03-22 to 2023-03-09</li> +<li>🔥 Recent Activity: 2223.4 days (avg. age of last 42 commits)</li> +<li>⚖️ License: No license found</li> +<li>🏷️ Latest Release: v1.0.0 (2023-04-29)</li> +</ul><br /> +<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> +<br /> +<span><span class='inlinecode'>guprecords</span> is a command-line tool written in Raku that generates comprehensive uptime reports for multiple hosts by aggregating and analyzing raw record files produced by the <span class='inlinecode'>uptimed</span> daemon. Its primary purpose is to provide system administrators and enthusiasts with detailed, customizable statistics on system reliability and availability across a fleet of machines. By supporting various categories (such as Host, Kernel, KernelMajor, and KernelName) and metrics (including Boots, Uptime, Score, Downtime, and Lifespan), <span class='inlinecode'>guprecords</span> enables users to identify trends, compare system stability, and track performance over time. Reports can be output in plaintext, Markdown, or Gemtext formats, making them suitable for different documentation or publishing needs.</span><br /> +<br /> +<span>The architecture of <span class='inlinecode'>guprecords</span> is modular, with classes dedicated to parsing epoch data, aggregating statistics, and formatting output. The tool reads uptime record files collected from multiple hosts (typically centralized via a git repository), processes them to compute the desired metrics, and generates ranked tables highlighting top performers or outliers. Users can tailor reports using command-line options to select categories, metrics, output formats, and entry limits. The design emphasizes flexibility and extensibility, allowing for easy integration into existing monitoring workflows. While <span class='inlinecode'>guprecords</span> does not handle the collection of raw data itself, it complements existing <span class='inlinecode'>uptimed</span> deployments by transforming raw uptime logs into actionable insights and historical records.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/guprecords'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/guprecords'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> <h3 style='display: inline' id='ioriot'>ioriot</h3><br /> <br /> <ul> @@ -822,7 +826,7 @@ <li>📈 Lines of Code: 12420</li> <li>📄 Lines of Documentation: 610</li> <li>📅 Development Period: 2018-03-01 to 2020-01-22</li> -<li>🔥 Recent Activity: 2541.9 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 2549.8 days (avg. age of last 42 commits)</li> <li>⚖️ License: Apache-2.0</li> <li>🏷️ Latest Release: 0.5.1 (2019-01-04)</li> </ul><br /> @@ -848,7 +852,7 @@ <li>📈 Lines of Code: 919</li> <li>📄 Lines of Documentation: 12</li> <li>📅 Development Period: 2015-01-02 to 2021-11-04</li> -<li>🔥 Recent Activity: 3050.6 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3058.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 1.1.3 (2015-01-02)</li> </ul><br /> @@ -872,7 +876,7 @@ <li>📈 Lines of Code: 18</li> <li>📄 Lines of Documentation: 49</li> <li>📅 Development Period: 2014-03-24 to 2021-11-05</li> -<li>🔥 Recent Activity: 3286.5 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3294.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -903,7 +907,7 @@ <li>📈 Lines of Code: 5360</li> <li>📄 Lines of Documentation: 789</li> <li>📅 Development Period: 2015-01-02 to 2021-11-05</li> -<li>🔥 Recent Activity: 3553.2 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3561.1 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 1.0.1 (2015-01-02)</li> </ul><br /> @@ -931,7 +935,7 @@ <li>📈 Lines of Code: 273</li> <li>📄 Lines of Documentation: 32</li> <li>📅 Development Period: 2015-09-29 to 2021-11-05</li> -<li>🔥 Recent Activity: 3557.3 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3565.3 days (avg. age of last 42 commits)</li> <li>⚖️ License: Apache-2.0</li> <li>🏷️ Latest Release: 0 (2015-10-26)</li> </ul><br /> @@ -961,7 +965,7 @@ <li>📈 Lines of Code: 1839</li> <li>📄 Lines of Documentation: 412</li> <li>📅 Development Period: 2015-01-02 to 2021-11-05</li> -<li>🔥 Recent Activity: 3637.0 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3644.9 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 1.0.2 (2015-01-02)</li> </ul><br /> @@ -989,7 +993,7 @@ <li>📈 Lines of Code: 499</li> <li>📄 Lines of Documentation: 8</li> <li>📅 Development Period: 2015-05-24 to 2021-11-03</li> -<li>🔥 Recent Activity: 3647.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3655.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 0.1 (2015-06-01)</li> </ul><br /> @@ -1011,7 +1015,7 @@ <li>📊 Commits: 670</li> <li>📈 Lines of Code: 1675</li> <li>📅 Development Period: 2011-03-06 to 2018-12-22</li> -<li>🔥 Recent Activity: 3703.3 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3711.3 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v1.0.0 (2018-12-22)</li> </ul><br /> @@ -1035,7 +1039,7 @@ <li>📈 Lines of Code: 88</li> <li>📄 Lines of Documentation: 148</li> <li>📅 Development Period: 2015-06-18 to 2015-12-05</li> -<li>🔥 Recent Activity: 3751.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 3759.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -1061,7 +1065,7 @@ <li>📈 Lines of Code: 1681</li> <li>📄 Lines of Documentation: 539</li> <li>📅 Development Period: 2014-03-10 to 2021-11-03</li> -<li>🔥 Recent Activity: 4029.4 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4037.4 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 1.0.2 (2014-11-17)</li> </ul><br /> @@ -1089,7 +1093,7 @@ <li>📈 Lines of Code: 65</li> <li>📄 Lines of Documentation: 228</li> <li>📅 Development Period: 2013-03-22 to 2021-11-04</li> -<li>🔥 Recent Activity: 4083.9 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4091.8 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 0.0.0.0 (2013-03-22)</li> </ul><br /> @@ -1113,7 +1117,7 @@ <li>📈 Lines of Code: 136</li> <li>📄 Lines of Documentation: 96</li> <li>📅 Development Period: 2013-03-22 to 2021-11-05</li> -<li>🔥 Recent Activity: 4096.9 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4104.8 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 0.2.0 (2014-07-05)</li> </ul><br /> @@ -1141,7 +1145,7 @@ <li>📈 Lines of Code: 134</li> <li>📄 Lines of Documentation: 106</li> <li>📅 Development Period: 2013-03-22 to 2021-11-05</li> -<li>🔥 Recent Activity: 4104.3 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4112.3 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 0.1.5 (2014-06-22)</li> </ul><br /> @@ -1158,30 +1162,6 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='pwgrep'>pwgrep</h3><br /> -<br /> -<ul> -<li>💻 Languages: Shell (85.0%), Make (15.0%)</li> -<li>📚 Documentation: Text (80.8%), Markdown (19.2%)</li> -<li>📊 Commits: 142</li> -<li>📈 Lines of Code: 493</li> -<li>📄 Lines of Documentation: 26</li> -<li>📅 Development Period: 2009-09-27 to 2021-11-02</li> -<li>🔥 Recent Activity: 4147.6 days (avg. age of last 42 commits)</li> -<li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: 0.9.3 (2014-06-14)</li> -</ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> -<br /> -<span>**pwgrep** is a lightweight password manager designed for Unix-like systems, implemented primarily in Bash and GNU AWK. It securely stores and retrieves passwords by encrypting them with GPG (GNU Privacy Guard), ensuring that sensitive information remains protected. Version control for password files is handled using an RCS (Revision Control System) such as Git, allowing users to track changes, revert to previous versions, and maintain an audit trail of password updates. This approach leverages familiar command-line tools, making it accessible to users comfortable with shell environments.</span><br /> -<br /> -<span>The core features of pwgrep include encrypted password storage, easy retrieval and search functionality (using AWK for pattern matching), and robust version control integration. The architecture is modular and script-based: Bash scripts orchestrate user interactions and file management, AWK handles efficient searching within password files, GPG provides encryption/decryption, and Git (or another RCS) manages version history. This combination offers a secure, auditable, and scriptable solution for password management without relying on heavyweight external applications or GUIs.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/pwgrep'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/pwgrep'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> <h3 style='display: inline' id='japi'>japi</h3><br /> <br /> <ul> @@ -1191,7 +1171,7 @@ <li>📈 Lines of Code: 286</li> <li>📄 Lines of Documentation: 144</li> <li>📅 Development Period: 2013-03-22 to 2021-11-05</li> -<li>🔥 Recent Activity: 4152.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4160.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 0.4.3 (2014-06-16)</li> </ul><br /> @@ -1208,28 +1188,6 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='loadbars'>loadbars</h3><br /> -<br /> -<ul> -<li>💻 Languages: Perl (97.4%), Make (2.6%)</li> -<li>📚 Documentation: Text (100.0%)</li> -<li>📊 Commits: 527</li> -<li>📈 Lines of Code: 1828</li> -<li>📄 Lines of Documentation: 200</li> -<li>📅 Development Period: 2010-11-05 to 2021-11-03</li> -<li>🔥 Recent Activity: 4173.0 days (avg. age of last 42 commits)</li> -<li>⚖️ License: No license found</li> -<li>🏷️ Latest Release: 0.7.5 (2014-06-22)</li> -</ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> -<br /> -<span>loadbars: source code repository.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/loadbars'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/loadbars'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> <h3 style='display: inline' id='perl-poetry'>perl-poetry</h3><br /> <br /> <ul> @@ -1239,7 +1197,7 @@ <li>📈 Lines of Code: 191</li> <li>📄 Lines of Documentation: 8</li> <li>📅 Development Period: 2014-03-24 to 2014-03-24</li> -<li>🔥 Recent Activity: 4213.9 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4221.9 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -1261,7 +1219,7 @@ <li>📊 Commits: 7</li> <li>📈 Lines of Code: 80</li> <li>📅 Development Period: 2011-07-09 to 2015-01-13</li> -<li>🔥 Recent Activity: 4294.0 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4301.9 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -1285,7 +1243,7 @@ <li>📈 Lines of Code: 124</li> <li>📄 Lines of Documentation: 75</li> <li>📅 Development Period: 2010-11-05 to 2021-11-05</li> -<li>🔥 Recent Activity: 4334.6 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4342.6 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: 1.0.2 (2014-06-22)</li> </ul><br /> @@ -1300,6 +1258,52 @@ <br /> <span>---</span><br /> <br /> +<h3 style='display: inline' id='loadbars'>loadbars</h3><br /> +<br /> +<ul> +<li>💻 Languages: Perl (97.4%), Make (2.6%)</li> +<li>📚 Documentation: Text (100.0%)</li> +<li>📊 Commits: 527</li> +<li>📈 Lines of Code: 1828</li> +<li>📄 Lines of Documentation: 100</li> +<li>📅 Development Period: 2010-11-05 to 2015-05-23</li> +<li>🔥 Recent Activity: 4372.7 days (avg. age of last 42 commits)</li> +<li>⚖️ License: No license found</li> +<li>🏷️ Latest Release: 0.7.5 (2014-06-22)</li> +</ul><br /> +<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> +<br /> +<span>loadbars: source code repository.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/loadbars'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/loadbars'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> +<h3 style='display: inline' id='pwgrep'>pwgrep</h3><br /> +<br /> +<ul> +<li>💻 Languages: Shell (85.0%), Make (15.0%)</li> +<li>📚 Documentation: Text (72.4%), Markdown (27.6%)</li> +<li>📊 Commits: 142</li> +<li>📈 Lines of Code: 493</li> +<li>📄 Lines of Documentation: 29</li> +<li>📅 Development Period: 2009-09-27 to 2015-05-23</li> +<li>🔥 Recent Activity: 4386.1 days (avg. age of last 42 commits)</li> +<li>⚖️ License: No license found</li> +<li>🏷️ Latest Release: 0.9.3 (2014-06-14)</li> +</ul><br /> +<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> +<br /> +<span>**pwgrep** is a lightweight password manager designed for Unix-like systems, implemented primarily in Bash and GNU AWK. It securely stores and retrieves passwords by encrypting them with GPG (GNU Privacy Guard), ensuring that sensitive information remains protected. Version control for password files is handled using an RCS (Revision Control System) such as Git, allowing users to track changes, revert to previous versions, and maintain an audit trail of password updates. This approach leverages familiar command-line tools, making it accessible to users comfortable with shell environments.</span><br /> +<br /> +<span>The core features of pwgrep include encrypted password storage, easy retrieval and search functionality (using AWK for pattern matching), and robust version control integration. The architecture is modular and script-based: Bash scripts orchestrate user interactions and file management, AWK handles efficient searching within password files, GPG provides encryption/decryption, and Git (or another RCS) manages version history. This combination offers a secure, auditable, and scriptable solution for password management without relying on heavyweight external applications or GUIs.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/pwgrep'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/pwgrep'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> <h3 style='display: inline' id='perldaemon'>perldaemon</h3><br /> <br /> <ul> @@ -1307,7 +1311,7 @@ <li>📊 Commits: 110</li> <li>📈 Lines of Code: 614</li> <li>📅 Development Period: 2011-02-05 to 2022-04-21</li> -<li>🔥 Recent Activity: 4414.2 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4422.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v1.4 (2022-04-29)</li> </ul><br /> @@ -1333,7 +1337,7 @@ <li>📈 Lines of Code: 122</li> <li>📄 Lines of Documentation: 10</li> <li>📅 Development Period: 2011-01-27 to 2014-06-22</li> -<li>🔥 Recent Activity: 4745.2 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4753.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: v0.2 (2011-01-27)</li> </ul><br /> @@ -1357,7 +1361,7 @@ <li>📈 Lines of Code: 720</li> <li>📄 Lines of Documentation: 6</li> <li>📅 Development Period: 2008-06-21 to 2021-11-03</li> -<li>🔥 Recent Activity: 4807.9 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 4815.8 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v0.3 (2009-02-08)</li> </ul><br /> @@ -1377,13 +1381,13 @@ <h3 style='display: inline' id='ychat'>ychat</h3><br /> <br /> <ul> -<li>💻 Languages: C++ (52.1%), C/C++ (21.3%), Shell (20.1%), HTML (2.5%), Config (2.1%), Perl (1.5%), Make (0.3%)</li> +<li>💻 Languages: C++ (50.4%), Shell (21.3%), C/C++ (20.8%), Perl (2.3%), HTML (2.3%), Config (2.2%), Make (0.7%), CSS (0.1%)</li> <li>📚 Documentation: Text (100.0%)</li> <li>📊 Commits: 67</li> -<li>📈 Lines of Code: 33823</li> -<li>📄 Lines of Documentation: 109</li> +<li>📈 Lines of Code: 73818</li> +<li>📄 Lines of Documentation: 127</li> <li>📅 Development Period: 2008-05-15 to 2014-07-01</li> -<li>🔥 Recent Activity: 5362.7 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 5407.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: GPL-2.0</li> <li>🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06)</li> </ul><br /> @@ -1407,7 +1411,7 @@ <li>📈 Lines of Code: 17380</li> <li>📄 Lines of Documentation: 947</li> <li>📅 Development Period: 2009-02-07 to 2021-05-01</li> -<li>🔥 Recent Activity: 5438.6 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 5446.5 days (avg. age of last 42 commits)</li> <li>⚖️ License: GPL-2.0</li> <li>🏷️ Latest Release: v0.1 (2009-02-08)</li> </ul><br /> @@ -1426,32 +1430,6 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='vs-sim'>vs-sim</h3><br /> -<br /> -<ul> -<li>💻 Languages: Java (98.6%), Shell (0.8%), XML (0.4%)</li> -<li>📚 Documentation: LaTeX (98.4%), Text (1.4%), Markdown (0.2%)</li> -<li>📊 Commits: 411</li> -<li>📈 Lines of Code: 14582</li> -<li>📄 Lines of Documentation: 2903</li> -<li>📅 Development Period: 2008-05-15 to 2022-04-03</li> -<li>🔥 Recent Activity: 5474.9 days (avg. age of last 42 commits)</li> -<li>⚖️ License: Custom License</li> -<li>🏷️ Latest Release: v1.0 (2008-08-24)</li> -</ul><br /> -<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> -<br /> -<a href='showcase/vs-sim/image-1.jpg'><img alt='vs-sim screenshot' title='vs-sim screenshot' src='showcase/vs-sim/image-1.jpg' /></a><br /> -<br /> -<span>VS-Sim is an open-source Java-based simulator designed to model and analyze distributed systems. Its primary purpose is to provide a virtual environment where users can create, configure, and observe the behavior of distributed algorithms and networked components without the need for physical hardware. This makes it a valuable tool for researchers, educators, and students who want to experiment with distributed system concepts, test fault tolerance mechanisms, or visualize communication protocols in a controlled and repeatable manner.</span><br /> -<br /> -<span>The simulator features a modular architecture, allowing users to define custom network topologies, node behaviors, and communication protocols. Key components include a graphical user interface for system configuration and visualization, an event-driven simulation engine to manage the timing and sequencing of distributed events, and extensible APIs for integrating new algorithms or system models. By abstracting the complexities of real-world distributed environments, VS-Sim enables rapid prototyping and debugging, making it an effective platform for both teaching and research in distributed computing.</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/vs-sim'>View on Codeberg</a><br /> -<a class='textlink' href='https://github.com/snonux/vs-sim'>View on GitHub</a><br /> -<br /> -<span>---</span><br /> -<br /> <h3 style='display: inline' id='hsbot'>hsbot</h3><br /> <br /> <ul> @@ -1459,7 +1437,7 @@ <li>📊 Commits: 80</li> <li>📈 Lines of Code: 601</li> <li>📅 Development Period: 2009-11-22 to 2011-10-17</li> -<li>🔥 Recent Activity: 5534.2 days (avg. age of last 42 commits)</li> +<li>🔥 Recent Activity: 5542.2 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -1474,16 +1452,39 @@ <br /> <span>---</span><br /> <br /> +<h3 style='display: inline' id='vs-sim'>vs-sim</h3><br /> +<br /> +<ul> +<li>📚 Documentation: Markdown (100.0%)</li> +<li>📊 Commits: 411</li> +<li>📈 Lines of Code: 0</li> +<li>📄 Lines of Documentation: 7</li> +<li>📅 Development Period: 2008-05-15 to 2015-05-23</li> +<li>🔥 Recent Activity: 5903.1 days (avg. age of last 42 commits)</li> +<li>⚖️ License: No license found</li> +<li>🏷️ Latest Release: v1.0 (2008-08-24)</li> +</ul><br /> +<span>⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.</span><br /> +<br /> +<span>VS-Sim is an open-source Java-based simulator designed to model and analyze distributed systems. Its primary purpose is to provide a virtual environment where users can create, configure, and observe the behavior of distributed algorithms and networked components without the need for physical hardware. This makes it a valuable tool for researchers, educators, and students who want to experiment with distributed system concepts, test fault tolerance mechanisms, or visualize communication protocols in a controlled and repeatable manner.</span><br /> +<br /> +<span>The simulator features a modular architecture, allowing users to define custom network topologies, node behaviors, and communication protocols. Key components include a graphical user interface for system configuration and visualization, an event-driven simulation engine to manage the timing and sequencing of distributed events, and extensible APIs for integrating new algorithms or system models. By abstracting the complexities of real-world distributed environments, VS-Sim enables rapid prototyping and debugging, making it an effective platform for both teaching and research in distributed computing.</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/vs-sim'>View on Codeberg</a><br /> +<a class='textlink' href='https://github.com/snonux/vs-sim'>View on GitHub</a><br /> +<br /> +<span>---</span><br /> +<br /> <h3 style='display: inline' id='fype'>fype</h3><br /> <br /> <ul> -<li>💻 Languages: C (71.2%), C/C++ (20.7%), HTML (6.6%), Make (1.5%)</li> -<li>📚 Documentation: Text (60.3%), LaTeX (39.7%)</li> +<li>💻 Languages: C (71.3%), C/C++ (20.6%), HTML (6.6%), Make (1.5%)</li> +<li>📚 Documentation: Text (60.2%), LaTeX (39.8%)</li> <li>📊 Commits: 99</li> -<li>📈 Lines of Code: 8954</li> -<li>📄 Lines of Documentation: 1432</li> -<li>📅 Development Period: 2008-05-15 to 2014-06-30</li> -<li>🔥 Recent Activity: 5920.8 days (avg. age of last 42 commits)</li> +<li>📈 Lines of Code: 8906</li> +<li>📄 Lines of Documentation: 1431</li> +<li>📅 Development Period: 2008-05-15 to 2021-04-29</li> +<li>🔥 Recent Activity: 5949.0 days (avg. age of last 42 commits)</li> <li>⚖️ License: Custom License</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> diff --git a/about/showcase/debroid/image-1.png b/about/showcase/debroid/image-1.png index 308f8436..d304c0cd 100644 --- a/about/showcase/debroid/image-1.png +++ b/about/showcase/debroid/image-1.png @@ -12,7 +12,7 @@ data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" - data-css-features="one_click_merge_conflict" + > @@ -32,7 +32,7 @@ <link rel="preload" href="https://github.githubassets.com/assets/mona-sans-14595085164a.woff2" as="font" type="font/woff2" crossorigin> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-6215e264aa81.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-0d1726fbc5ce.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-be3560533a2e.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-0f500fc95568.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-6215e264aa81.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-0d1726fbc5ce.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-295e85c7acf3.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-6f7fd702e376.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-5810b6198753.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-9be09d7c543a.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-be3560533a2e.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-0f500fc95568.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-b93c131e97d5.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-562d56be7ab1.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-297cb06a83c5.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-9ba270e719b9.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-64c3ca7e9c26.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-89581edef127.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-44e67b0cd5d5.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-b51c2fae25e8.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-cb035ed575b8.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-99e9b1169976.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-44e67b0cd5d5.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-b51c2fae25e8.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-dadcba82130c.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-cdc36145225e.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-0ca195e3b5f3.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-f9fb5556a83f.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-cb035ed575b8.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-99e9b1169976.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-9541c4141757.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-bc604fc65912.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-384776200fd7.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-489c70dedd0a.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-1545a2e9e540.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-4c1792a987c3.css" /> <style type="text/css"> :root { @@ -45,44 +45,44 @@ </style> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-15839d47b75d.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-f96b923db733.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-48a457f3b81b.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-4badbb48d792.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-4d11e88b2383.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-73fd10e24e0c.css" /> - <script type="application/json" id="client-env">{"locale":"en","featureFlags":["alternate_user_config_repo","api_insights_show_missing_data_banner","attestations_filtering","attestations_sorting","billing_fixed_amount_metered_configured_discounts","billing_use_current_discounts_list_dialog_v2","client_version_header","codespaces_prebuild_region_target_update","contact_sales_locale_utm_medium","contentful_lp_enterprise","contentful_lp_footnotes","copilot_agent_cli_public_preview","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_file_reference","copilot_api_agentic_issue_marshal_yaml","copilot_api_draft_issue_code_search","copilot_api_github_draft_update_issue_skill","copilot_bing_search_use_azure_ai_agent_service","copilot_bing_search_use_grounding_ui","copilot_chat_attach_multiple_images","copilot_chat_file_redirect","copilot_chat_multi_file_picker_attachment","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_skip_thread_create","copilot_coding_agent_diff_stats","copilot_coding_agent_ga","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_deprecation_notice","copilot_features_raycast_logo","copilot_file_block_ref_matching","copilot_free_to_paid_telem","copilot_ftp_hyperspace_upgrade_prompt","copilot_ftp_settings_upgrade","copilot_ftp_upgrade_to_pro_from_models","copilot_ftp_your_copilot_settings","copilot_generate_commit_message_regenerate","copilot_global_overlay_v2","copilot_immersive_agent_branch_selection","copilot_immersive_planning_agent_aggregate_task","copilot_immersive_structured_model_picker","copilot_no_floating_button","copilot_read_shared_conversation","copilot_show_copilot_sub_issues_button_on_issues_page","copilot_spaces_as_attachments","copilot_spaces_ga","copilot_spark_allow_empty_commit","copilot_spark_loading_webgl","copilot_spark_progressive_error_handling","copilot_spark_read_iteration_history_from_git_v2","copilot_spark_single_user_iteration","copilot_spark_use_billing_headers","copilot_spark_write_iteration_history_to_git","copilot_stable_conversation_view","copilot_workbench_agent_seed_tool","copilot_workbench_cache","copilot_workbench_connection_reload_banner","copilot_workbench_preview_analytics","copilot_workbench_ratelimit_fallback","copilot_workbench_refresh_on_wsod","copilot_workbench_synthetic_generation","dashboard_public_preview","direct_to_salesforce","dotcom_chat_client_side_skills","failbot_report_error_react_apps_on_page","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","global_search_multi_orgs","hpc_improve_dom_insertion_observer","inp_reduced_threshold","insert_before_patch","issue_fields_report_usage","issues_copilot_cross_repo_assign","issues_copilot_repo_search_in_org","issues_react_blur_item_picker_on_close","issues_react_bots_timeline_pagination","issues_react_prohibit_title_fallback","issues_react_remove_placeholders","issues_sticky_sidebar","lifecycle_label_name_updates","link_contact_sales_swp_marketo","marketing_pages_search_explore_provider","marketplace_async_recently_added","mcp_registry_install","memex_mwl_filter_field_delimiter","migrate_toasts_to_banners_web_notifications","new_traffic_page_banner","one_click_merge_conflict","override_pulse_legacy_url","pinned_issue_fields","primer_react_segmented_control_tooltip","primer_react_unified_portal_root","record_sso_banner_metrics","releases_update_ref_selector","remove_child_patch","report_hydro_web_vitals","repos_insights_remove_new_url","sample_network_conn_type","scheduled_reminders_updated_limits","site_homepage_collaborate_video","site_homepage_contentful","site_msbuild_webgl_hero","spark_commit_on_default_branch","spark_show_data_access_on_publish","spark_sync_repository_after_iteration","viewscreen_sandbox","webp_support","workbench_default_sonnet4","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"}</script> + <script type="application/json" id="client-env">{"locale":"en","featureFlags":["alternate_user_config_repo","api_insights_show_missing_data_banner","attestations_filtering","attestations_sorting","billing_unfiltered_discounts","client_version_header","codespaces_prebuild_region_target_update","contact_sales_locale_utm_medium","contentful_lp_enterprise","contentful_lp_footnotes","copilot_agent_cli_public_preview","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_api_agentic_issue_marshal_yaml","copilot_api_github_draft_update_issue_skill","copilot_bing_search_use_azure_ai_agent_service","copilot_bing_search_use_grounding_ui","copilot_chat_attach_multiple_images","copilot_chat_file_redirect","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_skip_thread_create","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_deprecation_notice","copilot_features_raycast_logo","copilot_file_block_ref_matching","copilot_free_to_paid_telem","copilot_ftp_hyperspace_upgrade_prompt","copilot_ftp_settings_upgrade","copilot_ftp_upgrade_to_pro_from_models","copilot_ftp_your_copilot_settings","copilot_immersive_planning_agent_aggregate_task","copilot_immersive_planning_agent_questions_form","copilot_immersive_structured_model_picker","copilot_no_floating_button","copilot_read_shared_conversation","copilot_show_copilot_sub_issues_button_on_issues_page","copilot_spaces_as_attachments","copilot_spaces_ga","copilot_spark_loading_webgl","copilot_spark_progressive_error_handling","copilot_spark_read_iteration_history_from_git_v2","copilot_spark_single_user_iteration","copilot_spark_use_billing_headers","copilot_spark_write_iteration_history_to_git","copilot_stable_conversation_view","copilot_workbench_agent_seed_tool","copilot_workbench_cache","copilot_workbench_connection_reload_banner","copilot_workbench_preview_analytics","copilot_workbench_refresh_on_wsod","copilot_workbench_use_single_prompt","direct_to_salesforce","dotcom_chat_client_side_skills","failbot_report_error_react_apps_on_page","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","global_search_multi_orgs","hpc_improve_dom_insertion_observer","inp_reduced_threshold","insert_before_patch","issue_fields_report_usage","issues_copilot_cross_repo_assign","issues_react_blur_item_picker_on_close","issues_react_bots_timeline_pagination","issues_react_prohibit_title_fallback","issues_react_remove_placeholders","issues_sticky_sidebar","item_picker_milestone_tsq_migration","kb_convert_to_space","lifecycle_label_name_updates","link_contact_sales_swp_marketo","marketing_pages_search_explore_provider","mcp_registry_install","memex_mwl_filter_field_delimiter","migrate_toasts_to_banners_web_notifications","new_traffic_page_banner","override_pulse_legacy_url","pinned_issue_fields","primer_react_segmented_control_tooltip","primer_react_unified_portal_root","record_sso_banner_metrics","ref_selector_create_tag_dialog","releases_update_ref_selector","remove_child_patch","repos_insights_remove_new_url","sample_network_conn_type","scheduled_reminders_updated_limits","site_homepage_collaborate_video","site_homepage_contentful","site_msbuild_webgl_hero","spark_commit_on_default_branch","spark_force_push_after_checkout","spark_show_data_access_on_publish","spark_sync_repository_after_iteration","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-f3788027bd8d.js"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-13b583fda9e3.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-94e8453f9910.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-468bf7cab607.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_stacktrace-parser_dist_stack-trace-parser_esm_js-node_modules_github_bro-2f4e04-280c10ec004d.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-c8eeba-690858154b11.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-e36acb721009.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-7e8c9c5d642d.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-7e4d99c9171d.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/environment-b4e74adb6411.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-3eee64e5ddf0.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-9ab93471824e.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-c98257dc79a7.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-0d7d60-55f9488be32e.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-0d7d60-bc926dd5105c.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-754f5b5e9e7e.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-665e70-a5590c456d33.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-665e70-ac788066c220.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-d41270eb61be.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-777ce2-337f60509a95.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-36a69695b2e8.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-287ce0d23224.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-4e90f1d1076c.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-06c8637a6071.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-c1896e-8b29325c0a25.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-777ce2-9ec8c103bf42.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-9e1d42c09c62.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-e6aa303c3a87.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-f11c694928ba.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-9012bef51135.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-c1896e-ba47f43192a8.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-9ba0881c72fb.js" defer="defer"></script> <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-8eb9b2209bcd.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-cd5d89ebdb50.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-d3ee0b-f991143c90e5.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/packages_document-metadata_document-metadata_ts-packages_failbot_failbot_ts-b8e9eefcce78.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/packages_updatable-content_updatable-content_ts-a743e72edcf2.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_details-6493f1-b7112815a1fc.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_throttled-input_ts-047775-f7905105dea8.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-6bc7a8849328.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-714d3586a8e0.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-ef6d0f-90a0269c4bc0.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-f5c28dea1388.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hotkey_dist_index_js-node_modules_github_hydro-analytics-client_d-dd3ec8-1f3d5f90de2b.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-31b9f3-e00a737a5ea6.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/packages_document-metadata_document-metadata_ts-packages_failbot_failbot_ts-06156f7d8d1a.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/packages_updatable-content_updatable-content_ts-38f5e2f7c2a7.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_details-6493f1-12a3c58321de.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_throttled-input_ts-047775-cfe8770908d1.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-4b5e481df5f9.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-2350a5db3477.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-ef6d0f-a79564979cd1.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-d89a4ddd4532.js" defer="defer"></script> <title>Page not found · GitHub · GitHub</title> @@ -92,13 +92,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:9a4e849a-17e0-20b4-ef2c-298a636e6762"> + <meta name="fetch-nonce" content="v2:2bc7b47c-1611-3b39-d80f-d8157b2d0e50"> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> - <meta name="request-id" content="C1F6:353F20:2325FE4:1B605B2:68E42D38" data-pjax-transient="true"/><meta name="html-safe-nonce" content="976139eba9886557276e38a582abba84ee2830e59fa8763d29ad75dd067e059c" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMUY2OjM1M0YyMDoyMzI1RkU0OjFCNjA1QjI6NjhFNDJEMzgiLCJ2aXNpdG9yX2lkIjoiMzYyMzYxMTg1NDM5MTM1NjcyOCIsInJlZ2lvbl9lZGdlIjoiZnJhIiwicmVnaW9uX3JlbmRlciI6ImZyYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="14ccda07d8c3ce507015daab02882cc0b55489ff29ff93d5facbee824c5b7c35" data-pjax-transient="true"/> + <meta name="request-id" content="A39E:27D01:77EECE0:625A5EA:68EEA835" data-pjax-transient="true"/><meta name="html-safe-nonce" content="2cf7df57abec3dd4f23a6ff4b8a9c7db28fb9cb01273a19ec755b3f6f800c4e3" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMzlFOjI3RDAxOjc3RUVDRTA6NjI1QTVFQTo2OEVFQTgzNSIsInZpc2l0b3JfaWQiOiIyNzcyNTU0NjM1NzYxNTkyMzczIiwicmVnaW9uX2VkZ2UiOiJmcmEiLCJyZWdpb25fcmVuZGVyIjoiZnJhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="e3ef1f031760125ed1818a4c81233a221340ecd567f511739f92ad6c6ca3e9ad" data-pjax-transient="true"/> @@ -174,10 +174,10 @@ <meta name="expected-hostname" content="github.com"> - <meta http-equiv="x-pjax-version" content="db875a43d2abc8137f557bcb076467286645f43456884f21824d9e9f0b076f80" data-turbo-track="reload"> + <meta http-equiv="x-pjax-version" content="6019a75e790d549fa8d98e95ed64e506411ffadfe55b2403e2c720f5ed1e783d" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="c922ef32c4ab94f8b870c62883f3e41755ec705db76ec4efb0d343458f1e28c7" data-turbo-track="reload"> - <meta http-equiv="x-pjax-css-version" content="e41f5e9938c1f58f3f3a63eefa43c32feab3ad64f1c0ef4a9e1a60685fa11e6e" data-turbo-track="reload"> - <meta http-equiv="x-pjax-js-version" content="8296811cc40a020b2cd05b959f73a8e08056c3b52e18dc737a7c282554e7e62e" data-turbo-track="reload"> + <meta http-equiv="x-pjax-css-version" content="5628891e8d823be718bdb08de36c05339aea96fab18ddf649db4944c6ab6681e" data-turbo-track="reload"> + <meta http-equiv="x-pjax-js-version" content="6b8db999cbe255006842744964647f85c6d4000d24e2a40d16987a8e4ff76983" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> @@ -201,7 +201,7 @@ <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> - <meta name="release" content="474721f3830cf342fd5c8f143f4621614d6dc58b"> + <meta name="release" content="82aba53c6e4e750f636f0d9b7d00e698a9f9bfc5"> <meta name="ui-target" content="full"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> @@ -229,7 +229,7 @@ <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.2ceb2571848317ce36f7.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.16b9cb1922cda72e3023.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.2de9c7d6456a311fce49.module.css" /> <react-partial @@ -253,8 +253,8 @@ <script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_gsap_index_js-23c9606618ce.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-04dd9f3c4754.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-ac148cb2a2f3.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-dc050877d1bf.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-917229b8a853.js" defer="defer"></script> <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> <h2 class="sr-only">Navigation Menu</h2> @@ -294,13 +294,13 @@ </a> <div class="AppHeader-appearanceSettings"> <react-partial-anchor> - <button data-target="react-partial-anchor.anchor" id="icon-button-11cff56b-907c-4fbd-a6ec-e78f7498c097" aria-labelledby="tooltip-4cf22d00-955c-4b80-aff4-af5505dd3538" 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-36268b1d-4ccc-46e2-a153-358cdc2b3dd2" aria-labelledby="tooltip-d4e4437e-f565-4425-b3c0-2d8f9efc4c0a" 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-4cf22d00-955c-4b80-aff4-af5505dd3538" for="icon-button-11cff56b-907c-4fbd-a6ec-e78f7498c097" 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-d4e4437e-f565-4425-b3c0-2d8f9efc4c0a" for="icon-button-36268b1d-4ccc-46e2-a153-358cdc2b3dd2" 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.2ceb2571848317ce36f7.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.16b9cb1922cda72e3023.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.6c63a6de228d6520804d.module.css" /> <react-partial @@ -1060,7 +1060,7 @@ -<qbsearch-input class="search-input" data-scope="owner:buetow" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="WczvdB2ca-G1npgYvqjhCAJDrbJWGUbk4hXWW6cBeDLGxpJ5qzmRAvH9We_MwSX7ARpoWdYx4LTRvG9JI-h-pw" 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="gWDJw0gLAHeOBGDOgPi6Q-m6z9xwuKi-8H-s61cdsSoS_63kA9hkmrc7uzpfC9nTugvsV-QrhHmRhQkJG1pBfg" 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" @@ -1124,7 +1124,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-e3c69f94-281b-4dc2-bbe6-c9a2a0e7ecd4" 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-bf2798c8-6fc4-4e33-9a3f-df2adbfee684" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown @@ -1362,7 +1362,7 @@ tabindex="-1" ></ul> </div> - <div class="FormControl-inlineValidation" id="validation-e3c69f94-281b-4dc2-bbe6-c9a2a0e7ecd4" hidden="hidden"> + <div class="FormControl-inlineValidation" id="validation-bf2798c8-6fc4-4e33-9a3f-df2adbfee684" 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> @@ -1403,7 +1403,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="2hx5nqbJYyWfPXza9aESmJmG+D29pyGJeAXjaeATYVY5uAEjITm4PEDqKTR86O38qJEZo/zgEfLYFajJDoHuNg==" /> + <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="pFa8h6WFGqqunmS1YvRR2aPJ3k973HtC/wm0FU95kMBqraomyk4EUAHh2VY1oYLrPv6s5Fy9ZHMJw9soxLxdsA==" /> <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"> @@ -1441,7 +1441,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="DRR6pOEtJtE4FQ6KemzbdaMqyYKiqzFVw0zvBRvuif6aZyyxAZPGMcTH2fJWUaikLT3uWxIO7L8oj1/6dyAfZQ==" /> + <!-- '"` --><!-- </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="/VWfGLYj0bR8ijL3GKtsRnydJsUFc6cN7H0wZecwYbwnVseuvW/ZNMtF/Y9xY9iNKJJF+JzaiPnTCQiTtV2mzg==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> @@ -1459,7 +1459,7 @@ placeholder="github-ruby" required maxlength="50"> - <input type="hidden" data-csrf="true" value="MsfCSWbiUIzsKYnu43zZFpe2n9uysWJkGqLiCY4KxN79IUXnOuIdGw9cb4fyQScrBh7LDCE0d859DQ5+nINdew==" /> + <input type="hidden" data-csrf="true" value="LXvwNZQBIRU7pVzEhz53/S1ldBB9m87ukt9PQV8lgfsKbJW6XACfe6MKsbHKRZtx4k2P6sSnTL5ECLPAcjjZog==" /> </auto-check> </div> @@ -1514,7 +1514,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="Mku89EnQmK2224UVaWFgBmjxtlp2O7lqPYMkk6+CPqVp3FA2/V7X1m4rpQ2nKuKLFSjT1B7YI5I+18W1Y+o1JA==" /> <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="NTZlb5ezk29N1DfEeD/FS39aitbi80oN+ju0AAmTUkYpUPYQadoR2mfnplnpGpZppJKq0EYS2mkhtYKvtT6m1A==" /> <input type="hidden" name="add_account" id="add_account" autocomplete="off" class="form-control" /> <label for="login_field"> Username or email address @@ -1536,9 +1536,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_a240" hidden="hidden" /> -<input class="form-control" type="hidden" name="timestamp" value="1759784248856" /> -<input class="form-control" type="hidden" name="timestamp_secret" value="b285891a6dd69d9eb3016937a518fb9c6caa5b9ae10674daaacc4e34995d80f8" /> +<input class="form-control" type="text" name="required_field_d322" hidden="hidden" /> +<input class="form-control" type="hidden" name="timestamp" value="1760471093804" /> +<input class="form-control" type="hidden" name="timestamp_secret" value="b7858bfe5ab44db2968600f947a5c2ac927c1d3dcbae34af139817e9eb3a546d" /> <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" /> @@ -1565,13 +1565,13 @@ <div class="AppHeader-appearanceSettings"> <react-partial-anchor> - <button data-target="react-partial-anchor.anchor" id="icon-button-1e984cd2-7ff0-4dd3-83b2-a65c797846cf" aria-labelledby="tooltip-b5d58249-6656-4102-b4d3-83cc0ea1f544" 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-776c39f6-25be-4343-b335-281f15fdc395" aria-labelledby="tooltip-321ceaae-d761-4424-a2f6-c190d6665321" 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-b5d58249-6656-4102-b4d3-83cc0ea1f544" for="icon-button-1e984cd2-7ff0-4dd3-83b2-a65c797846cf" 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-321ceaae-d761-4424-a2f6-c190d6665321" for="icon-button-776c39f6-25be-4343-b335-281f15fdc395" 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.2ceb2571848317ce36f7.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.16b9cb1922cda72e3023.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.6c63a6de228d6520804d.module.css" /> <react-partial @@ -1606,10 +1606,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-fb500b88-41be-47a2-ab65-9766493f827f" aria-labelledby="tooltip-0e9d0e71-a6ac-4de4-a4f4-d48af1c33dd6" 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-7b75d09f-96ac-419e-9fc4-1980d3e10f7f" aria-labelledby="tooltip-2acd6ee6-c9f3-43c9-8fb7-accc1e809b51" 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-0e9d0e71-a6ac-4de4-a4f4-d48af1c33dd6" for="icon-button-fb500b88-41be-47a2-ab65-9766493f827f" 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-2acd6ee6-c9f3-43c9-8fb7-accc1e809b51" for="icon-button-7b75d09f-96ac-419e-9fc4-1980d3e10f7f" 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/DRAFT-helix-with-languagetool.html b/gemfeed/DRAFT-helix-with-languagetool.html new file mode 100644 index 00000000..9bb906eb --- /dev/null +++ b/gemfeed/DRAFT-helix-with-languagetool.html @@ -0,0 +1,30 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<title>Helix with LanguageTool</title> +<link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> +<link rel="stylesheet" href="../style.css" /> +<link rel="stylesheet" href="style-override.css" /> +</head> +<body> +<p class="header"> +<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/DRAFT-helix-with-languagetool.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/DRAFT-helix-with-languagetool.gmi">Gemini</a> +</p> +<h1 style='display: inline' id='helix-with-languagetool'>Helix with LanguageTool</h1><br /> +<br /> +<span>Follow install instructions at: </span><br /> +<br /> +<a class='textlink' href='https://github.com/languagetool-org/languagetool'>https://github.com/languagetool-org/languagetool</a><br /> +<a class='textlink' href='https://github.com/valentjn/ltex-ls'>https://github.com/valentjn/ltex-ls</a><br /> +<br /> +<br /> +<p class="footer"> + Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | + served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | + <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> + <br /> + Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> +</p> +</body> +</html> diff --git a/gemfeed/DRAFT-using-supernote-nomad-offline.html b/gemfeed/DRAFT-using-supernote-nomad-offline.html new file mode 100644 index 00000000..5b505138 --- /dev/null +++ b/gemfeed/DRAFT-using-supernote-nomad-offline.html @@ -0,0 +1,162 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<title>Using Supernote Nomad offline</title> +<link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> +<link rel="stylesheet" href="../style.css" /> +<link rel="stylesheet" href="style-override.css" /> +</head> +<body> +<p class="header"> +<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/DRAFT-using-supernote-nomad-offline.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/DRAFT-using-supernote-nomad-offline.gmi">Gemini</a> +</p> +<h1 style='display: inline' id='using-supernote-nomad-offline'>Using Supernote Nomad offline</h1><br /> +<br /> +<span>I am a note taker. For years, I've been searching for a good digital device that could complement my paper notebooks. I've finally found it in the Supernote Nomad. I use it completely offline without cloud-sync, and in this post, I'll explain why this is a benefit.</span><br /> +<br /> +<br /> +<a class='textlink' href='https://supernote.com/pages/supernote-nomad'>Supernote Nomad</a><br /> +<br /> +<span>I initially bought it because Retta stated on their website that an open-source Linux firmware would be released soon. However, after over a year, there still hasn't been any progress (hopefully there will be someday). So I looked into alternative ways to use this device.</span><br /> +<br /> +<pre> +⣿⣿⣿⣿⣿⣿⡿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⣿⣿⣿⣿⣏⠀⢶⣆⡘⠉⠙⠛⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⣿⣿⣿⣿⠋⣤⣄⠘⠃⢠⣀⣀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠿⢿⣿⣿⣿⣿⣿⣿ +⣿⣿⣿⣿⡿⠀⡉⠻⡟⠀⠈⠉⠙⠛⠷⠶⣦⣤⣄⣀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿ +⣿⣿⣿⣿⡄⠸⢿⣤⠀⢠⣤⣀⡀⠀⠀⠀⠀⠀⠉⠙⠛⠻⠶⠀⢰⣿⣿⠻⣿⣿ +⣿⣿⣿⣿⠠⣶⣆⡉⠀⠀⠈⠉⠙⠛⠳⠶⠦⣤⣤⣄⣀⡀⢀⣴⠟⠋⠙⢷⣬⣿ +⣿⣿⣿⠏⣠⡄⠹⠁⠰⢶⣤⣤⣀⡀⠀⠀⠀⠀⠀⠉⢉⣿⠟⠁⠀⠀⣠⣾⣿⣿ +⣿⣿⡿⠂⠙⠻⡆⠀⠀⠀⠀⠈⠉⠛⠛⠷⠶⣦⣤⣴⠟⠁⠀⠀⣠⣾⣿⣿⣿⣿ +⣿⣿⡇⠸⣿⣄⠀⠰⠶⢶⣤⣄⣀⡀⠀⠀⠀⣴⣟⠁⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿ +⣿⡟⠀⣶⣀⠃⠀⠀⠀⠀⠀⠈⠉⠙⠛⠓⢾⡟⢙⣷⣤⢾⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⠋⣀⡉⠻⠀⠘⠛⠻⠶⢶⣤⣤⣀⡀⢠⠿⠟⠛⠉⠁⣸⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⡀⠛⠳⠆⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠷⠶⣦⠄⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⣿⣿⣶⣦⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣤⣤⣀⣀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ +⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ +</pre> +<br /> +<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br /> +<br /> +<ul> +<li><a href='#using-supernote-nomad-offline'>Using Supernote Nomad offline</a></li> +<li>⇢ <a href='#the-joy-of-being-offline'>The Joy of Being Offline</a></li> +<li>⇢ ⇢ <a href='#battery-for-days'>Battery for Days</a></li> +<li>⇢ ⇢ <a href='#your-data-is-your-data'>Your Data is Your Data</a></li> +<li>⇢ <a href='#my-offline-workflow'>My Offline Workflow</a></li> +<li>⇢ ⇢ <a href='#getting-notes-to-my-laptop'>Getting Notes to my Laptop</a></li> +<li>⇢ ⇢ <a href='#converting-notes-to-pdf'>Converting Notes to PDF</a></li> +<li>⇢ ⇢ <a href='#syncing-to-my-phone'>Syncing to my Phone</a></li> +<li>⇢ ⇢ <a href='#firmware-updates'>Firmware updates</a></li> +<li>⇢ <a href='#the-writing-experience'>The Writing Experience</a></li> +<li>⇢ <a href='#conclusion'>Conclusion</a></li> +</ul><br /> +<h2 style='display: inline' id='the-joy-of-being-offline'>The Joy of Being Offline</h2><br /> +<br /> +<span>In a world of constant connectivity, the Supernote Nomad offers a sanctuary. By keeping it offline, I can focus on my thoughts and notes without compromise of my privacy.</span><br /> +<br /> +<h3 style='display: inline' id='battery-for-days'>Battery for Days</h3><br /> +<br /> +<span>One of the most significant advantages of keeping Wi-Fi off is the battery life. The Supernote Nomad can last a week, on a single charge when it's not constantly searching for a network. This makes it a good companion for long trips or intense note-taking sessions.</span><br /> +<br /> +<h3 style='display: inline' id='your-data-is-your-data'>Your Data is Your Data</h3><br /> +<br /> +<span>Privacy was my main concern. By not syncing my notes to Retta's cloud service, I retain full ownership and control over my data. There's no risk of my personal thoughts and ideas being accessed or mined by third parties. It's a simple and effective way to ensure my privacy.</span><br /> +<br /> +<a href='./using-supernote-nomad-offline/nomad2.jpg'><img alt='A picture of the Supernote Nomad' title='A picture of the Supernote Nomad' src='./using-supernote-nomad-offline/nomad2.jpg' /></a><br /> +<br /> +<h2 style='display: inline' id='my-offline-workflow'>My Offline Workflow</h2><br /> +<br /> +<span>My workflow is simple and efficient, relying on a direct USB connection to my Linux laptop.</span><br /> +<br /> +<h3 style='display: inline' id='getting-notes-to-my-laptop'>Getting Notes to my Laptop</h3><br /> +<br /> +<span>I connect my Supernote Nomad to my Linux laptop via a USB-C cable. The device is automatically recognized as a storage device, and I can directly access the <span class='inlinecode'>Note</span> folder, which contains all my notes as <span class='inlinecode'>.note</span> files. I then copy these files to a dedicated archive folder on my laptop.</span><br /> +<br /> +<h3 style='display: inline' id='converting-notes-to-pdf'>Converting Notes to PDF</h3><br /> +<br /> +<span>To make my notes accessible and shareable, I convert them from the proprietary <span class='inlinecode'>.note</span> format to PDF. For this, I use a fantastic open-source tool called <span class='inlinecode'>supernote-tool</span>. It's not an official tool from Ratta (the manufacturer of the Supernote), but it works flawlessly.</span><br /> +<br /> +<a class='textlink' href='https://github.com/jya-dev/supernote-tool'>https://github.com/jya-dev/supernote-tool</a><br /> +<br /> +<span>I've created a small shell script to automate the conversion process. This script, <span class='inlinecode'>convert-notes-to-pdfs.sh</span>, resides in my notes archive folder:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre><i><font color="silver">#!/usr/bin/env bash</font></i> + +convert () { + find . -name \*.note \ + | <b><u><font color="#000000">while</font></u></b> <b><u><font color="#000000">read</font></u></b> -r note; <b><u><font color="#000000">do</font></u></b> + echo supernote-tool convert -a -t pdf <font color="#808080">"$note"</font> <font color="#808080">"${note/.note/.pdf}"</font> + supernote-tool convert -a -t pdf <font color="#808080">"$note"</font> <font color="#808080">"${note/.note/.pdf}.tmp"</font> + mv <font color="#808080">"${note/.note/.pdf}.tmp"</font> <font color="#808080">"${note/.note/.pdf}"</font> + du -hs <font color="#808080">"$note"</font> <font color="#808080">"${note/.note/.pdf}"</font> + echo + <b><u><font color="#000000">done</font></u></b> +} + +<i><font color="silver"># Mage the PDFs available on my Phone as well</font></i> +copy () { + <b><u><font color="#000000">if</font></u></b> [ ! -d ~/Documents/Supernote ]; <b><u><font color="#000000">then</font></u></b> + echo <font color="#808080">"Directory ~/Documents/Supernote does not exist, skipping"</font> + <b><u><font color="#000000">exit</font></u></b> <font color="#000000">1</font> + <b><u><font color="#000000">fi</font></u></b> + + rsync -delete -av --include=<font color="#808080">'*/'</font> --include=<font color="#808080">'*.pdf'</font> --exclude=<font color="#808080">'*'</font> . ~/Documents/Supernote/ + echo This was copied from $(pwd) so dont edit manually >~/Documents/Supernote/README.txt +} + +convert +copy +</pre> +<br /> +<span>This script does two things:</span><br /> +<br /> +<ul> +<li>It finds all <span class='inlinecode'>.note</span> files in the current directory and converts them to PDF using <span class='inlinecode'>supernote-tool</span>.</li> +<li>It copies the generated PDFs to my <span class='inlinecode'>~/Documents/Supernote</span> folder.</li> +</ul><br /> +<h3 style='display: inline' id='syncing-to-my-phone'>Syncing to my Phone</h3><br /> +<br /> +<span>The <span class='inlinecode'>~/Documents/Supernote</span> folder on my laptop is synchronized with my phone using Syncthing. This way, I have access to all my notes in PDF format on my phone, wherever I go, without relying on any cloud service.</span><br /> +<br /> +<a class='textlink' href='https://syncthing.net/'>https://syncthing.net/</a><br /> +<br /> +<h3 style='display: inline' id='firmware-updates'>Firmware updates</h3><br /> +<br /> +<span>One usually updates the software or firmware of the Supernote Nomad via Wi-Fi. However, it is also possible to update it completely offline. To install the firmware update, follow the steps below (the following instructions were copied from the Supernote website):</span><br /> +<br /> +<ul> +<li>Connect your Supernote to your PC with a USB-C cable. For macOS, an MTP software (e.g. OpenMTP or Android File Transfer) is required for your Supernote to show up on your Mac. </li> +<li>For Manta, Nomad, A5 X and A6 X devices, copy the firmware (DO NOT UNZIP) to the "Export" folder of Supernote; for A5 and A6 devices, copy the firmware (DO NOT UNZIP) to the root directory of Supernote.</li> +<li>Unplug the USB connection, tap “OK” on your Supernote to continue, and if no prompt pops up, please restart your device directly to proceed to update.</li> +</ul><br /> +<h2 style='display: inline' id='the-writing-experience'>The Writing Experience</h2><br /> +<br /> +<span>The writing feel of the Supernote Nomad is simply great. The combination of the screen's texture and the ceramic nib of the pen creates a feeling that is remarkably close to writing on real paper. The latency is almost non-existent, and the pressure sensitivity allows for a natural and expressive writing experience. It's great to write on, and it makes me want to take more notes.</span><br /> +<br /> +<a href='./using-supernote-nomad-offline/nomad1.jpg'><img alt='Another picture of the Supernote Nomad' title='Another picture of the Supernote Nomad' src='./using-supernote-nomad-offline/nomad1.jpg' /></a><br /> +<br /> +<h2 style='display: inline' id='conclusion'>Conclusion</h2><br /> +<br /> +<span>The Supernote Nomad has become an additional tool for me. By using it offline, I've created a distraction-free and private note-taking environment. The simple, manual workflow for transferring and converting notes gives me full control over my data, and the writing experience is second to none. If you're looking for a digital notebook that respects your privacy and helps you focus, I highly recommend giving the Supernote Nomad a try with an offline-first approach.</span><br /> +<br /> +<span>The Supernote didn't fully replace my traditional paper journals, though. Each of them has its own use case. However, that is outside the scope of this blog post.</span><br /> +<br /> +<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br /> +<br /> +<a class='textlink' href='../'>Back to the main site</a><br /> +<p class="footer"> + Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | + served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | + <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> + <br /> + Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> +</p> +</body> +</html> diff --git a/gemfeed/convert-notes-to-pdfs.sh b/gemfeed/convert-notes-to-pdfs.sh new file mode 100755 index 00000000..9b5a6708 --- /dev/null +++ b/gemfeed/convert-notes-to-pdfs.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +convert () { + find . -name \*.note \ + | while read -r note; do + echo supernote-tool convert -a -t pdf "$note" "${note/.note/.pdf}" + supernote-tool convert -a -t pdf "$note" "${note/.note/.pdf}.tmp" + mv "${note/.note/.pdf}.tmp" "${note/.note/.pdf}" + du -hs "$note" "${note/.note/.pdf}" + echo + done +} + +# Mage the PDFs available on my Phone as well +copy () { + if [ ! -d ~/Documents/Supernote ]; then + echo "Directory ~/Documents/Supernote does not exist, skipping" + exit 1 + fi + + rsync -delete -av --include='*/' --include='*.pdf' --exclude='*' . ~/Documents/Supernote/ + echo This was copied from $(pwd) so dont edit manually >~/Documents/Supernote/README.txt +} + +convert +copy diff --git a/gemfeed/using-supernote-nomad-offline/nomad1.jpg b/gemfeed/using-supernote-nomad-offline/nomad1.jpg Binary files differnew file mode 100644 index 00000000..901fa73b --- /dev/null +++ b/gemfeed/using-supernote-nomad-offline/nomad1.jpg diff --git a/gemfeed/using-supernote-nomad-offline/nomad2.jpg b/gemfeed/using-supernote-nomad-offline/nomad2.jpg Binary files differnew file mode 100644 index 00000000..896ee299 --- /dev/null +++ b/gemfeed/using-supernote-nomad-offline/nomad2.jpg @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='hello'>Hello!</h1><br /> <br /> -<span class='quote'>This site was generated at 2025-10-12T22:45:20+03:00 by <span class='inlinecode'>Gemtexter</span></span><br /> +<span class='quote'>This site was generated at 2025-10-17T20:27:09+03:00 by <span class='inlinecode'>Gemtexter</span></span><br /> <br /> <span>Welcome to the foo.zone!</span><br /> <br /> diff --git a/uptime-stats.html b/uptime-stats.html index 2ed4a014..faea51e3 100644 --- a/uptime-stats.html +++ b/uptime-stats.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='my-machine-uptime-stats'>My machine uptime stats</h1><br /> <br /> -<span class='quote'>This site was last updated at 2025-10-12T22:45:20+03:00</span><br /> +<span class='quote'>This site was last updated at 2025-10-17T20:27:09+03:00</span><br /> <br /> <span>The following stats were collected via <span class='inlinecode'>uptimed</span> on all of my personal computers over many years and the output was generated by <span class='inlinecode'>guprecords</span>, the global uptime records stats analyser of mine.</span><br /> <br /> @@ -35,8 +35,8 @@ | Pos | Host | Boots | Last Kernel | +-----+----------------+-------+-------------------------------+ | 1. | alphacentauri | 671 | FreeBSD 11.4-RELEASE-p7 | -| 2. | mars | 207 | Linux 3.2.0-4-amd64 | -| 3. | *earth | 207 | Linux 6.16.10-200.fc42.x86_64 | +| 2. | *earth | 208 | Linux 6.16.10-200.fc42.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 | @@ -46,8 +46,8 @@ | 10. | *f0 | 62 | FreeBSD 14.3-RELEASE | | 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 | +| 13. | *mega-m3-pro | 50 | Darwin 24.6.0 | +| 14. | mega15289 | 50 | Darwin 23.4.0 | | 15. | *fishfinger | 46 | OpenBSD 7.7 | | 16. | *t450 | 44 | FreeBSD 14.2-RELEASE | | 17. | *blowfish | 43 | OpenBSD 7.7 | @@ -67,7 +67,7 @@ +-----+----------------+-----------------------------+-----------------------------------+ | 1. | vulcan | 4 years, 5 months, 6 days | Linux 3.10.0-1160.81.1.el7.x86_64 | | 2. | *blowfish | 3 years, 10 months, 2 days | OpenBSD 7.7 | -| 3. | *earth | 3 years, 9 months, 29 days | Linux 6.16.10-200.fc42.x86_64 | +| 3. | *earth | 3 years, 10 months, 2 days | Linux 6.16.10-200.fc42.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 | @@ -78,7 +78,7 @@ | 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, 4 months, 29 days | Darwin 24.6.0 | +| 14. | *mega-m3-pro | 1 years, 5 months, 5 days | Darwin 24.6.0 | | 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, 5 days | Linux 6.9.9-200.fc40.x86_64 | @@ -98,7 +98,7 @@ +-----+----------------+-------+-----------------------------------+ | 1. | uranus | 340 | NetBSD 10.1 | | 2. | vulcan | 275 | Linux 3.10.0-1160.81.1.el7.x86_64 | -| 3. | *earth | 263 | Linux 6.16.10-200.fc42.x86_64 | +| 3. | *earth | 264 | Linux 6.16.10-200.fc42.x86_64 | | 4. | *blowfish | 243 | OpenBSD 7.7 | | 5. | sun | 238 | FreeBSD 10.3-RELEASE-p24 | | 6. | uugrn | 211 | FreeBSD 11.2-RELEASE-p4 | @@ -113,7 +113,7 @@ | 15. | *t450 | 122 | FreeBSD 14.2-RELEASE | | 16. | tauceti-f | 108 | Linux 3.2.0-3-amd64 | | 17. | tauceti-e | 96 | Linux 3.2.0-4-amd64 | -| 18. | *mega-m3-pro | 90 | Darwin 24.6.0 | +| 18. | *mega-m3-pro | 91 | Darwin 24.6.0 | | 19. | callisto | 86 | Linux 4.0.4-303.fc22.x86_64 | | 20. | mega8477 | 80 | Darwin 13.4.0 | +-----+----------------+-------+-----------------------------------+ @@ -163,7 +163,7 @@ | 3. | alphacentauri | 6 years, 9 months, 13 days | FreeBSD 11.4-RELEASE-p7 | | 4. | vulcan | 4 years, 5 months, 6 days | Linux 3.10.0-1160.81.1.el7.x86_64 | | 5. | makemake | 4 years, 4 months, 7 days | Linux 6.9.9-200.fc40.x86_64 | -| 6. | *earth | 4 years, 3 months, 19 days | Linux 6.16.10-200.fc42.x86_64 | +| 6. | *earth | 4 years, 3 months, 22 days | Linux 6.16.10-200.fc42.x86_64 | | 7. | *blowfish | 3 years, 10 months, 3 days | OpenBSD 7.7 | | 8. | sun | 3 years, 10 months, 2 days | FreeBSD 10.3-RELEASE-p24 | | 9. | uugrn | 3 years, 5 months, 5 days | FreeBSD 11.2-RELEASE-p4 | @@ -192,7 +192,7 @@ | 1. | FreeBSD 10... | 551 | | 2. | Linux 3... | 550 | | 3. | *FreeBSD 14... | 215 | -| 4. | *Linux 6... | 187 | +| 4. | *Linux 6... | 188 | | 5. | Linux 5... | 162 | | 6. | Linux 4... | 161 | | 7. | FreeBSD 11... | 153 | @@ -207,7 +207,7 @@ | 16. | Darwin 15... | 15 | | 17. | Darwin 22... | 12 | | 18. | Darwin 18... | 11 | -| 19. | OpenBSD 4... | 10 | +| 19. | FreeBSD 6... | 10 | | 20. | FreeBSD 7... | 10 | +-----+----------------+-------+ </pre> @@ -224,7 +224,7 @@ | 2. | *OpenBSD 7... | 7 years, 6 months, 29 days | | 3. | FreeBSD 10... | 5 years, 9 months, 9 days | | 4. | Linux 5... | 4 years, 10 months, 21 days | -| 5. | *Linux 6... | 2 years, 12 months, 26 days | +| 5. | *Linux 6... | 2 years, 12 months, 29 days | | 6. | Linux 4... | 2 years, 7 months, 22 days | | 7. | FreeBSD 11... | 2 years, 4 months, 28 days | | 8. | *FreeBSD 14... | 2 years, 3 months, 24 days | @@ -232,7 +232,7 @@ | 10. | Darwin 13... | 1 years, 3 months, 25 days | | 11. | FreeBSD 6... | 1 years, 3 months, 9 days | | 12. | Darwin 23... | 0 years, 11 months, 9 days | -| 13. | *Darwin 24... | 0 years, 8 months, 30 days | +| 13. | *Darwin 24... | 0 years, 9 months, 6 days | | 14. | OpenBSD 4... | 0 years, 8 months, 12 days | | 15. | Darwin 21... | 0 years, 8 months, 2 days | | 16. | Darwin 18... | 0 years, 7 months, 5 days | @@ -263,14 +263,14 @@ | 10. | Darwin 13... | 80 | | 11. | FreeBSD 6... | 75 | | 12. | Darwin 23... | 56 | -| 13. | *Darwin 24... | 46 | +| 13. | *Darwin 24... | 47 | | 14. | OpenBSD 4... | 39 | | 15. | Darwin 21... | 38 | | 16. | Darwin 18... | 32 | | 17. | Darwin 22... | 30 | | 18. | Darwin 15... | 29 | -| 19. | FreeBSD 13... | 25 | -| 20. | FreeBSD 5... | 25 | +| 19. | FreeBSD 5... | 25 | +| 20. | FreeBSD 13... | 25 | +-----+----------------+-------+ </pre> <br /> @@ -282,7 +282,7 @@ +-----+------------+-------+ | Pos | KernelName | Boots | +-----+------------+-------+ -| 1. | *Linux | 1082 | +| 1. | *Linux | 1083 | | 2. | *FreeBSD | 1080 | | 3. | *Darwin | 155 | | 4. | *OpenBSD | 109 | @@ -298,10 +298,10 @@ +-----+------------+-----------------------------+ | Pos | KernelName | Uptime | +-----+------------+-----------------------------+ -| 1. | *Linux | 28 years, 1 months, 18 days | +| 1. | *Linux | 28 years, 1 months, 21 days | | 2. | *FreeBSD | 12 years, 2 months, 24 days | | 3. | *OpenBSD | 8 years, 2 months, 7 days | -| 4. | *Darwin | 4 years, 12 months, 18 days | +| 4. | *Darwin | 4 years, 12 months, 24 days | | 5. | NetBSD | 0 years, 1 months, 1 days | +-----+------------+-----------------------------+ </pre> @@ -317,7 +317,7 @@ | 1. | *Linux | 1866 | | 2. | *FreeBSD | 862 | | 3. | *OpenBSD | 523 | -| 4. | *Darwin | 329 | +| 4. | *Darwin | 330 | | 5. | NetBSD | 0 | +-----+------------+-------+ </pre> |
