diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-29 09:39:25 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-29 09:39:25 +0300 |
| commit | 4d7d90638186ac71067232007607f6637d560a4d (patch) | |
| tree | 52d396a747a6b262732fc048b356ab423fd58c0e /about | |
| parent | 45e55728a42f5eea2209c315a4bd3f486f52f0f1 (diff) | |
Update content for md
Diffstat (limited to 'about')
| -rw-r--r-- | about/index.md | 5 | ||||
| -rw-r--r-- | about/podcasts.txt | 1 | ||||
| -rw-r--r-- | about/resources.md | 199 | ||||
| -rw-r--r-- | about/showcase.md | 383 | ||||
| -rw-r--r-- | about/showcase/debroid/image-1.png | 95 |
5 files changed, 346 insertions, 337 deletions
diff --git a/about/index.md b/about/index.md index 5dae312a..75660752 100644 --- a/about/index.md +++ b/about/index.md @@ -39,7 +39,10 @@ * Inhibitor Phase; Alastair Reynolds; Audiobook * A Fire Upon the Deep (german: Ein Feuer auf der Tiefe); Vernor Vinge; eBook -* Senior Engineer Mindset; Swizec Teller + +### Books on my wishlist + +* Senior Engineer Mindset; Swizec Teller; eBook ### Books I've read diff --git a/about/podcasts.txt b/about/podcasts.txt index 6d150936..29ade58f 100644 --- a/about/podcasts.txt +++ b/about/podcasts.txt @@ -12,3 +12,4 @@ * The ProdCast (Google SRE Podcast) * BSD Now [BSD] * Modern Mentor +* Wednesday Wisdom diff --git a/about/resources.md b/about/resources.md index 1f5ca198..18294e43 100644 --- a/about/resources.md +++ b/about/resources.md @@ -35,107 +35,107 @@ You won't find any links on this site because, over time, the links will break. In random order: -* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf -* Developing Games in Java; David Brackeen and others...; New Riders -* Concurrency in Go; Katherine Cox-Buday; O'Reilly -* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson -* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications -* Modern Perl; Chromatic ; Onyx Neon Press -* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers -* The Pragmatic Programmer; David Thomas; Addison-Wesley -* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press -* Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook -* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook +* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton * C++ Programming Language; Bjarne Stroustrup; -* Pro Puppet; James Turnbull, Jeffrey McCune; Apress +* DNS and BIND; Cricket Liu; O'Reilly +* Site Reliability Engineering; How Google runs production systems; O'Reilly +* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook +* Higher Order Perl; Mark Dominus; Morgan Kaufmann +* Funktionale Programmierung; Peter Pepper; Springer +* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson +* Developing Games in Java; David Brackeen and others...; New Riders * Raku Fundamentals; Moritz Lenz; Apress -* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton -* Java ist auch eine Insel; Christian Ullenboom; +* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible +* Terraform Cookbook; Mikael Krief; Packt Publishing * Effective Java; Joshua Bloch; Addison-Wesley Professional -* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly -* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly +* Perl New Features; Joshua McAdams, brian d foy; Perl School +* The Docker Book; James Turnbull; Kindle +* The Pragmatic Programmer; David Thomas; Addison-Wesley +* Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook * Raku Recipes; J.J. Merelo; Apress -* Terraform Cookbook; Mikael Krief; Packt Publishing -* Ultimate Go Notebook; Bill Kennedy +* 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications +* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional +* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly * The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible +* Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly +* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers +* 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 +* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications +* Data Science at the Command Line; Jeroen Janssens; O'Reilly +* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly +* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly +* Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly * Effective awk programming; Arnold Robbins; O'Reilly +* Concurrency in Go; Katherine Cox-Buday; O'Reilly +* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner +* Modern Perl; Chromatic ; Onyx Neon Press +* Java ist auch eine Insel; Christian Ullenboom; +* Leanring eBPF; Liz Rice; O'Reilly +* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers +* Polished Ruby Programming; Jeremy Evans; Packt Publishing * Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press * Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly -* Perl New Features; Joshua McAdams, brian d foy; Perl School +* Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press * Systemprogrammierung in Go; Frank Müller; dpunkt -* Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers -* Polished Ruby Programming; Jeremy Evans; Packt Publishing -* DNS and BIND; Cricket Liu; O'Reilly -* 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 -* Leanring eBPF; Liz Rice; O'Reilly -* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible -* 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly * Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt -* Funktionale Programmierung; Peter Pepper; Springer -* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly -* Higher Order Perl; Mark Dominus; Morgan Kaufmann -* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications -* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly -* Data Science at the Command Line; Jeroen Janssens; O'Reilly -* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional -* The Docker Book; James Turnbull; Kindle -* Site Reliability Engineering; How Google runs production systems; O'Reilly -* Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner +* Pro Puppet; James Turnbull, Jeffrey McCune; Apress +* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf +* Ultimate Go Notebook; Bill Kennedy * Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly ## Technical references I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order: +* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley +* The Linux Programming Interface; Michael Kerrisk; No Starch Press * Go: Design Patterns for Real-World Projects; Mat Ryer; Packt +* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly * Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly * Relayd and Httpd Mastery; Michael W Lucas -* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly -* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly -* The Linux Programming Interface; Michael Kerrisk; No Starch Press * Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley -* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley +* Implementing Service Level Objectives; Alex Hidalgo; O'Reilly ## Self-development and soft-skills books In random order: -* Deep Work; Cal Newport; Piatkus +* Ultralearning; Scott Young; Thorsons +* Getting Things Done; David Allen +* 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook +* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME) +* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books +* Stop starting, start finishing; Arne Roock; Lean-Kanban University +* Atomic Habits; James Clear; Random House Business * Never Split the Difference; Chris Voss, Tahl Raz; Random House Business -* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select +* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK +* So Good They Can't Ignore You; Cal Newport; Business Plus +* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion +* Influence without Authority; A. Cohen, D. Bradford; Wiley * The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook -* The Good Enough Job; Simone Stolzoff; Ebury Edge * Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing -* Influence without Authority; A. Cohen, D. Bradford; Wiley -* The Power of Now; Eckhard Tolle; Yellow Kite -* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books -* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME) -* Meditation for Mortals, Oliver Burkeman, Audiobook -* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook -* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME) -* Soft Skills; John Sommez; Manning Publications -* Atomic Habits; James Clear; Random House Business -* 101 Essays that change the way you think; Brianna Wiest; Audiobook +* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd * Eat That Frog!; Brian Tracy; Hodder Paperbacks -* Digital Minimalism; Cal Newport; Portofolio Penguin -* Stop starting, start finishing; Arne Roock; Lean-Kanban University +* 101 Essays that change the way you think; Brianna Wiest; Audiobook * Slow Productivity; Cal Newport; Penguin Random House +* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook * Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook -* 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook -* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne -* The Bullet Journal Method; Ryder Carroll; Fourth Estate -* Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion -* The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd -* Eat That Frog; Brian Tracy +* The Power of Now; Eckhard Tolle; Yellow Kite +* Soft Skills; John Sommez; Manning Publications * The Joy of Missing Out; Christina Crook; New Society Publishers -* Getting Things Done; David Allen -* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly -* So Good They Can't Ignore You; Cal Newport; Business Plus -* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK +* Eat That Frog; Brian Tracy +* Deep Work; Cal Newport; Piatkus +* The Bullet Journal Method; Ryder Carroll; Fourth Estate +* The Good Enough Job; Simone Stolzoff; Ebury Edge +* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press +* Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne +* The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME) +* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select +* Digital Minimalism; Cal Newport; Portofolio Penguin * Ultralearning; Anna Laurent; Self-published via Amazon +* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly * Psycho-Cybernetics; Maxwell Maltz; Perigee Books -* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press -* Ultralearning; Scott Young; Thorsons +* Meditation for Mortals, Oliver Burkeman, Audiobook [Here are notes of mine for some of the books](../notes/index.md) @@ -143,29 +143,29 @@ In random order: Some of these were in-person with exams; others were online learning lectures only. In random order: -* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online -* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online -* F5 Loadbalancers Training; 2-day on-site training; F5, Inc. -* Ultimate Go Programming; Bill Kennedy; O'Reilly Online -* MySQL Deep Dive Workshop; 2-day on-site training * Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon +* F5 Loadbalancers Training; 2-day on-site training; F5, Inc. +* Functional programming lecture; Remote University of Hagen * The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online -* AWS Immersion Day; Amazon; 1-day interactive online training -* Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need) -* Scripting Vim; Damian Conway; O'Reilly Online -* Protocol buffers; O'Reilly Online -* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training * Developing IaC with Terraform (with Live Lessons); O'Reilly Online +* MySQL Deep Dive Workshop; 2-day on-site training +* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online * Structure and Interpretation of Computer Programs; Harold Abelson and more...; -* Functional programming lecture; Remote University of Hagen +* 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) +* AWS Immersion Day; Amazon; 1-day interactive online training +* Ultimate Go Programming; Bill Kennedy; O'Reilly Online * Apache Tomcat Best Practises; 3-day on-site training +* Protocol buffers; O'Reilly Online +* Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training +* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online +* Scripting Vim; Damian Conway; O'Reilly Online ## Technical guides These are not whole books, but guides (smaller or larger) which I found very useful. in random order: -* How CPUs work at https://cpu.land * Advanced Bash-Scripting Guide +* How CPUs work at https://cpu.land * Raku Guide at https://raku.guide ## Podcasts @@ -174,57 +174,58 @@ These are not whole books, but guides (smaller or larger) which I found very use In random order: +* The ProdCast (Google SRE Podcast) +* Backend Banter +* The Changelog Podcast(s) * Maintainable -* Pratical AI +* Hidden Brain +* Deep Questions with Cal Newport +* Wednesday Wisdom +* Modern Mentor +* BSD Now [BSD] * Fork Around And Find Out * Fallthrough [Golang] -* Backend Banter -* The ProdCast (Google SRE Podcast) -* Hidden Brain +* Dev Interrupted * The Pragmatic Engineer Podcast -* Modern Mentor +* Pratical AI * Cup o' Go [Golang] -* Dev Interrupted -* The Changelog Podcast(s) -* Deep Questions with Cal Newport -* BSD Now [BSD] ### Podcasts I liked I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests. -* Ship It (predecessor of Fork Around And Find Out) -* Modern Mentor +* Go Time (predecessor of fallthrough) * CRE: Chaosradio Express [german] * Java Pub House -* Go Time (predecessor of fallthrough) +* Ship It (predecessor of Fork Around And Find Out) +* Modern Mentor * FLOSS weekly ## Newsletters I like This is a mix of tech and non-tech newsletters I am subscribed to. In random order: +* Andreas Brandhorst Newsletter (Sci-Fi author) * The Imperfectionist -* Changelog News +* Register Spill +* Applied Go Weekly Newsletter * VK Newsletter -* The Pragmatic Engineer * Golang Weekly +* Monospace Mentor * The Valuable Dev -* Applied Go Weekly Newsletter -* byteSizeGo -* Register Spill +* Changelog News +* The Pragmatic Engineer * Ruby Weekly -* Andreas Brandhorst Newsletter (Sci-Fi author) -* Monospace Mentor +* byteSizeGo ## Magazines I like(d) This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order: +* LWN (online only) * Linux User * freeX (not published anymore) * Linux Magazine -* LWN (online only) # Formal education diff --git a/about/showcase.md b/about/showcase.md index 89017e33..08a3f636 100644 --- a/about/showcase.md +++ b/about/showcase.md @@ -1,6 +1,6 @@ # Project Showcase -Generated on: 2025-09-18 +Generated on: 2025-09-28 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. @@ -11,16 +11,15 @@ This page showcases my side projects, providing an overview of what each project * [⇢ ⇢ Projects](#projects) * [⇢ ⇢ ⇢ hexai](#hexai) * [⇢ ⇢ ⇢ conf](#conf) -* [⇢ ⇢ ⇢ foo.zone](#foozone) +* [⇢ ⇢ ⇢ foostats](#foostats) * [⇢ ⇢ ⇢ gitsyncer](#gitsyncer) * [⇢ ⇢ ⇢ totalrecall](#totalrecall) -* [⇢ ⇢ ⇢ dtail](#dtail) * [⇢ ⇢ ⇢ timr](#timr) * [⇢ ⇢ ⇢ tasksamurai](#tasksamurai) * [⇢ ⇢ ⇢ ior](#ior) -* [⇢ ⇢ ⇢ foostats](#foostats) -* [⇢ ⇢ ⇢ wireguardmeshgenerator](#wireguardmeshgenerator) * [⇢ ⇢ ⇢ gos](#gos) +* [⇢ ⇢ ⇢ dtail](#dtail) +* [⇢ ⇢ ⇢ wireguardmeshgenerator](#wireguardmeshgenerator) * [⇢ ⇢ ⇢ ds-sim](#ds-sim) * [⇢ ⇢ ⇢ sillybench](#sillybench) * [⇢ ⇢ ⇢ rcm](#rcm) @@ -36,6 +35,7 @@ This page showcases my side projects, providing an overview of what each project * [⇢ ⇢ ⇢ photoalbum](#photoalbum) * [⇢ ⇢ ⇢ geheim](#geheim) * [⇢ ⇢ ⇢ algorithms](#algorithms) +* [⇢ ⇢ ⇢ foo.zone](#foozone) * [⇢ ⇢ ⇢ perl-c-fibonacci](#perl-c-fibonacci) * [⇢ ⇢ ⇢ ioriot](#ioriot) * [⇢ ⇢ ⇢ staticfarm-apache-handlers](#staticfarm-apache-handlers) @@ -50,12 +50,12 @@ This page showcases my side projects, providing an overview of what each project * [⇢ ⇢ ⇢ template](#template) * [⇢ ⇢ ⇢ muttdelay](#muttdelay) * [⇢ ⇢ ⇢ netdiff](#netdiff) +* [⇢ ⇢ ⇢ pwgrep](#pwgrep) * [⇢ ⇢ ⇢ japi](#japi) * [⇢ ⇢ ⇢ perl-poetry](#perl-poetry) * [⇢ ⇢ ⇢ ipv6test](#ipv6test) * [⇢ ⇢ ⇢ cpuinfo](#cpuinfo) * [⇢ ⇢ ⇢ loadbars](#loadbars) -* [⇢ ⇢ ⇢ pwgrep](#pwgrep) * [⇢ ⇢ ⇢ perldaemon](#perldaemon) * [⇢ ⇢ ⇢ awksite](#awksite) * [⇢ ⇢ ⇢ jsmstrade](#jsmstrade) @@ -68,28 +68,28 @@ This page showcases my side projects, providing an overview of what each project ## Overall Statistics * 📦 Total Projects: 55 -* 📊 Total Commits: 11,075 -* 📈 Total Lines of Code: 294,461 -* 📄 Total Lines of Documentation: 240,909 -* 💻 Languages: Go (28.5%), Java (18.6%), HTML (15.0%), C (6.4%), C++ (6.0%), Perl (5.6%), XML (4.8%), Shell (4.6%), C/C++ (4.2%), Config (1.2%), Ruby (1.0%), HCL (0.9%), YAML (0.6%), Python (0.6%), Make (0.5%), CSS (0.5%), Raku (0.3%), JSON (0.3%), Haskell (0.2%), TOML (0.1%) -* 📚 Documentation: Text (92.8%), Markdown (5.8%), LaTeX (1.4%) +* 📊 Total Commits: 11,126 +* 📈 Total Lines of Code: 285,161 +* 📄 Total Lines of Documentation: 26,755 +* 💻 Languages: Go (28.2%), Java (19.2%), C++ (13.0%), Shell (7.4%), C/C++ (7.2%), C (7.1%), Perl (6.2%), HTML (4.4%), Config (1.6%), Ruby (1.0%), HCL (1.0%), Make (0.7%), YAML (0.6%), Python (0.6%), CSS (0.5%), Raku (0.3%), JSON (0.3%), XML (0.2%), Haskell (0.2%), TOML (0.1%) +* 📚 Documentation: Text (44.9%), Markdown (42.6%), LaTeX (12.5%) * 🎵 Vibe-Coded Projects: 4 out of 55 (7.3%) -* 🤖 AI-Assisted Projects (including vibe-coded): 10 out of 55 (18.2% AI-assisted, 81.8% human-only) +* 🤖 AI-Assisted Projects (including vibe-coded): 9 out of 55 (16.4% AI-assisted, 83.6% human-only) * 🚀 Release Status: 35 released, 20 experimental (63.6% with releases, 36.4% experimental) ## Projects ### hexai -* 💻 Languages: Go (66.1%), HTML (33.9%) +* 💻 Languages: Go (68.1%), HTML (31.9%) * 📚 Documentation: Markdown (100.0%) -* 📊 Commits: 208 -* 📈 Lines of Code: 22125 -* 📄 Lines of Documentation: 546 -* 📅 Development Period: 2025-08-01 to 2025-09-17 -* 🔥 Recent Activity: 7.8 days (avg. age of last 42 commits) +* 📊 Commits: 229 +* 📈 Lines of Code: 25355 +* 📄 Lines of Documentation: 629 +* 📅 Development Period: 2025-08-01 to 2025-09-27 +* 🔥 Recent Activity: 9.8 days (avg. age of last 42 commits) * ⚖️ License: No license found -* 🏷️ Latest Release: v0.11.3 (2025-09-17) +* 🏷️ Latest Release: v0.12.1 (2025-09-26) * 🤖 AI-Assisted: This project was partially created with the help of generative AI @@ -106,13 +106,13 @@ The project is implemented primarily in Go and uses Mage as its build and task a ### conf -* 💻 Languages: Perl (31.3%), Shell (23.2%), YAML (23.0%), Config (5.6%), CSS (5.4%), TOML (4.8%), Ruby (4.2%), Lua (1.2%), Docker (0.6%), JSON (0.5%) -* 📚 Documentation: Text (69.9%), Markdown (30.1%) -* 📊 Commits: 995 -* 📈 Lines of Code: 6017 -* 📄 Lines of Documentation: 1188 -* 📅 Development Period: 2021-12-28 to 2025-09-17 -* 🔥 Recent Activity: 12.9 days (avg. age of last 42 commits) +* 💻 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%) +* 📚 Documentation: Text (73.7%), Markdown (26.3%) +* 📊 Commits: 998 +* 📈 Lines of Code: 6043 +* 📄 Lines of Documentation: 1356 +* 📅 Development Period: 2021-12-28 to 2025-09-27 +* 🔥 Recent Activity: 20.3 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -125,26 +125,25 @@ conf --- -### foo.zone +### foostats -* 💻 Languages: HTML (70.5%), XML (28.8%), Shell (0.3%), CSS (0.2%), Go (0.1%) -* 📚 Documentation: Text (75.5%), Markdown (24.5%) -* 📊 Commits: 3072 -* 📈 Lines of Code: 46613 -* 📄 Lines of Documentation: 298 -* 📅 Development Period: 2021-04-29 to 2025-09-13 -* 🔥 Recent Activity: 42.0 days (avg. age of last 42 commits) -* ⚖️ License: No license found -* 🧪 Status: Experimental (no releases yet) -* 🤖 AI-Assisted: This project was partially created with the help of generative AI +* 💻 Languages: Perl (100.0%) +* 📚 Documentation: Markdown (54.4%), Text (45.6%) +* 📊 Commits: 95 +* 📈 Lines of Code: 1859 +* 📄 Lines of Documentation: 421 +* 📅 Development Period: 2023-01-02 to 2025-09-26 +* 🔥 Recent Activity: 48.6 days (avg. age of last 42 commits) +* ⚖️ License: Custom License +* 🏷️ Latest Release: v0.1.0 (2025-07-12) -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. +**foostats** is a privacy-focused web analytics tool designed specifically for OpenBSD environments, with support for both traditional web (HTTP/HTTPS) and Gemini protocol logs. Its primary function is to generate anonymous, comprehensive site statistics for the foo.zone ecosystem and similar sites, while strictly preserving visitor privacy. This is achieved by hashing all IP addresses with SHA3-512 before storage, ensuring no personally identifiable information is retained. The tool provides detailed daily, monthly, and summary reports in Gemtext format, tracks feed subscribers, and includes robust filtering to block and log suspicious requests based on configurable patterns. -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. +Architecturally, foostats is modular, with components for log parsing, filtering, aggregation, replication, and reporting. It processes logs from OpenBSD httpd and Gemini servers (vger/relayd), aggregates statistics, and outputs compressed JSON files and human-readable reports. Its distributed design allows replication and merging of stats across multiple nodes, supporting comprehensive analytics for federated sites. Key features include multi-protocol and IPv4/IPv6 support, privacy-first data handling, and flexible configuration for filtering and reporting, making it a secure and privacy-respecting alternative to conventional analytics platforms. -[View on Codeberg](https://codeberg.org/snonux/foo.zone) -[View on GitHub](https://github.com/snonux/foo.zone) +[View on Codeberg](https://codeberg.org/snonux/foostats) +[View on GitHub](https://github.com/snonux/foostats) --- @@ -156,7 +155,7 @@ The site is maintained using a suite of open-source tools, including Neovim for * 📈 Lines of Code: 10036 * 📄 Lines of Documentation: 2433 * 📅 Development Period: 2025-06-23 to 2025-09-08 -* 🔥 Recent Activity: 55.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 65.5 days (avg. age of last 42 commits) * ⚖️ License: BSD-2-Clause * 🏷️ Latest Release: v0.9.2 (2025-09-08) * 🎵 Vibe-Coded: This project has been vibe coded @@ -179,7 +178,7 @@ The tool is implemented as a modern CLI application in Go, with a modular, comma * 📈 Lines of Code: 12003 * 📄 Lines of Documentation: 361 * 📅 Development Period: 2025-07-14 to 2025-08-02 -* 🔥 Recent Activity: 58.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 68.3 days (avg. age of last 42 commits) * ⚖️ License: MIT * 🏷️ Latest Release: v0.7.5 (2025-08-02) * 🎵 Vibe-Coded: This project has been vibe coded @@ -200,33 +199,6 @@ Architecturally, totalrecall is implemented in Go and integrates with OpenAI ser --- -### dtail - -* 💻 Languages: Go (91.0%), Shell (4.1%), JSON (2.1%), C (1.4%), Make (0.9%), C/C++ (0.2%), Config (0.1%) -* 📚 Documentation: Text (98.3%), Markdown (1.7%) -* 📊 Commits: 1046 -* 📈 Lines of Code: 27726 -* 📄 Lines of Documentation: 220214 -* 📅 Development Period: 2020-01-09 to 2025-07-04 -* 🔥 Recent Activity: 78.1 days (avg. age of last 42 commits) -* ⚖️ License: Apache-2.0 -* 🏷️ Latest Release: v4.3.3 (2024-08-23) -* 🤖 AI-Assisted: This project was partially created with the help of generative AI - - -[](showcase/dtail/image-1.png) - -DTail is an open-source distributed log management tool designed for DevOps engineers to efficiently tail, cat, and grep log files across thousands of servers simultaneously. Written in Go, it supports advanced features such as on-the-fly decompression (gzip, zstd) and distributed MapReduce-style aggregations, making it highly useful for large-scale log analysis and troubleshooting in complex environments. By leveraging SSH for secure communication and adhering to UNIX file permission models, DTail ensures both security and compatibility with existing infrastructure. - -[](showcase/dtail/image-2.gif) - -The architecture consists of a client-server model: DTail servers run on each target machine, while a DTail client—typically on an engineer’s workstation—connects to all servers concurrently to aggregate and process logs in real time. This design enables scalable, parallel log operations and can be extended to a serverless mode for added flexibility. DTail’s implementation emphasizes performance, security, and ease of use, making it a valuable tool for organizations needing to monitor and analyze distributed logs efficiently. - -[View on Codeberg](https://codeberg.org/snonux/dtail) -[View on GitHub](https://github.com/snonux/dtail) - ---- - ### timr * 💻 Languages: Go (98.3%), YAML (1.7%) @@ -235,7 +207,7 @@ The architecture consists of a client-server model: DTail servers run on each ta * 📈 Lines of Code: 873 * 📄 Lines of Documentation: 137 * 📅 Development Period: 2025-06-25 to 2025-07-19 -* 🔥 Recent Activity: 82.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 92.3 days (avg. age of last 42 commits) * ⚖️ License: BSD-2-Clause * 🏷️ Latest Release: v0.0.0 (2025-06-29) * 🎵 Vibe-Coded: This project has been vibe coded @@ -260,7 +232,7 @@ From an architectural standpoint, `timr` is implemented in Go, ensuring cross-pl * 📈 Lines of Code: 6160 * 📄 Lines of Documentation: 162 * 📅 Development Period: 2025-06-19 to 2025-07-12 -* 🔥 Recent Activity: 84.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 94.0 days (avg. age of last 42 commits) * ⚖️ License: BSD-2-Clause * 🏷️ Latest Release: v0.9.2 (2025-07-02) * 🎵 Vibe-Coded: This project has been vibe coded @@ -282,12 +254,12 @@ The core architecture leverages the Bubble Tea framework for rendering the termi ### ior * 💻 Languages: Go (50.2%), C (43.4%), Raku (4.4%), Make (1.1%), C/C++ (0.9%) -* 📚 Documentation: Text (63.6%), Markdown (36.4%) -* 📊 Commits: 331 +* 📚 Documentation: Text (69.0%), Markdown (31.0%) +* 📊 Commits: 332 * 📈 Lines of Code: 12762 -* 📄 Lines of Documentation: 742 -* 📅 Development Period: 2024-01-18 to 2025-07-14 -* 🔥 Recent Activity: 122.0 days (avg. age of last 42 commits) +* 📄 Lines of Documentation: 684 +* 📅 Development Period: 2024-01-18 to 2025-09-21 +* 🔥 Recent Activity: 128.1 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) * 🤖 AI-Assisted: This project was partially created with the help of generative AI @@ -306,25 +278,56 @@ The project is implemented using a combination of Go, C, and BPF, leveraging the --- -### foostats +### gos -* 💻 Languages: Perl (100.0%) -* 📚 Documentation: Markdown (90.0%), Text (10.0%) -* 📊 Commits: 80 -* 📈 Lines of Code: 1887 -* 📄 Lines of Documentation: 240 -* 📅 Development Period: 2023-01-02 to 2025-09-03 -* 🔥 Recent Activity: 128.2 days (avg. age of last 42 commits) +* 💻 Languages: Go (99.8%), JSON (0.2%) +* 📚 Documentation: Markdown (100.0%) +* 📊 Commits: 394 +* 📈 Lines of Code: 4102 +* 📄 Lines of Documentation: 357 +* 📅 Development Period: 2024-05-04 to 2025-09-24 +* 🔥 Recent Activity: 130.0 days (avg. age of last 42 commits) * ⚖️ License: Custom License -* 🏷️ Latest Release: v0.1.0 (2025-07-12) +* 🏷️ Latest Release: v1.2.0 (2025-09-24) -**foostats** is a privacy-focused web analytics tool designed specifically for OpenBSD environments, with support for both traditional web (HTTP/HTTPS) and Gemini protocol logs. Its primary function is to generate anonymous, comprehensive site statistics for the foo.zone ecosystem and similar sites, while strictly preserving visitor privacy. This is achieved by hashing all IP addresses with SHA3-512 before storage, ensuring no personally identifiable information is retained. The tool provides detailed daily, monthly, and summary reports in Gemtext format, tracks feed subscribers, and includes robust filtering to block and log suspicious requests based on configurable patterns. +[](showcase/gos/image-1.png) -Architecturally, foostats is modular, with components for log parsing, filtering, aggregation, replication, and reporting. It processes logs from OpenBSD httpd and Gemini servers (vger/relayd), aggregates statistics, and outputs compressed JSON files and human-readable reports. Its distributed design allows replication and merging of stats across multiple nodes, supporting comprehensive analytics for federated sites. Key features include multi-protocol and IPv4/IPv6 support, privacy-first data handling, and flexible configuration for filtering and reporting, making it a secure and privacy-respecting alternative to conventional analytics platforms. +**Gos (Go Social Media)** is a command-line tool written in Go that serves as a self-hosted, scriptable alternative to Buffer.com for scheduling and managing social media posts. Designed for users who prefer automation, privacy, and control, Gos enables posting to Mastodon and LinkedIn (with OAuth2 authentication for LinkedIn) directly from the terminal. It supports features like dry-run mode for safe testing, flexible configuration via flags and environment variables, image previews for LinkedIn, and a pseudo-platform ("Noop") for tracking posts without publishing. Gos is particularly useful for developers, power users, or anyone who wants to automate their social media workflow, avoid third-party service limitations, and integrate posting into their own scripts or shell startup routines. -[View on Codeberg](https://codeberg.org/snonux/foostats) -[View on GitHub](https://github.com/snonux/foostats) +[](showcase/gos/image-2.png) + +**Architecturally**, Gos operates on a file-based queueing system: users compose posts as text files (optionally using the companion `gosc` composer tool) in a designated directory. Posts are tagged via filenames or inline tags to control target platforms, priorities, and behaviors (e.g., immediate posting, pausing, or requiring confirmation). When Gos runs, it processes these files, moves them through platform-specific queues, and posts them according to user-defined cadence, priorities, and pause intervals. The configuration is managed via a JSON file storing API credentials and scheduling preferences. Gos also supports generating Gemini Gemtext summaries of posted content for blogging or archival purposes. The system is highly scriptable, easy to integrate into automated workflows, and can be synced or backed up using tools like Syncthing, making it a robust, extensible solution for personal or small-team social media management. + +[View on Codeberg](https://codeberg.org/snonux/gos) +[View on GitHub](https://github.com/snonux/gos) + +--- + +### dtail + +* 💻 Languages: Go (93.9%), JSON (2.8%), C (2.0%), Make (0.5%), C/C++ (0.3%), Config (0.2%), Shell (0.2%), Docker (0.1%) +* 📚 Documentation: Text (79.4%), Markdown (20.6%) +* 📊 Commits: 1046 +* 📈 Lines of Code: 20091 +* 📄 Lines of Documentation: 5674 +* 📅 Development Period: 2020-01-09 to 2025-06-20 +* 🔥 Recent Activity: 133.6 days (avg. age of last 42 commits) +* ⚖️ License: Apache-2.0 +* 🏷️ Latest Release: v4.3.3 (2024-08-23) +* 🤖 AI-Assisted: This project was partially created with the help of generative AI + + +[](showcase/dtail/image-1.png) + +DTail is an open-source distributed log management tool designed for DevOps engineers to efficiently tail, cat, and grep log files across thousands of servers simultaneously. Written in Go, it supports advanced features such as on-the-fly decompression (gzip, zstd) and distributed MapReduce-style aggregations, making it highly useful for large-scale log analysis and troubleshooting in complex environments. By leveraging SSH for secure communication and adhering to UNIX file permission models, DTail ensures both security and compatibility with existing infrastructure. + +[](showcase/dtail/image-2.gif) + +The architecture consists of a client-server model: DTail servers run on each target machine, while a DTail client—typically on an engineer’s workstation—connects to all servers concurrently to aggregate and process logs in real time. This design enables scalable, parallel log operations and can be extended to a serverless mode for added flexibility. DTail’s implementation emphasizes performance, security, and ease of use, making it a valuable tool for organizations needing to monitor and analyze distributed logs efficiently. + +[View on Codeberg](https://codeberg.org/snonux/dtail) +[View on GitHub](https://github.com/snonux/dtail) --- @@ -336,7 +339,7 @@ Architecturally, foostats is modular, with components for log parsing, filtering * 📈 Lines of Code: 396 * 📄 Lines of Documentation: 24 * 📅 Development Period: 2025-04-18 to 2025-05-11 -* 🔥 Recent Activity: 142.9 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 152.9 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.0.0 (2025-05-11) @@ -350,32 +353,6 @@ The project is implemented using Ruby, with tasks managed via Rake, and configur --- -### gos - -* 💻 Languages: Go (98.6%), YAML (1.1%), JSON (0.3%) -* 📚 Documentation: Markdown (100.0%) -* 📊 Commits: 389 -* 📈 Lines of Code: 3996 -* 📄 Lines of Documentation: 352 -* 📅 Development Period: 2024-05-04 to 2025-09-16 -* 🔥 Recent Activity: 146.8 days (avg. age of last 42 commits) -* ⚖️ License: Custom License -* 🏷️ Latest Release: v1.1.0 (2025-09-16) - - -[](showcase/gos/image-1.png) - -**Gos (Go Social Media)** is a command-line tool written in Go that serves as a self-hosted, scriptable alternative to Buffer.com for scheduling and managing social media posts. Designed for users who prefer automation, privacy, and control, Gos enables posting to Mastodon and LinkedIn (with OAuth2 authentication for LinkedIn) directly from the terminal. It supports features like dry-run mode for safe testing, flexible configuration via flags and environment variables, image previews for LinkedIn, and a pseudo-platform ("Noop") for tracking posts without publishing. Gos is particularly useful for developers, power users, or anyone who wants to automate their social media workflow, avoid third-party service limitations, and integrate posting into their own scripts or shell startup routines. - -[](showcase/gos/image-2.png) - -**Architecturally**, Gos operates on a file-based queueing system: users compose posts as text files (optionally using the companion `gosc` composer tool) in a designated directory. Posts are tagged via filenames or inline tags to control target platforms, priorities, and behaviors (e.g., immediate posting, pausing, or requiring confirmation). When Gos runs, it processes these files, moves them through platform-specific queues, and posts them according to user-defined cadence, priorities, and pause intervals. The configuration is managed via a JSON file storing API credentials and scheduling preferences. Gos also supports generating Gemini Gemtext summaries of posted content for blogging or archival purposes. The system is highly scriptable, easy to integrate into automated workflows, and can be synced or backed up using tools like Syncthing, making it a robust, extensible solution for personal or small-team social media management. - -[View on Codeberg](https://codeberg.org/snonux/gos) -[View on GitHub](https://github.com/snonux/gos) - ---- - ### ds-sim * 💻 Languages: Java (98.9%), Shell (0.6%), CSS (0.5%) @@ -384,7 +361,7 @@ The project is implemented using Ruby, with tasks managed via Rake, and configur * 📈 Lines of Code: 25762 * 📄 Lines of Documentation: 3101 * 📅 Development Period: 2008-05-15 to 2025-06-27 -* 🔥 Recent Activity: 156.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 166.2 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) * 🤖 AI-Assisted: This project was partially created with the help of generative AI @@ -409,7 +386,7 @@ Architecturally, DS-Sim is organized into modular components: core process and m * 📈 Lines of Code: 33 * 📄 Lines of Documentation: 3 * 📅 Development Period: 2025-04-03 to 2025-04-03 -* 🔥 Recent Activity: 168.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 178.8 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -431,7 +408,7 @@ Implementation-wise, the project likely consists of a small, easily portable pro * 📈 Lines of Code: 1373 * 📄 Lines of Documentation: 48 * 📅 Development Period: 2024-12-05 to 2025-02-28 -* 🔥 Recent Activity: 209.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 219.5 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) @@ -453,7 +430,7 @@ Key features include a test suite (run via `rake test`) to ensure reliability, a * 📈 Lines of Code: 2285 * 📄 Lines of Documentation: 1180 * 📅 Development Period: 2021-05-21 to 2025-08-31 -* 🔥 Recent Activity: 254.9 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 264.9 days (avg. age of last 42 commits) * ⚖️ License: GPL-3.0 * 🏷️ Latest Release: 3.0.0 (2024-10-01) @@ -477,7 +454,7 @@ The project is implemented as a large Bash script, leveraging standard GNU utili * 📈 Lines of Code: 1133 * 📄 Lines of Documentation: 78 * 📅 Development Period: 2024-01-20 to 2025-09-13 -* 🔥 Recent Activity: 475.4 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 485.4 days (avg. age of last 42 commits) * ⚖️ License: MIT * 🏷️ Latest Release: v0.0.4 (2025-09-13) @@ -503,7 +480,7 @@ The project’s key features include its minimalistic design, cross-platform com * 📈 Lines of Code: 40 * 📄 Lines of Documentation: 3 * 📅 Development Period: 2023-12-31 to 2025-08-11 -* 🔥 Recent Activity: 509.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 519.1 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -525,7 +502,7 @@ The Docker image is typically implemented using a `Dockerfile` that installs Rad * 📈 Lines of Code: 2851 * 📄 Lines of Documentation: 52 * 📅 Development Period: 2023-08-27 to 2025-08-08 -* 🔥 Recent Activity: 545.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 555.3 days (avg. age of last 42 commits) * ⚖️ License: MIT * 🧪 Status: Experimental (no releases yet) @@ -547,7 +524,7 @@ Key features include the ability to specify which ECS services to deploy, automa * 📈 Lines of Code: 1096 * 📄 Lines of Documentation: 287 * 📅 Development Period: 2023-04-17 to 2025-06-12 -* 🔥 Recent Activity: 586.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 596.2 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.1.0 (2024-05-03) * 🤖 AI-Assisted: This project was partially created with the help of generative AI @@ -572,7 +549,7 @@ Architecturally, Gogios is implemented in Go for efficiency and ease of deployme * 📈 Lines of Code: 1525 * 📄 Lines of Documentation: 15 * 📅 Development Period: 2023-04-17 to 2023-11-19 -* 🔥 Recent Activity: 772.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 782.2 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) @@ -595,7 +572,7 @@ The project is still under development, but its planned features include remote * 📈 Lines of Code: 312 * 📄 Lines of Documentation: 416 * 📅 Development Period: 2013-03-22 to 2025-05-18 -* 🔥 Recent Activity: 822.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 832.3 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: v1.0.0 (2023-04-29) @@ -617,7 +594,7 @@ The architecture of `guprecords` is modular, with classes dedicated to parsing e * 📈 Lines of Code: 51 * 📄 Lines of Documentation: 26 * 📅 Development Period: 2022-06-02 to 2024-04-20 -* 🔥 Recent Activity: 837.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 847.0 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -640,7 +617,7 @@ The implementation relies on standard Linux utilities: `qpdf` for manipulating P * 📈 Lines of Code: 41 * 📄 Lines of Documentation: 17 * 📅 Development Period: 2020-01-30 to 2025-04-30 -* 🔥 Recent Activity: 1130.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 1140.5 days (avg. age of last 42 commits) * ⚖️ License: GPL-3.0 * 🧪 Status: Experimental (no releases yet) @@ -662,7 +639,7 @@ The script is implemented by piping the output of `monitor-sensor` into `autorot * 📈 Lines of Code: 342 * 📄 Lines of Documentation: 39 * 📅 Development Period: 2011-11-19 to 2022-04-02 -* 🔥 Recent Activity: 1350.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 1360.1 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.5.0 (2022-02-21) @@ -687,7 +664,7 @@ The `photoalbum` project is a minimal Bash script designed for Linux systems to * 📈 Lines of Code: 671 * 📄 Lines of Documentation: 26 * 📅 Development Period: 2018-05-26 to 2025-09-04 -* 🔥 Recent Activity: 1444.9 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 1454.9 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -713,7 +690,7 @@ The architecture centers around a local Git repository that acts as the secure s * 📈 Lines of Code: 1728 * 📄 Lines of Documentation: 18 * 📅 Development Period: 2020-07-12 to 2023-04-09 -* 🔥 Recent Activity: 1501.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 1511.3 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) @@ -728,6 +705,28 @@ Key features include a modular codebase where each algorithm or exercise is like --- +### foo.zone + +* 📚 Documentation: Markdown (100.0%) +* 📊 Commits: 3078 +* 📈 Lines of Code: 0 +* 📄 Lines of Documentation: 23 +* 📅 Development Period: 2021-05-21 to 2022-04-02 +* 🔥 Recent Activity: 1526.8 days (avg. age of last 42 commits) +* ⚖️ License: No license found +* 🧪 Status: Experimental (no releases yet) + +⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk. + +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. + +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. + +[View on Codeberg](https://codeberg.org/snonux/foo.zone) +[View on GitHub](https://github.com/snonux/foo.zone) + +--- + ### perl-c-fibonacci * 💻 Languages: C (80.4%), Make (19.6%) @@ -736,7 +735,7 @@ Key features include a modular codebase where each algorithm or exercise is like * 📈 Lines of Code: 51 * 📄 Lines of Documentation: 69 * 📅 Development Period: 2014-03-24 to 2022-04-23 -* 🔥 Recent Activity: 1982.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 1992.2 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -757,7 +756,7 @@ perl-c-fibonacci: source code repository. * 📈 Lines of Code: 12420 * 📄 Lines of Documentation: 610 * 📅 Development Period: 2018-03-01 to 2020-01-22 -* 🔥 Recent Activity: 2523.7 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 2533.7 days (avg. age of last 42 commits) * ⚖️ License: Apache-2.0 * 🏷️ Latest Release: 0.5.1 (2019-01-04) @@ -782,7 +781,7 @@ The tool operates in five main steps: capturing I/O on the production server, tr * 📈 Lines of Code: 919 * 📄 Lines of Documentation: 12 * 📅 Development Period: 2015-01-02 to 2021-11-04 -* 🔥 Recent Activity: 3032.4 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3042.4 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 1.1.3 (2015-01-02) @@ -805,7 +804,7 @@ In terms of implementation, the project consists of Perl modules that conform to * 📈 Lines of Code: 18 * 📄 Lines of Documentation: 49 * 📅 Development Period: 2014-03-24 to 2021-11-05 -* 🔥 Recent Activity: 3268.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3278.3 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -835,7 +834,7 @@ This setup is useful for anyone running their own DNS server who needs to keep D * 📈 Lines of Code: 5360 * 📄 Lines of Documentation: 789 * 📅 Development Period: 2015-01-02 to 2021-11-05 -* 🔥 Recent Activity: 3535.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3545.0 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 1.0.1 (2015-01-02) @@ -862,7 +861,7 @@ The "mon" tool is a command-line monitoring API client designed to interact with * 📈 Lines of Code: 273 * 📄 Lines of Documentation: 32 * 📅 Development Period: 2015-09-29 to 2021-11-05 -* 🔥 Recent Activity: 3539.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3549.2 days (avg. age of last 42 commits) * ⚖️ License: Apache-2.0 * 🏷️ Latest Release: 0 (2015-10-26) @@ -891,7 +890,7 @@ The architecture is simple but effective: it reads a list of servers, establishe * 📈 Lines of Code: 1839 * 📄 Lines of Documentation: 412 * 📅 Development Period: 2015-01-02 to 2021-11-05 -* 🔥 Recent Activity: 3618.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3628.8 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 1.0.2 (2015-01-02) @@ -918,7 +917,7 @@ pingdomfetch is implemented as a script that reads configuration files from stan * 📈 Lines of Code: 499 * 📄 Lines of Documentation: 8 * 📅 Development Period: 2015-05-24 to 2021-11-03 -* 🔥 Recent Activity: 3629.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3639.5 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.1 (2015-06-01) @@ -939,7 +938,7 @@ The tool is implemented in Go, which offers advantages in terms of performance, * 📊 Commits: 670 * 📈 Lines of Code: 1675 * 📅 Development Period: 2011-03-06 to 2018-12-22 -* 🔥 Recent Activity: 3685.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3695.2 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.0.0 (2018-12-22) @@ -962,7 +961,7 @@ The implementation is primarily documentation-driven, meant to be included at th * 📈 Lines of Code: 88 * 📄 Lines of Documentation: 148 * 📅 Development Period: 2015-06-18 to 2015-12-05 -* 🔥 Recent Activity: 3733.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 3743.3 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -987,7 +986,7 @@ The implementation involves several key steps: first, a Debian image is created * 📈 Lines of Code: 1681 * 📄 Lines of Documentation: 539 * 📅 Development Period: 2014-03-10 to 2021-11-03 -* 🔥 Recent Activity: 4011.3 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4021.3 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 1.0.2 (2014-11-17) @@ -1014,7 +1013,7 @@ The `fapi` project is a command-line tool designed to simplify the management of * 📈 Lines of Code: 65 * 📄 Lines of Documentation: 228 * 📅 Development Period: 2013-03-22 to 2021-11-04 -* 🔥 Recent Activity: 4065.7 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4075.7 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.0.0.0 (2013-03-22) @@ -1037,7 +1036,7 @@ Key features of the template include a Makefile that automates compilation and p * 📈 Lines of Code: 136 * 📄 Lines of Documentation: 96 * 📅 Development Period: 2013-03-22 to 2021-11-05 -* 🔥 Recent Activity: 4078.7 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4088.7 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.2.0 (2014-07-05) @@ -1064,7 +1063,7 @@ The core functionality is implemented through a combination of Vim integration, * 📈 Lines of Code: 134 * 📄 Lines of Documentation: 106 * 📅 Development Period: 2013-03-22 to 2021-11-05 -* 🔥 Recent Activity: 4086.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4096.2 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.1.5 (2014-06-22) @@ -1081,6 +1080,29 @@ The tool operates by having users simultaneously run the same command on both ho --- +### pwgrep + +* 💻 Languages: Shell (85.0%), Make (15.0%) +* 📚 Documentation: Text (80.8%), Markdown (19.2%) +* 📊 Commits: 142 +* 📈 Lines of Code: 493 +* 📄 Lines of Documentation: 26 +* 📅 Development Period: 2009-09-27 to 2021-11-02 +* 🔥 Recent Activity: 4139.5 days (avg. age of last 42 commits) +* ⚖️ License: No license found +* 🏷️ Latest Release: 0.9.3 (2014-06-14) + +⚠️ **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. + +**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. + +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. + +[View on Codeberg](https://codeberg.org/snonux/pwgrep) +[View on GitHub](https://github.com/snonux/pwgrep) + +--- + ### japi * 💻 Languages: Perl (78.3%), Make (21.7%) @@ -1089,7 +1111,7 @@ The tool operates by having users simultaneously run the same command on both ho * 📈 Lines of Code: 286 * 📄 Lines of Documentation: 144 * 📅 Development Period: 2013-03-22 to 2021-11-05 -* 🔥 Recent Activity: 4134.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4144.5 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.4.3 (2014-06-16) @@ -1114,7 +1136,7 @@ The tool is implemented in Perl and relies on the "JIRA::REST" CPAN module to co * 📈 Lines of Code: 191 * 📄 Lines of Documentation: 8 * 📅 Development Period: 2014-03-24 to 2014-03-24 -* 🔥 Recent Activity: 4195.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4205.8 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) @@ -1135,7 +1157,7 @@ In terms of implementation, each script is written to be syntactically correct a * 📊 Commits: 7 * 📈 Lines of Code: 80 * 📅 Development Period: 2011-07-09 to 2015-01-13 -* 🔥 Recent Activity: 4275.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4285.8 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) @@ -1158,7 +1180,7 @@ The implementation relies on Perl scripts running on a web server, with DNS and * 📈 Lines of Code: 124 * 📄 Lines of Documentation: 75 * 📅 Development Period: 2010-11-05 to 2021-11-05 -* 🔥 Recent Activity: 4316.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4326.5 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 1.0.2 (2014-06-22) @@ -1181,7 +1203,7 @@ The tool achieves this by invoking AWK, a powerful text-processing utility, to p * 📈 Lines of Code: 1828 * 📄 Lines of Documentation: 100 * 📅 Development Period: 2010-11-05 to 2015-05-23 -* 🔥 Recent Activity: 4346.6 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4356.6 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: 0.7.5 (2014-06-22) @@ -1194,36 +1216,13 @@ loadbars: source code repository. --- -### pwgrep - -* 💻 Languages: Shell (85.0%), Make (15.0%) -* 📚 Documentation: Text (72.4%), Markdown (27.6%) -* 📊 Commits: 142 -* 📈 Lines of Code: 493 -* 📄 Lines of Documentation: 29 -* 📅 Development Period: 2009-09-27 to 2015-05-23 -* 🔥 Recent Activity: 4360.0 days (avg. age of last 42 commits) -* ⚖️ License: No license found -* 🏷️ Latest Release: 0.9.3 (2014-06-14) - -⚠️ **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. - -**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. - -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. - -[View on Codeberg](https://codeberg.org/snonux/pwgrep) -[View on GitHub](https://github.com/snonux/pwgrep) - ---- - ### perldaemon -* 💻 Languages: Perl (72.3%), Shell (23.8%), Config (3.9%) +* 💻 Languages: Perl (74.2%), Shell (22.2%), Config (3.6%) * 📊 Commits: 110 -* 📈 Lines of Code: 614 +* 📈 Lines of Code: 659 * 📅 Development Period: 2011-02-05 to 2022-04-21 -* 🔥 Recent Activity: 4396.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4500.8 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.4 (2022-04-29) @@ -1248,7 +1247,7 @@ The implementation centers around a main daemon process that manages the event l * 📈 Lines of Code: 122 * 📄 Lines of Documentation: 10 * 📅 Development Period: 2011-01-27 to 2014-06-22 -* 🔥 Recent Activity: 4727.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4737.1 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: v0.2 (2011-01-27) @@ -1271,7 +1270,7 @@ The core architecture of Awksite consists of AWK scripts executed via the Common * 📈 Lines of Code: 720 * 📄 Lines of Documentation: 6 * 📅 Development Period: 2008-06-21 to 2021-11-03 -* 🔥 Recent Activity: 4789.7 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 4799.7 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v0.3 (2009-02-08) @@ -1290,13 +1289,13 @@ The application is implemented as a desktop GUI, likely using a framework such a ### ychat -* 💻 Languages: C++ (52.1%), C/C++ (21.3%), Shell (20.1%), HTML (2.5%), Config (2.1%), Perl (1.5%), Make (0.3%) +* 💻 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%) * 📚 Documentation: Text (100.0%) * 📊 Commits: 67 -* 📈 Lines of Code: 33823 -* 📄 Lines of Documentation: 109 +* 📈 Lines of Code: 73818 +* 📄 Lines of Documentation: 127 * 📅 Development Period: 2008-05-15 to 2014-07-01 -* 🔥 Recent Activity: 5344.6 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 5391.1 days (avg. age of last 42 commits) * ⚖️ License: GPL-2.0 * 🏷️ Latest Release: yhttpd-0.7.2 (2013-04-06) @@ -1319,7 +1318,7 @@ yChat’s architecture is built around a core C++ engine that handles HTTP reque * 📈 Lines of Code: 17380 * 📄 Lines of Documentation: 947 * 📅 Development Period: 2009-02-07 to 2021-05-01 -* 🔥 Recent Activity: 5420.4 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 5430.4 days (avg. age of last 42 commits) * ⚖️ License: GPL-2.0 * 🏷️ Latest Release: v0.1 (2009-02-08) @@ -1346,7 +1345,7 @@ NetCalendar is implemented as a Java application (requiring JRE 6 or higher) and * 📈 Lines of Code: 14582 * 📄 Lines of Documentation: 2903 * 📅 Development Period: 2008-05-15 to 2022-04-03 -* 🔥 Recent Activity: 5456.7 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 5466.7 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.0 (2008-08-24) @@ -1369,7 +1368,7 @@ The simulator features a modular architecture, allowing users to define custom n * 📊 Commits: 80 * 📈 Lines of Code: 601 * 📅 Development Period: 2009-11-22 to 2011-10-17 -* 🔥 Recent Activity: 5516.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 5526.0 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) @@ -1386,13 +1385,13 @@ The architecture is modular, relying on external Haskell packages: libghc6-hsql- ### fype -* 💻 Languages: C (67.9%), C/C++ (23.6%), HTML (6.9%), Make (1.6%) -* 📚 Documentation: Text (61.4%), LaTeX (38.6%) +* 💻 Languages: C (72.1%), C/C++ (20.7%), HTML (5.7%), Make (1.5%) +* 📚 Documentation: Text (71.3%), LaTeX (28.7%) * 📊 Commits: 99 -* 📈 Lines of Code: 8622 -* 📄 Lines of Documentation: 1474 -* 📅 Development Period: 2008-05-15 to 2014-06-30 -* 🔥 Recent Activity: 5840.1 days (avg. age of last 42 commits) +* 📈 Lines of Code: 10196 +* 📄 Lines of Documentation: 1741 +* 📅 Development Period: 2008-05-15 to 2021-11-03 +* 🔥 Recent Activity: 5687.8 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) diff --git a/about/showcase/debroid/image-1.png b/about/showcase/debroid/image-1.png index f62b0f61..bda1217d 100644 --- a/about/showcase/debroid/image-1.png +++ b/about/showcase/debroid/image-1.png @@ -46,29 +46,29 @@ <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-dc7ca6859caf.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-2744ca59d025.css" /> - <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-efdc4f8b5091.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-241f81e44892.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-086c1af66525.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_show_top_100_users_usage_table","client_version_header","codespaces_prebuild_region_target_update","contact_requests_implicit_opt_in","contentful_lp_enterprise","contentful_lp_footnotes","copilot_agent_prefetch_tasks","copilot_agent_task_caching","copilot_api_agentic_issue_marshal_yaml","copilot_api_draft_issue_code_search","copilot_chat_attach_multiple_images","copilot_chat_file_redirect","copilot_chat_group_notifications","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_custom_copilots_feature_preview","copilot_custom_copilots_images","copilot_duplicate_thread","copilot_features_raycast_logo","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_global_overlay_v2","copilot_immersive_agent_branch_selection","copilot_immersive_structured_model_picker","copilot_loops_share_button","copilot_no_floating_button","copilot_read_shared_conversation","copilot_show_copilot_sub_issues_button_on_issues_page","copilot_spaces_input_menu_select","copilot_spark_allow_empty_commit","copilot_spark_progressive_error_handling","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","custom_copilots_capi_mode","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","hyperspace_diff_view","insert_before_patch","issue_fields_report_usage","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_branch_relay_migration","item_picker_issue_type_relay_migration","item_picker_label_relay_migration","item_picker_mutations_relay_migration","item_picker_project_relay_migration","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","org_repos_page_route","override_pulse_legacy_url","primer_react_segmented_control_tooltip","primer_react_unified_portal_root","record_sso_banner_metrics","releases_update_ref_selector","remove_child_patch","repos_insights_remove_new_url","sample_network_conn_type","scheduled_reminders_updated_limits","show_edit_on_default_option","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_fixed_amount_metered_configured_discounts","billing_use_current_discounts_list_dialog_v2","client_version_header","codespaces_prebuild_region_target_update","contact_requests_implicit_opt_in","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_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_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_global_overlay_v2","copilot_immersive_agent_branch_selection","copilot_immersive_structured_model_picker","copilot_loops_share_button","copilot_no_floating_button","copilot_read_shared_conversation","copilot_show_copilot_sub_issues_button_on_issues_page","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","hyperspace_diff_view","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","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","primer_react_segmented_control_tooltip","primer_react_unified_portal_root","record_sso_banner_metrics","releases_update_ref_selector","remove_child_patch","repos_insights_remove_new_url","sample_network_conn_type","scheduled_reminders_updated_limits","show_edit_on_default_option","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 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-6c47ad9ad251.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-05fab4483803.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-5244438a76a9.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/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-9ac2b374b638.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/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-0d7d60-b5d92aad9108.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-b5f1d7-fd008e5636c7.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-c63e9a-b1f4633cac7f.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-379275813036.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-a4a8a5aca339.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-e1b8d79d7efc.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-14ed8f0f364a.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_github_hydro-analytics-c-2a6094-2f3b5bfd7e3b.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> @@ -76,14 +76,14 @@ <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_-590a09-91fdc8802bfa.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-75c1bcfb5bf5.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-5af0195d8874.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-82bfe789bb2f.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-913d8cc551d2.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-641e2ed302b3.js" defer="defer"></script> -<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-e0009afb39c7.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-6206313cbfca.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-60422ea0562f.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-f5c28dea1388.js" defer="defer"></script> <title>Page not found · GitHub · GitHub</title> @@ -93,13 +93,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:9f57eaa2-4017-933a-c623-1fb2e923987f"> + <meta name="fetch-nonce" content="v2:2103c141-fc61-fdcc-9449-c31e8e0a1d35"> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> - <meta name="request-id" content="80CA:21348F:86ACCA:6E3C2A:68CC3C82" data-pjax-transient="true"/><meta name="html-safe-nonce" content="02b56533e09eb79caff0081e9c94309bbd2d949f8cbc6c2118af1cfde9a53b51" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MENBOjIxMzQ4Rjo4NkFDQ0E6NkUzQzJBOjY4Q0MzQzgyIiwidmlzaXRvcl9pZCI6IjQ2MTExNTE0OTg2MjA3MTQxMTQiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="85f63cd2a77ee16ab215b934c8b8bb2779313fb50a91ba23bb8477fec1e33f64" data-pjax-transient="true"/> + <meta name="request-id" content="94B4:2E8306:13EF1CCB:FEC8155:68D96BC8" data-pjax-transient="true"/><meta name="html-safe-nonce" content="959c46f8b16bf0394eb35aa1abdfe56efb0675dc19b1e7e8fff13a56f79fd14e" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NEI0OjJFODMwNjoxM0VGMUNDQjpGRUM4MTU1OjY4RDk2QkM4IiwidmlzaXRvcl9pZCI6IjcxNTUwNTk2MzU5MDQ5MzI4MDgiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="c7a5e8af8916731043f1e44438c736f095d76dbca61664827ab93738e87a5787" data-pjax-transient="true"/> @@ -175,10 +175,10 @@ <meta name="expected-hostname" content="github.com"> - <meta http-equiv="x-pjax-version" content="ad8bb9e20b26558b390bbaa7f8d115448c7fe08b520aa3b75eabd21f05923724" data-turbo-track="reload"> + <meta http-equiv="x-pjax-version" content="dd202cb24f90d89deaf3e8e69642cdff0d2e68574fad1096fbc499fa8a21ec5e" 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="0bc51a290919c52cc62b3d8b4eed96609edf264f742d0409c975553b0cdc84a8" data-turbo-track="reload"> - <meta http-equiv="x-pjax-js-version" content="56c08ab2d04523fd3ef5229f176ac1f86d092b5e48ba8b126e87f46bceb48f95" data-turbo-track="reload"> + <meta http-equiv="x-pjax-css-version" content="52346ecdf234263f0a160a1d59dfd68544fb261b3a40e29f8f2743954a4f97b7" data-turbo-track="reload"> + <meta http-equiv="x-pjax-js-version" content="d5cda63bc195379679efe760b7e522dbde89536cddd557090ecf546cfc73bcae" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> @@ -202,7 +202,7 @@ <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> - <meta name="release" content="79147b255a4de6477bf167741fd55c0ecccc4105"> + <meta name="release" content="e0ef98b0e06f71cdbe4a6db33cae9e530e42188d"> <meta name="ui-target" content="full"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> @@ -230,7 +230,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.1376d83c759fa3dd6e71.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.ad9424369aeb6fec9e91.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.2de9c7d6456a311fce49.module.css" /> <react-partial @@ -255,7 +255,7 @@ <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-f58d04675ea1.js" defer="defer"></script> +<script crossorigin="anonymous" type="application/javascript" src="https://github.githubassets.com/assets/sessions-ac148cb2a2f3.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> @@ -295,13 +295,13 @@ </a> <div class="AppHeader-appearanceSettings"> <react-partial-anchor> - <button data-target="react-partial-anchor.anchor" id="icon-button-661c7831-f0b1-4e98-8442-e233b1c71026" aria-labelledby="tooltip-a81c5bfc-7b4f-4ab3-a564-2a59abcc1473" 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-7fe22e60-76ad-4f99-9364-b9b39de96283" aria-labelledby="tooltip-b5fdf143-581e-4abe-97cc-ee8c5b3d604e" 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-a81c5bfc-7b4f-4ab3-a564-2a59abcc1473" for="icon-button-661c7831-f0b1-4e98-8442-e233b1c71026" 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-b5fdf143-581e-4abe-97cc-ee8c5b3d604e" for="icon-button-7fe22e60-76ad-4f99-9364-b9b39de96283" 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.1376d83c759fa3dd6e71.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.ad9424369aeb6fec9e91.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.6c63a6de228d6520804d.module.css" /> <react-partial @@ -658,7 +658,13 @@ <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> - + <li> + <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"app_modernization","context":"solutions","tag":"link","label":"app_modernization_link_solutions_navbar"}" href="/solutions/use-case/app-modernization"> + App Modernization + + +</a></li> + <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps @@ -838,12 +844,10 @@ </a></li> <li> - <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> + <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://github.com/partners"> Partners - <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> - <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> -</svg> + </a></li> <li> @@ -1057,7 +1061,7 @@ -<qbsearch-input class="search-input" data-scope="owner:buetow" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="Ir-Xa7XN8bhPcnP_UBy4s3jnmzPG3byOTmzDGnq4V1HVFojAJiquscP45tp5k7PxLiaVvOOIxOKmMMCfKh6QUA" 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="6gvQi4LNMiLzN-b-TqojcrVwFVnxRVnpbE-wE_j7rw3ZRsTHeczNhEA3ToQH-o6P77K9cj_IL7LLIPLlM-P47w" 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" @@ -1121,7 +1125,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-946e0dd9-d0b6-4f35-b719-cd4cb6b45f2c" 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-a90a160d-cc8d-45ca-8af9-2aaf5f80118d" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown @@ -1359,7 +1363,7 @@ tabindex="-1" ></ul> </div> - <div class="FormControl-inlineValidation" id="validation-946e0dd9-d0b6-4f35-b719-cd4cb6b45f2c" hidden="hidden"> + <div class="FormControl-inlineValidation" id="validation-a90a160d-cc8d-45ca-8af9-2aaf5f80118d" 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> @@ -1400,7 +1404,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="9YGYyFZGSsyhDtf2wpS39+xmf2iejz/FnzPCF7w2AybVX6sLYqXK2y2uHVH4IgymWbViVtSKJQPQeFfHuCio9w==" /> + <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="8obFCqlGn2uhC8f2ZrR5lXZhUXMhVOH5JZyi/PN7joAw5rrFFBDEa98xdCzXbUkFs75pADcgO9f0fSFHIyKj4g==" /> <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"> @@ -1438,7 +1442,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="qRnJH9Wt/Hmsl6fxcr0u6LltzwyIiuQ0XEVfW3EaFFmrsEM02OKNH7BkF7VX8onV/mYGsGfYJ91gRg6M8AgNOA==" /> + <!-- '"` --><!-- </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="5wiHo8b/y1jl3ajAAQIaGBfU5piBTXkopnlLIb6lgR29oZb0G/7+M4e7m3ZUEED7DehiccgyiFf2dsBGm9/ULg==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> @@ -1456,7 +1460,7 @@ placeholder="github-ruby" required maxlength="50"> - <input type="hidden" data-csrf="true" value="V5ru9RDKByxuvwzSqIWyW6ka70doTU2e5lNjs31N2cN8eFvgIOqm60yVX9E+dD71u3wDaQ2sUiS92Yd509RDxQ==" /> + <input type="hidden" data-csrf="true" value="ifzyZ8PB5yALokQC/FPo6/7KHnqkKSA+vQl9mempoTCCnBZNGo/j0dNkIeIPo2zBPuTr8+zG7AVu/MhU+BECpg==" /> </auto-check> </div> @@ -1511,7 +1515,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="7zI0wxjU/rCnNtgRM+x1sXmT72XTOxBtoms1jPIjZFoabwoBJCFLcG16qTjhb/o4GHaBvX+9RdCVNzes4v+YDQ==" /> <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="HKglBXMYncSwaDflbX+AfojpeT5SVScSCZgBPhzcbjQ/d+qFOGr0mtUO8zG0MdImk+ExoqQVVxb40obsgew7Mw==" /> <input type="hidden" name="add_account" id="add_account" autocomplete="off" class="form-control" /> <label for="login_field"> Username or email address @@ -1533,9 +1537,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_03cd" hidden="hidden" /> -<input class="form-control" type="hidden" name="timestamp" value="1758215298328" /> -<input class="form-control" type="hidden" name="timestamp_secret" value="413a0b9367a4ca3d6489ead9c2211b9c4dc13bd559635b9fdafd16e926f4b548" /> +<input class="form-control" type="text" name="required_field_2d3b" hidden="hidden" /> +<input class="form-control" type="hidden" name="timestamp" value="1759079368587" /> +<input class="form-control" type="hidden" name="timestamp_secret" value="fbaf5d0b2fa29cb7f4d6f9098e30636d0e8a84a9caf9a1847ac08799dc0fe5d8" /> <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" /> @@ -1562,13 +1566,13 @@ <div class="AppHeader-appearanceSettings"> <react-partial-anchor> - <button data-target="react-partial-anchor.anchor" id="icon-button-e903bcff-12d6-4055-8257-932f1dda8fc9" aria-labelledby="tooltip-e44ac6ea-0089-458b-8740-b394710e1157" 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-7f060f68-4ac2-4d6f-b60f-791fb2417b0a" aria-labelledby="tooltip-e433506d-3e49-4a06-a955-e00932c83341" 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-e44ac6ea-0089-458b-8740-b394710e1157" for="icon-button-e903bcff-12d6-4055-8257-932f1dda8fc9" 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-e433506d-3e49-4a06-a955-e00932c83341" for="icon-button-7f060f68-4ac2-4d6f-b60f-791fb2417b0a" 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.1376d83c759fa3dd6e71.module.css" /> + <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.ad9424369aeb6fec9e91.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/appearance-settings.6c63a6de228d6520804d.module.css" /> <react-partial @@ -1603,10 +1607,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-50a18150-b7d7-4cac-953a-54edc1ede1b8" aria-labelledby="tooltip-02b363dd-387d-4a4e-8bed-e79c6196a154" 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-025d31a7-0de1-4325-a2f3-e7c0f0e2d37e" aria-labelledby="tooltip-8ae1b22d-8520-4766-9365-a3a27433dffd" 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-02b363dd-387d-4a4e-8bed-e79c6196a154" for="icon-button-50a18150-b7d7-4cac-953a-54edc1ede1b8" 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-8ae1b22d-8520-4766-9365-a3a27433dffd" for="icon-button-025d31a7-0de1-4325-a2f3-e7c0f0e2d37e" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> @@ -2082,6 +2086,7 @@ + <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> |
