Synopsis
Test & Code is a weekly podcast hosted by Brian Okken.The show covers a wide array of topics including software development, testing, Python programming, and many related topics. When we get into the implementation specifics, that's usually Python, such as Python packaging, tox, pytest, and unittest. However, well over half of the topics are language agnostic, such as data science, DevOps, TDD, public speaking, mentoring, feature testing, NoSQL databases, end to end testing, automation, continuous integration, development methods, Selenium, the testing pyramid, and DevOps.
Episodes
-
198: Testing Django Web Applications - Carlton Gibson, Will Vincent
27/04/2023 Duration: 01h01minDjango has some built in ways to test your application. There's also pytest-django and other plugins that help with testing. Carlton Gibson and Will Vincent from the Django Chat Podcast join the show to discuss how to get started testing your Django application.
-
197: Python project trove classifiers - Do you need this bit of pyproject.toml metadata? - Brett Cannon
05/04/2023 Duration: 33minClassifiers are one bit of Python project metadata that predates PyPI. Classifiers are weird. They were around in setuptools days, and are still here with pyproject.toml. What are they? Why do we need them? Do we need them?Which classifiers should I include?Why are they called "trove classifiers" in the Python docsBrett Cannon joins the show to discuss these wacky bits of metadata.Here's an example, from pytest-crayons:[project] ... classifiers = [ "License :: OSI Approved :: MIT License", "Framework :: Pytest" ] Links:Classifiers · PyPIPEP 621 – Storing project metadata in pyproject.toml | peps.python.orgPackaging Python Projects — Python Packaging User Guide — Configuring metadataPEP 639 – Improving License Clarity with Better Package Metadata | peps.python.orgSPDX
-
196: I am not a supplier - Thomas Depierre
31/03/2023 Duration: 36minShould we think of open source components the same way we think of physical parts for manufactured goods? There are problems with supply chain analogy when applied to software. Thomas Depierre discusses some of those issues in this episode. Links:I am not a supplier - article
-
195: What would you change about pytest? - Anthony Sottile
08/03/2023 Duration: 58minAnthony Sottile and Brian discuss changes that would be cool for pytest, even unrealistic changes. These are changes we'd make to pytest if we didn't ahve to care about backwards compatibilty.Anthony's list:The import systemMulti-process support out of the boxAsync supportChanges to the fixture systemExtend the assert rewriting to make it modularAdd matchers to assert mechanismBan test class inheritanceBrian's list: Extend assert rewriting for custom rewriting, like checkpytester matchers available for all testsThrow out nose and unittest compatibility pluginsThrow out setup_module, teardown_module and other xunit style functionsRemove a bunch of the hook functionsDocumentation improvement of remaining hook functions which include examples of how to use itStart running tests before collection is doneSplit collection and running into two processesHave the fixtures be able to know the result of the test during teardownLinks:anthonywritescode - YouTubeanthonywritescode - Twitchpytest-asyncio · PyPIasync test pat
-
193: The Good Research Code Handbook - Patrick Mineault
30/08/2022 Duration: 43minI don't think it's too much of a stretch to say that software is part of most scientific research now. From astronomy, to neuroscience, to chemistry, to climate models. If you work in research that hasn't been affected by software yet, just wait.But how good is that software? How much of common best practices in software development are making it to those writing software in the sciences?Patrick Mineault has written "The Good Research Code Handbook". It's a website. It's concise. And it will put you on the right path to writing better software. Even if you don't write science based software, and even if you already have a CS degree, there's some good information worth reading.Special Guest: Patrick Mineault.Links:The Good Research Code Handbookgame-wrath-jam: A game jam game, theme: WrathRobotron 2084 - Arcade - YouTubeThe Book of Why: The New Science of Cause and Effect
-
192: Learn to code through game development with PursuedPyBear - Piper Thunstrom
06/08/2022 Duration: 42minThe first game I remember coding, or at least copying from a magazine, was in Basic. It was Lunar Lander. Learning to code a game is a way that a lot of people get started and excited about programming. Of course, I don't recommend Basic. Now we've got Python. And one of the game engines available for Python is PursuedPyBear, a project started by Piper Thunstrom. Piper joins us this episode and we talk about PursuedPyBear, learning to code, and learning CS concepts with game development. PursuedPyBear, ppb, is a game framework great for learning with, with goals of being fun, education friendly, an example of idiomatic Python, hardware library agnostic, and built on event driven and object oriented concepts.Special Guest: Piper Thunstrom.Links:PursuedPyBear | Unbearably Fun Game DevelopmentPiper's BlogMaking Games With PPB - PyTexasShooter Game by Piper Thunstromshootergame on GitHubBriefcase— BeeWaregame-blink: A tiny emergent behavior toy.Combat (Atari 2600) — The tank game I didn't remember the name of.Lun
-
191: Running your own site for fun and absolutely no profit whatsoever - Brian Wisti
01/07/2022 Duration: 46minHaving a personal site is a great playground for learning tons of skills. Brian Wisti discusses the benefits of running a his own blog over the years.Links:Random GeekeryJamstackEleventyNetlifyPlausible AnalyticspytestBeautiful Souppyinvoke - Invoke!rsyncInternet Archive : archive.orgRichStatamicjamstack.orgA static site generator should be your next language learning project
-
190: Testing PyPy - Carl Friedrich Bolz-Tereick
21/06/2022 Duration: 50minPyPy is a fast, compliant alternative implementation of Python. cPython is implemented in C. PyPy is implemented in Python. What does that mean? And how do you test something as huge as an alternative implementation of Python?Special Guest: Carl Friedrich Bolz-Tereick.Links:PyPyHow is PyPy Tested? PyPy SpeedPython Speed Center
-
189: attrs and dataclasses - Hynek Schlawack
07/06/2022 Duration: 32minIn Python, before dataclasses, we had attrs. Before attrs, it wasn't pretty.The story of attrs and dataclasses is actually intertwined. They've built on each other. And in the middle of it all, Hynek.Hynek joins the show today to discuss some history of attrs and dataclasses, and some differences.If you ever need to create a custom class in Python, you should listen to this episode.Links:attrs documentationHistory of attrs and introduction to attrs namespacecattrs: Complex custom class converters for attrs. — python-attrsPEP 557 – Data ClassesPEP 681 – Data Class Transforms
-
188: Python's Rich, Textual, and Textualize - Innovating the CLI
17/05/2022 Duration: 35minWill McGugan has brought a lot of color to CLIs within Python due to Rich. Then Textual started rethinking full command line applications, including layout with CSS. And now Textualize, a new startup, is bringing CLI apps to the web.Links:richrich-clitextualTextualize.ioRich GalleryTextualize GalleryPython Bytes Podcast
-
187: Teaching Web Development, including Front End Testing
13/05/2022 Duration: 40minWhen you are teaching someone web development skills, when is the right time to start teaching code quality and testing practices?Karl Stolley believes it's never too early. Let's hear how he incorporates code quality in his courses.Our discussion includes:starting people off with good dev practices and toolslintinghtml and css validationvisual regression testingusing local dev servers, including httpsincorporating testing with git hookstesting to aid in css optimization and refactoringBackstopNightwatchBrowserStackthe tree legged stool of learning and progressing as a developer: testing, version control, and documentationKarl is also writing a book on WebRTC, so we jump into that a bit too.Links:BackstopNightwatchBrowserStackProgramming WebRTC: Build Real-Time Streaming Applications for the Web by Karl Stolley
-
186: Developer and Team Productivity
12/05/2022 Duration: 51minBeing productive is obviously a good thing. Can we measure it? Should we measure it? There's been failed attempts, like lines of code, etc. in the past. Currently, there are new tools to measure productivity, like using git metrics.Nick Hodges joins the show to discuss the good and the bad of developer and team productivity, including how we can improve productivity.
-
185: Python + Django + Rich + Testing == Awesome
11/05/2022 Duration: 21minDjango has a handful of console commands to help manage and develop sites. django-rich adds color and nice formatting. Super cool. In a recent release, django-rich also adds nice colorized tracebacks to the Django test runner. Links:django-rich · PyPIepisode 181: Boost Your Django DX - Adam Johnsondjango-crispy-formsPython Developers Survey 2020 Results
-
184: Twisted and Testing Event Driven / Asynchronous Applications - Glyph
21/03/2022 Duration: 40minTwisted has been supporting asynchronous / event driven applications way before asyncio. Twisted, and Glyph, have also been encouraging automated tests for a very long time.Twisted uses a technique that should be usable by other applications, even those using asyncio or other event driven architectures.Links:Community Service Award Recipient Glyph Lefkowitz — The PSF article I was referring to early in the episode Twistedtwisted/kleintwisted/treqdjango/daphne — Django Channels HTTP/WebSocket serverScrapySo Easy You Can Even Do It in JavaScript: Event-Driven Architecture for Regular Programmers - YouTubeFeature test - twitter engineeringPython Testing with pytest — Some reading for Glyph if he wants to learn to love pytestpytest-twistedpygamePyodideBrython
-
183: Managing Software Teams - Ryan Cheley
17/03/2022 Duration: 47minRyan Cheley joins me today to talk about some challenges of managing software teams, and how to handle them. We end up talking about a lot of skills that are excellent for software engineers as well as managers.Some topics discussed:handling code reviewsasking good questionsbeing honest about what you can't do with current resources and datadiscussing tradeoffs and offering solutions that can be completed faster than the ideal solutionbalancing engineering and managingmaking sure documentation happensremote teams encouraging collaborationencouraging non-work-related conversationswatching out for overworking
-
182: An Unorthodox Technical Interview and Hiring Process - Nathan Aschbacher
08/03/2022 Duration: 47minDon't you just love technical interviews, with someone who just saw your resume or CV 5 minutes ago asking you to write some code on a whiteboard. Probably code that has nothing to do with anything you've done before or anything you will do at the company.No? Neither does Nathan Aschbacher. So when he started building the team at his company, he decided to do things differently.Hiring is one of the essential processes for building a great team. However, it's a high noise, low signal process.Nathan Aschbacher has a relatively unorthodox tech hiring approach. He's trying to make it very humane, with a better signal to noise ratio. Nathan is not intereseted in bizarre interview processes where the interviewer doesn't know anything about the interviewee beforehand, all people are asked the same questions, and people are asked to code on white boards.Instead, he states "if the goal is to try to figure out if the person can do the work with your team, and your trying to build the team that you are adding this per
-
181: Boost Your Django DX - Adam Johnson
01/03/2022 Duration: 26minWe talk with Adam Johnson about his new book, "Boost Your Django DX". Developer experience includes tools and practices to make developers more effective and efficient, and just plain make software development more fun and satisfying. One of the things I love about this book is that it's not just for Django devs. I'd guess that about half the book is about topics that all Python developers would find useful, from virtual environments to linters to testing. But of course, also tons of tips and tools for working with Django.Links:“Boost Your Django DX” Released — Adam's announcementBoost Your Django DX — The book
-
180: Lean TDD
21/02/2022 Duration: 25minLean TDD is an attempt to reconcile some conflicting aspects of Test Driven Development and Lean Software Development.I've mentioned Lean TDD on the podcast a few times and even tried to do a quick outline at the end of episode 162.This episode is a more complete outline, or at least a first draft.If you feel you've got a good understanding of TDD, and it's working awesome for you, that's great. Keep doing what you're doing. There are no problems.For me, the normal way TDD is taught just doesn't work. So I'm trying to come up with a spin on some old ideas to make it work for me. I'm hoping it works for you as well.I'm calling the new thing Lean TDD. It's inspired by decades of experience writing software and influence from dozens of sources, including Pragmatic Programmer, Lean Software Development, Test-Driven Development by Example, and many blog posts and wiki articles. The main highlights, however, come from the collision of ideas between Lean and TDD and how I've tried to resolve the seemingly opposing p
-
179: Exploratory Testing
09/02/2022 Duration: 10minExploratory testing is absolutely an essential part of a testing strategy. This episode discusses what exploratory testing is, its benefits, and how it fits within a framework of relying on automated tests for most of our testing.
-
178: The Five Factors of Automated Software Testing
31/01/2022 Duration: 09min"There are five practical reasons that we write tests. Whether we realize it or not, our personal testing philosophy is based on how we judge the relative importance of these reasons." - Sarah MeiThis episode discusses the factors.Sarah's order:Verify the code is working correctlyPrevent future regressionsDocument the code’s behaviorProvide design guidanceSupport refactoringBrian's order:Verify the code is working correctlyPrevent future regressionsSupport refactoringProvide design guidanceDocument the code’s behaviorThe episode includes reasons why I've re-ordered them.Links:Five Factor Testing - Sarah Mei