summaryrefslogtreecommitdiff
path: root/about
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-09 00:54:06 +0300
committerPaul Buetow <paul@buetow.org>2025-07-09 00:54:06 +0300
commit7c82d9c821a900e8970c8c1c6b1d85ec9bde734a (patch)
tree38d12c1057992259d94f67182e49aa1fec228546 /about
parent7248767f16f90cf241da2e910bb1f181ad7bba1e (diff)
Update content for html
Diffstat (limited to 'about')
-rw-r--r--about/index.html8
-rw-r--r--about/resources.html190
-rw-r--r--about/showcase.html2111
-rw-r--r--about/showcase/debroid/image-1.png1972
-rw-r--r--about/showcase/ds-sim/image-1.pngbin0 -> 139067 bytes
-rw-r--r--about/showcase/dtail/image-1.pngbin0 -> 84933 bytes
-rw-r--r--about/showcase/dtail/image-2.gifbin0 -> 2290260 bytes
-rw-r--r--about/showcase/gogios/image-1.pngbin0 -> 56698 bytes
-rw-r--r--about/showcase/gos/image-1.pngbin0 -> 3861 bytes
-rw-r--r--about/showcase/gos/image-2.pngbin0 -> 137561 bytes
-rw-r--r--about/showcase/ior/image-1.pngbin0 -> 46683 bytes
-rw-r--r--about/showcase/ior/image-2.svg12270
-rw-r--r--about/showcase/ioriot/image-1.pngbin0 -> 12508 bytes
-rw-r--r--about/showcase/jsmstrade/image-1.pngbin0 -> 13636 bytes
-rw-r--r--about/showcase/netcalendar/image-1.pngbin0 -> 131869 bytes
-rw-r--r--about/showcase/netcalendar/image-2.pngbin0 -> 217299 bytes
-rw-r--r--about/showcase/quicklogger/image-1.pngbin0 -> 63314 bytes
-rw-r--r--about/showcase/quicklogger/image-2.pngbin0 -> 13498 bytes
-rw-r--r--about/showcase/tasksamurai/image-1.pngbin0 -> 227442 bytes
-rw-r--r--about/showcase/tasksamurai/image-2.pngbin0 -> 1382480 bytes
-rw-r--r--about/showcase/vs-sim/image-1.jpgbin0 -> 214287 bytes
21 files changed, 16454 insertions, 97 deletions
diff --git a/about/index.html b/about/index.html
index 54327b7e..baabd3fb 100644
--- a/about/index.html
+++ b/about/index.html
@@ -27,11 +27,15 @@
<h2 style='display: inline' id='my-sites'>My sites</h2><br />
<br />
<a class='textlink' href='../'>My blog here at foo.zone</a><br />
-<a class='textlink' href='https://codeberg.org/snonux'>codeberg.org/snonux - My Codeberg page</a><br />
-<a class='textlink' href='https://github.com/snonux'>github.com/snonux - My GitHub page (it&#39;s just a mirror of Codeberg, really)</a><br />
<a class='textlink' href='https://irregular.ninja'>irregular.ninja - My street photography site (warn: multiple MBs, it&#39;s photos after all)</a><br />
<a class='textlink' href='./dtail.html'>DTail - the distributed log tailing program</a><br />
<br />
+<h2 style='display: inline' id='show-me-the-code'>Show me the code</h2><br />
+<br />
+<a class='textlink' href='./showcase.html'>Project showcase</a><br />
+<a class='textlink' href='https://codeberg.org/snonux'>codeberg.org/snonux - My Codeberg page</a><br />
+<a class='textlink' href='https://github.com/snonux'>github.com/snonux - My GitHub page (it&#39;s just a mirror of Codeberg, really)</a><br />
+<br />
<h2 style='display: inline' id='social-media-and-communities'>Social Media and Communities</h2><br />
<br />
<a class='textlink' href='https://fosstodon.org/@snonux'>@snonux@fosstodon.org - Me at Mastodon</a><br />
diff --git a/about/resources.html b/about/resources.html
index 919040c5..08df9872 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -50,107 +50,107 @@
<span>In random order:</span><br />
<br />
<ul>
-<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</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>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
-<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
-<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
-<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
-<li>Java ist auch eine Insel; Christian Ullenboom; </li>
-<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
-<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
-<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
-<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
-<li>Ultimate Go Notebook; Bill Kennedy</li>
-<li>The Docker Book; James Turnbull; Kindle</li>
-<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
-<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
-<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
-<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</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>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>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>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
-<li>Raku Fundamentals; Moritz Lenz; Apress</li>
-<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li>
-<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
+<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
<li>Funktionale Programmierung; Peter Pepper; Springer</li>
-<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
-<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
-<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
-<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li>
<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
-<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
-<li>Raku Recipes; J.J. Merelo; Apress</li>
-<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
-<li>C++ Programming Language; Bjarne Stroustrup;</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>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
-<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
-<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
+<li>Raku Recipes; J.J. Merelo; Apress</li>
+<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
+<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
+<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</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>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>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>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
+<li>C++ Programming Language; Bjarne Stroustrup;</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>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
-<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li>
-<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
+<li>Raku Fundamentals; Moritz Lenz; Apress</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>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
+<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>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O&#39;Reilly</li>
-<li>Groovy Kurz &amp; Gut; Joerg Staudemeier; O&#39;Reilly</li>
<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
-<li>Relayd and Httpd Mastery; Michael W Lucas</li>
-<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
</ul><br />
<h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br />
<br />
<span>In random order:</span><br />
<br />
<ul>
-<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
-<li>Deep Work; Cal Newport; Piatkus</li>
-<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
-<li>Getting Things Done; David Allen</li>
-<li>Slow Productivity; Cal Newport; Penguin Random House</li>
-<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
-<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
-<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
-<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
-<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</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>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>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>Ultralearning; Anna Laurent; Self-published via Amazon</li>
-<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li>
-<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
-<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
-<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
-<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
-<li>Ultralearning; Scott Young; Thorsons</li>
-<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</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 Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
-<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</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>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
+<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon &amp; Schuster UK</li>
-<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
<li>Eat That Frog; Brian Tracy</li>
-<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
-<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
-<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
-<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
+<li>Getting Things Done; David Allen</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>Atomic Habits; James Clear; Random House Business</li>
+<li>Deep Work; Cal Newport; Piatkus</li>
+<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</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>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>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
</ul><br />
<a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br />
<br />
@@ -159,30 +159,30 @@
<span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br />
<br />
<ul>
+<li>Apache Tomcat Best Practises; 3-day on-site training</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>Ultimate Go Programming; Bill Kennedy; O&#39;Reilly Online</li>
-<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</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>Apache Tomcat Best Practises; 3-day on-site training</li>
<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
-<li>Scripting Vim; Damian Conway; O&#39;Reilly Online</li>
<li>Functional programming lecture; Remote University of Hagen</li>
-<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li>
-<li>Protocol buffers; O&#39;Reilly Online</li>
-<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
-<li>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</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>MySQL Deep Dive Workshop; 2-day on-site training</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>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 />
<br />
<span>These are not whole books, but guides (smaller or larger) which I found very useful. in random order:</span><br />
<br />
<ul>
-<li>How CPUs work at https://cpu.land</li>
<li>Advanced Bash-Scripting Guide </li>
+<li>How CPUs work at https://cpu.land</li>
<li>Raku Guide at https://raku.guide </li>
</ul><br />
<h2 style='display: inline' id='podcasts'>Podcasts</h2><br />
@@ -192,20 +192,20 @@
<span>In random order:</span><br />
<br />
<ul>
-<li>Backend Banter</li>
-<li>Hidden Brain</li>
-<li>Fallthrough [Golang]</li>
<li>The Pragmatic Engineer Podcast</li>
-<li>Fork Around And Find Out</li>
+<li>Fallthrough [Golang]</li>
+<li>The Changelog Podcast(s)</li>
+<li>Backend Banter</li>
+<li>Maintainable</li>
+<li>Modern Mentor</li>
+<li>Dev Interrupted</li>
<li>BSD Now [BSD]</li>
+<li>Hidden Brain</li>
<li>Deep Questions with Cal Newport</li>
-<li>Maintainable</li>
-<li>Pratical AI</li>
<li>The ProdCast (Google SRE Podcast)</li>
+<li>Pratical AI</li>
<li>Cup o&#39; Go [Golang]</li>
-<li>Dev Interrupted</li>
-<li>The Changelog Podcast(s)</li>
-<li>Modern Mentor</li>
+<li>Fork Around And Find Out</li>
</ul><br />
<h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br />
<br />
@@ -213,28 +213,28 @@
<br />
<ul>
<li>Go Time (predecessor of fallthrough)</li>
-<li>Java Pub House</li>
-<li>Ship It (predecessor of Fork Around And Find Out)</li>
<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>
</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>Ruby Weekly</li>
<li>The Valuable Dev</li>
<li>VK Newsletter</li>
-<li>Applied Go Weekly Newsletter</li>
-<li>The Imperfectionist</li>
+<li>Monospace Mentor</li>
<li>byteSizeGo</li>
<li>The Pragmatic Engineer</li>
+<li>The Imperfectionist</li>
<li>Changelog News</li>
-<li>Register Spill</li>
<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
-<li>Monospace Mentor</li>
+<li>Register Spill</li>
+<li>Ruby Weekly</li>
+<li>Applied Go Weekly Newsletter</li>
<li>Golang Weekly</li>
</ul><br />
<h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br />
@@ -242,10 +242,10 @@
<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>Linux User</li>
+<li>LWN (online only)</li>
<li>freeX (not published anymore)</li>
<li>Linux Magazine</li>
-<li>LWN (online only)</li>
+<li>Linux User</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
new file mode 100644
index 00000000..74988153
--- /dev/null
+++ b/about/showcase.html
@@ -0,0 +1,2111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Project Showcase</title>
+<link rel="shortcut icon" type="image/gif" href="/favicon.ico" />
+<link rel="stylesheet" href="../style.css" />
+<link rel="stylesheet" href="style-override.css" />
+</head>
+<body>
+<p class="header">
+<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/about/showcase.md">Markdown</a> | <a href="gemini://foo.zone/about/showcase.gmi">Gemini</a>
+</p>
+<h1 style='display: inline' id='project-showcase'>Project Showcase</h1><br />
+<br />
+<span>Generated on: 2025-07-09</span><br />
+<br />
+<span>This page showcases my open source projects, providing an overview of what each project does, its technical implementation, and key metrics. Each project summary includes information about the programming languages used, development activity, and licensing. The projects are ordered by recent activity, with the most actively maintained projects listed first.</span><br />
+<br />
+<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br />
+<br />
+<ul>
+<li><a href='#project-showcase'>Project Showcase</a></li>
+<li>⇢ <a href='#overall-statistics'>Overall Statistics</a></li>
+<li>⇢ <a href='#projects'>Projects</a></li>
+<li>⇢ ⇢ <a href='#gitsyncer'>gitsyncer</a></li>
+<li>⇢ ⇢ <a href='#timr'>timr</a></li>
+<li>⇢ ⇢ <a href='#tasksamurai'>tasksamurai</a></li>
+<li>⇢ ⇢ <a href='#rexfiles'>rexfiles</a></li>
+<li>⇢ ⇢ <a href='#foozone'>foo.zone</a></li>
+<li>⇢ ⇢ <a href='#dtail'>dtail</a></li>
+<li>⇢ ⇢ <a href='#wireguardmeshgenerator'>wireguardmeshgenerator</a></li>
+<li>⇢ ⇢ <a href='#ior'>ior</a></li>
+<li>⇢ ⇢ <a href='#ds-sim'>ds-sim</a></li>
+<li>⇢ ⇢ <a href='#sillybench'>sillybench</a></li>
+<li>⇢ ⇢ <a href='#gos'>gos</a></li>
+<li>⇢ ⇢ <a href='#foostats'>foostats</a></li>
+<li>⇢ ⇢ <a href='#rcm'>rcm</a></li>
+<li>⇢ ⇢ <a href='#gemtexter'>gemtexter</a></li>
+<li>⇢ ⇢ <a href='#quicklogger'>quicklogger</a></li>
+<li>⇢ ⇢ <a href='#docker-gpodder-sync-server'>docker-gpodder-sync-server</a></li>
+<li>⇢ ⇢ <a href='#terraform'>terraform</a></li>
+<li>⇢ ⇢ <a href='#gogios'>gogios</a></li>
+<li>⇢ ⇢ <a href='#docker-radicale-server'>docker-radicale-server</a></li>
+<li>⇢ ⇢ <a href='#docker-anki-sync-server'>docker-anki-sync-server</a></li>
+<li>⇢ ⇢ <a href='#gorum'>gorum</a></li>
+<li>⇢ ⇢ <a href='#randomjournalpage'>randomjournalpage</a></li>
+<li>⇢ ⇢ <a href='#sway-autorotate'>sway-autorotate</a></li>
+<li>⇢ ⇢ <a href='#photoalbum'>photoalbum</a></li>
+<li>⇢ ⇢ <a href='#algorithms'>algorithms</a></li>
+<li>⇢ ⇢ <a href='#geheim'>geheim</a></li>
+<li>⇢ ⇢ <a href='#perl-c-fibonacci'>perl-c-fibonacci</a></li>
+<li>⇢ ⇢ <a href='#guprecords'>guprecords</a></li>
+<li>⇢ ⇢ <a href='#ioriot'>ioriot</a></li>
+<li>⇢ ⇢ <a href='#staticfarm-apache-handlers'>staticfarm-apache-handlers</a></li>
+<li>⇢ ⇢ <a href='#dyndns'>dyndns</a></li>
+<li>⇢ ⇢ <a href='#mon'>mon</a></li>
+<li>⇢ ⇢ <a href='#rubyfy'>rubyfy</a></li>
+<li>⇢ ⇢ <a href='#pingdomfetch'>pingdomfetch</a></li>
+<li>⇢ ⇢ <a href='#gotop'>gotop</a></li>
+<li>⇢ ⇢ <a href='#xerl'>xerl</a></li>
+<li>⇢ ⇢ <a href='#debroid'>debroid</a></li>
+<li>⇢ ⇢ <a href='#fapi'>fapi</a></li>
+<li>⇢ ⇢ <a href='#template'>template</a></li>
+<li>⇢ ⇢ <a href='#muttdelay'>muttdelay</a></li>
+<li>⇢ ⇢ <a href='#netdiff'>netdiff</a></li>
+<li>⇢ ⇢ <a href='#pwgrep'>pwgrep</a></li>
+<li>⇢ ⇢ <a href='#japi'>japi</a></li>
+<li>⇢ ⇢ <a href='#perl-poetry'>perl-poetry</a></li>
+<li>⇢ ⇢ <a href='#ipv6test'>ipv6test</a></li>
+<li>⇢ ⇢ <a href='#cpuinfo'>cpuinfo</a></li>
+<li>⇢ ⇢ <a href='#loadbars'>loadbars</a></li>
+<li>⇢ ⇢ <a href='#perldaemon'>perldaemon</a></li>
+<li>⇢ ⇢ <a href='#awksite'>awksite</a></li>
+<li>⇢ ⇢ <a href='#jsmstrade'>jsmstrade</a></li>
+<li>⇢ ⇢ <a href='#netcalendar'>netcalendar</a></li>
+<li>⇢ ⇢ <a href='#hsbot'>hsbot</a></li>
+<li>⇢ ⇢ <a href='#ychat'>ychat</a></li>
+<li>⇢ ⇢ <a href='#vs-sim'>vs-sim</a></li>
+<li>⇢ ⇢ <a href='#fype'>fype</a></li>
+</ul><br />
+<h2 style='display: inline' id='overall-statistics'>Overall Statistics</h2><br />
+<br />
+<ul>
+<li>📦 Total Projects: 55</li>
+<li>📊 Total Commits: 10,379</li>
+<li>📈 Total Lines of Code: 252,969</li>
+<li>📄 Total Lines of Documentation: 24,167</li>
+<li>💻 Languages: Java (22.4%), Go (17.6%), HTML (14.0%), C++ (8.9%), C (7.3%), Perl (6.3%), Shell (6.3%), C/C++ (5.8%), XML (4.6%), Config (1.5%), Ruby (1.1%), HCL (1.1%), Make (0.7%), Python (0.6%), CSS (0.6%), JSON (0.3%), Raku (0.3%), Haskell (0.2%), YAML (0.2%), TOML (0.1%)</li>
+<li>📚 Documentation: Text (47.4%), Markdown (38.4%), LaTeX (14.2%)</li>
+<li>🤖 AI-Assisted Projects: 8 out of 55 (14.5% AI-assisted, 85.5% human-only)</li>
+<li>🚀 Release Status: 31 released, 24 experimental (56.4% with releases, 43.6% experimental)</li>
+</ul><br />
+<h2 style='display: inline' id='projects'>Projects</h2><br />
+<br />
+<h3 style='display: inline' id='gitsyncer'>gitsyncer</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Go (86.0%), Shell (11.9%), YAML (1.5%), JSON (0.5%)</li>
+<li>📚 Documentation: Markdown (100.0%)</li>
+<li>📊 Commits: 56</li>
+<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>⚖️ 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>
+</ul><br />
+<br />
+<span>GitSyncer is a cross-platform repository synchronization tool that automatically keeps Git repositories in sync across multiple hosting platforms like GitHub, Codeberg, and private SSH servers. It solves the common problem of maintaining consistent code across different Git hosting services by cloning repositories, adding all configured platforms as remotes, and continuously merging and pushing changes bidirectionally while handling branch creation and conflict detection.</span><br />
+<br />
+<span>The tool is implemented in Go with a clean architecture that supports both individual repository syncing and bulk operations for public repositories. Key features include automatic repository creation, SSH backup locations for private servers, branch exclusion patterns, and an opt-in backup mode for resilient offline backups. It uses a JSON configuration file to define organizations and repositories, employs safe merge strategies that never delete branches, and provides comprehensive error handling for merge conflicts and missing repositories.</span><br />
+<br />
+<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 />
+<br />
+<pre>
+var (
+ Version = "0.4.0"
+
+ GitCommit = "unknown"
+
+ BuildDate = "unknown"
+</pre>
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='timr'>timr</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Go (98.3%), YAML (1.7%)</li>
+<li>📚 Documentation: Markdown (100.0%)</li>
+<li>📊 Commits: 19</li>
+<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>⚖️ 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>
+</ul><br />
+<br />
+<span><span class='inlinecode'>timr</span> is a minimalist command-line time tracking tool written in Go that provides a simple stopwatch-style timer for tracking work sessions. It offers commands to start, stop, reset, and check the status of the timer, with all state persisted across sessions in <span class='inlinecode'>~/.config/timr/.timr_state</span>. The tool is particularly useful for developers and professionals who need to track time spent on tasks without the overhead of complex time-tracking applications.</span><br />
+<br />
+<span>The project is implemented using a clean modular architecture with the CLI entry point in <span class='inlinecode'>/cmd/timr/main.go</span>, core timer logic in <span class='inlinecode'>/internal/timer/</span>, and an interactive TUI mode powered by Bubble Tea in <span class='inlinecode'>/internal/live/</span>. Key features include persistent state across sessions, shell prompt integration for displaying timer status, raw output modes for scripting, and a full-screen live timer interface with keyboard controls. The tool maintains atomic state updates and handles unexpected exits gracefully by immediately persisting state changes.</span><br />
+<br />
+<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 />
+<br />
+<pre>
+func GetRawStatus() (string, error) {
+ state, err := LoadState()
+ if err != nil {
+ return "", fmt.Errorf("error loading state: %w", err)
+ }
+
+ elapsed := state.ElapsedTime
+ if state.Running {
+ elapsed += time.Since(state.StartTime)
+ }
+
+ return fmt.Sprintf("%d", int(elapsed.Seconds())), nil
+}
+</pre>
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='tasksamurai'>tasksamurai</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Go (99.8%), YAML (0.2%)</li>
+<li>📚 Documentation: Markdown (100.0%)</li>
+<li>📊 Commits: 215</li>
+<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>⚖️ 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>
+</ul><br />
+<br />
+<a href='showcase/tasksamurai/image-1.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-1.png' /></a><br />
+<br />
+<span>TaskSamurai is a fast terminal user interface (TUI) for Taskwarrior written in Go that provides a keyboard-driven table interface for task management. It acts as a visual frontend to the Taskwarrior command-line tool, displaying tasks in a table format where users can perform operations like adding, completing, starting, and annotating tasks through hotkeys without leaving their keyboard. The application was created to provide a faster alternative to existing Python-based UIs while exploring the Bubble Tea framework for Go terminal applications.</span><br />
+<br />
+<a href='showcase/tasksamurai/image-2.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-2.png' /></a><br />
+<br />
+<span>The implementation follows a clean architecture with clear separation of concerns: the <span class='inlinecode'>internal/task/</span> package handles all Taskwarrior CLI integration by executing task commands and parsing JSON responses, while <span class='inlinecode'>internal/ui/</span> manages the terminal interface using Bubble Tea&#39;s message-driven architecture. The custom table widget in <span class='inlinecode'>internal/atable/</span> provides efficient rendering for large task lists, and the entire system maintains real-time synchronization with Taskwarrior by automatically refreshing the display after each operation. The application supports all standard Taskwarrior filters as command-line arguments and includes features like regex search, customizable themes, and even a "disco mode" that changes colors dynamically.</span><br />
+<br />
+<a class='textlink' href='https://codeberg.org/snonux/tasksamurai'>View on Codeberg</a><br />
+<a class='textlink' href='https://github.com/snonux/tasksamurai'>View on GitHub</a><br />
+<br />
+<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) {
+ return nil
+ }
+ return &amp;m.tasks[cursor]
+}
+</pre>
+<br />
+<span>---</span><br />
+<br />
+<h3 style='display: inline' id='rexfiles'>rexfiles</h3><br />
+<br />
+<ul>
+<li>💻 Languages: Shell (34.8%), Perl (32.9%), Config (8.4%), CSS (8.3%), TOML (7.3%), Ruby (6.0%), Lua (1.8%), JSON (0.5%), INI (0.2%)</li>
+<li>📚 Documentation: Text (97.3%), Markdown (2.7%)</li>
+<li>📊 Commits: 871</li>
+<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>⚖️ License: No license found</li>
+<li>🧪 Status: Experimental (no releases yet)</li>
+</ul><br />
+<br />
+<span>Based on my analysis of the codebase, **rexfiles** is a comprehensive infrastructure automation and configuration management project built with the Rex framework (a Perl-based alternative to Ansible, Puppet, or Chef). The project provides structured automation for managing multiple aspects of a personal infrastructure, including dotfiles, server configurations, and application deployments.</span><br />
+<br />
+<span>The project consists of three main components: **dotfiles** management for personal development environment configuration (bash, fish shell, helix editor, tmux, etc.), **frontends** for managing production OpenBSD servers with services like DNS (nsd), web servers (httpd), mail (OpenSMTPD), SSL certificates (ACME), and monitoring systems, and **babylon5** containing Docker container startup scripts for self-