From d73bcf391dee93f4bf1c11cc017f1bcf3e2a2af3 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 31 Oct 2025 20:27:50 +0200 Subject: Update content for md --- about/resources.md | 202 ++++---- about/showcase.md | 583 +++++++++++------------- about/showcase/debroid/image-1.png | 66 +-- gemfeed/DRAFT-perl-new-features-and-foostats.md | 231 ++++++++-- index.md | 2 +- uptime-stats.md | 36 +- 6 files changed, 623 insertions(+), 497 deletions(-) diff --git a/about/resources.md b/about/resources.md index a6579767..76149ef8 100644 --- a/about/resources.md +++ b/about/resources.md @@ -35,109 +35,109 @@ You won't find any links on this site because, over time, the links will break. In random order: -* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly -* Java ist auch eine Insel; Christian Ullenboom; -* Leanring eBPF; Liz Rice; O'Reilly -* Raku Fundamentals; Moritz Lenz; Apress -* Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers -* Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook -* Systemprogrammierung in Go; Frank Müller; dpunkt -* Site Reliability Engineering; How Google runs production systems; O'Reilly -* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf -* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook -* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson -* The Pragmatic Programmer; David Thomas; Addison-Wesley +* Perl New Features; Joshua McAdams, brian d foy; Perl School * The Docker Book; James Turnbull; Kindle -* Higher Order Perl; Mark Dominus; Morgan Kaufmann -* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional -* Concurrency in Go; Katherine Cox-Buday; O'Reilly +* Data Science at the Command Line; Jeroen Janssens; O'Reilly +* Raku Fundamentals; Moritz Lenz; Apress +* Funktionale Programmierung; Peter Pepper; Springer * Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly -* Pro Puppet; James Turnbull, Jeffrey McCune; Apress -* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly +* Effective awk programming; Arnold Robbins; O'Reilly * Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner -* Data Science at the Command Line; Jeroen Janssens; 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 -* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly -* Developing Games in Java; David Brackeen and others...; New Riders -* Polished Ruby Programming; Jeremy Evans; Packt Publishing * DNS and BIND; Cricket Liu; O'Reilly +* Higher Order Perl; Mark Dominus; Morgan Kaufmann +* Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson * 100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications -* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications -* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly +* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible +* Polished Ruby Programming; Jeremy Evans; Packt Publishing * Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers -* Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press -* Perl New Features; Joshua McAdams, brian d foy; Perl School +* Developing Games in Java; David Brackeen and others...; New Riders +* Concurrency in Go; Katherine Cox-Buday; O'Reilly * 97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly -* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt -* Modern Perl; Chromatic ; Onyx Neon Press +* Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly +* C++ Programming Language; Bjarne Stroustrup; +* Effective Java; Joshua Bloch; Addison-Wesley Professional * Ultimate Go Notebook; Bill Kennedy -* Terraform Cookbook; Mikael Krief; Packt Publishing +* Pro Puppet; James Turnbull, Jeffrey McCune; Apress +* Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly +* Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook +* Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press * Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly +* Leanring eBPF; Liz Rice; O'Reilly +* Site Reliability Engineering; How Google runs production systems; O'Reilly +* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton +* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible +* 21st Century C: C Tips from the New School; Ben Klemens; O'Reilly +* Systemprogrammierung in Go; Frank Müller; dpunkt +* Terraform Cookbook; Mikael Krief; Packt Publishing +* Java ist auch eine Insel; Christian Ullenboom; +* Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly +* Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications +* The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional +* The Kubernetes Book; Nigel Poulton; Unabridged Audiobook +* The Pragmatic Programmer; David Thomas; Addison-Wesley +* Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf +* Modern Perl; Chromatic ; Onyx Neon Press +* Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt * Raku Recipes; J.J. Merelo; Apress -* The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible +* 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 * Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press -* C++ Programming Language; Bjarne Stroustrup; -* DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible -* The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton -* Effective Java; Joshua Bloch; Addison-Wesley Professional -* Funktionale Programmierung; Peter Pepper; Springer -* Effective awk programming; Arnold Robbins; 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: -* Relayd and Httpd Mastery; Michael W Lucas -* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly -* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley +* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley * Implementing Service Level Objectives; Alex Hidalgo; O'Reilly -* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly -* Go: Design Patterns for Real-World Projects; Mat Ryer; Packt * The Linux Programming Interface; Michael Kerrisk; No Starch Press -* Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley +* Go: Design Patterns for Real-World Projects; Mat Ryer; Packt +* BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley +* Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly +* Relayd and Httpd Mastery; Michael W Lucas +* Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly ## Self-development and soft-skills books In random order: -* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook -* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select -* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business -* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook -* Getting Things Done; David Allen * The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook -* So Good They Can't Ignore You; Cal Newport; Business Plus -* 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook -* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press -* Slow Productivity; Cal Newport; Penguin Random House -* Psycho-Cybernetics; Maxwell Maltz; Perigee Books -* Atomic Habits; James Clear; Random House Business -* The Joy of Missing Out; Christina Crook; New Society Publishers -* Meditation for Mortals, Oliver Burkeman, Audiobook -* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME) -* Soft Skills; John Sommez; Manning Publications +* Getting Things Done; David Allen * The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME) -* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK -* Digital Minimalism; Cal Newport; Portofolio Penguin -* Eat That Frog!; Brian Tracy; Hodder Paperbacks +* Atomic Habits; James Clear; Random House Business +* The Bullet Journal Method; Ryder Carroll; Fourth Estate +* The Good Enough Job; Simone Stolzoff; Ebury Edge +* The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook +* Never Split the Difference; Chris Voss, Tahl Raz; Random House Business +* Influence without Authority; A. Cohen, D. Bradford; Wiley +* Slow Productivity; Cal Newport; Penguin Random House +* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing * Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne -* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook +* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly * The Power of Now; Eckhard Tolle; Yellow Kite -* The Bullet Journal Method; Ryder Carroll; Fourth Estate -* Ultralearning; Anna Laurent; Self-published via Amazon * Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion +* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books +* The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook +* The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK +* 101 Essays that change the way you think; Brianna Wiest; Audiobook * Ultralearning; Scott Young; Thorsons -* Stop starting, start finishing; Arne Roock; Lean-Kanban University -* Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing +* Psycho-Cybernetics; Maxwell Maltz; Perigee Books +* Digital Minimalism; Cal Newport; Portofolio Penguin +* The Joy of Missing Out; Christina Crook; New Society Publishers * Deep Work; Cal Newport; Piatkus -* Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly -* The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books -* The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook -* The Good Enough Job; Simone Stolzoff; Ebury Edge +* So Good They Can't Ignore You; Cal Newport; Business Plus +* Stop starting, start finishing; Arne Roock; Lean-Kanban University +* Ultralearning; Anna Laurent; Self-published via Amazon +* Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook +* Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook * The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd +* Solve for Happy; Mo Gawdat (RE-READ 1ST TIME) +* 97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook +* Eat That Frog!; Brian Tracy; Hodder Paperbacks +* Soft Skills; John Sommez; Manning Publications * Eat That Frog; Brian Tracy -* Influence without Authority; A. Cohen, D. Bradford; Wiley -* 101 Essays that change the way you think; Brianna Wiest; Audiobook +* Meditation for Mortals, Oliver Burkeman, Audiobook +* The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select +* Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press [Here are notes of mine for some of the books](../notes/index.md) @@ -145,30 +145,30 @@ In random order: Some of these were in-person with exams; others were online learning lectures only. In random order: -* Ultimate Go Programming; Bill Kennedy; O'Reilly Online -* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online * Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training -* Developing IaC with Terraform (with Live Lessons); O'Reilly Online -* 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) -* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online * Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon +* 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) +* MySQL Deep Dive Workshop; 2-day on-site training * The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online -* F5 Loadbalancers Training; 2-day on-site training; F5, Inc. * AWS Immersion Day; Amazon; 1-day interactive online training +* Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online +* Protocol buffers; O'Reilly Online +* Ultimate Go Programming; Bill Kennedy; O'Reilly Online * Scripting Vim; Damian Conway; O'Reilly Online * Apache Tomcat Best Practises; 3-day on-site training -* Functional programming lecture; Remote University of Hagen +* Developing IaC with Terraform (with Live Lessons); O'Reilly Online * Structure and Interpretation of Computer Programs; Harold Abelson and more...; -* MySQL Deep Dive Workshop; 2-day on-site training -* Protocol buffers; O'Reilly Online +* The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online +* Functional programming lecture; Remote University of Hagen +* F5 Loadbalancers Training; 2-day on-site training; F5, Inc. ## Technical guides These are not whole books, but guides (smaller or larger) which I found very useful. in random order: +* Advanced Bash-Scripting Guide * How CPUs work at https://cpu.land * Raku Guide at https://raku.guide -* Advanced Bash-Scripting Guide ## Podcasts @@ -176,58 +176,58 @@ These are not whole books, but guides (smaller or larger) which I found very use In random order: -* Fork Around And Find Out -* The Pragmatic Engineer Podcast -* The Changelog Podcast(s) +* Maintainable +* Pratical AI * The ProdCast (Google SRE Podcast) +* Wednesday Wisdom * Cup o' Go [Golang] +* Fork Around And Find Out +* Deep Questions with Cal Newport +* Dev Interrupted * Modern Mentor -* Maintainable * BSD Now [BSD] -* Deep Questions with Cal Newport * Fallthrough [Golang] +* The Changelog Podcast(s) +* The Pragmatic Engineer Podcast * Backend Banter -* Wednesday Wisdom * Hidden Brain -* Dev Interrupted -* Pratical AI ### 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. -* Java Pub House -* Modern Mentor * CRE: Chaosradio Express [german] * FLOSS weekly -* Ship It (predecessor of Fork Around And Find Out) +* Modern Mentor * Go Time (predecessor of fallthrough) +* Java Pub House +* Ship It (predecessor of Fork Around And Find Out) ## Newsletters I like This is a mix of tech and non-tech newsletters I am subscribed to. In random order: -* byteSizeGo -* The Imperfectionist -* Golang Weekly +* VK Newsletter +* The Valuable Dev * Monospace Mentor +* Applied Go Weekly Newsletter * The Pragmatic Engineer -* The Valuable Dev -* Andreas Brandhorst Newsletter (Sci-Fi author) +* Golang Weekly * Ruby Weekly * Register Spill -* Applied Go Weekly Newsletter +* byteSizeGo * Changelog News -* VK Newsletter +* Andreas Brandhorst Newsletter (Sci-Fi author) +* The Imperfectionist ## 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: -* Linux User -* LWN (online only) * freeX (not published anymore) * Linux Magazine +* Linux User +* LWN (online only) # Formal education diff --git a/about/showcase.md b/about/showcase.md index 9199ac4e..3c0904a6 100644 --- a/about/showcase.md +++ b/about/showcase.md @@ -1,6 +1,6 @@ # Project Showcase -Generated on: 2025-10-24 +Generated on: 2025-10-31 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. @@ -10,9 +10,9 @@ This page showcases my side projects, providing an overview of what each project * [⇢ ⇢ Overall Statistics](#overall-statistics) * [⇢ ⇢ Projects](#projects) * [⇢ ⇢ ⇢ yoga](#yoga) -* [⇢ Yoga](#yoga) * [⇢ ⇢ ⇢ conf](#conf) * [⇢ ⇢ ⇢ hexai](#hexai) +* [⇢ ⇢ ⇢ foo.zone](#foozone) * [⇢ ⇢ ⇢ foostats](#foostats) * [⇢ ⇢ ⇢ gitsyncer](#gitsyncer) * [⇢ ⇢ ⇢ totalrecall](#totalrecall) @@ -26,20 +26,19 @@ This page showcases my side projects, providing an overview of what each project * [⇢ ⇢ ⇢ sillybench](#sillybench) * [⇢ ⇢ ⇢ rcm](#rcm) * [⇢ ⇢ ⇢ gemtexter](#gemtexter) +* [⇢ ⇢ ⇢ gogios](#gogios) * [⇢ ⇢ ⇢ quicklogger](#quicklogger) * [⇢ ⇢ ⇢ docker-radicale-server](#docker-radicale-server) * [⇢ ⇢ ⇢ terraform](#terraform) -* [⇢ ⇢ ⇢ gogios](#gogios) * [⇢ ⇢ ⇢ gorum](#gorum) * [⇢ ⇢ ⇢ guprecords](#guprecords) * [⇢ ⇢ ⇢ randomjournalpage](#randomjournalpage) * [⇢ ⇢ ⇢ sway-autorotate](#sway-autorotate) +* [⇢ ⇢ ⇢ photoalbum](#photoalbum) * [⇢ ⇢ ⇢ geheim](#geheim) * [⇢ ⇢ ⇢ algorithms](#algorithms) -* [⇢ ⇢ ⇢ foo.zone](#foozone) * [⇢ ⇢ ⇢ perl-c-fibonacci](#perl-c-fibonacci) * [⇢ ⇢ ⇢ ioriot](#ioriot) -* [⇢ ⇢ ⇢ photoalbum](#photoalbum) * [⇢ ⇢ ⇢ staticfarm-apache-handlers](#staticfarm-apache-handlers) * [⇢ ⇢ ⇢ dyndns](#dyndns) * [⇢ ⇢ ⇢ mon](#mon) @@ -61,8 +60,8 @@ This page showcases my side projects, providing an overview of what each project * [⇢ ⇢ ⇢ perldaemon](#perldaemon) * [⇢ ⇢ ⇢ awksite](#awksite) * [⇢ ⇢ ⇢ jsmstrade](#jsmstrade) -* [⇢ ⇢ ⇢ netcalendar](#netcalendar) * [⇢ ⇢ ⇢ ychat](#ychat) +* [⇢ ⇢ ⇢ netcalendar](#netcalendar) * [⇢ ⇢ ⇢ hsbot](#hsbot) * [⇢ ⇢ ⇢ fype](#fype) * [⇢ ⇢ ⇢ vs-sim](#vs-sim) @@ -70,11 +69,11 @@ This page showcases my side projects, providing an overview of what each project ## Overall Statistics * 📦 Total Projects: 56 -* 📊 Total Commits: 11,247 -* 📈 Total Lines of Code: 211,790 -* 📄 Total Lines of Documentation: 23,887 -* 💻 Languages: Go (40.3%), Java (19.1%), C (9.6%), Perl (7.6%), HTML (5.2%), C/C++ (3.9%), Shell (3.3%), C++ (2.4%), Config (1.4%), Ruby (1.3%), HCL (1.3%), YAML (0.9%), Python (0.8%), Make (0.7%), CSS (0.6%), Raku (0.4%), JSON (0.4%), XML (0.3%), Haskell (0.3%), TOML (0.1%) -* 📚 Documentation: Text (50.2%), Markdown (47.7%), LaTeX (2.1%) +* 📊 Total Commits: 11,284 +* 📈 Total Lines of Code: 276,238 +* 📄 Total Lines of Documentation: 53,986 +* 💻 Languages: Go (31.0%), Java (14.6%), C++ (13.5%), Shell (7.7%), C/C++ (7.5%), C (7.3%), Perl (6.4%), HTML (4.6%), Config (1.7%), Ruby (1.0%), HCL (1.0%), YAML (0.7%), Make (0.7%), Python (0.6%), CSS (0.5%), Raku (0.3%), JSON (0.3%), XML (0.2%), Haskell (0.2%), TOML (0.1%) +* 📚 Documentation: Markdown (76.6%), Text (22.4%), LaTeX (0.9%) * 🎵 Vibe-Coded Projects: 4 out of 56 (7.1%) * 🤖 AI-Assisted Projects (including vibe-coded): 10 out of 56 (17.9% AI-assisted, 82.1% human-only) * 🚀 Release Status: 36 released, 20 experimental (64.3% with releases, 35.7% experimental) @@ -85,19 +84,21 @@ This page showcases my side projects, providing an overview of what each project * 💻 Languages: Go (100.0%) * 📚 Documentation: Markdown (100.0%) -* 📊 Commits: 11 -* 📈 Lines of Code: 3376 +* 📊 Commits: 12 +* 📈 Lines of Code: 3408 * 📄 Lines of Documentation: 82 -* 📅 Development Period: 2025-10-01 to 2025-10-12 -* 🔥 Recent Activity: 18.3 days (avg. age of last 42 commits) +* 📅 Development Period: 2025-10-01 to 2025-10-24 +* 🔥 Recent Activity: 24.2 days (avg. age of last 42 commits) * ⚖️ License: No license found -* 🏷️ Latest Release: v0.2.5 (2025-10-12) +* 🏷️ Latest Release: v0.3.0 (2025-10-24) * 🤖 AI-Assisted: This project was partially created with the help of generative AI [![yoga screenshot](showcase/yoga/image-1.png "yoga screenshot")](showcase/yoga/image-1.png) -# Yoga +Yoga is a terminal-based video browser designed for managing and playing local yoga video collections. It scans a directory (defaulting to `~/Yoga`) for common video formats, probes and caches their durations, and provides a keyboard-driven interface for quickly filtering videos by name, duration range, or tags. Users can sort by name, length, or age, and launch videos directly in VLC with optional crop settings—all without leaving the terminal. The tool is optimized for quick navigation and playback, making it easy to find and start a specific practice session in seconds. + +The project is implemented in Go with a TUI interface, organized around a clean `cmd/yoga` entry point that wires together internal packages for filesystem operations (`internal/fsutil`), metadata caching (`internal/meta`), and UI flow (`internal/app`). Video metadata is persisted in `.video_duration_cache.json` files to avoid re-probing on every launch. Development uses Mage for build tasks, enforces ≥85% test coverage, and follows standard Go idioms with `gofumpt` formatting. [View on Codeberg](https://codeberg.org/snonux/yoga) [View on GitHub](https://github.com/snonux/yoga) @@ -106,19 +107,20 @@ This page showcases my side projects, providing an overview of what each project ### conf -* 💻 Languages: Perl (30.9%), YAML (24.4%), Shell (22.8%), Config (5.4%), CSS (5.3%), TOML (4.7%), Ruby (4.1%), Lua (1.1%), Docker (0.6%), JSON (0.5%) -* 📚 Documentation: Text (69.1%), Markdown (30.9%) -* 📊 Commits: 1018 -* 📈 Lines of Code: 6185 -* 📄 Lines of Documentation: 1445 -* 📅 Development Period: 2021-12-28 to 2025-10-22 -* 🔥 Recent Activity: 25.6 days (avg. age of last 42 commits) +* 💻 Languages: Perl (30.5%), YAML (25.3%), Shell (22.5%), Config (5.4%), CSS (5.2%), TOML (4.7%), Ruby (4.0%), Lua (1.1%), Docker (0.6%), JSON (0.5%) +* 📚 Documentation: Text (69.4%), Markdown (30.6%) +* 📊 Commits: 1026 +* 📈 Lines of Code: 6262 +* 📄 Lines of Documentation: 1440 +* 📅 Development Period: 2021-12-28 to 2025-10-31 +* 🔥 Recent Activity: 24.4 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) -conf -==== +This is a personal configuration management repository that centralizes infrastructure and application configurations across multiple environments. It serves as a single source of truth for system administration tasks, dotfiles, Docker deployments, and Kubernetes/Helm manifests, making it easier to maintain consistency across machines and deploy self-hosted services. + +The project is organized into distinct subdirectories: `dotfiles/` contains shell configurations (bash, fish), editor settings (helix, nvim), and window manager configs (sway, waybar); `f3s/` houses Kubernetes/Helm manifests for various self-hosted applications like Miniflux, FreshRSS, and Syncthing; `babylon5/` includes Docker startup scripts for services like Nextcloud, Vaultwarden, and Audiobookshelf; and `frontends/` and `playground/` for additional configurations. The repository uses Rex (a Perl-based deployment tool) as its automation framework, with a top-level Rexfile that includes subdirectory Rexfiles for modular task execution. [View on Codeberg](https://codeberg.org/snonux/conf) [View on GitHub](https://github.com/snonux/conf) @@ -133,7 +135,7 @@ conf * 📈 Lines of Code: 26565 * 📄 Lines of Documentation: 564 * 📅 Development Period: 2025-08-01 to 2025-10-04 -* 🔥 Recent Activity: 31.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 38.6 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🏷️ Latest Release: v0.15.1 (2025-10-03) * 🤖 AI-Assisted: This project was partially created with the help of generative AI @@ -141,15 +143,36 @@ conf [![hexai screenshot](showcase/hexai/image-1.png "hexai screenshot")](showcase/hexai/image-1.png) -Hexai is an AI-powered extension designed to enhance the Helix Editor by integrating advanced code assistance features through Language Server Protocol (LSP) and large language models (LLMs). Its core capabilities include LSP-based code auto-completion, code actions, and an in-editor chat interface that allows users to interact directly with AI models for coding help and suggestions. Additionally, Hexai provides a standalone command-line tool for interacting with LLMs outside the editor. It supports multiple AI backends, including OpenAI, GitHub Copilot, and Ollama, making it flexible for various user preferences and workflows. +Hexai is a Go-based AI integration tool designed primarily for the Helix editor that provides LSP (Language Server Protocol) powered AI features. It offers code auto-completion, AI-driven code actions, in-editor chat with LLMs, and a standalone CLI tool for direct LLM interaction. A standout feature is its ability to query multiple AI providers (OpenAI, OpenRouter, GitHub Copilot, Ollama) in parallel, allowing developers to compare responses side-by-side. It has enhanced capabilities for Go code understanding, such as generating unit tests from functions, while supporting other programming languages as well. -The project is implemented primarily in Go and uses Mage as its build and task automation tool. The architecture consists of two main binaries: one for general LLM interaction and another for LSP integration with the editor. Hexai communicates with LLM providers via their APIs, relaying code context and user queries to generate intelligent responses or code completions. The modular design allows for easy configuration and extension, and while it is tailored for Helix, it may work with other editors that support LSP. This makes Hexai a valuable tool for developers seeking AI-assisted productivity directly within their coding environment. +The project is implemented as an LSP server written in Go, with a TUI component built using Bubble Tea for the tmux-based code action runner (`hexai-tmux-action`). This architecture allows it to integrate seamlessly into LSP-compatible editors, with special focus on Helix + tmux workflows. The custom prompt feature lets developers use their preferred editor to craft prompts, making it flexible for various development workflows. [View on Codeberg](https://codeberg.org/snonux/hexai) [View on GitHub](https://github.com/snonux/hexai) --- +### foo.zone + +* 💻 Languages: Shell (74.7%), Go (24.9%), YAML (0.4%) +* 📚 Documentation: Markdown (99.5%), Text (0.5%) +* 📊 Commits: 3167 +* 📈 Lines of Code: 253 +* 📄 Lines of Documentation: 30185 +* 📅 Development Period: 2021-04-29 to 2025-10-29 +* 🔥 Recent Activity: 48.7 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 + + +foo.zone: source code repository. + +[View on Codeberg](https://codeberg.org/snonux/foo.zone) +[View on GitHub](https://github.com/snonux/foo.zone) + +--- + ### foostats * 💻 Languages: Perl (100.0%) @@ -158,14 +181,14 @@ The project is implemented primarily in Go and uses Mage as its build and task a * 📈 Lines of Code: 1902 * 📄 Lines of Documentation: 421 * 📅 Development Period: 2023-01-02 to 2025-10-21 -* 🔥 Recent Activity: 66.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 73.5 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v0.2.0 (2025-10-21) -**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. +**foostats** is a privacy-respecting web analytics tool designed for OpenBSD that processes both traditional HTTP/HTTPS server logs and Gemini protocol logs to generate anonymous site statistics. It immediately hashes all IP addresses using SHA3-512 before storage, ensuring no personal information is retained while still providing meaningful traffic insights. The tool supports distributed deployments with node-to-node replication, filters out suspicious requests based on configurable patterns, and generates comprehensive daily and monthly reports in both Gemtext and HTML formats. It's particularly useful for privacy-conscious site operators who need traffic analytics without compromising visitor anonymity. -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. +The implementation uses a modular Perl architecture with specialized components: **Logreader** parses logs from httpd and Gemini servers (vger/relayd), **Filter** blocks suspicious patterns, **Aggregator** compiles statistics, **Replicator** synchronizes data between partner nodes, and **Reporter** generates human-readable reports. Statistics are stored as compressed JSON files, supporting both IPv4 and IPv6, with built-in feed analytics for tracking Atom/RSS and Gemfeed subscribers. The tool is designed specifically for the foo.zone ecosystem but can be adapted for any OpenBSD-based hosting environment requiring privacy-first analytics. [View on Codeberg](https://codeberg.org/snonux/foostats) [View on GitHub](https://github.com/snonux/foostats) @@ -180,15 +203,15 @@ Architecturally, foostats is modular, with components for log parsing, filtering * 📈 Lines of Code: 10036 * 📄 Lines of Documentation: 2433 * 📅 Development Period: 2025-06-23 to 2025-09-08 -* 🔥 Recent Activity: 91.0 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 98.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 -**GitSyncer** is an automation tool designed to synchronize git repositories across multiple organizations and hosting platforms, such as GitHub, Codeberg, and private SSH servers. Its primary purpose is to keep all branches and tags in sync between these platforms, ensuring that codebases remain consistent and up-to-date everywhere. GitSyncer is especially useful for developers and teams managing projects across different git hosts, providing features like automatic branch and repository creation, one-way backups to offline or private servers, and robust error handling for merge conflicts and missing resources. It also includes advanced capabilities like AI-powered project showcase generation, batch synchronization for automation, and flexible configuration for branch exclusions and backup strategies. +GitSyncer is a Go-based CLI tool that automatically synchronizes git repositories across multiple hosting platforms (GitHub, Codeberg, SSH servers). It maintains all branches in sync bidirectionally, never deleting branches but automatically creating and updating them as needed. The tool excels at providing repository redundancy and backup, with special support for one-way SSH backups to private servers (like home NAS devices) that may be offline intermittently. It includes AI-powered features for generating release notes and project showcase documentation, plus automated weekly batch synchronization for hands-off maintenance. -The tool is implemented as a modern CLI application in Go, with a modular, command-based architecture. Users configure organizations, repositories, and backup locations via a JSON file, and interact with GitSyncer through intuitive commands (e.g., `gitsyncer sync`, `gitsyncer release create`). Under the hood, GitSyncer clones repositories, adds all remotes, fetches and merges branches, and pushes updates to all destinations, handling repository and branch creation as needed. SSH backup locations are supported for one-way, opt-in backups, with automatic bare repo initialization. The AI-powered showcase feature analyzes repositories and uses Claude or other AI tools to generate comprehensive project summaries and statistics. The architecture emphasizes automation, safety (never deleting branches), and extensibility, making GitSyncer a powerful solution for multi-platform git management and backup. +The implementation uses a git remotes approach: it clones from one organization, adds others as remotes, then fetches, merges, and pushes changes across all configured locations. Built with a modern command-based structure (using Cobra), it offers fine-grained control through subcommands for syncing (individual repos, all repos, platform-specific, bidirectional), release management, testing, and repository management. Key architectural features include merge conflict detection, regex-based branch exclusion, automatic repository creation on both web platforms and SSH servers, configurable backup locations with opt-in syncing, and integration with multiple AI tools (hexai, claude, aichat) for intelligent release note generation. [View on Codeberg](https://codeberg.org/snonux/gitsyncer) [View on GitHub](https://github.com/snonux/gitsyncer) @@ -203,7 +226,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: 93.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 101.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 @@ -211,13 +234,11 @@ The tool is implemented as a modern CLI application in Go, with a modular, comma [![totalrecall screenshot](showcase/totalrecall/image-1.png "totalrecall screenshot")](showcase/totalrecall/image-1.png) -**Summary of totalrecall - Bulgarian Anki Flashcard Generator** +TotalRecall is a Go-based tool that generates comprehensive Anki flashcard materials for Bulgarian language learning. It creates high-quality audio pronunciations using OpenAI TTS (with 11 voice options), AI-generated contextual images via DALL-E, IPA phonetic transcriptions, and automatic Bulgarian-English translations. The tool supports both single-word and batch processing, making it efficient for building large vocabulary decks. It outputs Anki-compatible packages (APKG) with all media files bundled, ready for immediate import. [![totalrecall screenshot](showcase/totalrecall/image-2.png "totalrecall screenshot")](showcase/totalrecall/image-2.png) -`totalrecall` is a specialized tool designed to streamline the creation of Anki flashcards for Bulgarian vocabulary learners. It automates the generation of high-quality study materials—including audio pronunciations, AI-generated contextual images, phonetic transcriptions (IPA), and translations—by leveraging OpenAI’s TTS and DALL-E APIs. The tool supports both a fast, keyboard-driven graphical user interface (GUI) and a flexible command-line interface (CLI), making it accessible for users with different preferences. Key features include batch processing of word lists, randomization of voices and art styles for variety, and seamless export to Anki-compatible formats (APKG and CSV), ensuring that learners can quickly build rich, multimedia flashcard decks. - -Architecturally, totalrecall is implemented in Go and integrates with OpenAI services via API keys for audio and image generation. It processes input in various formats, automatically handling translation and media generation as needed. Output files—including MP3s, images, and Anki packages—are organized in a user’s local state directory, with configuration options for customization. The project’s modular design allows for easy installation, desktop integration (especially on GNOME/Fedora), and extensibility. By automating the most time-consuming aspects of flashcard creation and enhancing cards with multimedia and phonetic data, totalrecall significantly improves the efficiency and quality of language learning for Bulgarian. +The project offers both a keyboard-driven GUI for interactive use and a CLI for automation, built with Go using the Cobra framework for command handling. It leverages OpenAI's APIs for both audio synthesis and image generation, creating memorable visual contexts with random art styles to enhance retention. The architecture follows clean Go package structure with separate internal packages for audio, image, config, and Anki format generation, making it maintainable and extensible for future enhancements. [View on Codeberg](https://codeberg.org/snonux/totalrecall) [View on GitHub](https://github.com/snonux/totalrecall) @@ -232,17 +253,15 @@ Architecturally, totalrecall is implemented in Go and integrates with OpenAI ser * 📈 Lines of Code: 931 * 📄 Lines of Documentation: 81 * 📅 Development Period: 2025-06-25 to 2025-10-18 -* 🔥 Recent Activity: 95.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 103.3 days (avg. age of last 42 commits) * ⚖️ License: BSD-2-Clause * 🏷️ Latest Release: v0.2.0 (2025-10-18) * 🎵 Vibe-Coded: This project has been vibe coded -**Summary of the `timr` Project** - -`timr` is a lightweight, command-line time tracking tool designed to help users monitor the time they spend on tasks directly from their terminal. Its core functionality revolves around simple commands to start, stop, pause, reset, and check the status of a stopwatch-style timer, making it ideal for developers, freelancers, or anyone who prefers a minimalist workflow without the overhead of complex time-tracking applications. The tool also offers a live, full-screen timer mode with keyboard controls and can display the timer status in real-time within the fish shell prompt, enhancing productivity by keeping time tracking seamlessly integrated into the user's environment. +`timr` is a minimalist command-line stopwatch timer written in Go that helps developers track time spent on tasks. It provides a persistent timer that saves state to disk, allowing you to start, stop, pause, and resume time tracking across terminal sessions. The tool supports multiple viewing modes including a standard status display (with formatted or raw output in seconds/minutes), a live full-screen view with keyboard controls, and specialized output for shell prompt integration. -From an architectural standpoint, `timr` is implemented in Go, ensuring cross-platform compatibility and efficient performance. The timer's state is persistently stored on the user's system, allowing for accurate tracking even across sessions. The command structure is straightforward, with subcommands for each primary action (`start`, `stop`, `status`, etc.), and the project includes shell integration scripts for fish to display timer status in the prompt. This combination of simplicity, persistence, and shell integration makes `timr` a practical and unobtrusive solution for time management at the command line. +The architecture is straightforward: it's a Go-based CLI application that persists timer state to the filesystem, enabling continuous tracking even when the program isn't actively running. Key features include basic timer controls (start/stop/continue/reset), flexible status reporting formats for automation, and fish shell integration that displays a color-coded timer icon and elapsed time directly in your prompt—making it effortless to keep track of how long you've been working without context switching. [View on Codeberg](https://codeberg.org/snonux/timr) [View on GitHub](https://github.com/snonux/timr) @@ -257,7 +276,7 @@ From an architectural standpoint, `timr` is implemented in Go, ensuring cross-pl * 📈 Lines of Code: 6168 * 📄 Lines of Documentation: 162 * 📅 Development Period: 2025-06-19 to 2025-10-05 -* 🔥 Recent Activity: 117.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 124.6 days (avg. age of last 42 commits) * ⚖️ License: BSD-2-Clause * 🏷️ Latest Release: v0.9.3 (2025-10-05) * 🎵 Vibe-Coded: This project has been vibe coded @@ -265,11 +284,11 @@ From an architectural standpoint, `timr` is implemented in Go, ensuring cross-pl [![tasksamurai screenshot](showcase/tasksamurai/image-1.png "tasksamurai screenshot")](showcase/tasksamurai/image-1.png) -**Task Samurai** is a fast, keyboard-driven terminal interface for [Taskwarrior](https://taskwarrior.org/), designed to streamline task management directly from the command line. Built in Go using the [Bubble Tea](https://github.com/charmbracelet/bubbletea) TUI framework, it displays tasks in an interactive table and allows users to add, modify, and complete tasks efficiently using intuitive hotkeys. The interface is optimized for speed and responsiveness, offering a modern alternative to other Taskwarrior UIs like `vit`. +**Task Samurai** is a fast, keyboard-driven terminal UI for Taskwarrior built in Go using the Bubble Tea framework. It displays your Taskwarrior tasks in an interactive table where you can manage them entirely through hotkeys—adding, starting, completing, and annotating tasks without touching the mouse. It supports all Taskwarrior filters as command-line arguments, allowing you to start with focused views like `tasksamurai +tag status:pending` or `tasksamurai project:work due:today`. [![tasksamurai screenshot](showcase/tasksamurai/image-2.png "tasksamurai screenshot")](showcase/tasksamurai/image-2.png) -The core architecture leverages the Bubble Tea framework for rendering the terminal UI, while all task operations are performed by invoking the native `task` command-line tool. Each user action—such as adding or completing a task—triggers the corresponding Taskwarrior command, and the UI refreshes automatically to reflect changes. Key features include hotkey-driven task management, real-time updates, and support for all Taskwarrior filters and queries. Optional features like "disco mode" add visual flair by changing the theme after each task modification. Installation is straightforward via Go tooling, and the project is particularly useful for users who want a fast, fully keyboard-controlled Taskwarrior experience in the terminal. +Under the hood, Task Samurai acts as a front-end wrapper that invokes the native `task` command to read and modify tasks, ensuring compatibility with your existing Taskwarrior setup. The UI automatically refreshes after each action to keep the table current. It was created as an experiment in agentic coding and as a faster alternative to Python-based tools like vit, leveraging Go's performance and the Bubble Tea framework's efficient terminal rendering. The project even includes a "disco mode" flag that cycles through themes for a more playful experience. [View on Codeberg](https://codeberg.org/snonux/tasksamurai) [View on GitHub](https://github.com/snonux/tasksamurai) @@ -284,7 +303,7 @@ The core architecture leverages the Bubble Tea framework for rendering the termi * 📈 Lines of Code: 13072 * 📄 Lines of Documentation: 680 * 📅 Development Period: 2024-01-18 to 2025-10-09 -* 🔥 Recent Activity: 132.2 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 139.7 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 @@ -292,11 +311,11 @@ The core architecture leverages the Bubble Tea framework for rendering the termi [![ior screenshot](showcase/ior/image-1.png "ior screenshot")](showcase/ior/image-1.png) -**I/O Riot NG (ior)** is a Linux-based tool designed to trace and analyze synchronous I/O system calls using BPF (Berkeley Packet Filter) technology. Its primary function is to monitor how long each synchronous I/O syscall takes, providing detailed timing information that can be visualized as flamegraphs. These flamegraphs help developers and system administrators identify performance bottlenecks in I/O operations, making it easier to optimize applications and systems. +I/O Riot NG is a Linux-only performance analysis tool that uses BPF (Berkeley Packet Filter) to trace synchronous I/O syscalls and measure their execution time. It captures stack traces during I/O operations and generates compressed output in a format compatible with Inferno FlameGraphs, allowing developers to visually identify performance bottlenecks caused by blocking I/O calls. This makes it particularly useful for diagnosing latency issues in applications where I/O operations are suspected of causing performance degradation. [![ior screenshot](showcase/ior/image-2.svg "ior screenshot")](showcase/ior/image-2.svg) -The project is implemented using a combination of Go, C, and BPF, leveraging the `libbpfgo` library to interface with BPF from Go. Unlike its predecessor (which used SystemTap and C), I/O Riot NG offers a more modern and flexible architecture. The tool captures syscall events at the kernel level, processes the timing data in user space, and outputs results suitable for visualization with tools like Inferno Flamegraphs. Its architecture consists of BPF programs for efficient kernel tracing, a Go-based user-space component for data aggregation, and integration with third-party visualization tools. This makes I/O Riot NG a powerful and extensible solution for low-overhead, high-resolution I/O performance analysis on Linux systems. +The tool is implemented in Go and C, leveraging libbpfgo for BPF interaction. It automatically generates BPF tracepoint handlers and Go type definitions from Linux kernel tracepoint data, attaches to syscall entry/exit points, and collects timing data with minimal overhead. The project is a modern successor to the original I/O Riot (which used SystemTap), offering better performance and easier deployment through BPF's built-in kernel support. [View on Codeberg](https://codeberg.org/snonux/ior) [View on GitHub](https://github.com/snonux/ior) @@ -311,18 +330,18 @@ The project is implemented using a combination of Go, C, and BPF, leveraging the * 📈 Lines of Code: 4102 * 📄 Lines of Documentation: 357 * 📅 Development Period: 2024-05-04 to 2025-09-24 -* 🔥 Recent Activity: 155.5 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 163.0 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.2.0 (2025-09-24) [![gos screenshot](showcase/gos/image-1.png "gos screenshot")](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. +Gos is a command-line social media scheduling tool written in Go that serves as a self-hosted replacement for Buffer.com. It enables users to schedule and post messages to Mastodon and LinkedIn (plus a "Noop" pseudo-platform for tracking) through a simple file-based queueing system. Messages are created as text files in a designated directory (`~/.gosdir`), with optional tags embedded in filenames or content to control platform targeting, priority, and scheduling behavior. The tool addresses limitations of commercial services by offering unlimited posts, a scriptable CLI interface, and full user control without unwanted features like AI assistants. [![gos screenshot](showcase/gos/image-2.png "gos screenshot")](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. +The implementation uses OAuth2 for LinkedIn authentication, stores configuration as JSON, and manages posts through a platform-specific database structure. Gos employs intelligent scheduling based on configurable weekly targets, lookback windows, pause periods between posts, and run intervals to prevent over-posting. It supports priority queuing, platform exclusion rules, dry-run testing, and can generate Gemini gemtext summaries of posted content. Built with Mage for automation, the tool integrates seamlessly into shell workflows and can be triggered on intervals to maintain a consistent posting cadence across platforms. [View on Codeberg](https://codeberg.org/snonux/gos) [View on GitHub](https://github.com/snonux/gos) @@ -337,7 +356,7 @@ The project is implemented using a combination of Go, C, and BPF, leveraging the * 📈 Lines of Code: 20091 * 📄 Lines of Documentation: 5674 * 📅 Development Period: 2020-01-09 to 2025-06-20 -* 🔥 Recent Activity: 159.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 166.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 @@ -345,11 +364,11 @@ The project is implemented using a combination of Go, C, and BPF, leveraging the [![dtail screenshot](showcase/dtail/image-1.png "dtail screenshot")](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. +DTail is a distributed DevOps tool written in Go that enables engineers to tail, cat, and grep log files across thousands of servers simultaneously. It supports compressed logs (gzip and zstd) and includes advanced features like distributed MapReduce aggregations for log analysis at scale. The tool uses SSH for secure, encrypted communication and respects standard UNIX filesystem permissions and ACLs. [![dtail screenshot](showcase/dtail/image-2.gif "dtail screenshot")](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. +The architecture follows a client-server model where DTail servers run on target machines and a single DTail client (typically from a developer's laptop) connects to them concurrently, scaling to thousands of servers per session. It can also operate in a serverless mode. This design makes it particularly useful for troubleshooting and monitoring distributed systems, where engineers need to correlate logs across multiple machines in real-time without manually SSH-ing into each server individually. [View on Codeberg](https://codeberg.org/snonux/dtail) [View on GitHub](https://github.com/snonux/dtail) @@ -364,14 +383,14 @@ The architecture consists of a client-server model: DTail servers run on each ta * 📈 Lines of Code: 396 * 📄 Lines of Documentation: 24 * 📅 Development Period: 2025-04-18 to 2025-05-11 -* 🔥 Recent Activity: 178.4 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 185.9 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🏷️ Latest Release: v1.0.0 (2025-05-11) -The **WireGuard Mesh Generator** is a tool designed to automate the creation and deployment of WireGuard VPN configurations for a network of machines, forming a secure mesh network. This is particularly useful for system administrators or DevOps engineers who need to connect multiple servers or nodes (for example, in a Kubernetes cluster) with encrypted, peer-to-peer tunnels, ensuring secure and private communication across potentially untrusted networks. +WireGuard Mesh Generator is a Ruby-based automation tool that creates and manages full-mesh VPN configurations for WireGuard across heterogeneous hosts (Linux, FreeBSD, OpenBSD). It eliminates manual configuration by automatically generating unique keypairs, preshared keys, and peer configurations for each host, handling OS-specific differences in config paths, privilege escalation commands, and service reload mechanisms. -The project is implemented using Ruby, with tasks managed via Rake, and configuration defined in a YAML file (`wireguardmeshgenerator.yaml`). Key features include automated generation of WireGuard configuration files (`rake generate`), streamlined installation of these files to remote machines (`rake install`), and easy cleanup of generated artifacts (`rake clean`). The architecture leverages WireGuard’s lightweight VPN capabilities and Ruby’s scripting power to simplify and standardize the setup of complex mesh VPN topologies, reducing manual errors and saving time in multi-node deployments. +The tool reads host definitions from a YAML file specifying network interfaces (LAN/internet/WireGuard), SSH details, and OS types. It intelligently determines optimal peer connections—using LAN IPs when both hosts are local, public IPs when available, or marking peers as "behind NAT" when direct connection isn't possible—and applies persistent keepalive only for LAN-to-internet tunnels. The three-stage workflow (generate keys/configs → upload via SCP → install and reload via SSH) enables zero-touch deployment of a complete mesh network where every node can communicate securely with every other node. [View on Codeberg](https://codeberg.org/snonux/wireguardmeshgenerator) [View on GitHub](https://github.com/snonux/wireguardmeshgenerator) @@ -386,7 +405,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: 191.8 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 199.3 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 @@ -394,9 +413,9 @@ The project is implemented using Ruby, with tasks managed via Rake, and configur [![ds-sim screenshot](showcase/ds-sim/image-1.png "ds-sim screenshot")](showcase/ds-sim/image-1.png) -DS-Sim is an open-source Java-based simulator designed for modeling and experimenting with distributed systems. It provides a robust environment for simulating distributed protocols, handling events, and visualizing system behavior through an interactive Swing GUI. Key features include support for simulating core distributed algorithms (such as Lamport clocks, vector clocks, PingPong, Two-Phase Commit, and Berkeley Time), comprehensive event handling, and detailed logging. DS-Sim is particularly useful for students, educators, and developers who want to learn about or prototype distributed systems concepts in a controlled, observable setting. +DS-Sim is an open-source distributed systems simulator built in Java that provides an interactive environment for learning and experimenting with distributed systems concepts. It enables users to simulate various distributed protocols (like Two-Phase Commit, Berkeley Time synchronization, and PingPong), visualize event flows, and understand fundamental concepts like Lamport and Vector clocks through a graphical Swing-based interface. The simulator is particularly useful for students, educators, and developers who want to understand how distributed algorithms behave without the complexity of setting up actual distributed infrastructure. -Architecturally, DS-Sim is organized into modular components: core process and message handling, an extensible event system, protocol implementations, and a main simulation engine. The project uses Maven for build automation and dependency management, and includes a thorough suite of unit tests and a dedicated protocol simulation testing framework. Users can quickly build and run the simulator via Maven commands, and the project structure is well-documented to support both usage and extension. This modular, test-driven approach makes DS-Sim both a practical teaching tool and a flexible platform for distributed systems research and development. +The implementation follows a modular Java architecture with clear separation between core components (process and message handling), the event system, protocol implementations, and the simulation engine. Built on Java 21 and Maven, it includes comprehensive unit testing (141 tests), extensive logging capabilities, and a protocol testing framework. The project structure allows developers to easily extend the simulator by creating new protocols and custom events, making it both a learning tool and a platform for experimenting with distributed systems algorithms. [View on Codeberg](https://codeberg.org/snonux/ds-sim) [View on GitHub](https://github.com/snonux/ds-sim) @@ -411,14 +430,14 @@ 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: 204.4 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 211.9 days (avg. age of last 42 commits) * ⚖️ License: No license found * 🧪 Status: Experimental (no releases yet) -The **Silly Benchmark** project is a simple benchmarking tool designed to compare the performance of code execution between a native FreeBSD system and a Linux virtual machine running under Bhyve (the FreeBSD hypervisor). Its primary purpose is to provide a straightforward, reproducible way to measure and contrast the computational speed or efficiency of these two environments. This can help users or system administrators understand the performance impact of virtualization and the differences between operating systems when running the same workload. +**Silly Benchmark** is a minimal Go-based performance benchmarking tool designed to compare CPU performance between FreeBSD and Linux Bhyve VM environments. It provides two simple CPU-intensive benchmark tests: one that performs repeated integer multiplication operations (`BenchmarkCPUSilly1`) and another that executes floating-point arithmetic sequences including addition, multiplication, and division (`BenchmarkCPUSilly2`). -Implementation-wise, the project likely consists of a small, easily portable program—often written in C or a scripting language—that performs a set of computational tasks or loops, measuring the time taken to complete them. The key features include its simplicity, ease of use, and focus on raw execution speed rather than complex benchmarking scenarios. The architecture is minimal: the benchmark is run natively on FreeBSD and then inside a Linux VM managed by Bhyve, with results compared to highlight any performance discrepancies attributable to the OS or virtualization overhead. This approach is useful for system tuning, hardware evaluation, or making informed decisions about deployment environments. +The implementation is intentionally straightforward, using Go's built-in testing framework to run computational workloads that stress different aspects of CPU performance. The benchmarks avoid being optimized away by the compiler while remaining simple enough to produce consistent, comparable results across different operating systems and virtualization platforms. This makes it useful for quick performance comparisons when evaluating the overhead of virtualization or differences in OS scheduling and computation. [View on Codeberg](https://codeberg.org/snonux/sillybench) [View on GitHub](https://github.com/snonux/sillybench) @@ -433,14 +452,14 @@ 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: 245.1 days (avg. age of last 42 commits) +* 🔥 Recent Activity: 252.6 days (avg. age of last 42 commits) * ⚖️ License: Custom License * 🧪 Status: Experimental (no releases yet) -The **rcm** project is a lightweight, personal Ruby-based configuration management system designed with the KISS (Keep It Simple, Stupid) principle in mind. Its primary purpose is to automate and manage configuration tasks, such as setting up services or environments, in a straightforward and minimalistic way. This makes it especially useful for users who want a simple, customizable tool for managing their own system configurations without the overhead and complexity of larger solutions like Ansible or Chef. +**rcm** is a lightweight Ruby-based configuration management system designed for personal infrastructure automation following the KISS (Keep It Simple, Stupid) principle. It p