Improving Your GitHub Developer Experience
<p>What are ways to improve how you’re using GitHub? How can you collaborate more effectively and improve your technical writing? This week on the show, Adam Johnson is back to talk about his new book, “Boost Your GitHub DX: Tame the Octocat and Elevate Your Productivity”.</p>
<p>Adam has written a series of books about improving developer experience (DX). In this episode, we dig into his newest book, which focuses on GitHub and how to get the most out of its features—from settings and keyboard shortcuts to hidden tools, CLI commands, and the command palette.</p>
<p>Adam also shares insights on the best ways to communicate on the platform. We discuss the nuances of GitHub-Flavored Markdown (GFM), best practices for effective communication in open source, the importance of maintaining civility in issue reports, and why he included a glossary of acronyms to help developers decode common shorthand like <code>LGTM</code> and <code>FTFY</code>.</p>
<p>This episode is sponsored by Honeybadger.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-git-github-intro/">Introduction to Git and GitHub for Python Developers</a></p>
<p>What is Git, what is GitHub, and what’s the difference? Learn the basics of Git and GitHub from the perspective of a Pythonista in this step-by-step video course.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:20 – Why the focus on developer experience?</li>
<li>00:03:41 – Process of writing the book</li>
<li>00:06:26 – Filling in the gaps of knowledge</li>
<li>00:11:52 – GitHub-Flavored Markdown</li>
<li>00:16:00 – Sponsor: Honeybadger</li>
<li>00:16:47 – Acronym glossary</li>
<li>00:25:18 – GitHub command palette</li>
<li>00:28:35 – What questions did you want to answer?</li>
<li>00:29:42 – Whether to cover Copilot or not</li>
<li>00:36:14 – Video Course Spotlight</li>
<li>00:37:50 – Advice on working with coding agents</li>
<li>00:40:46 – Defining the scope</li>
<li>00:48:07 – GitHub pages and codespaces</li>
<li>00:50:46 – Finding the hidden features</li>
<li>00:51:53 – Data-oriented Django series</li>
<li>00:53:59 – How to find the book</li>
<li>00:54:51 – What are you excited about in the world of Python?</li>
<li>00:57:27 – What do you want to learn next?</li>
<li>00:58:00 – How can people follow your work online?</li>
<li>00:58:22 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://adamj.eu/">Adam Johnson’s Website</a></li>
<li><a href="https://adamchainz.gumroad.com/l/byghdx?layout=profile">Boost Your GitHub DX</a></li>
<li><a href="https://adamchainz.gumroad.com/l/bygdx">Boost Your Git DX</a></li>
<li><a href="https://github.github.com/gfm/">GitHub-Flavored Markdown (GFM) Spec</a></li>
<li><a href="https://cli.github.com/">GitHub CLI (gh)</a></li>
<li><a href="https://docs.github.com/en/get-started/accessibility/github-command-palette">GitHub Command Palette - GitHub Docs</a></li>
<li><a href="https://docs.github.com/en/get-started/accessibility/keyboard-shortcuts">Keyboard shortcuts - GitHub Docs</a></li>
<li><a href="https://www.google.com/search?q=https://docs.github.com/en/issues/tracking-your-work-with-issues/best-practices-for-writing-issues">GitHub’s Guide on Writing Great Issues</a></li>
<li><a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository">GitHub Pull Request Templates</a></li>
<li><a href="https://docs.github.com/en/pages">GitHub Pages</a></li>
<li><a href="https://github.com/features/codespaces">GitHub Codespaces</a></li>
<li><a href="https://www.youtube.com/watch?v=gfPNeQR1aSc">Data-Oriented Django - DjangoCon 2022 - YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=_0F6fyI5u8w">Data-Oriented Django Deux - DjangoCon Europe 2024 - YouTube</a></li>
<li><a href="https://www.youtube.com/watch?v=L7WXcWuH21U&t=2s">Data-Oriented Django Drei - DjangoCon Europe 2025 - YouTube</a></li>
<li><a href="https://docs.python.org/3.15/library/profiling.sampling.html">Tachyon — Statistical profiler — Python 3.15.0a5 documentation</a></li>
<li><a href="https://bsky.app/profile/adamj.eu">Adam Johnson (@adamj.eu) — Bluesky</a></li>
<li><a href="https://fosstodon.org/@adamchainz">Adam Johnson (@adamchainz@fosstodon.org) - Fosstodon</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/cicd-github-actions/">Python Continuous Integration and Deployment Using GitHub Actions</a></li>
<li><a href="https://realpython.com/courses/python-git-github-intro/">Introduction to Git and GitHub for Python</a></li>
<li><a href="https://realpython.com/courses/set-up-django-project/">How to Set Up a Django Project</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Improving Your Git Developer Experience in Python
<p>Are you getting by with a few fundamental commands for Git when building your Python projects? Would you like to improve your version control techniques and become more efficient with the Git command line? This week on the show, Adam Johnson is back to talk about his new book, “Boost Your Git DX.”</p>
<p>Adam brings advice about creating a Git configuration, enabling autocorrect, and customizing a global ignore file. He combed through the cryptic documentation and found the valuable developer settings, so you won’t have to.</p>
<p>Adam also shares tools and settings to speed up your terminal workflows. We discuss configuring Zsh, creating aliases, and comparing diffs. We briefly dig into the most recent update to Django and his work on the project.</p>
<p>This week’s episode is brought to you by Taipy.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-git-github-intro/">Introduction to Git and GitHub for Python Developers</a></p>
<p>What is Git, what is GitHub, and what’s the difference? Learn the basics of Git and GitHub from the perspective of a Pythonista in this step-by-step video course.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:13 – When did you start working on this book?</li>
<li>00:06:11 – Git’s tendency to be inscrutable</li>
<li>00:08:57 – Audience for the book</li>
<li>00:09:47 – What have you learned about writing?</li>
<li>00:13:41 – What were you most excited to share?</li>
<li>00:14:34 – Global Git ignore</li>
<li>00:19:53 – Sponsor: Taipy</li>
<li>00:20:58 – Backing up configuration</li>
<li>00:22:37 – Git autocorrect</li>
<li>00:24:48 – Recovering from mistakes</li>
<li>00:27:58 – Creating terminal aliases in Zsh</li>
<li>00:31:59 – Using a Colemak keyboard layout</li>
<li>00:34:33 – Changing the diff-options to histogram</li>
<li>00:37:22 – Altering the global configuration file</li>
<li>00:39:36 – Video Course Spotlight</li>
<li>00:41:05 – Brief history of the Git project</li>
<li>00:44:27 – delta - syntax-highlighting pager for git, diff, and grep output</li>
<li>00:45:22 – pygments-git - Pygments lexers for Git output and files</li>
<li>00:46:56 – What are you excited about in the world of Git?</li>
<li>00:49:17 – What are you excited about in the world of Python?</li>
<li>00:52:51 – What do you want to learn next?</li>
<li>00:53:50 – How can people follow your work online?</li>
<li>00:55:23 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://adamchainz.gumroad.com/l/bygdx">Boost Your Git DX</a></li>
<li><a href="https://adamj.eu/tech/2023/10/04/boost-your-git-dx-out-now/">“Boost Your Git DX” out now - Adam Johnson</a></li>
<li><a href="https://adamchainz.gumroad.com/l/byddx">Boost Your Django DX</a></li>
<li><a href="https://adamj.eu/tech/2022/11/06/git-set-up-a-global-ignore-file/">Git: How to set up a global ignore file - Adam Johnson</a></li>
<li><a href="https://git-scm.com/docs/git-config#Documentation/git-config.txt-coreexcludesFile">Git - git-config Documentation</a></li>
<li><a href="https://adamj.eu/tech/2022/10/26/git-how-to-enable-autocorrect/">Git: How to enable autocorrect - Adam Johnson</a></li>
<li><a href="https://jvns.ca/blog/2018/10/27/new-zine--oh-shit--git-/">New zine: Oh shit, Git!</a></li>
<li><a href="https://ohshitgit.com/">Oh Shit, Git!?!</a></li>
<li><a href="https://git-scm.com/docs/git-reflog">Git - git-reflog Documentation</a></li>
<li><a href="https://ohmyz.sh/">Oh My Zsh - a delightful & open source framework for Zsh</a></li>
<li><a href="https://starship.rs/">Starship: Cross-Shell Prompt</a></li>
<li><a href="https://git-scm.com/docs/diff-options">Git - diff-options Documentation</a></li>
<li><a href="https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration">Git - Git Configuration</a></li>
<li><a href="https://colemak.com/">Colemak - Keyboard Layout</a></li>
<li><a href="https://github.com/dandavison/delta">delta: A syntax-highlighting pager for Git, diff, and grep output</a></li>
<li><a href="https://pypi.org/project/pygments-git/">pygments-git - PyPI</a></li>
<li><a href="https://sapling-scm.com/">Sapling from Meta</a></li>
<li><a href="https://github.com/martinvonz/jj">Jujutsu: A Git-compatible DVCS that is both simple and powerful</a></li>
<li><a href="https://www.djangoproject.com/weblog/2023/oct/23/django-50-beta-1-released/">Django 5.0 beta 1 released - Django</a></li>
<li><a href="https://adamj.eu/tech/">Adam Johnson’s Blog</a></li>
<li><a href="https://fosstodon.org/@adamchainz">Adam Johnson (@adamchainz@fosstodon.org) - Fosstodon</a></li>
<li><a href="https://adamj.eu/projects/">Projects - Adam Johnson</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-git-github-intro/">Introduction to Git and GitHub for Python</a></li>
<li><a href="https://realpython.com/courses/set-up-django-project/">How to Set Up a Django Project</a></li>
<li><a href="https://realpython.com/courses/building-project-documentation-mkdocs/">Building Python Project Documentation With MkDocs</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Improving Your Django and Python Developer Experience
<p>How often have you thought about your Developer Experience (DX)? How do you improve your workflow, find documentation, and simplify code formatting? This week on the show, Adam Johnson is here to talk about his new book, “Boost Your Django DX.”</p>
<p>Adam provides advice on improving your developer experience, specifically inside Django and within Python. We discuss tools to simplify code formatting and linting. </p>
<p>Adam shares a couple of his own Django tools designed to simplify development and keep your projects updated. He also covers documentation resources for finding answers quickly.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/django-view-authorization/">Django View Authorization: Restricting Access</a></p>
<p>This course covers how to restrict your web pages to users with different roles through Django view authorization. You’ll learn about <code>HttpRequest.user</code> objects, decorators that authenticate views, and ways to notify your users with the Django messages framework.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:01:53 – The Django Project Technical Board</li>
<li>00:04:08 – Change in the release cadence for Django</li>
<li>00:06:08 – Kaizen, continous improvement, and helping others improve</li>
<li>00:10:23 – Common ways to improve developer experience</li>
<li>00:14:06 – Sponsor: Scout APM</li>
<li>00:14:54 – Developer documentation tools</li>
<li>00:20:24 – Bang shortcuts when searching with DuckDuckGo </li>
<li>00:22:37 – Who is the intended audience for the book?</li>
<li>00:23:33 – Managing secrets and giving general advice</li>
<li>00:26:49 – Writing books to fill in the gaps</li>
<li>00:29:12 – Video Course Spotlight</li>
<li>00:30:24 – Topics for the blog, favicons, and type hints</li>
<li>00:39:22 – What are your recent Django-related projects?</li>
<li>00:42:05 – Sources for Django news</li>
<li>00:45:01 – What are you excited about in the world of Python?</li>
<li>00:45:59 – What do you want to learn next?</li>
<li>00:47:43 – Shout-outs and social connections</li>
<li>00:48:43 – Thanks and goodbye</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://adamj.eu/">Adam Johnson’s Home Page</a></li>
<li><a href="https://adamchainz.gumroad.com/l/byddx">Boost Your Django DX</a></li>
<li><a href="https://adamj.eu/tech/2022/01/10/boost-your-django-dx-released/">“Boost Your Django DX” Released - Adam Johnson</a></li>
<li><a href="https://www.djangoproject.com/foundation/teams/">Django Software Foundation | Django</a></li>
<li><a href="https://en.wikipedia.org/wiki/Kaizen">Kaizen - Wikipedia</a></li>
<li><a href="https://pypi.org/project/black/">black: The Uncompromising Code Formatter · PyPI</a></li>
<li><a href="https://pycqa.github.io/isort/">isort: isort your imports, so you don’t have to.</a></li>
<li><a href="https://flake8.pycqa.org/en/latest/">Flake8: Your Tool For Style Guide Enforcement — flake8 4.0.1 documentation</a></li>
<li><a href="https://devdocs.io/">DevDocs API Documentation</a></li>
<li><a href="https://duckduckgo.com/bang">DuckDuckGo !Bang</a></li>
<li><a href="https://djangochat.com/episodes/boost-your-django-dx-adam-johnon">Django Chat | Adam Johnson - Boost Your Django DX</a></li>
<li><a href="https://www.pythonpodcast.com/developer-experience-episode-349/">Podcast.__init__ - Improve Your Productivity By Investing In Developer Experience</a></li>
<li><a href="https://adamj.eu/tech/2022/01/18/how-to-add-a-favicon-to-your-django-site/">How to Add a Favicon to Your Django Site - Adam Johnson</a></li>
<li><a href="https://realfavicongenerator.net/">Favicon Generator for perfect icons on all browsers</a></li>
<li><a href="https://adamj.eu/tech/2021/12/16/introducing-django-browser-reload/">Introducing django-browser-reload: Automatically Reload Your Browser in Development - Adam Johnson</a></li>
<li><a href="https://pypi.org/project/django-browser-reload/">django-browser-reload · PyPI</a></li>
<li><a href="https://pypi.org/project/django-upgrade/">django-upgrade · PyPI</a></li>
<li><a href="https://pypi.org/project/pyupgrade/">pyupgrade · PyPI</a></li>
<li><a href="https://django-news.com/">Django News</a></li>
<li><a href="https://www.ableton.com/en/push/">Learn more about Ableton Push | Ableton</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/django-view-authorization/">Django View Authorization: Restricting Access</a></li>
<li><a href="https://realpython.com/courses/host-your-django-project-on-heroku/">Host Your Django Project on Heroku</a></li>
<li><a href="https://realpython.com/courses/set-up-django-project/">How to Set Up a Django Project</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Episode 35: Metered Pricing: Everyone Hates That! Charge Based on Value
Did you know that you can now run Lambda functions for 15 minutes, instead of dealing with 5-minute timeouts? Although customers will probably never need that much time, it helps dispel the belief that serverless isn’t useful for some use cases because of such short time limits.
Today, we’re talking to Adam Johnson, co-founder and CEO of IOpipe. He understands that some people may misuse the increased timeframe to implement things terribly. But he believes the responsibility of a framework, platform, or technology should not be to hinder certain use cases to make sure developers are working within narrow constraints. Substantial guardrails can make developers shy away. With Lambda, they can do what they want, which is good and bad.
Some of the highlights of the show include:
Companies are using serverless as a foundation and for critical functions
Serverless can be painful in some areas, but gaps are going away
Investing in the Future: Companies doing lift-and-shift to AWS are looking at technology they should choose today that’s going to be prominent in 3 years
Serverless empowers new billing models and traces the flow of capital; companies can choose to make pricing more complicated or simplified
What value are you providing? Serverless can offer flexible pricing foundation
When something breaks, you need to be made aware of such problems; Amazon bill doesn’t change based on what IOpipe does, which is not true with others
Developers are the ones woken up and on call, so IOpipe focuses on providing them value and help; they are not left alone to figure out and fix problems
Serverless and event-driven applications offer a new type of instrumentation and observability to collect telemetry on every event
For serverless to go mainstream, AWS needs to up its observability level to gather data to answer questions
AWS, in the serverless space, needs to make significant progress on cold starts in other languages, and offer more visibility and easier deployment out of the box
Links:
IOpipe
Episode 16: There are Still Servers, but We Don't Care About Them
Lambda
Google App Engine
Python
Node.js
Kubernetes
Simon Wardley
DynamoDB
re:Invent
Perl
PowerShell
Digital Ocean
.