summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-10-11 15:26:26 +0300
committerPaul Buetow <paul@buetow.org>2025-10-11 15:26:26 +0300
commit7ce4d3f1313135c4e2d49a97f9318e99fdfbad41 (patch)
tree93e5a492eacc390366c86a91bd7690e44be017f0
parent81c2749d79089d89b007e15fac0b387730fec550 (diff)
Update content for html
-rw-r--r--about/resources.html200
-rw-r--r--gemfeed/2021-07-04-the-well-grounded-rubyist.html5
-rw-r--r--gemfeed/2025-10-11-the-well-grounded-rubyist-notes.html253
-rw-r--r--gemfeed/atom.xml387
-rw-r--r--gemfeed/index.html1
-rw-r--r--index.html3
-rw-r--r--uptime-stats.html2
7 files changed, 607 insertions, 244 deletions
diff --git a/about/resources.html b/about/resources.html
index 80a4cf23..be4c644e 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -51,65 +51,65 @@
<br />
<ul>
<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li>
-<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
+<li>Raku Fundamentals; Moritz Lenz; Apress</li>
<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O&#39;Reilly</li>
-<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
-<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
-<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
-<li>Raku Recipes; J.J. Merelo; Apress</li>
-<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
-<li>Ultimate Go Notebook; Bill Kennedy</li>
-<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
-<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
-<li>Systemprogrammierung in Go; Frank Müller; dpunkt</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>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
-<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
-<li>The Docker Book; James Turnbull; Kindle</li>
<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
-<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
+<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
+<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
<li>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
-<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li>
-<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
-<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
-<li>Modern Perl; Chromatic ; Onyx Neon Press</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>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
-<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
-<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
-<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
-<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
-<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
-<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
-<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
-<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
-<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
+<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
<li>Java ist auch eine Insel; Christian Ullenboom; </li>
-<li>Funktionale Programmierung; Peter Pepper; Springer</li>
-<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
-<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li>
+<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
+<li>Ultimate Go Notebook; Bill Kennedy</li>
+<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li>
+<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
+<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
+<li>Raku Recipes; J.J. Merelo; Apress</li>
+<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
+<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</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>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
-<li>Raku Fundamentals; Moritz Lenz; Apress</li>
-<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
+<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
+<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
+<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
+<li>C++ Programming Language; Bjarne Stroustrup;</li>
+<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
+<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
+<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
+<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li>
+<li>The Docker Book; James Turnbull; Kindle</li>
+<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
+<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li>
+<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
+<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
+<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
+<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</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>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
+<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
+<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
+<li>Funktionale Programmierung; Peter Pepper; Springer</li>
+<li>Modern Perl; Chromatic ; Onyx Neon Press</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>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O&#39;Reilly</li>
-<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li>
+<li>Implementing Service Level Objectives; Alex Hidalgo; O&#39;Reilly</li>
<li>Groovy Kurz &amp; Gut; Joerg Staudemeier; O&#39;Reilly</li>
+<li>Relayd and Httpd Mastery; Michael W Lucas</li>
+<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</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>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
</ul><br />
<h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br />
@@ -117,42 +117,42 @@
<span>In random order:</span><br />
<br />
<ul>
-<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>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
+<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
+<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
+<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
+<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li>
+<li>Ultralearning; Scott Young; Thorsons</li>
+<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon &amp; Schuster UK</li>
-<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
-<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
+<li>Deep Work; Cal Newport; Piatkus</li>
+<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
+<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
+<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
+<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
+<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
+<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
+<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
+<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
+<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
+<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li>
+<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
+<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
<li>Slow Productivity; Cal Newport; Penguin Random House</li>
-<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
+<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
-<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
-<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
+<li>Atomic Habits; James Clear; Random House Business</li>
<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
-<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
-<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
-<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
-<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
+<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li>
+<li>Getting Things Done; David Allen</li>
+<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li>
-<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li>
-<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
-<li>Soft Skills; John Sommez; Manning Publications</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>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
-<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
-<li>Ultralearning; Scott Young; Thorsons</li>
-<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
-<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
-<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
-<li>Atomic Habits; James Clear; Random House Business</li>
<li>Eat That Frog; Brian Tracy</li>
-<li>Deep Work; Cal Newport; Piatkus</li>
-<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
-<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
-<li>Getting Things Done; David Allen</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>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
+<li>Soft Skills; John Sommez; Manning Publications</li>
</ul><br />
<a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br />
<br />
@@ -161,22 +161,22 @@
<span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br />
<br />
<ul>
+<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
+<li>Ultimate Go Programming; Bill Kennedy; O&#39;Reilly Online</li>
<li>The Ultimate Kubernetes Bootcamp; School of Devops; O&#39;Reilly Online</li>
-<li>Functional programming lecture; Remote University of Hagen</li>
+<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
+<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
+<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
+<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
<li>Apache Tomcat Best Practises; 3-day on-site training</li>
-<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li>
-<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
<li>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>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>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>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</li>
<li>Protocol buffers; O&#39;Reilly Online</li>
-<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
+<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li>
<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
-<li>Ultimate Go Programming; Bill Kennedy; 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>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
-<li>Scripting Vim; Damian Conway; O&#39;Reilly Online</li>
-<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
</ul><br />
<h2 style='display: inline' id='technical-guides'>Technical guides</h2><br />
<br />
@@ -194,20 +194,20 @@
<span>In random order:</span><br />
<br />
<ul>
-<li>Modern Mentor</li>
-<li>Wednesday Wisdom</li>
-<li>The Changelog Podcast(s)</li>
-<li>Cup o&#39; Go [Golang]</li>
+<li>Pratical AI</li>
+<li>Hidden Brain</li>
+<li>BSD Now [BSD]</li>
+<li>The ProdCast (Google SRE Podcast)</li>
<li>Backend Banter</li>
-<li>Maintainable</li>
<li>Dev Interrupted</li>
-<li>Deep Questions with Cal Newport</li>
<li>Fallthrough [Golang]</li>
-<li>The ProdCast (Google SRE Podcast)</li>
+<li>The Changelog Podcast(s)</li>
<li>Fork Around And Find Out</li>
-<li>BSD Now [BSD]</li>
-<li>Hidden Brain</li>
-<li>Pratical AI</li>
+<li>Deep Questions with Cal Newport</li>
+<li>Modern Mentor</li>
+<li>Maintainable</li>
+<li>Cup o&#39; Go [Golang]</li>
+<li>Wednesday Wisdom</li>
<li>The Pragmatic Engineer Podcast</li>
</ul><br />
<h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br />
@@ -216,38 +216,38 @@
<br />
<ul>
<li>Java Pub House</li>
-<li>Modern Mentor</li>
-<li>CRE: Chaosradio Express [german]</li>
-<li>Ship It (predecessor of Fork Around And Find Out)</li>
<li>FLOSS weekly</li>
<li>Go Time (predecessor of fallthrough)</li>
+<li>Ship It (predecessor of Fork Around And Find Out)</li>
+<li>CRE: Chaosradio Express [german]</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>Monospace Mentor</li>
-<li>Ruby Weekly</li>
-<li>VK Newsletter</li>
-<li>Golang Weekly</li>
<li>The Valuable Dev</li>
-<li>byteSizeGo</li>
-<li>The Pragmatic Engineer</li>
-<li>Register Spill</li>
-<li>Applied Go Weekly Newsletter</li>
<li>The Imperfectionist</li>
<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
<li>Changelog News</li>
+<li>byteSizeGo</li>
+<li>The Pragmatic Engineer</li>
+<li>Applied Go Weekly Newsletter</li>
+<li>Monospace Mentor</li>
+<li>Register Spill</li>
+<li>Ruby Weekly</li>
+<li>Golang Weekly</li>
+<li>VK 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>Linux Magazine</li>
<li>Linux User</li>
-<li>LWN (online only)</li>
<li>freeX (not published anymore)</li>
</ul><br />
<h1 style='display: inline' id='formal-education'>Formal education</h1><br />
diff --git a/gemfeed/2021-07-04-the-well-grounded-rubyist.html b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
index 6d92a11f..7e5551c5 100644
--- a/gemfeed/2021-07-04-the-well-grounded-rubyist.html
+++ b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
@@ -133,6 +133,11 @@ Hello World
<br />
<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
<br />
+<span>Other Ruby-related posts:</span><br />
+<br />
+<a class='textlink' href='./2025-10-11-the-well-grounded-rubyist-notes.html'>2025-10-11 Key Takeaways from The Well-Grounded Rubyist</a><br />
+<a class='textlink' href='./2021-07-04-the-well-grounded-rubyist.html'>2021-07-04 The Well-Grounded Rubyist (You are currently reading this)</a><br />
+<br />
<a class='textlink' href='../'>Back to the main site</a><br />
<p class="footer">
Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
diff --git a/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.html b/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.html
new file mode 100644
index 00000000..e9eba28d
--- /dev/null
+++ b/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.html
@@ -0,0 +1,253 @@
+<!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>Key Takeaways from The Well-Grounded Rubyist</title>
+<link rel="shortcut icon" type="image/gif" href="/favicon.ico" />
+<link rel="stylesheet" href="../style.css" />
+<link rel="stylesheet" href="style-override.css" />
+</head>
+<body>
+<p class="header">
+<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.gmi">Gemini</a>
+</p>
+<h1 style='display: inline' id='key-takeaways-from-the-well-grounded-rubyist'>Key Takeaways from The Well-Grounded Rubyist</h1><br />
+<br />
+<span class='quote'>Published at 2025-10-11T15:25:14+03:00</span><br />
+<br />
+<span>Some time ago, I wrote about my journey into Ruby and how "The Well-Grounded Rubyist" helped me to get a better understanding of the language. I took a lot of notes while reading the book, and I think it&#39;s time to share some of them. This is not a comprehensive review, but rather a collection of interesting tidbits and concepts that stuck with me.</span><br />
+<br />
+<a class='textlink' href='./2021-07-04-the-well-grounded-rubyist.html'>My first post about the book.</a><br />
+<br />
+<h2 style='display: inline' id='the-object-model'>The Object Model</h2><br />
+<br />
+<span>One of the most fascinating aspects of Ruby is its object model. The book does a great job of explaining the details.</span><br />
+<br />
+<h3 style='display: inline' id='everything-is-an-object-almost'>Everything is an object (almost)</h3><br />
+<br />
+<span>In Ruby, most things are objects. This includes numbers, strings, and even classes themselves. This has some interesting consequences. For example, you can&#39;t use <span class='inlinecode'>i++</span> like in C or Java. Integers are immutable objects. <span class='inlinecode'>1</span> is always the same object. <span class='inlinecode'>1 + 1</span> returns a new object, <span class='inlinecode'>2</span>.</span><br />
+<br />
+<h3 style='display: inline' id='the-self-keyword'>The <span class='inlinecode'>self</span> keyword</h3><br />
+<br />
+<span>There is always a current object, <span class='inlinecode'>self</span>. If you call a method without an explicit receiver, it&#39;s called on <span class='inlinecode'>self</span>. For example, <span class='inlinecode'>puts "hello"</span> is actually <span class='inlinecode'>self.puts "hello"</span>.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><i><font color="silver"># At the top level, self is the main object</font></i>
+p <b><u><font color="#000000">self</font></u></b>
+<i><font color="silver"># =&gt; main</font></i>
+p <b><u><font color="#000000">self</font></u></b>.<b><u><font color="#000000">class</font></u></b>
+<i><font color="silver"># =&gt; Object</font></i>
+
+<b><u><font color="#000000">def</font></u></b> foo
+ <i><font color="silver"># Inside a method, self is the object that received the call</font></i>
+ p <b><u><font color="#000000">self</font></u></b>
+<b><u><font color="#000000">end</font></u></b>
+
+foo
+<i><font color="silver"># =&gt; main</font></i>
+</pre>
+<br />
+<span>This code demonstrates how <span class='inlinecode'>self</span> changes depending on the context. At the top level, it&#39;s <span class='inlinecode'>main</span>, an instance of <span class='inlinecode'>Object</span>. When <span class='inlinecode'>foo</span> is called without a receiver, it&#39;s called on <span class='inlinecode'>main</span>.</span><br />
+<br />
+<h3 style='display: inline' id='singleton-methods'>Singleton Methods</h3><br />
+<br />
+<span>You can add methods to individual objects. These are called singleton methods.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre>obj = <font color="#808080">"a string"</font>
+
+<b><u><font color="#000000">def</font></u></b> obj.shout
+ <b><u><font color="#000000">self</font></u></b>.upcase + <font color="#808080">"!"</font>
+<b><u><font color="#000000">end</font></u></b>
+
+p obj.shout
+<i><font color="silver"># =&gt; "A STRING!"</font></i>
+
+obj2 = <font color="#808080">"another string"</font>
+<i><font color="silver"># obj2.shout would raise a NoMethodError</font></i>
+</pre>
+<br />
+<span>Here, the <span class='inlinecode'>shout</span> method is only available on the <span class='inlinecode'>obj</span> object. This is a powerful feature for adding behavior to specific instances.</span><br />
+<br />
+<h3 style='display: inline' id='classes-are-objects'>Classes are Objects</h3><br />
+<br />
+<span>Classes themselves are objects, instances of the <span class='inlinecode'>Class</span> class. This means you can create classes dynamically.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre>MyClass = Class.new <b><u><font color="#000000">do</font></u></b>
+ <b><u><font color="#000000">def</font></u></b> say_hello
+ puts <font color="#808080">"Hello from a dynamically created class!"</font>
+ <b><u><font color="#000000">end</font></u></b>
+<b><u><font color="#000000">end</font></u></b>
+
+instance = MyClass.new
+instance.say_hello
+<i><font color="silver"># =&gt; Hello from a dynamically created class!</font></i>
+</pre>
+<br />
+<span>This shows how to create a new class and assign it to a constant. This is what happens behind the scenes when you use the <span class='inlinecode'>class</span> keyword.</span><br />
+<br />
+<h2 style='display: inline' id='control-flow-and-methods'>Control Flow and Methods</h2><br />
+<br />
+<span>The book clarified many things about how methods and control flow work in Ruby.</span><br />
+<br />
+<h3 style='display: inline' id='case-and-the--operator'><span class='inlinecode'>case</span> and the <span class='inlinecode'>===</span> operator</h3><br />
+<br />
+<span>The <span class='inlinecode'>case</span> statement is more powerful than I thought. It uses the <span class='inlinecode'>===</span> (threequals or case equality) operator for comparison, not <span class='inlinecode'>==</span>. Different classes can implement <span class='inlinecode'>===</span> in their own way.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><i><font color="silver"># For ranges, it checks for inclusion</font></i>
+p (<font color="#000000">1</font>..<font color="#000000">5</font>) === <font color="#000000">3</font> <i><font color="silver"># =&gt; true</font></i>
+
+<i><font color="silver"># For classes, it checks if the object is an instance of the class</font></i>
+p String === <font color="#808080">"hello"</font> <i><font color="silver"># =&gt; true</font></i>
+
+<i><font color="silver"># For regexes, it checks for a match</font></i>
+p /llo/ === <font color="#808080">"hello"</font> <i><font color="silver"># =&gt; true</font></i>
+
+<b><u><font color="#000000">def</font></u></b> check(value)
+ <b><u><font color="#000000">case</font></u></b> value
+ <b><u><font color="#000000">when</font></u></b> String
+ <font color="#808080">"It's a string"</font>
+ <b><u><font color="#000000">when</font></u></b> (<font color="#000000">1</font>..<font color="#000000">10</font>)
+ <font color="#808080">"It's a number between 1 and 10"</font>
+ <b><u><font color="#000000">else</font></u></b>
+ <font color="#808080">"Something else"</font>
+ <b><u><font color="#000000">end</font></u></b>
+<b><u><font color="#000000">end</font></u></b>
+
+p check(<font color="#000000">5</font>) <i><font color="silver"># =&gt; "It's a number between 1 and 10"</font></i>
+</pre>
+<br />
+<h3 style='display: inline' id='blocks-and-yield'>Blocks and <span class='inlinecode'>yield</span></h3><br />
+<br />
+<span>Blocks are a cornerstone of Ruby. You can pass them to methods to customize their behavior. The <span class='inlinecode'>yield</span> keyword is used to call the block.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><b><u><font color="#000000">def</font></u></b> my_iterator
+ puts <font color="#808080">"Entering the method"</font>
+ <b><u><font color="#000000">yield</font></u></b>
+ puts <font color="#808080">"Back in the method"</font>
+ <b><u><font color="#000000">yield</font></u></b>
+<b><u><font color="#000000">end</font></u></b>
+
+my_iterator { puts <font color="#808080">"Inside the block"</font> }
+<i><font color="silver"># Entering the method</font></i>
+<i><font color="silver"># Inside the block</font></i>
+<i><font color="silver"># Back in the method</font></i>
+<i><font color="silver"># Inside the block</font></i>
+</pre>
+<br />
+<span>This simple iterator shows how <span class='inlinecode'>yield</span> transfers control to the block. You can also pass arguments to <span class='inlinecode'>yield</span> and get a return value from the block.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><b><u><font color="#000000">def</font></u></b> with_return
+ result = <b><u><font color="#000000">yield</font></u></b>(<font color="#000000">5</font>)
+ puts <font color="#808080">"The block returned #{result}"</font>
+<b><u><font color="#000000">end</font></u></b>
+
+with_return { |n| n * <font color="#000000">2</font> }
+<i><font color="silver"># =&gt; The block returned 10</font></i>
+</pre>
+<br />
+<span>This demonstrates passing an argument to the block and using its return value.</span><br />
+<br />
+<h2 style='display: inline' id='fun-with-data-types'>Fun with Data Types</h2><br />
+<br />
+<span>Ruby&#39;s core data types are full of nice little features.</span><br />
+<br />
+<h3 style='display: inline' id='symbols'>Symbols</h3><br />
+<br />
+<span>Symbols are like immutable strings. They are great for keys in hashes because they are unique and memory-efficient.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><i><font color="silver"># Two strings with the same content are different objects</font></i>
+p <font color="#808080">"foo"</font>.object_id
+p <font color="#808080">"foo"</font>.object_id
+
+<i><font color="silver"># Two symbols with the same content are the same object</font></i>
+p :foo.object_id
+p :foo.object_id
+
+<i><font color="silver"># Modern hash syntax uses symbols as keys</font></i>
+my_hash = { name: <font color="#808080">"Paul"</font>, language: <font color="#808080">"Ruby"</font> }
+p my_hash[:name] <i><font color="silver"># =&gt; "Paul"</font></i>
+</pre>
+<br />
+<span>This code highlights the difference between strings and symbols and shows the convenient hash syntax.</span><br />
+<br />
+<h3 style='display: inline' id='arrays-and-hashes'>Arrays and Hashes</h3><br />
+<br />
+<span>Arrays and hashes have a rich API. The <span class='inlinecode'>%w</span> and <span class='inlinecode'>%i</span> shortcuts for creating arrays of strings and symbols are very handy.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><i><font color="silver"># Array of strings</font></i>
+p %w[one two three]
+<i><font color="silver"># =&gt; ["one", "two", "three"]</font></i>
+
+<i><font color="silver"># Array of symbols</font></i>
+p %i[one two three]
+<i><font color="silver"># =&gt; [:one, :two, :three]</font></i>
+</pre>
+<br />
+<span>A quick way to create arrays. You can also retrieve multiple values at once.</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre>arr = [<font color="#000000">10</font>, <font color="#000000">20</font>, <font color="#000000">30</font>, <font color="#000000">40</font>, <font color="#000000">50</font>]
+p arr.values_at(<font color="#000000">0</font>, <font color="#000000">2</font>, <font color="#000000">4</font>)
+<i><font color="silver"># =&gt; [10, 30, 50]</font></i>
+
+hash = { a: <font color="#000000">1</font>, b: <font color="#000000">2</font>, c: <font color="#000000">3</font> }
+p hash.values_at(:a, :c)
+<i><font color="silver"># =&gt; [1, 3]</font></i>
+</pre>
+<br />
+<span>The <span class='inlinecode'>values_at</span> method is a concise way to get multiple elements.</span><br />
+<br />
+<h2 style='display: inline' id='final-thoughts'>Final Thoughts</h2><br />
+<br />
+<span>These are just a few of the many things I learned from "The Well-Grounded Rubyist". The book gave me a much deeper appreciation for the language and its design. If you are a Ruby programmer, I highly recommend it. Meanwhile, I also read the book "Programming Ruby 3.3", just I didn&#39;t have time to process my notes there yet. </span><br />
+<br />
+<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
+<br />
+<span>Other Ruby-related posts:</span><br />
+<br />
+<a class='textlink' href='./2021-07-04-the-well-grounded-rubyist.html'>2021-07-04 The Well-Grounded Rubyist</a><br />
+<br />
+<a class='textlink' href='../'>Back to the main site</a><br />
+<p class="footer">
+ Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> |
+ served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> |
+ <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a>
+ <br />
+ Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a>
+</p>
+</body>
+</html>
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index d2f437a8..22dc3466 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,12 +1,256 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2025-10-02T11:30:14+03:00</updated>
+ <updated>2025-10-11T15:25:15+03:00</updated>
<title>foo.zone feed</title>
<subtitle>To be in the .zone!</subtitle>
<link href="https://foo.zone/gemfeed/atom.xml" rel="self" />
<link href="https://foo.zone/" />
<id>https://foo.zone/</id>
<entry>
+ <title>Key Takeaways from The Well-Grounded Rubyist</title>
+ <link href="https://foo.zone/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.html" />
+ <id>https://foo.zone/gemfeed/2025-10-11-the-well-grounded-rubyist-notes.html</id>
+ <updated>2025-10-11T15:25:14+03:00</updated>
+ <author>
+ <name>Paul Buetow aka snonux</name>
+ <email>paul@dev.buetow.org</email>
+ </author>
+ <summary>Some time ago, I wrote about my journey into Ruby and how 'The Well-Grounded Rubyist' helped me to get a better understanding of the language. I took a lot of notes while reading the book, and I think it's time to share some of them. This is not a comprehensive review, but rather a collection of interesting tidbits and concepts that stuck with me.</summary>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h1 style='display: inline' id='key-takeaways-from-the-well-grounded-rubyist'>Key Takeaways from The Well-Grounded Rubyist</h1><br />
+<br />
+<span>Some time ago, I wrote about my journey into Ruby and how "The Well-Grounded Rubyist" helped me