The Curious Engineer

All blogs / Python

The Python Coding Stack

thepythoncodingstack.com

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

Python

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

  1. 3. How can words turn into actions?
  2. A New Price Without Breaking the Old One • The O in SOLID
  3. 2. Who actually does the work, the model or the software?
  4. 1. What makes an AI agent different from a chatbot?
  5. Stephen's Preface to Agents Unpacked
  6. Agents Unpacked • Table of Contents
  7. The Potion Shop That Does Too Much • The S in SOLID
  8. How I Code (Late 2026 Version)
  9. Back From Holidays • SOLID Ideas, Agents, Rust
  10. [Archived] 2. Anatomy of an Agent
  11. Down The Iterator Rabbit Hole
  12. [Archived] 1. From Answer to Outcome
  13. [Archived] Table of Contents • Agents Unpacked
  14. [Archived] Stephen's Preface to Agents Unpacked
  15. How I Learn (2026 Version) • My Tutor Agent
  16. Do You Get It Now?
  17. Doubling Down on Python in The Age of AI
  18. 3 • 7600 • 33 • 121 • When Python Stacks Up
  19. The Weird and Wonderful World of Descriptors in Python • The Price is Right
  20. Field Notes: First, Second, and Five Hundred and Twenty-Third
  21. You Store Data and You Do Stuff With Data • The OOP Mindset
  22. “Python’s Plumbing” Is Not As Flashy as “Magic Methods” • But Is It Better?
  23. The Journey From LBYL to EAFP
  24. When "It Works" Is Not Good Enough • Live Workshops
  25. What’s The Point of `itemgetter()` in Python?
  26. Planning Meals, Weekly Shop, Alternative Constructors Using Class Methods
  27. The Orchestra Conductor, The Senior Programmer, and AI
  28. Need a Constant in Python? Enums Can Come in Useful
  29. Parkruns, Python’s enumerate and zip, and Why Python Loops Are Different from Other Languages

2025 32

  1. Mulled Wine, Mince Pies, and More Python
  2. If You Love Queuing, Will You Also Love Priority Queuing?
  3. My Life • The Autobiography of a Python Object
  4. I Don’t Like Magic • Exploring The Class Attributes That Aren’t Really Class Attributes
  5. The Misunderstood Hashable Types and Why Dictionaries Are Called Dictionaries
  6. And Now You Know Your ABC
  7. Impostors • How Even The Python Docs Get This Wrong*
  8. Are Tuples More Like Lists or Strings? And Why We Don't Really Care
  9. Creating a Singleton Class in Python And Why You (Probably) Don’t Need It
  10. The Networking Event (#4 in The itertools Series • `combinations()` and `permutations()`)
  11. When You No Longer Need That Object • Dealing With Garbage in Python
  12. Flashy, Fancy Shortcuts Aren't Always Suitable [Python Shorts]
  13. Do You Really Know How `or` And `and` Work in Python?
  14. Python Backstage • Disassembling Python Code Using the `dis` Module
  15. I Want to Remove Duplicates from a Python List • How Do I Do It?
  16. Are Python Dictionaries Ordered Data Structures?
  17. What's the Difference Between Zipping and Unzipping Your Jacket? • Unzipping in Python
  18. The Chores Rota (#3 in The `itertools` Series • `cycle()` and Combining Tools)
  19. A Story About Parameters and Arguments in Python Functions • "AI Coffee" Grand Opening This Monday
  20. Demystifying Decorators • Parts 3 to 7
  21. Demystifying Decorators • They Don't Need to be Cryptic
  22. Dropping Values (#2 in The `itertools` Series • `dropwhile()` and `takewhile()`)
  23. The Properties of Python's `property`
  24. I Want My Own Fancy F-String Format Specifiers… Sure You Can
  25. Loss of Words • A Nested Journey (#1 in The `itertools` Series • `product()`)
  26. Counting: How Hard Can it Be?
  27. Hermione's Undetectable Extension Charm: Revealed (Using Python)
  28. The One About the £5 Note and the Trip to the Coffee Shop • The Difference Between `is` and `==` in Python
  29. On Shared Birthdays (and a Bit on Pythagorean Triplets) • Pythonic Code
  30. The Shortest Python `import` Tutorial • A Picture Story
  31. Choose Your Fighter • Inheritance vs. Composition (#2 in Inheritance vs Composition Pair)
  32. Choose Your Fighter • Let's Play (#1 in Inheritance vs Composition Pair)

2024 39

  1. A Python Christmas
  2. The Storeroom
  3. When a Duck Calls Out • On Duck Typing and Callables in Python
  4. Goat or Car? Solving The Monty Hall Problem With Python and NumPy
  5. The Code That Almost Led to Disaster • A Starbase Story
  6. 1969: Can You Land on The Moon? • A Python `turtle` Lunar Lander
  7. Let's Eliminate General Bewilderment • Python's LEGB Rule, Scope, and Namespaces
  8. What's In A List—Yes, But What's *Really* In A List
  9. What Can A Coffee Machine Teach You About Python's Functions?
  10. And Now for Something New
  11. Simone's Creative Cooking Club • If You Haven't Got a Clue What "Pass by Value" or "Pass by Reference" Mean, Read On…
  12. Is There Any Doctor Here? We're All Doctors…
  13. What's The Difference Between NumPy's `arange()` and `linspace()` (A NumPy for Numpties article)
  14. After You. No, I Insist, You Go First • Python's Operator Precedence
  15. If Feynman Were Teaching Today… A Simplified Python Simulation of Diffusion
  16. The Trees in the Woods (Data Structures in the Real World #1)
  17. `bytes`: The Lesser-Known Python Built-In Sequence • And Understanding UTF-8 Encoding
  18. `dict()` is More Versatile Than You May Think
  19. A Sequence of Lazy Turtle Aliens
  20. Where's William? How Quickly Can You Find Him? • What's a Python Hashable Object?
  21. The Magician's Sleight of Hand
  22. "It works!" is The Most Dangerous Phrase in Programming • Understanding `itertools.groupby()`
  23. Rambling Reflections • Twelve Months of The Python Coding Stack
  24. "I'm One of You!" Said the Function to the Other Objects
  25. The Strange Practices at The Broadcaster's Inn • Broadcasting in NumPy (A NumPy for Numpties article)
  26. On a Book, a Hybrid Course, and a Space Invaders Clone in `turtle`
  27. If You Find if..else in List Comprehensions Confusing, Read This, Else…
  28. To Infinity and Beyond • The Infinite `for` Loop
  29. A NumPy Banana Skin • `dtype` (A NumPy for Numpties article)
  30. Join Me For a Live Information Session About Cohort Courses This Thursday • Plus Some `datetime.datetime` Magic
  31. It's Pointless! Or Isn't It? Python's `Ellipsis` Has Three ...
  32. What's In A Name?
  33. Using Matplotlib To Create The 50th Article Cover Mosaic Animation (#50 Part 2)
  34. #50 • Original Milestones Pointed Towards A Future Destination Not A Past Event (Part 1)
  35. 50, N, 10, 2, 100
  36. Telling The Truthy
  37. My Neighbours Are Moving House • Mutating The Immutable Tuple (Sort Of)
  38. Put On Your Deerstalker. You're Now a Detective. It's Time For Debugging
  39. Why Can't I Just Use A List? • Understanding NumPy's `ndarray` (A NumPy for Numpties article)

2023 46

  1. next(years)
  2. Do Not Try This At Home
  3. The Key To The `key` Parameter in Python
  4. A Small Change At The Python Coding Stack
  5. What's All the Fuss About `lambda` Functions in Python?
  6. In Conversation: Pawel and Stephen Discuss Matplotlib's New-ish subplot_mosaic()
  7. In Conversation: Rodrigo and Stephen Discuss Analogies When Learning To Code
  8. A Touch of Randomness Makes The Magic Sparkle • A Python `turtle` Animation
  9. NumPy for Numpties
  10. The Curious Little Shop at The End of My Street • Python's f-strings
  11. Python City (Monty and The White Room Series #3)
  12. This Page Is Intentionally Left Blank • The Story of `None`
  13. The Function Room (Monty and The White Room Series #2)
  14. Monty and The White Room (Monty and The White Room Series #1)
  15. 5:30am • Timezone Headaches (Part 1)
  16. A Slicing Story
  17. Coding, Fast and Slow, Just Like Chess
  18. Butter Berries, An Elusive Delicacy
  19. Pay As You Go • Generate Data Using Generators (Data Structure Categories #7)
  20. Clearing The Deque—Tidying My Daughter's Soft Toys • A Python Picture Story
  21. The Final Year at Hogwarts School of Codecraft and Algorithmancy (Harry Potter OOP Series #7)
  22. Tap, Tap, Tap on The Tiny `turtle` Typewriter
  23. Python Quirks? Party Tricks? Peculiarities Revealed…
  24. The Mayor of Py Town's Local Experiment: A Global Disaster
  25. Time for Something Special • Special Methods in Python Classes (Harry Potter OOP Series #6)
  26. A Picture is Worth More Than a Thousand Words • Images & 2D Fourier Transforms in Python
  27. A One-Way Stream of Data • Iterators in Python (Data Structure Categories #6)
  28. Collecting Things • Python's Collections (Data Structure Categories #5)
  29. And Now for the Conclusion: The Manor's Oak-Panelled Library and __getitem__()[Part 2]
  30. The Anatomy of a for Loop
  31. The Manor House, the Oak-Panelled Library, the Vending Machine, and Python's __getitem__() [Part 1]
  32. "You Have Your Mother's Eyes" • Inheritance in Python Classes (Harry Potter OOP Series #5)
  33. Casting A Spell • More Interaction Between Classes (Harry Potter OOP Series #4)
  34. An Object That Contains Objects • Python's Containers (Data Structure Categories #4)
  35. Zen and The Art of Python `turtle` Animations • A Step-by-Step Guide
  36. The One About The Taxi Driver, Mappings, and Sequences • A Short Trip to 42 Python Street
  37. Deconstructing Ideas And Constructing Code • Using the Store-Repeat-Decide-Reuse Concept
  38. There's A Method To The Madness • Defining Methods In Python Classes (Harry Potter OOP Series #3)
  39. Finding Your Way To The Right Value • Python's Mappings (Data Structure Categories #3)
  40. Python's functools.partial() Lets You Pre-Fill A Function
  41. Let The Real Magic Begin • Creating Classes in Python (Harry Potter OOP Series #2)
  42. Sequences in Python (Data Structure Categories #2)
  43. Harry Potter and The Object-Oriented Programming Paradigm (Harry Potter OOP Series #1)
  44. Iterable: Python's Stepping Stones (Data Structure Categories #1)
  45. Why Do 5 + "5" and "5" + 5 Give Different Errors in Python? • Do You Know The Whole Story?
  46. What Should You Expect From The Python Coding Stack?