summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-09 10:52:12 +0300
committerPaul Buetow <paul@buetow.org>2025-07-09 10:52:12 +0300
commitbbbd384ff4315861837b8c0a2567b140135a6665 (patch)
tree609b915373cb27c2c42940715085bea8b3530df8
parent7977ed56b2c17e9bbab1bbd3cab108919672b27b (diff)
Update content for html
-rw-r--r--about/resources.html180
-rw-r--r--about/showcase.html845
-rw-r--r--about/showcase/debroid/image-1.png55
-rw-r--r--index.html2
-rw-r--r--uptime-stats.html2
5 files changed, 667 insertions, 417 deletions
diff --git a/about/resources.html b/about/resources.html
index 08df9872..c08cf8af 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -50,107 +50,107 @@
<span>In random order:</span><br />
<br />
<ul>
+<li>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
+<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
-<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
-<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
-<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
-<li>Kubernetes Cookbook; Sameer Naik, SΓ©bastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
-<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li>
-<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
-<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
-<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
-<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
-<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
-<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
-<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
-<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
-<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
<li>The Docker Book; James Turnbull; Kindle</li>
-<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
+<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
+<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
+<li>Raku Recipes; J.J. Merelo; Apress</li>
+<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O&#39;Reilly</li>
<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
-<li>Funktionale Programmierung; Peter Pepper; Springer</li>
-<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
-<li>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
-<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
-<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
-<li>Ultimate Go Notebook; Bill Kennedy</li>
-<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
-<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
-<li>Raku Recipes; J.J. Merelo; Apress</li>
-<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
+<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
+<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
-<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
+<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
+<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
+<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
+<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
+<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
-<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
+<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
+<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
+<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
<li>Java ist auch eine Insel; Christian Ullenboom; </li>
-<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
-<li>Systemprogrammierung in Go; Frank MΓΌller; dpunkt</li>
+<li>C++ Programming Language; Bjarne Stroustrup;</li>
<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li>
-<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O&#39;Reilly</li>
<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
-<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
-<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
+<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
+<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
+<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
+<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
<li>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
-<li>C++ Programming Language; Bjarne Stroustrup;</li>
+<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
+<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
+<li>Ultimate Go Notebook; Bill Kennedy</li>
+<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li>
+<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
<li>Raku Fundamentals; Moritz Lenz; Apress</li>
+<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
+<li>Systemprogrammierung in Go; Frank MΓΌller; dpunkt</li>
+<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
+<li>Funktionale Programmierung; Peter Pepper; Springer</li>
+<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
+<li>Kubernetes Cookbook; Sameer Naik, SΓ©bastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
+<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
</ul><br />
<h2 style='display: inline' id='technical-references'>Technical references</h2><br />
<br />
<span>I didn&#39;t read them from the beginning to the end, but I am using them to look up things. The books are in random order:</span><br />
<br />
<ul>
-<li>Relayd and Httpd Mastery; Michael W Lucas</li>
<li>Groovy Kurz &amp; Gut; Joerg Staudemeier; O&#39;Reilly</li>
-<li>Implementing Service Level Objectives; Alex Hidalgo; O&#39;Reilly</li>
-<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li>
<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
+<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
+<li>Implementing Service Level Objectives; Alex Hidalgo; O&#39;Reilly</li>
<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O&#39;Reilly</li>
-<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
+<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li>
+<li>Relayd and Httpd Mastery; Michael W Lucas</li>
</ul><br />
<h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br />
<br />
<span>In random order:</span><br />
<br />
<ul>
-<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li>
-<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
-<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
-<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
-<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
-<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
-<li>Slow Productivity; Cal Newport; Penguin Random House</li>
+<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
+<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li>
+<li>Deep Work; Cal Newport; Piatkus</li>
<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
-<li>Ultralearning; Scott Young; Thorsons</li>
-<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
-<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
-<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
-<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
-<li>Soft Skills; John Sommez; Manning Publications</li>
+<li>Getting Things Done; David Allen</li>
<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li>
-<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
-<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
-<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
-<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
-<li>Atomic Habits; James Clear; Random House Business</li>
-<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li>
-<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
+<li>Atomic Habits; James Clear; Random House Business</li>
+<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon &amp; Schuster UK</li>
-<li>Eat That Frog; Brian Tracy</li>
-<li>Getting Things Done; David Allen</li>
+<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
+<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
+<li>Soft Skills; John Sommez; Manning Publications</li>
+<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
-<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
-<li>Deep Work; Cal Newport; Piatkus</li>
-<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li>
+<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
+<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
+<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
+<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
+<li>Slow Productivity; Cal Newport; Penguin Random House</li>
+<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
-<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
+<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
-<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
+<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
+<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
+<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
+<li>Eat That Frog; Brian Tracy</li>
+<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li>
+<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
+<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
+<li>Ultralearning; Scott Young; Thorsons</li>
+<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
+<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
</ul><br />
<a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br />
<br />
@@ -159,21 +159,21 @@
<span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br />
<br />
<ul>
+<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
+<li>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</li>
+<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
+<li>Scripting Vim; Damian Conway; O&#39;Reilly Online</li>
+<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
+<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li>
<li>Apache Tomcat Best Practises; 3-day on-site training</li>
+<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
+<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
+<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li>
-<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li>
<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
<li>The Ultimate Kubernetes Bootcamp; School of Devops; O&#39;Reilly Online</li>
-<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
-<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
-<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
<li>Protocol buffers; O&#39;Reilly Online</li>
-<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
-<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
<li>Functional programming lecture; Remote University of Hagen</li>
-<li>Scripting Vim; Damian Conway; O&#39;Reilly Online</li>
-<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
-<li>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</li>
<li>Ultimate Go Programming; Bill Kennedy; O&#39;Reilly Online</li>
</ul><br />
<h2 style='display: inline' id='technical-guides'>Technical guides</h2><br />
@@ -182,8 +182,8 @@
<br />
<ul>
<li>Advanced Bash-Scripting Guide </li>
-<li>How CPUs work at https://cpu.land</li>
<li>Raku Guide at https://raku.guide </li>
+<li>How CPUs work at https://cpu.land</li>
</ul><br />
<h2 style='display: inline' id='podcasts'>Podcasts</h2><br />
<br />
@@ -192,19 +192,19 @@
<span>In random order:</span><br />
<br />
<ul>
-<li>The Pragmatic Engineer Podcast</li>
-<li>Fallthrough [Golang]</li>
-<li>The Changelog Podcast(s)</li>
-<li>Backend Banter</li>
+<li>Pratical AI</li>
+<li>The ProdCast (Google SRE Podcast)</li>
<li>Maintainable</li>
<li>Modern Mentor</li>
<li>Dev Interrupted</li>
-<li>BSD Now [BSD]</li>
+<li>The Pragmatic Engineer Podcast</li>
+<li>The Changelog Podcast(s)</li>
<li>Hidden Brain</li>
+<li>Fallthrough [Golang]</li>
+<li>Backend Banter</li>
<li>Deep Questions with Cal Newport</li>
-<li>The ProdCast (Google SRE Podcast)</li>
-<li>Pratical AI</li>
<li>Cup o&#39; Go [Golang]</li>
+<li>BSD Now [BSD]</li>
<li>Fork Around And Find Out</li>
</ul><br />
<h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br />
@@ -216,36 +216,36 @@
<li>CRE: Chaosradio Express [german]</li>
<li>FLOSS weekly</li>
<li>Java Pub House</li>
-<li>Modern Mentor</li>
<li>Ship It (predecessor of Fork Around And Find Out)</li>
+<li>Modern Mentor</li>
</ul><br />
<h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br />
<br />
<span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br />
<br />
<ul>
-<li>The Valuable Dev</li>
-<li>VK Newsletter</li>
<li>Monospace Mentor</li>
-<li>byteSizeGo</li>
-<li>The Pragmatic Engineer</li>
<li>The Imperfectionist</li>
<li>Changelog News</li>
-<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
+<li>VK Newsletter</li>
+<li>The Pragmatic Engineer</li>
+<li>byteSizeGo</li>
<li>Register Spill</li>
<li>Ruby Weekly</li>
-<li>Applied Go Weekly Newsletter</li>
<li>Golang Weekly</li>
+<li>The Valuable Dev</li>
+<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
+<li>Applied Go Weekly Newsletter</li>
</ul><br />
<h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br />
<br />
<span>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:</span><br />
<br />
<ul>
-<li>LWN (online only)</li>
-<li>freeX (not published anymore)</li>
<li>Linux Magazine</li>
+<li>freeX (not published anymore)</li>
<li>Linux User</li>
+<li>LWN (online only)</li>
</ul><br />
<h1 style='display: inline' id='formal-education'>Formal education</h1><br />
<br />
diff --git a/about/showcase.html b/about/showcase.html
index c9693f3f..97314213 100644
--- a/about/showcase.html
+++ b/about/showcase.html
@@ -102,7 +102,7 @@
<li>πŸ“ˆ Lines of Code: 6241</li>
<li>πŸ“„ Lines of Documentation: 2306</li>
<li>πŸ“… Development Period: 2025-06-23 to 2025-07-09</li>
-<li>πŸ”₯ Recent Activity: 4.2 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 4.7 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: BSD-2-Clause</li>
<li>🏷️ Latest Release: v0.4.0 (2025-07-09)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -115,15 +115,45 @@
<a class='textlink' href='https://codeberg.org/snonux/gitsyncer'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/gitsyncer'>View on GitHub</a><br />
<br />
-<span>Go from <span class='inlinecode'>internal/version/version.go</span>:</span><br />
+<span>Go from <span class='inlinecode'>internal/github/github.go</span>:</span><br />
<br />
<pre>
-var (
- Version = "0.4.0"
+func (c *Client) RepoExists(repoName string) (bool, error) {
+ if c.token == "" {
+ return false, fmt.Errorf("GitHub token required")
+ }
+
+ url := fmt.Sprintf("https://api.github.com/repos/%s/%s", c.org, repoName)
+ fmt.Printf(" Checking URL: %s\n", url)
+ fmt.Printf(" Token present: %v (length: %d)\n", c.token != "", len(c.token))
+
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return false, err
+ }
+
+ req.Header.Set("Authorization", "Bearer "+c.token)
+ req.Header.Set("Accept", "application/vnd.github.v3+json")
+
+ resp, err := http.DefaultClient.Do(req)
+ if err != nil {
+ return false, err
+ }
+ defer resp.Body.Close()
- GitCommit = "unknown"
+ if resp.StatusCode == 200 {
+ return true, nil
+ } else if resp.StatusCode == 404 {
+ return false, nil
+ } else if resp.StatusCode == 401 {
+ body, _ := io.ReadAll(resp.Body)
+ fmt.Printf(" 401 Unauthorized - Response: %s\n", string(body))
+ fmt.Printf(" Authorization header: %s\n", req.Header.Get("Authorization"))
+ return false, fmt.Errorf("authentication failed (401): %s", string(body))
+ }
- BuildDate = "unknown"
+ return false, fmt.Errorf("unexpected status code: %d", resp.StatusCode)
+}
</pre>
<br />
<span>---</span><br />
@@ -137,7 +167,7 @@ var (
<li>πŸ“ˆ Lines of Code: 873</li>
<li>πŸ“„ Lines of Documentation: 135</li>
<li>πŸ“… Development Period: 2025-06-25 to 2025-06-29</li>
-<li>πŸ”₯ Recent Activity: 12.3 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 12.7 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: BSD-2-Clause</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -150,22 +180,19 @@ var (
<a class='textlink' href='https://codeberg.org/snonux/timr'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/timr'>View on GitHub</a><br />
<br />
-<span>Go from <span class='inlinecode'>internal/timer/operations.go</span>:</span><br />
+<span>Go from <span class='inlinecode'>cmd/timr/main.go</span>:</span><br />
<br />
<pre>
-func GetRawStatus() (string, error) {
- state, err := LoadState()
- if err != nil {
- return "", fmt.Errorf("error loading state: %w", err)
+func main() {
+ if len(os.Args) &lt; 2 {
+ printUsage()
+ os.Exit(1)
}
- elapsed := state.ElapsedTime
- if state.Running {
- elapsed += time.Since(state.StartTime)
- }
+ var err error
+ var output string
- return fmt.Sprintf("%d", int(elapsed.Seconds())), nil
-}
+ switch os.Args[1] {
</pre>
<br />
<span>---</span><br />
@@ -179,7 +206,7 @@ func GetRawStatus() (string, error) {
<li>πŸ“ˆ Lines of Code: 6160</li>
<li>πŸ“„ Lines of Documentation: 162</li>
<li>πŸ“… Development Period: 2025-06-19 to 2025-07-08</li>
-<li>πŸ”₯ Recent Activity: 12.7 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 13.1 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: BSD-2-Clause</li>
<li>🏷️ Latest Release: v0.9.2 (2025-07-02)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -199,12 +226,36 @@ func GetRawStatus() (string, error) {
<span>Go from <span class='inlinecode'>internal/ui/handlers.go</span>:</span><br />
<br />
<pre>
-func (m *Model) getTaskAtCursor() *task.Task {
- cursor := m.tbl.Cursor()
- if cursor &lt; 0 || cursor &gt;= len(m.tasks) {
+func (m *Model) handleAnnotationMode(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
+ onEnter := func(value string) error {
+ if !m.replaceAnnotations &amp;&amp; strings.TrimSpace(value) == "" {
+ return fmt.Errorf("annotation cannot be empty")
+ }
+
+ if m.replaceAnnotations {
+ if err := task.ReplaceAnnotations(m.annotateID, value); err != nil {
+ return err
+ }
+ m.replaceAnnotations = false
+ } else {
+ if err := task.Annotate(m.annotateID, value); err != nil {
+ return err
+ }
+ }
+ m.reload()
return nil
}
- return &amp;m.tasks[cursor]
+
+ onExit := func() {
+ m.annotating = false
+ m.replaceAnnotations = false
+ }
+
+ model, cmd := m.handleTextInput(msg, &amp;m.annotateInput, onEnter, onExit)
+ if msg.Type == tea.KeyEnter &amp;&amp; m.annotateInput.Value() != "" {
+ return model, m.startBlink(m.annotateID, false)
+ }
+ return model, cmd
}
</pre>
<br />
@@ -219,7 +270,7 @@ func (m *Model) getTaskAtCursor() *task.Task {
<li>πŸ“ˆ Lines of Code: 3947</li>
<li>πŸ“„ Lines of Documentation: 854</li>
<li>πŸ“… Development Period: 2021-12-28 to 2025-07-07</li>
-<li>πŸ”₯ Recent Activity: 20.0 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 20.4 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: No license found</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
</ul><br />
@@ -250,7 +301,7 @@ TOP=20
<li>πŸ“ˆ Lines of Code: 42772</li>
<li>πŸ“„ Lines of Documentation: 159</li>
<li>πŸ“… Development Period: 2021-04-29 to 2025-07-01</li>
-<li>πŸ”₯ Recent Activity: 26.3 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 26.8 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: No license found</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -263,14 +314,15 @@ TOP=20
<a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br />
<br />
-<span>HTML from <span class='inlinecode'>gemfeed/2022-01-23-welcome-to-the-foo.zone.html</span>:</span><br />
+<span>HTML from <span class='inlinecode'>notes/index.html</span>:</span><br />
<br />
<pre>
-&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
-&lt;title&gt;Welcome to the foo.zone&lt;/title&gt;
+&lt;title&gt;Notes on foo.zone&lt;/title&gt;
&lt;link rel="shortcut icon" type="image/gif" href="/favicon.ico" /&gt;
&lt;link rel="stylesheet" href="../style.css" /&gt;
&lt;link rel="stylesheet" href="style-override.css" /&gt;
@@ -289,7 +341,7 @@ TOP=20
<li>πŸ“ˆ Lines of Code: 20091</li>
<li>πŸ“„ Lines of Documentation: 5674</li>
<li>πŸ“… Development Period: 2020-01-09 to 2025-06-20</li>
-<li>πŸ”₯ Recent Activity: 51.8 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 52.2 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: Apache-2.0</li>
<li>🏷️ Latest Release: v4.2.0 (2023-06-21)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -306,17 +358,18 @@ TOP=20
<a class='textlink' href='https://codeberg.org/snonux/dtail'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/dtail'>View on GitHub</a><br />
<br />
-<span>Go from <span class='inlinecode'>internal/clients/baseclient.go</span>:</span><br />
+<span>Go from <span class='inlinecode'>internal/io/fs/directprocessor.go</span>:</span><br />
<br />
<pre>
-func (c *baseClient) makeConnection(server string, sshAuthMethods []gossh.AuthMethod,
- hostKeyCallback client.HostKeyCallback) connectors.Connector {
- if c.Args.Serverless {
- return connectors.NewServerless(c.UserName, c.maker.makeHandler(server),
- c.maker.makeCommands())
+func NewDirectProcessor(processor LineProcessor, output io.Writer, globID
+ string, ltx lcontext.LContext) *DirectProcessor {
+ return &amp;DirectProcessor{
+ processor: processor,
+ output: output,
+ stats: &amp;stats{},
+ ltx: ltx,
+ sourceID: globID,
}
- return connectors.NewServerConnection(server, c.UserName, sshAuthMethods,
- hostKeyCallback, c.maker.makeHandler(server), c.maker.makeCommands())
}
</pre>
<br />
@@ -331,7 +384,7 @@ func (c *baseClient) makeConnection(server string, sshAuthMethods []gossh.AuthMe
<li>πŸ“ˆ Lines of Code: 396</li>
<li>πŸ“„ Lines of Documentation: 24</li>
<li>πŸ“… Development Period: 2025-04-18 to 2025-05-11</li>
-<li>πŸ”₯ Recent Activity: 71.1 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 71.5 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: Custom License</li>
<li>🏷️ Latest Release: v1.0.0 (2025-05-11)</li>
</ul><br />
@@ -346,10 +399,12 @@ func (c *baseClient) makeConnection(server string, sshAuthMethods []gossh.AuthMe
<span>Ruby from <span class='inlinecode'>wireguardmeshgenerator.rb</span>:</span><br />
<br />
<pre>
-def priv = File.read(@privkey_path).strip
+def initialize(myself)
+ raise &#39;Wireguard tool not found&#39; unless system(&#39;which wg &gt; /dev/null 2&gt;&amp;1&#39;)
-def psk(peer)
- psk_path = "#{@psk_dir}/#{[@myself, peer].sort.join(&#39;_&#39;)}.key"
+ @myself = myself
+ @psk_dir = &#39;keys/psk&#39;
+ mykeys_dir = "keys/#{myself}"
</pre>
<br />
<span>---</span><br />
@@ -363,7 +418,7 @@ def psk(peer)
<li>πŸ“ˆ Lines of Code: 9835</li>
<li>πŸ“„ Lines of Documentation: 559</li>
<li>πŸ“… Development Period: 2024-01-18 to 2025-06-14</li>
-<li>πŸ”₯ Recent Activity: 83.2 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 83.6 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: No license found</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
</ul><br />
@@ -381,19 +436,13 @@ def psk(peer)
<a class='textlink' href='https://codeberg.org/snonux/ior'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/ior'>View on GitHub</a><br />
<br />
-<span>C from <span class='inlinecode'>internal/c/types.h</span>:</span><br />
+<span>C from <span class='inlinecode'>internal/c/maps.h</span>:</span><br />
<br />
<pre>
-struct open_event {
- __u32 event_type;
- __u32 trace_id;
- __u64 time;
- __u32 pid;
- __u32 tid;
- __s32 flags;
- char filename[MAX_FILENAME_LENGTH];
- char comm[MAX_PROGNAME_LENGTH];
-};
+struct {
+ __uint(type, BPF_MAP_TYPE_RINGBUF);
+ __uint(max_entries, 1 &lt;&lt; 24);
+} event_map SEC(".maps");
</pre>
<br />
<span>---</span><br />
@@ -407,7 +456,7 @@ struct open_event {
<li>πŸ“ˆ Lines of Code: 25762</li>
<li>πŸ“„ Lines of Documentation: 3101</li>
<li>πŸ“… Development Period: 2008-05-15 to 2025-06-27</li>
-<li>πŸ”₯ Recent Activity: 84.4 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 84.9 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: Custom License</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -422,14 +471,24 @@ struct open_event {
<a class='textlink' href='https://codeberg.org/snonux/ds-sim'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/ds-sim'>View on GitHub</a><br />
<br />
-<span>Java from <span class='inlinecode'>src/main/java/events/VSAbstractEvent.java</span>:</span><br />
+<span>Java from <span class='inlinecode'>src/main/java/core/VSTaskManager.java</span>:</span><br />
<br />
<pre>
-public final void setClassname(String eventClassname) {
- if (eventClassname.startsWith(CLASS_PREFIX))
- eventClassname = eventClassname.substring(CLASS_PREFIX_LENGTH);
+private VSSimulatorVisualization simulatorVisualization;
+
+private PriorityQueue&lt;VSTask&gt; globalTasks;
+
+private LinkedList&lt;VSTask&gt; fullfilledProgrammedTasks;
+
+public final static boolean PROGRAMMED = true;
+
+public final static boolean ONLY_ONCE = false;
- this.eventClassname = eventClassname;
+private VSPrefs prefs;
+
+public VSTaskManager(VSPrefs prefs,
+ VSSimulatorVisualization simulatorVisualization) {
+ init(prefs, simulatorVisualization);
}
</pre>
<br />
@@ -444,7 +503,7 @@ public final void setClassname(String eventClassname) {
<li>πŸ“ˆ Lines of Code: 33</li>
<li>πŸ“„ Lines of Documentation: 3</li>
<li>πŸ“… Development Period: 2025-04-03 to 2025-04-03</li>
-<li>πŸ”₯ Recent Activity: 97.0 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 97.4 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: No license found</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
</ul><br />
@@ -475,7 +534,7 @@ func main() {
<li>πŸ“ˆ Lines of Code: 3967</li>
<li>πŸ“„ Lines of Documentation: 411</li>
<li>πŸ“… Development Period: 2024-05-04 to 2025-06-12</li>
-<li>πŸ”₯ Recent Activity: 113.9 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 114.4 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: Custom License</li>
<li>🏷️ Latest Release: v1.0.0 (2025-03-04)</li>
<li>πŸ€– AI-Assisted: This project was partially created with the help of generative AI</li>
@@ -492,16 +551,29 @@ func main() {
<a class='textlink' href='https://codeberg.org/snonux/gos'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/gos'>View on GitHub</a><br />
<br />
-<span>Go from <span class='inlinecode'>internal/summary/summary.go</span>:</span><br />
+<span>Go from <span class='inlinecode'>internal/config/args.go</span>:</span><br />
<br />
<pre>
-func prepare(content string) string {
- content = newlineRegex.ReplaceAllString(content, " ")
- content = urlRegex.ReplaceAllString(content, "")
- content = multiSpaceRegex.ReplaceAllString(content, " ")
- content = strings.TrimSpace(content)
- content = tagRegex.ReplaceAllString(content, "`$0`")
- return content
+func (a *Args) ParsePlatforms(platformStrs string) error {
+ a.Platforms = make(map[string]int)
+
+ for _, platformInfo := range strings.Split(platformStrs, ",") {
+ parts := strings.Split(platformInfo, ":")
+ platformStr := parts[0]
+
+ if len(parts) &gt; 1 {
+ var err error
+ a.Platforms[platformStr], err = strconv.Atoi(parts[1])
+ if err != nil {
+ return err
+ }
+ } else {
+ colour.Infoln("No message length specified for", platformStr, "so assuming
+ 500")
+ a.Platforms[platformStr] = 500
+ }
+ }
+ return nil
}
</pre>
<br />
@@ -516,7 +588,7 @@ func prepare(content string) string {
<li>πŸ“ˆ Lines of Code: 1299</li>
<li>πŸ“„ Lines of Documentation: 154</li>
<li>πŸ“… Development Period: 2023-01-02 to 2025-07-07</li>
-<li>πŸ”₯ Recent Activity: 133.5 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 133.9 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: Custom License</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
</ul><br />
@@ -531,10 +603,15 @@ func prepare(content string) string {
<span>Perl from <span class='inlinecode'>foostats.pl</span>:</span><br />
<br />
<pre>
-my sub parse_date ( $year, @line ) {
- my $timestr = "$line[0] $line[1]";
- return Time::Piece-&gt;strptime( $timestr, &#39;%b %d&#39; )
- -&gt;strftime("$year%m%d");
+sub write ( $path, $content ) {
+ open my $fh, &#39;&gt;&#39;, "$path.tmp"
+ or die "\nCannot open file: $!";
+ print $fh $content;
+ close $fh;
+
+ rename
+ "$path.tmp",
+ $path;
}
</pre>
<br />
@@ -549,7 +626,7 @@ my sub parse_date ( $year, @line ) {
<li>πŸ“ˆ Lines of Code: 1373</li>
<li>πŸ“„ Lines of Documentation: 48</li>
<li>πŸ“… Development Period: 2024-12-05 to 2025-02-28</li>
-<li>πŸ”₯ Recent Activity: 137.7 days (avg. age of last 42 commits)</li>
+<li>πŸ”₯ Recent Activity: 138.1 days (avg. age of last 42 commits)</li>
<li>βš–οΈ License: Custom License</li>
<li>πŸ§ͺ Status: Experimental (no releases yet)</li>
</ul><br />
@@ -561,14 +638,16 @@ my sub parse_date ( $year, @line ) {
<a class='textlink' href='https://codeberg.org/snonux/rcm'>View on Codeberg</a><br />
<a class='textlink' href='https://github.com/snonux/rcm'>View on GitHub</a><br />
<br />
-<span>Ruby from <span class='inlinecode'>lib/dsl.rb</span>:</span><br />
+<span>Ruby from <span class='inlinecode'>lib/dslkeywords/notify.rb</span>:</span><br />
<br />
<pre>
-def to_s = @id
-def evaluate! = @scheduled.each(&amp;:evaluate!)
+def notify(message = nil, &amp;block)
+ return unless @conds_met
-def &lt;&lt;(obj)
- raise DuplicateResource, "#{obj.id} already declared!" if @@objs.key?(obj.id)
+ n = Notify.new(message.nil? ? &#39;&#39; : message)
+ n.message(n.instance_eval(&amp;block)) if block
+ self &lt;&lt; n
+ n
</pre>
<br />
<span>---</span><br />
@@ -582,7 +661,7 @@ def &lt;&lt;(obj)
<li>πŸ“ˆ Lines of Code: 2253</li>
<li>πŸ“„ Lines of Documentation: 1170</li>
<li>πŸ“… Development Period: 2021-05-21 to 2025-06-11</li>
-<li>πŸ”₯ Recent Activity: 230.