About Joanna Jablonski
I love working in developer education because I like code, words, and people. (And Python!)
As the Executive Editor of Real Python, I spend my time planning curricula, creating educational resources, building an exceptional team, and more.
When I’m not at my desk, I enjoy exploring the beautiful city of Vancouver on foot, laughing with my pub trivia team, and experimenting with seitan recipes.
Let’s level up our Python together!
Tutorials by Joanna:
- Python's F-String for String Interpolation and Formatting
- CPython Internals: Paperback Now Available!
- Natural Language Processing With Python's NLTK Package
- Python Basics: Paperback Now Available!
- Start Contributing to Python: Your First Steps
- The Real Python Podcast: It's Been a Year!
Tutorials Joanna Contributed to:
- Interacting With Python
- Using the Python zip() Function for Parallel Iteration
- Variables in Python: Usage and Best Practices
- The Python Square Root Function
- Beautiful Soup: Build a Web Scraper With Python
- A Guide to Modern Python String Formatting Tools
- Python Virtual Environments: A Primer
- Using Python's pip to Manage Your Projects' Dependencies
- Lists vs Tuples in Python
- How to Install Python on Your System: A Guide
- Primer on Jinja Templating
- Functional Programming in Python: When and How to Use It
- How to Write an Installable Django App
- Strings and Character Data in Python
- Logging in Python
- Split Your Dataset With scikit-learn's train_test_split()
- Working With JSON Data in Python
- Understanding the Python Mock Object Library
- Python String Formatting: Available Tools and Their Features
- Basic Data Types in Python: A Quick Exploration
- How to Get the Most Out of PyCon US
- PyTorch vs TensorFlow for Your Python Deep Learning Project
- Build a Blog Using Django, GraphQL, and Vue
- Python's Requests Library (Guide)
- Primer on Python Decorators
- How to Write Beautiful Python Code With PEP 8
- Python Exceptions: An Introduction
- When to Use a List Comprehension in Python
- Inheritance and Composition: A Python OOP Guide
- Python range(): Represent Numerical Ranges
- How to Run Your Python Scripts and Code
- Build a Blog From Scratch With Django
- Operators and Expressions in Python
- Object-Oriented Programming (OOP) in Python
- Get Started With Django: Build a Portfolio App
- How to Iterate Through a Dictionary in Python
- Python & APIs: A Winning Combo for Reading Public Data
- How to Round Numbers in Python
- Create and Modify PDF Files in Python
- Build Your Own Face Recognition Tool With Python
- Python's pathlib Module: Taming the File System
- Develop Data Visualization Interfaces in Python With Dash
- Working With Linear Systems in Python With scipy.linalg
- Natural Language Processing With spaCy in Python
- Build Command-Line Interfaces With Python's argparse
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 3
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 2
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 1
- A Practical Introduction to Web Scraping in Python
- Python and PyQt: Building a GUI Desktop Calculator
- Effective Python Testing With Pytest
- Level Up Your Skills With the Real Python Slack Community
- How to Publish an Open-Source Python Package to PyPI
- Linear Regression in Python
- pandas GroupBy: Your Guide to Grouping Data in Python
- Combining Data in pandas With merge(), .join(), and concat()
- Python GUI Programming With Tkinter
- Python Timer Functions: Three Ways to Monitor Your Code
- Socket Programming in Python (Guide)
- Modulo String Formatting in Python
- Python's sum(): The Pythonic Way to Sum Values
- Build a Personal Diary With Django and Python
- A Python Guide to the Fibonacci Sequence
- Using Python Optional Arguments When Defining Functions
- Python's deque: Implement Efficient Queues and Stacks
- Python's ChainMap: Manage Multiple Contexts Effectively
- Python and REST APIs: Interacting With Web Services
- Python's collections: A Buffet of Specialized Data Types
- Your First Steps With Django: Set Up a Django Project
- Python Community Interview With Dustin Ingram
- Using FastAPI to Build Python Web APIs
- What Can I Do With Python?
- Python's Counter: The Pythonic Way to Count Objects
- Reverse Python Lists: Beyond .reverse() and reversed()
- Simplify Complex Numbers With Python
- Python Practice Problems: Parsing CSV Files
- Python's filter(): Extract Values From Iterables
- Python Community Interview With Sebastián Ramírez
- Context Managers and Python's with Statement
- Python News: What's New From May 2021
- Visualizing Data in Python Using plt.scatter()
- Build a Bulk File Rename Tool With Python and PyQt
- Embedded Python: Build a Game on the BBC micro:bit
- Write Pythonic and Clean Code With namedtuple
- Recursion in Python: An Introduction
- Python News: What's New From April 2021
- Build a Platform Game in Python With Arcade
- Python Community Interview With Moshe Zadka
- Deploying a Python Flask Example Application Using Heroku
- Build a Python Directory Tree Generator for the Command Line
- The k-Nearest Neighbors (kNN) Algorithm in Python
- Python News: What's New From March 2021
- Python Community Interview With Will McGugan
- OrderedDict vs dict in Python: The Right Tool for the Job
- Python Community Interview With Dane Hillard
- Build an Asteroids Game With Python and Pygame
- Python AI: How to Build a Neural Network & Make Predictions
- Python Community Interview With Ewa Jodlowska
- Build a Contact Book With Python, PyQt, and SQLite
- New Features: Article Bookmarks, Completion Status, and Search Improvements
- Python and MongoDB: Connecting to NoSQL Databases
- Brython: Python in Your Browser
- pandas Sort: Your Guide to Sorting Data in Python
- Python Microservices With gRPC
- Python Inner Functions: What Are They Good For?
- Qt Designer and Python: Build Your GUI Applications Faster
- Python Web Applications: Deploy Your Script as a Flask App
- Stochastic Gradient Descent Algorithm With Python and NumPy
- How to Use Python: Your First Steps
- C for Python Programmers
- Make Your First Python Game: Rock, Paper, Scissors!
- Sentiment Analysis: First Steps With Python's NLTK Library
- NumPy Tutorial: Your First Steps Into Data Science in Python
- Python's .append(): Add Items to Your Lists in Place
- Python and MySQL Database: A Practical Introduction
- Use PyQt's QThread to Prevent Freezing GUIs
- The pass Statement: How to Do Nothing in Python
- What Is Data Engineering and Is It Right for You?
- Bitwise Operators in Python
- Real Python's Office Hours: Learn With Python Experts in Real Time
- Handling SQL Databases With PyQt: The Basics
- np.linspace(): Create Evenly or Non-Evenly Spaced Arrays
- PyQt Layouts: Create Professional-Looking GUI Applications
- Python enumerate(): Simplify Loops That Need Counters
- Python and PyQt: Creating Menus, Toolbars, and Status Bars
- PyPy: Faster Python With Minimal Effort
- Use Sentiment Analysis With Python to Classify Movie Reviews
- Caching in Python Using the LRU Cache Strategy
- Fourier Transforms With scipy.fft: Python Signal Processing
- Get Started With Django Part 3: Django View Authorization
- Python Modulo in Practice: How to Use the % Operator
- Python Booleans: Use Truth Values in Your Code
- Data Management With Python, SQLite, and SQLAlchemy
- Using ggplot in Python: Visualizing Data With plotnine
- Python Community Interview With Anthony Shaw
- Python 3.9: Cool New Features for You to Try
- Python's map(): Processing Iterables Without a Loop
- The Python return Statement: Usage and Best Practices
- Python Community Interview With David Amos
- Python Practice Problems: Get Ready for Your Next Interview
- Numbers in Python
- Plot With pandas: Python Data Visualization for Beginners
- Find & Fix Code Bugs in Python: Debug With IDLE
- Common Python Data Structures (Guide)
- Python mmap: Improved File I/O With Memory Mapping
- Data Version Control With Python and DVC
- Python Community Interview With Bruno Oliveira
- Pass by Reference in Python: Background and Best Practices
- What Are Python Wheels and Why Should You Care?
- Customize the Django Admin With Python
- Namespaces and Scope in Python
- Generative Adversarial Networks: Build Your First Models
- Python Packages: Five Real Python Favorites
- K-Means Clustering in Python: A Practical Guide
- pandas Project: Make a Gradebook With Python & pandas
- Learn IP Address Concepts With Python's ipaddress Module
- Python import: Advanced Techniques and Tips
- Get Started With Django Part 2: Django User Management
- Python's reduce(): From Functional to Pythonic Style
- The Python heapq Module: Using Heaps and Priority Queues
- Hands-On Linear Programming: Optimization With Python
- PySimpleGUI: The Simple Way to Create a GUI With Python
- Python Keywords: An Introduction
- SettingWithCopyWarning in pandas: Views vs Copies
- Python Community Interview With Kattni Rembor
- Regular Expressions: Regexes in Python (Part 2)
- Build Physical Projects With Python on the Raspberry Pi
- Python Community Interview With Russell Keith-Magee
- Python vs JavaScript for Pythonistas
- Python Community Interview With Christopher Bailey
- Python eval(): Evaluate Expressions Dynamically
- How to Move a Django Model to Another App
- Using Python datetime to Work With Dates and Times
- Regular Expressions: Regexes in Python (Part 1)
- The Python pickle Module: How to Persist Objects in Python
- The pandas DataFrame: Make Working With Data Delightful
- Sorting Algorithms in Python
- How to Provide Test Fixtures for Django Models in Pytest
- How to Make an Instagram Bot With Python and InstaPy
- Linked Lists in Python: An Introduction
- How to Use any() in Python
- SimPy: Simulating Real-World Processes With Python
- The Python math Module: Everything You Need to Know
- Python Scope & the LEGB Rule: Resolving Names in Your Code
- How to Do a Binary Search in Python
- Using the Python defaultdict Type for Handling Missing Keys
- Defining Your Own Python Function
- Alexa Python Development: Build and Deploy an Alexa Skill
- Python Bindings: Calling C or C++ From Python
- The Beginner's Guide to Python Turtle
- Introduction to Python SQL Libraries
- Null in Python: Understanding Python's NoneType Object
- Python Community Interview With Brett Slatkin
- Implementing an Interface in Python
- Python Command-Line Arguments
- Use a Flask Blueprint to Architect Your Applications
- Python '!=' Is Not 'is not': Comparing Objects in Python
- Python Community Interview With Kelly and Sean of Teaching Python
- Scientific Python: Using SciPy for Optimization
- Arcade: A Primer on the Python Game Framework
- Logistic Regression in Python
- Exploring HTTPS With Python
- Using pandas and Python to Explore Your Dataset
- NumPy, SciPy, and pandas: Correlation With Python
- Run Python Versions in Docker: How to Try the Latest Python Release
- Python Statistics Fundamentals: How to Describe Your Data
- Data Engineer Interview Questions With Python
- MicroPython: An Intro to Programming Hardware in Python
- pandas: How to Read and Write Files
- Python Descriptors: An Introduction
- Python Community Interview With Brian Okken
- Invalid Syntax in Python: Common Reasons for SyntaxError
- Getting Started With Python IDLE
- PyCon Africa 2019 (Recap)
- Build a Mobile Application With the Kivy Python Framework
- Python Community Interview With Al Sweigart
- Arduino With Python: How to Get Started
- Python sleep(): How to Add Time Delays to Your Code
- Python 3.8: Cool New Features for You to Try
- Emacs: The Best Python Editor?
- Building a Python C Extension Module
- Preventing SQL Injection Attacks With Python
- How to Use Generators and yield in Python
- Getting Started With Async Features in Python
- How to Convert a Python String to int
- PyGame: A Primer on Game Programming in Python
- Python vs C++: Selecting the Right Tool for the Job
- MATLAB vs Python: Why and How to Make the Switch
- Python args and kwargs: Demystified
- PyCharm for Productive Python Development (Guide)
- A Guide to Excel Spreadsheets in Python With openpyxl
- Your Guide to the CPython Source Code
- How to Make a Discord Bot in Python
- An Effective Python Environment: Making Yourself at Home
- Your Guide to the Python print() Function
- What You Need to Know to Manage Users in Django Admin
- First Steps With PySpark and Big Data Processing
- Understanding the Python Traceback
- Digging Deeper Into Django Migrations
- NumPy arange(): How to Use np.arange()
- Create a Flask Application With Google Login
- Real Python at PyCon US 2019
- Build a Recommendation Engine With Collaborative Filtering
- Using the "or" Boolean Operator in Python
- How to Use Redis With Python
- Python Community Interview With Katrina Durance
- Basic Input, Output, and String Formatting in Python
- How to Use Python Lambda Functions
- Python Community Interview With Marlene Mhangami
- How to Make a Twitter Bot in Python With Tweepy
- How to Implement a Python Stack
- Object-Oriented Programming in Python vs Java
- Pointers in Python: What's the Point?
- Python Logging: A Stroll Through the Source Code
- Unicode & Character Encodings in Python: A Painless Guide
- Three Ways of Storing and Accessing Lots of Images in Python
- Playing and Recording Sound in Python
- Python Community Interview With Bob and Julian of PyBites
- How to Use sorted() and .sort() in Python
- Defining Main Functions in Python
- Python KeyError Exceptions and How to Handle Them
- A Beginner’s Guide to the Python time Module
- How to Work With a PDF in Python
- How to Create an Index in Django Without Downtime
- How to Stand Out in a Python Coding Interview
- An Intro to Threading in Python
- 13 Project Ideas for Intermediate Python Developers
- How to Build a Python GUI Application With wxPython
- Managing Multiple Python Versions With pyenv
- Using PyInstaller to Easily Distribute Python Applications
- Refactoring Python Applications for Simplicity
- Traditional Face Detection With Python
- Python Community Interview With Ali Spittel
- Reading and Writing Files in Python (Guide)
- Supercharge Your Classes With Python super()
- The Factory Method Pattern and Its Implementation in Python
- The Ultimate List of Data Science Podcasts
- Python Development in Visual Studio Code
- Python "for" Loops (Definite Iteration)
- Jupyter Notebook: An Introduction
- Working With Files in Python
- Async IO in Python: A Complete Walkthrough
- Speed Up Your Python Program With Concurrency
- Django Migrations: A Primer
- Python Type Checking (Guide)
- Modeling Polymorphism in Django With Python
- Python Community Interview With Corey Schafer
- Make a Location-Based Web App With Django and GeoDjango
- A Pythonista's Holiday Wish List
- Thonny: The Beginner-Friendly Python Editor
- Python Community Interview With Brian Peterson
- Sending Emails With Python
- Building Serverless Python Apps Using AWS Chalice
- Python Community Interview With Emily Morehouse
- Continuous Integration With Python: An Introduction
- Memory Management in Python
- Interactive Data Visualization in Python With Bokeh
- Python Community Interview With Kenneth Reitz
- Python "while" Loops (Indefinite Iteration)
- Writing Comments in Python (Guide)
- Setting Up Python for Machine Learning on Windows
- Python Community Interview With Michael Kennedy
- Practical Text Classification With Python and Keras
- Getting Started With Testing in Python
- Python, Boto3, and AWS S3: Demystified
- Python Community Interview With Mike Grouchy
- Splitting, Concatenating, and Joining Strings in Python
- Image Segmentation Using Color Spaces in OpenCV + Python
- Python Community Interview With Mahdi Yusuf
- Absolute vs Relative Imports in Python
- Top 10 Must-Watch PyCon Talks
- The Best Python Books
- Conditional Statements in Python
- Python Program Lexical Structure
- Python pandas: Tricks & Features You May Not Know
- Python Community Interview With Mariatta Wijaya
- Sets in Python
- The Ultimate Guide to Django Redirects
- Advanced Git Tips for Python Developers
- Python Community Interview With Mike Driscoll
- Dictionaries in Python
- Python Code Quality: Tools & Best Practices
- Documenting Python Code: A Complete Guide
- Fast, Flexible, Easy and Intuitive: How to Speed Up Your pandas Projects
- Reading and Writing CSV Files in Python
- Generating Random Data in Python (Guide)
- Python Histogram Plotting: NumPy, Matplotlib, pandas & Seaborn
- Python 3.7: Cool New Features for You to Try
- The Ultimate List of Python YouTube Channels
- Python Application Layouts: A Reference
- Itertools in Python 3, By Example
- Introduction to Python 3
- Data Classes in Python 3.7+ (Guide)
- Operator and Function Overloading in Custom Python Classes
- Pure Python vs NumPy vs TensorFlow Performance Comparison
- Python Metaclasses
- Pipenv: A Guide to the New Python Packaging Tool
- Python Modules and Packages – An Introduction
- Look Ma, No for Loops: Array Programming With NumPy
- Python Debugging With Pdb
- Introduction to Git and GitHub for Python Developers
- 11 Beginner Tips for Learning Python Programming
- Thinking Recursively in Python
- Pythonic Data Cleaning With pandas and NumPy
- 4 Techniques for Testing Python Command-Line (CLI) Apps
- Python IDEs and Code Editors (Guide)
- Modern Web Automation With Python and Selenium
- VIM and Python – A Match Made in Heaven
- Setting Up Sublime Text 3 for Full Stack Python Development
- Python Basics Exercises: Scopes (Course)
- Python Basics Exercises: Dictionaries (Course)
- Python Basics Exercises: Installing Packages With pip (Course)
- Python Basics Exercises: Lists and Tuples (Course)
- Python Basics: Lists and Tuples (Course)
- Python Basics Exercises: Functions and Loops (Course)
- Python Basics Exercises: Reading and Writing Files (Course)
- Python Basics Exercises: Strings and String Methods (Course)
- Python Basics Exercises: Modules and Packages (Course)
- Python Basics: Modules and Packages (Course)
- Python Basics Exercises: Building Systems With Classes (Course)
- Python Basics Exercises: Object-Oriented Programming (Course)
- Python Basics Exercises: Conditional Logic and Control Flow (Course)
- Python Basics: Reading and Writing Files (Course)
- Python Basics: Installing Packages With pip (Course)
- Python Basics: Object-Oriented Programming (Course)
- Python Basics Exercises: File System Operations (Course)
- Python Basics: File System Operations (Course)
- Python Basics: Dictionaries (Course)
- Python Basics: Scopes (Course)
- Python Basics: Numbers and Math (Course)
- Python Basics: Strings and String Methods (Course)
- Python Basics: Conditional Logic and Control Flow (Course)
- Python Basics: Functions and Loops (Course)
- Python Basics: Finding and Fixing Code Bugs (Course)
- Python Basics: Code Your First Python Program (Course)
- Mastering Python's Built-in time Module (Course)
- Grow Your Python Portfolio With 13 Intermediate Project Ideas (Course)
- Pointers and Objects in Python (Course)
- Unicode in Python: Working With Character Encodings (Course)
- Creating a Discord Bot in Python (Course)
- Python Generators 101 (Course)
- Getting the Most Out of a Python Traceback (Course)
- Parallel Iteration With Python's zip() Function (Course)
- A Beginner's Guide to pip (Course)
- Convert a Python String to int (Course)
- Improve Your Tests With the Python Mock Object Library (Course)
- The Python print() Function: Go Beyond the Basics (Course)
- Structuring a Python Application (Course)
- Inheritance and Composition: A Python OOP Guide (Course)
- Arduino With Python: Getting Started (Course)
- Comparing Python Objects the Right Way: "is" vs "==" (Course)
- Using NumPy's np.arange() Effectively (Course)
- Make a 2D Side-Scroller Game With PyGame (Course)
- Defining Main Functions in Python (Course)
- Implementing a Stack in Python (Course)
- How to Work With a PDF in Python (Course)
- Playing and Recording Sound in Python (Course)
- Using Sets in Python (Course)
- Python Modules and Packages: An Introduction (Course)
- Exploring Basic Data Types in Python (Course)
- Supercharge Your Classes With Python super() (Course)
- Python args and kwargs: Demystified (Course)
- Sorting Data With Python (Course)
- Python Dictionary Iteration: Advanced Tips & Tricks (Course)
- Documenting Code in Python (Course)
- Variables in Python (Course)
- Demystifying Python, Boto3, and AWS S3 (Course)
- KeyError Exceptions in Python and How to Handle Them (Course)
- Threading in Python (Course)
- Thinking Recursively With Python (Course)
- Cool New Features in Python 3.8 (Course)
- Python Type Checking (Course)
- Python Plotting With Matplotlib (Course)
- The Python range() Function (Course)
- Getting Started With Django: Building a Portfolio App (Course)
- Strings and Character Data in Python (Course)
- Thonny: A Beginner-Friendly Python Editor (Course)
- Debugging in Python With pdb (Course)
- Absolute vs Relative Imports in Python (Course)
- Lists and Tuples in Python (Course)
- Using Python Lambda Functions (Course)
- Histogram Plotting in Python: NumPy, Matplotlib, Pandas & Seaborn (Course)
- Traditional Face Detection Using Python (Course)
- 11 Beginner Tips for Learning Python (Course)
- Using Dictionaries in Python (Course)
- Logging Inside Python (Course)
- How to Write Pythonic Loops (Course)
- Reading and Writing Files in Python (Course)
- Functional Programming in Python (Course)
- Python 3's F-Strings: An Improved String Formatting Syntax (Course)