The Python Coding Stack
I write the articles I wish I had when I was learning Python programming I learn through narratives, stories. And I communicate in the same way, with a friendly and relaxed tone, clear and accessible. Click to read The Python Coding Stack, by Stephen Gruppetta, a Substack publication with thousands
- Posts
- 146 from 14 Apr 2023 to 29 Oct 2026
- Posting
- weekly (35 in the last year)
- Kind
- personal blog
- Feed
- https://www.thepythoncodingstack.com/feed
2026 29
- 3. How can words turn into actions?
- A New Price Without Breaking the Old One • The O in SOLID
- 2. Who actually does the work, the model or the software?
- 1. What makes an AI agent different from a chatbot?
- Stephen's Preface to Agents Unpacked
- Agents Unpacked • Table of Contents
- The Potion Shop That Does Too Much • The S in SOLID
- How I Code (Late 2026 Version)
- Back From Holidays • SOLID Ideas, Agents, Rust
- [Archived] 2. Anatomy of an Agent
- Down The Iterator Rabbit Hole
- [Archived] 1. From Answer to Outcome
- [Archived] Table of Contents • Agents Unpacked
- [Archived] Stephen's Preface to Agents Unpacked
- How I Learn (2026 Version) • My Tutor Agent
- Do You Get It Now?
- Doubling Down on Python in The Age of AI
- 3 • 7600 • 33 • 121 • When Python Stacks Up
- The Weird and Wonderful World of Descriptors in Python • The Price is Right
- Field Notes: First, Second, and Five Hundred and Twenty-Third
- You Store Data and You Do Stuff With Data • The OOP Mindset
- “Python’s Plumbing” Is Not As Flashy as “Magic Methods” • But Is It Better?
- The Journey From LBYL to EAFP
- When "It Works" Is Not Good Enough • Live Workshops
- What’s The Point of `itemgetter()` in Python?
- Planning Meals, Weekly Shop, Alternative Constructors Using Class Methods
- The Orchestra Conductor, The Senior Programmer, and AI
- Need a Constant in Python? Enums Can Come in Useful
- Parkruns, Python’s enumerate and zip, and Why Python Loops Are Different from Other Languages
2025 32
- Mulled Wine, Mince Pies, and More Python
- If You Love Queuing, Will You Also Love Priority Queuing?
- My Life • The Autobiography of a Python Object
- I Don’t Like Magic • Exploring The Class Attributes That Aren’t Really Class Attributes
- The Misunderstood Hashable Types and Why Dictionaries Are Called Dictionaries
- And Now You Know Your ABC
- Impostors • How Even The Python Docs Get This Wrong*
- Are Tuples More Like Lists or Strings? And Why We Don't Really Care
- Creating a Singleton Class in Python And Why You (Probably) Don’t Need It
- The Networking Event (#4 in The itertools Series • `combinations()` and `permutations()`)
- When You No Longer Need That Object • Dealing With Garbage in Python
- Flashy, Fancy Shortcuts Aren't Always Suitable [Python Shorts]
- Do You Really Know How `or` And `and` Work in Python?
- Python Backstage • Disassembling Python Code Using the `dis` Module
- I Want to Remove Duplicates from a Python List • How Do I Do It?
- Are Python Dictionaries Ordered Data Structures?
- What's the Difference Between Zipping and Unzipping Your Jacket? • Unzipping in Python
- The Chores Rota (#3 in The `itertools` Series • `cycle()` and Combining Tools)
- A Story About Parameters and Arguments in Python Functions • "AI Coffee" Grand Opening This Monday
- Demystifying Decorators • Parts 3 to 7
- Demystifying Decorators • They Don't Need to be Cryptic
- Dropping Values (#2 in The `itertools` Series • `dropwhile()` and `takewhile()`)
- The Properties of Python's `property`
- I Want My Own Fancy F-String Format Specifiers… Sure You Can
- Loss of Words • A Nested Journey (#1 in The `itertools` Series • `product()`)
- Counting: How Hard Can it Be?
- Hermione's Undetectable Extension Charm: Revealed (Using Python)
- The One About the £5 Note and the Trip to the Coffee Shop • The Difference Between `is` and `==` in Python
- On Shared Birthdays (and a Bit on Pythagorean Triplets) • Pythonic Code
- The Shortest Python `import` Tutorial • A Picture Story
- Choose Your Fighter • Inheritance vs. Composition (#2 in Inheritance vs Composition Pair)
- Choose Your Fighter • Let's Play (#1 in Inheritance vs Composition Pair)
2024 39
- A Python Christmas
- The Storeroom
- When a Duck Calls Out • On Duck Typing and Callables in Python
- Goat or Car? Solving The Monty Hall Problem With Python and NumPy
- The Code That Almost Led to Disaster • A Starbase Story
- 1969: Can You Land on The Moon? • A Python `turtle` Lunar Lander
- Let's Eliminate General Bewilderment • Python's LEGB Rule, Scope, and Namespaces
- What's In A List—Yes, But What's *Really* In A List
- What Can A Coffee Machine Teach You About Python's Functions?
- And Now for Something New
- Simone's Creative Cooking Club • If You Haven't Got a Clue What "Pass by Value" or "Pass by Reference" Mean, Read On…
- Is There Any Doctor Here? We're All Doctors…
- What's The Difference Between NumPy's `arange()` and `linspace()` (A NumPy for Numpties article)
- After You. No, I Insist, You Go First • Python's Operator Precedence
- If Feynman Were Teaching Today… A Simplified Python Simulation of Diffusion
- The Trees in the Woods (Data Structures in the Real World #1)
- `bytes`: The Lesser-Known Python Built-In Sequence • And Understanding UTF-8 Encoding
- `dict()` is More Versatile Than You May Think
- A Sequence of Lazy Turtle Aliens
- Where's William? How Quickly Can You Find Him? • What's a Python Hashable Object?
- The Magician's Sleight of Hand
- "It works!" is The Most Dangerous Phrase in Programming • Understanding `itertools.groupby()`
- Rambling Reflections • Twelve Months of The Python Coding Stack
- "I'm One of You!" Said the Function to the Other Objects
- The Strange Practices at The Broadcaster's Inn • Broadcasting in NumPy (A NumPy for Numpties article)
- On a Book, a Hybrid Course, and a Space Invaders Clone in `turtle`
- If You Find if..else in List Comprehensions Confusing, Read This, Else…
- To Infinity and Beyond • The Infinite `for` Loop
- A NumPy Banana Skin • `dtype` (A NumPy for Numpties article)
- Join Me For a Live Information Session About Cohort Courses This Thursday • Plus Some `datetime.datetime` Magic
- It's Pointless! Or Isn't It? Python's `Ellipsis` Has Three ...
- What's In A Name?
- Using Matplotlib To Create The 50th Article Cover Mosaic Animation (#50 Part 2)
- #50 • Original Milestones Pointed Towards A Future Destination Not A Past Event (Part 1)
- 50, N, 10, 2, 100
- Telling The Truthy
- My Neighbours Are Moving House • Mutating The Immutable Tuple (Sort Of)
- Put On Your Deerstalker. You're Now a Detective. It's Time For Debugging
- Why Can't I Just Use A List? • Understanding NumPy's `ndarray` (A NumPy for Numpties article)
2023 46
- next(years)
- Do Not Try This At Home
- The Key To The `key` Parameter in Python
- A Small Change At The Python Coding Stack
- What's All the Fuss About `lambda` Functions in Python?
- In Conversation: Pawel and Stephen Discuss Matplotlib's New-ish subplot_mosaic()
- In Conversation: Rodrigo and Stephen Discuss Analogies When Learning To Code
- A Touch of Randomness Makes The Magic Sparkle • A Python `turtle` Animation
- NumPy for Numpties
- The Curious Little Shop at The End of My Street • Python's f-strings
- Python City (Monty and The White Room Series #3)
- This Page Is Intentionally Left Blank • The Story of `None`
- The Function Room (Monty and The White Room Series #2)
- Monty and The White Room (Monty and The White Room Series #1)
- 5:30am • Timezone Headaches (Part 1)
- A Slicing Story
- Coding, Fast and Slow, Just Like Chess
- Butter Berries, An Elusive Delicacy
- Pay As You Go • Generate Data Using Generators (Data Structure Categories #7)
- Clearing The Deque—Tidying My Daughter's Soft Toys • A Python Picture Story
- The Final Year at Hogwarts School of Codecraft and Algorithmancy (Harry Potter OOP Series #7)
- Tap, Tap, Tap on The Tiny `turtle` Typewriter
- Python Quirks? Party Tricks? Peculiarities Revealed…
- The Mayor of Py Town's Local Experiment: A Global Disaster
- Time for Something Special • Special Methods in Python Classes (Harry Potter OOP Series #6)
- A Picture is Worth More Than a Thousand Words • Images & 2D Fourier Transforms in Python
- A One-Way Stream of Data • Iterators in Python (Data Structure Categories #6)
- Collecting Things • Python's Collections (Data Structure Categories #5)
- And Now for the Conclusion: The Manor's Oak-Panelled Library and __getitem__()[Part 2]
- The Anatomy of a for Loop
- The Manor House, the Oak-Panelled Library, the Vending Machine, and Python's __getitem__() [Part 1]
- "You Have Your Mother's Eyes" • Inheritance in Python Classes (Harry Potter OOP Series #5)
- Casting A Spell • More Interaction Between Classes (Harry Potter OOP Series #4)
- An Object That Contains Objects • Python's Containers (Data Structure Categories #4)
- Zen and The Art of Python `turtle` Animations • A Step-by-Step Guide
- The One About The Taxi Driver, Mappings, and Sequences • A Short Trip to 42 Python Street
- Deconstructing Ideas And Constructing Code • Using the Store-Repeat-Decide-Reuse Concept
- There's A Method To The Madness • Defining Methods In Python Classes (Harry Potter OOP Series #3)
- Finding Your Way To The Right Value • Python's Mappings (Data Structure Categories #3)
- Python's functools.partial() Lets You Pre-Fill A Function
- Let The Real Magic Begin • Creating Classes in Python (Harry Potter OOP Series #2)
- Sequences in Python (Data Structure Categories #2)
- Harry Potter and The Object-Oriented Programming Paradigm (Harry Potter OOP Series #1)
- Iterable: Python's Stepping Stones (Data Structure Categories #1)
- Why Do 5 + "5" and "5" + 5 Give Different Errors in Python? • Do You Know The Whole Story?
- What Should You Expect From The Python Coding Stack?