Crafting and Editing In-Depth Tutorials at Real Python
<p>What goes into creating the tutorials you read at Real Python? What are the steps in the editorial process, and who are the people behind the scenes? This week on the show, Real Python team members Martin Breuss, Brenda Weleschuk, and Philipp Acsany join us to discuss topic curation, review stages, and quality assurance.</p>
<p>We start by sharing the multiple roles our panel of guests perform across the editorial process. They describe the phases a tutorial passes through, including layers of reviews, from technical accuracy to educational effectiveness. We also discuss our editorial independence, external authors, and the continuous feedback loop with our readers.</p>
<p>This episode is sponsored by AgentField.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Spotlight:</strong> <a href="https://realpython.com/workshops/claude-code/">Claude Code Course: Stop Copy-Pasting From ChatGPT</a></p>
<p>Most Python developers use AI as fancy autocomplete. This 2-day course teaches you to build entire projects with an AI agent inside your codebase.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:33 – Martin’s role at Real Python</li>
<li>00:04:35 – Philipp’s role at Real Python</li>
<li>00:05:27 – Brenda’s role at Real Python</li>
<li>00:06:49 – Internal core team and external contributors</li>
<li>00:13:46 – Selecting topics and subjects</li>
<li>00:21:43 – Outlining and review</li>
<li>00:28:26 – Sponsor: AgentField</li>
<li>00:29:27 – Writing drafts</li>
<li>00:34:03 – Changes to our style and format</li>
<li>00:37:32 – Technical review and using Git</li>
<li>00:43:53 – Didactic review</li>
<li>00:52:59 – Language edit</li>
<li>00:57:16 – Spotlight: Claude Code Live Course</li>
<li>00:59:00 – Final QA</li>
<li>01:01:00 – Scheduling</li>
<li>01:03:36 – Reader feedback and updating existing tutorials</li>
<li>01:06:04 – Using modern tools</li>
<li>01:13:59 – Shining the light on contributors</li>
<li>01:16:26 – Independence and editorial choices</li>
<li>01:19:10 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/editorial-guidelines/">Editorial Guidelines – Real Python</a></li>
<li><a href="https://realpython.com/team/">Meet Our Team</a></li>
<li><a href="https://realpython.com/team/mbreuss/">About Martin Breuss</a></li>
<li><a href="https://realpython.com/team/pacsany/">About Philipp Acsany</a></li>
<li><a href="https://realpython.com/team/bweleschuk/">About Brenda Weleschuk</a></li>
<li><a href="https://realpython.com/account/signup/?next=%2Faccount%2Fonboarding%2Fplan%2F&intent=learning_plan">Create Your Learning Plan</a></li>
<li><a href="https://realpython.com/learning-paths/">Python Learning Paths</a></li>
<li><a href="https://realpython.com/ref/">Reference – Real Python</a></li>
<li><a href="https://realpython.com/jobs/">Join the Real Python Team – Real Python</a></li>
<li><a href="https://realpython.com/live/">Cohort-Based Live Python Courses – Real Python</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/getting-started-claude-code/">Getting Started With Claude Code</a></li>
<li><a href="https://realpython.com/courses/write-python-docstrings-effectively/">Write Python Docstrings Effectively</a></li>
<li><a href="https://realpython.com/courses/python-basics-first-program/">Python Basics: Code Your First Python Program</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
2023 Real Python Tutorial & Video Course Wrap-Up
<p>Three members of the Real Python team are joining us this week: Kate Finegan, Tappan Moore, and Philipp Acsany. We wanted to share a year-end wrap-up with tutorials, step-by-step projects, code conversations, and video courses that showcase what our team created this year.</p>
<p>Kate helps to shepherd articles through the multi-stage editing process. She and the rest of the team ensure these resources impart crucial Python knowledge and provide a thorough didactic experience. Kate was also instrumental in helping introduce a new group of tutorial authors to the Real Python editorial process and house style. </p>
<p>Philipp returns to the podcast after our conversation earlier this year, and it was great to talk to him about onboarding new video instructors. Tappan edits all our video courses and ensures that the sound, picture, and animations are just right. He also helped provide feedback to the new instructors on our video creation process.</p>
<p>We hope you enjoy this review! We look forward to bringing you another year full of great guests, articles, and topics. </p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-recursion/">Recursion in Python</a></p>
<p>A recursive function is one that calls itself. In this video course, you’ll see what recursion is, how it works in Python, and under what circumstances you should use it.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:50 – New Video Instructors</li>
<li>00:05:31 – New Tutorial Authors</li>
<li>00:07:37 – Shout-out to Aldren Santos</li>
<li>00:09:27 – Build a Wordle Clone With Python and Rich</li>
<li>00:11:37 – Python Classes: The Power of Object-Oriented Programming</li>
<li>00:13:43 – SOLID Principles: Improve Object-Oriented Design in Python</li>
<li>00:14:47 – Using the NumPy Random Number Generator</li>
<li>00:17:58 – Recursion in Python</li>
<li>00:19:44 – Filtering Iterables With Python</li>
<li>00:21:04 – Creating Web Maps From Your Data With Python Folium</li>
<li>00:24:51 – Video Course Spotlight</li>
<li>00:26:13 – Python Basics Exercises: Building Systems With Classes</li>
<li>00:31:00 – Real Python Quizzes</li>
<li>00:33:53 – Process Images Using the Pillow Library and Python</li>
<li>00:36:00 – How to Sort Unicode Strings Alphabetically in Python</li>
<li>00:38:36 – The Python Rich Package: Unleash the Power of Console Text</li>
<li>00:42:31 – Embeddings and Vector Databases With ChromaDB</li>
<li>00:46:41 – Advent of Code: Solving Puzzles With Python</li>
<li>00:51:07 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/python-wordle-clone/">Build a Wordle Clone With Python and Rich – Step-by-Step Project</a></li>
<li><a href="https://realpython.com/python-classes/">Python Classes: The Power of Object-Oriented Programming – Tutorial</a></li>
<li><a href="https://realpython.com/solid-principles-python/">SOLID Principles: Improve Object-Oriented Design in Python – Tutorial</a></li>
<li><a href="https://realpython.com/numpy-random-number-generator/">Using the NumPy Random Number Generator – Tutorial</a></li>
<li><a href="https://realpython.com/courses/python-recursion/">Recursion in Python – Video Course</a></li>
<li><a href="https://realpython.com/courses/python-filter-function/">Filtering Iterables With Python – Video Course</a></li>
<li><a href="https://realpython.com/courses/python-folium-web-maps-from-data/">Creating Web Maps From Your Data With Python Folium – Video Course</a></li>
<li><a href="https://realpython.com/courses/building-systems-classes-exercises/">Python Basics Exercises: Building Systems With Classes – Video Course</a></li>
<li><a href="https://realpython.com/courses/python-pillow/">Process Images Using the Pillow Library and Python – Video Course</a></li>
<li><a href="https://realpython.com/python-sort-unicode-strings/">How to Sort Unicode Strings Alphabetically in Python – Tutorial</a></li>
<li><a href="https://realpython.com/python-rich-package/">The Python Rich Package: Unleash the Power of Console Text – Showcase</a></li>
<li><a href="https://realpython.com/chromadb-vector-database/">Embeddings and Vector Databases With ChromaDB – Tutorial</a></li>
<li><a href="https://realpython.com/courses/python-advent-of-code/">Advent of Code: Solving Puzzles With Python – Code Conversation</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://realpython.com/courses/python-wordle-clone/">Create a Python Wordle Clone With Rich – Video Course</a></li>
<li><a href="https://realpython.com/courses/python-class-object/">Class Concepts: Object-Oriented Programming in Python – Video Course</a></li>
<li><a href="https://realpython.com/courses/python-class-inheritance/">Inheritance and Internals: Object-Oriented Programming in Python – Video Course</a></li>
<li><a href="https://realpython.com/courses/solid-principles-python/">Design and Guidance: Object-Oriented Programming in Python – Video Course</a></li>
<li><a href="https://www.theregister.com/2023/10/10/ftx_python_code/?ref=biztoc.com">FTX Python code ‘allowed’ Alameda Research to spend deposits - The Register</a></li>
<li><a href="https://realpython.com/python-recursion/">Recursion in Python: An Introduction – Tutorial</a></li>
<li><a href="https://realpython.com/python-filter-function/">Python’s filter(): Extract Values From Iterables – Tutorial</a></li>
<li><a href="https://realpython.com/python-folium-web-maps-from-data/">Python Folium: Create Web Maps From Your Data – Step-by-Step Project</a></li>
<li><a href="https://realpython.com/podcasts/rpp/12/">Episode #12: Web Scraping in Python: Tools, Techniques, and Legality – The Real Python Podcast</a></li>
<li><a href="https://realpython.com/courses/python-basics-class/">Python Basics: Building Systems With Classes – Video Course</a></li>
<li><a href="https://realpython.com/image-processing-with-the-python-pillow-library/">Image Processing With the Python Pillow Library – Tutorial</a></li>
<li><a href="https://realpython.com/podcasts/rpp/80/">Episode #80: Make Your Python App Interactive With a Text User Interface (TUI) – The Real Python Podcast</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/building-systems-classes-exercises/">Python Basics Exercises: Building Systems With Classes</a></li>
<li><a href="https://realpython.com/courses/python-pillow/">Process Images Using the Pillow Library and Python</a></li>
<li><a href="https://realpython.com/courses/python-recursion/">Recursion in Python</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Finding the Right Coding Font for Programming in Python
<p>What should you consider when picking a font for coding in Python? What characters and their respective glyphs should you check before making your decision? This week on the show, we talk with Real Python author and core team member Philipp Acsany about his recent article, Choosing the Best Coding Font for Programming.</p>
<p>Philipp shares some of his background as a font engineer and graphic designer. We talk about how font design tools were his introduction to programming in Python.</p>
<p>We discuss how the frequent use of underscores, at signs, parentheses, and asterisks in Python’s syntax should affect your decision. Philipp’s tutorial provides several resources to help you find a monospace font that fits your coding requirements.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-wordle-clone/">Create a Python Wordle Clone With Rich</a> </p>
<p>In this step-by-step project, you’ll build your own Wordle clone with Python. Your game will run in the terminal, and you’ll use Rich to ensure your word-guessing app looks good. Learn how to build a command-line application from scratch and then challenge your friends to a wordly competition!</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:32 – Previous podcast appearances</li>
<li>00:03:18 – Programming-environment fussiness and monospace fonts</li>
<li>00:07:29 – Researching the tutorial and curating the collection</li>
<li>00:10:51 – Philipp’s background</li>
<li>00:18:07 – Differentiating characters</li>
<li>00:21:37 – Monospace, typewriters, and alignment</li>
<li>00:25:08 – Character sets to study</li>
<li>00:32:38 – The comma and the period</li>
<li>00:37:04 – Video Course Spotlight</li>
<li>00:38:30 – Python’s use in font development</li>
<li>00:42:48 – Different fonts for different languages</li>
<li>00:49:27 – Non-English comments</li>
<li>00:55:40 – Our font choices</li>
<li>00:59:00 – What are you excited about in the world of Python?</li>
<li>01:01:35 – What do you want to learn next?</li>
<li>01:03:41 – Where can people follow your work online?</li>
<li>01:04:38 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/coding-font/">Choosing the Best Coding Font for Programming - Real Python</a></li>
<li><a href="https://engineeringkiosk.dev/podcast/episode/79-font-engineering-und-schriftarten-f%C3%BCrs-programmieren-mit-philipp-acsany/">#79 Font-Engineering und Schriftarten fürs Programmieren mit Philipp Acsany - Engineering Kiosk</a></li>
<li><a href="https://realpython.com/podcasts/rpp/134/">Episode #134: Building Python REST APIs With Flask & Structuring Pull Requests – The Real Python Podcast</a></li>
<li><a href="https://input.djr.com/info/">Input: Fonts for Code — Info</a></li>
<li><a href="https://en.wikipedia.org/wiki/Slashed_zero">Slashed zero - Wikipedia</a></li>
<li><a href="https://www.youtube.com/watch?v=jVhlJNJopOQ">Papyrus - SNL - YouTube</a></li>
<li><a href="https://www.fontlab.com/">FontLab - Font editors and converters for Mac and Windows</a></li>
<li><a href="https://robofont.com/">RoboFont</a></li>
<li><a href="https://www.hedycode.com/">Hedy - Textual programming made easy</a></li>
<li><a href="https://www.keybr.com/">Typing Practice - keybr.com</a></li>
<li><a href="https://monkeytype.com/">Monkeytype - A minimalistic, customizable typing test</a></li>
<li><a href="https://www.homerow.app/">Homerow — Keyboard shortcuts for every button in macOS</a></li>
<li><a href="https://realpython.com/team/pacsany/">About Philipp Acsany – Real Python</a></li>
<li><a href="https://www.linkedin.com/in/acsany/">Philipp Acsany - LinkedIn</a></li>
<li><a href="https://www.chess.com/member/axani">Filip Axani (axani) - Chess Profile - Chess.com</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-wordle-clone/">Create a Python Wordle Clone With Rich</a></li>
<li><a href="https://realpython.com/courses/building-project-documentation-mkdocs/">Building Python Project Documentation With MkDocs</a></li>
<li><a href="https://realpython.com/courses/python-argparse-command-line-interfaces/">Building Command Line Interfaces With argparse</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Building Python REST APIs With Flask & Structuring Pull Requests
<p>How do you build a REST API using the Flask web framework? How can you quickly add endpoints while automatically generating documentation? This week on the show, Real Python author Philipp Acsany is here to discuss his tutorial series “Python REST APIs With Flask, Connexion, and SQLAlchemy.” Christopher Trudeau is also here with another batch of PyCoder’s Weekly articles and projects.</p>
<p>Philipp talks about updating a set of tutorials to use current libraries and best practices. The series takes you through building the base Flask project, defining endpoints, creating documentation, adding a persistent database, and implementing models with SQLAlchemy.</p>
<p>Christopher shares an article about contributing to an existing internal or open-source project by properly preparing pull requests. The article is titled “Ten Tasty Ingredients for a Delicious Pull Request”. </p>
<p>We share several other articles and projects from the Python community, including more suspicious PyPI packages using new tactics, method chaining in pandas, tools to find syntax errors without stopping, a library for searching text in videos using optical character recognition (OCR), a project for visualizing CPython’s specializing adaptive interpreter, and a library for building CLI applications based on type hints.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/pandas-dataframe-working-with-data/">The Pandas DataFrame: Working With Data Efficiently</a> </p>
<p>In this course, you’ll get started with pandas DataFrames, which are powerful and widely used two-dimensional data structures. You’ll learn how to perform basic operations with data, handle missing values, work with time-series data, and visualize data from a pandas DataFrame.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:03:09 – Philipp’s background </li>
<li>00:05:37 – Python REST APIs With Flask, Connexion, and SQLAlchemy</li>
<li>00:14:35 – Ten Tasty Ingredients for a Delicious Pull Request</li>
<li>00:24:25 – Sponsor: InfluxDB</li>
<li>00:25:13 – Method Chaining in Pandas: Bad Form or a Recipe for Success?</li>
<li>00:31:35 – More Suspicious PyPI Packages</li>
<li>00:35:48 – Video Course Spotlight</li>
<li>00:37:01 – What Tools Find Syntax Errors Without Stopping?</li>
<li>00:47:29 – Perform OCR upon entire videos</li>
<li>00:49:49 – Visualize CPython 3.11’s Specializing, Adaptive Interpreter</li>
<li>00:54:08 – Typer, build great CLIs</li>
<li>00:56:29 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://realpython.com/team/pacsany/">About Philipp Acsany – Real Python</a></li>
<li><a href="https://realpython.com/flask-connexion-rest-api/">Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 1</a></li>
<li><a href="https://realpython.com/flask-connexion-rest-api-part-2/">Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 2</a></li>
<li><a href="https://realpython.com/flask-connexion-rest-api-part-3/">Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 3</a></li>
<li><a href="https://wagtail.org/blog/ten-tasty-ingredients-for-a-delicious-pull-request/">Ten Tasty Ingredients for a Delicious Pull Request</a> – LB is a core team member of the open-source project Wagtail and, as such, has a lot of experience dealing with community contributions. This article talks about how to be a good contributor, whether for your next open-source software (OSS) PR or within your own organization.</li>
<li><a href="https://davidamos.dev/method-chaining-in-pandas/">Method Chaining in Pandas: Bad Form or a Recipe for Success?</a> – Python trainer Matt Harrison has been creating a bit of a stir. Some of his pandas examples have elicited criticism from different folks in the Twitterverse. Dave Amos interviews Matt to discuss the pros and cons of his approach.</li>
<li><a href="https://blog.phylum.io/phylum-discovers-dozens-more-pypi-packages-attempting-to-deliver-w4sp-stealer-in-ongoing-supply-chain-attack">More Suspicious PyPI Packages</a> – Researchers at Phylum have come across over a dozen new malicious uploads to PyPI. Many of them are copied and pasted versions of legitimate packages that have been renamed and had malicious code inserted. This detailed article shows some of the tactics used by the bad actors.</li>
</ul>
<p>Discussion:</p>
<ul>
<li><a href="https://groups.google.com/g/comp.lang.python/c/bIyu1fkADio">What Tools Find Syntax Errors Without Stopping?</a></li>
</ul>
<p>Projects:</p>
<ul>
<li><a href="https://github.com/peterc/videocr">videocr: Perform OCR upon entire videos to look for credentials or similar</a></li>
<li><a href="https://github.com/brandtbucher/specialist">Visualize CPython 3.11’s Specializing, Adaptive Interpreter</a></li>
<li><a href="https://typer.tiangolo.com/">Typer, build great CLIs</a></li>
</ul>
<p>Additional Links:</p>
<ul>
<li><a href="https://dailyblogging.org/wordpress/what-percentage-of-websites-use-wordpress/">What Percentage Of Websites Use WordPress In 2022?</a></li>
<li><a href="https://twitter.com/__mharrison__/status/1582393274102206467">“Here’s a recipe to clean up the Ames housing dataset.” Matt Harrison - Twitter</a></li>
<li><a href="https://www.youtube.com/watch?v=PHhOTEYDvHQ">Idiomatic Pandas - Matt Harrison | Conf42 Python 2021 - YouTube</a></li>
<li><a href="https://realpython.com/podcasts/rpp/103/">Episode #103: Becoming More Effective at Manipulating Data With Pandas – The Real Python Podcast</a></li>
<li><a href="https://pola-rs.github.io/polars-book/user-guide/quickstart/intro.html">Getting started - Polars - User Guide</a></li>
<li><a href="https://docs.python.org/3/library/py_compile.html?highlight=py_compile">py_compile — Compile Python source files — Python 3.11.0 documentation</a></li>
<li><a href="https://realpython.com/python-typer-cli/">Build a Command-Line To-Do App With Python and Typer – Real Python</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/deploy-python-script-web-flask/">Deploy Your Python Script on the Web With Flask</a></li>
<li><a href="https://realpython.com/courses/pandas-dataframe-working-with-data/">The pandas DataFrame: Working With Data Efficiently</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>