Frameworks

Keep Your Code Clean Using pre-commit with Anthony Sottile - Episode 178

Summary

Maintaining the health and well-being of your software is a never-ending responsibility. Automating away as much of it as possible makes that challenge more achievable. In this episode Anthony Sottile describes his work on the pre-commit framework to simplify the process of writing and distributing functions to make sure that you only commit code that meets your definition of clean. He explains how it supports tools and repositories written in multiple languages, enforces team standards, and how you can start using it today to ship better software.

Preface

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 40Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute.
  • Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email [email protected])
  • To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
  • Join the community in the new Zulip chat workspace at podcastinit.com/chat
  • Your host as usual is Tobias Macey and today I’m interviewing Anthony Sottile about pre-commit, a framework for managing and maintaining hooks for multiple languages

Interview

  • Introductions
  • How did you get introduced to Python?
  • Can you start by describing what a pre-commit hook is and some of the ways that they are useful for developers?
  • What was you motivation for creating a framework to manage your pre-commit hooks?
    • How does it differ from other projects built to manage these hooks?
  • What are the steps for getting someone started with pre-commit in a new project?
  • Which other event hooks would be most useful to implement for maintaining the health of a repository?
  • What types of operations are most useful for ensuring the health of a project?
  • What types of routines should be avoided as a pre-commit step?
  • Installing the hooks into a user’s local environment is a manual step, so how do you ensure that all of your developers are using the configured hooks?
    • What factors have you found that lead to developers skipping or disabling hooks?
  • How is pre-commit implemented and how has that design evolved from when you first started?
    • What have been the most difficult aspects of supporting multiple languages and package managers?
    • What would you do differently if you started over today?
    • Would you still use Python?
  • For someone who wants to write a plugin for pre-commit, what are the steps involved?
  • What are some of the strangest or most unusual uses of pre-commit hooks that you have seen?
  • What are your plans for the future of pre-commit?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

The Masonite Web Framework With Joe Mancuso - Episode 174

Summary

Masonite is an ambitious new web framework that draws inspiration from many other successful projects in other languages. In this episode Joe Mancuso, the primary author and maintainer, explains his goal of unseating Django from its position of prominence in the Python community. He also discusses his motivation for building it, how it is architected, and how you can start using it for your own projects.

Preface

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute.
  • Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email [email protected])
  • To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
  • Join the community in the new Zulip chat workspace at podcastinit.com/chat
  • Your host as usual is Tobias Macey and today I’m interviewing Joe Mancuso about Masonite, the modern and developer centric python web framework.

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Masonite and what was the motivation for creating it?
    • How does it fit in the current landscape of Python web frameworks?
  • Why might someone choose to use Masonite over Python frameworks?
    • If someone isn’t already decided on using Python, what are some reasons that they might choose Masonite over frameworks in other languages?
  • Can you describe the framework architecture and how it has evolved over the lifetime of the project?
  • What are some examples of projects that have been built with Masonite and what aspects of the framework are they leveraging?
  • For someone who is starting a new project with Masonite what are some of the concepts that they should be familiar with?
    • What is their workflow for starting their project?
    • How does that workflow change when working with an existing application?
  • What are some of the plans that you have for the future of Masonite?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

The Past, Present, and Future of Twisted with Moshe Zadka - Episode 170

Summary

Twisted is one of the earliest frameworks for developing asynchronous applications in Python and it has yet to fulfill its original purpose. It can be used to build network servers that integrate a multitude of protocols, increase the performance of your I/O bound applications, serve as the full web stack for your WSGI projects, and anything else that needs a battle tested and performant foundation. In this episode long time maintainer Moshe Zadka discusses the history of Twisted, how it has evolved over the years, the transition to Python 3, some of its myriad use cases, and where it is headed in the future. Try it out today and then send some thanks to all of the people who have dedicated their time to building it.

Preface

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute.
  • To get worry-free releases download GoCD, the open source continous delivery server built by Thoughworks. You can use their pipeline modeling and value stream map to build, control and monitor every step from commit to deployment in one place. And with their new Kubernetes integration it’s even easier to deploy and scale your build agents. Go to podcastinit.com/gocd to learn more about their professional support services and enterprise add-ons.
  • Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email [email protected])
  • To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
  • Join the community in the new Zulip chat workspace at podcastinit.com/chat
  • Your host as usual is Tobias Macey and today I’m interviewing Moshe Zadka about Twisted, the original multi-function tool for asynchronous operations and network protocols in Python

Interview

  • Introductions
  • How did you get introduced to Python?
  • For anyone who isn’t familiar with Twisted can you share a brief overview of what it is?
    • What was the original motivation for creating it?
    • How did you get involved with the project and what is your current role in the team?
  • How can people learn to use Twisted?
    • What are some of the common difficulties that new users encounter?
  • What did you learn working on Twisted?
  • Who uses Twisted?
    • When is Twisted the wrong choice?
    • What are some examples of systems that aren’t using Twisted but should be?
  • What are some of the ways that Twisted has evolved and changed over the years?
  • What are some of the ways people can support Twisted?
  • What are some of the plans for the future of Twisted?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Asphalt: A Framework For Asynchronous Network Applications with Alex Grönholm - Episode 138

Summary

As we rely more on small, distributed processes for building our applications, being able to take advantage of asynchronous I/O is increasingly important for performance. This week Alex Grönholm explains how the Asphalt Framework was created to make it easier to build these network oriented software stacks and the technical challenges that he faced in the process.

Preface

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • I would like to thank everyone who supports us on Patreon. Your contributions help to make the show sustainable.
  • When you’re ready to launch your next project you’ll need somewhere to deploy it. Check out Linode at podastinit.com/linode and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app. And now you can deliver your work to your users even faster with the newly upgraded 200 GBit network in all of their datacenters.
  • If you’re tired of cobbling together your deployment pipeline then it’s time to try out GoCD, the open source continuous delivery platform built by the people at ThoughtWorks who wrote the book about it. With GoCD you get complete visibility into the life-cycle of your software from one location. To download it now go to podcatinit.com/gocd. Professional support and enterprise plugins are available for added piece of mind.
  • Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email [email protected])
  • To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
  • Your host as usual is Tobias Macey and today I’m interviewing Alex Grönholm about the Asphalt Framework, a Python microframework for network oriented applications

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Asphalt and what was your reason for building it?
  • How does Asphalt compare to Twisted?
  • What are the most challenging parts of writing asynchronous and event-based applications and how does Asphalt help simplify that process?
  • When building an Asphalt application it can be easy to accidentally block an async loop by pulling in third party libraries that don’t support asynchronous execution. What are some of the techniques for identifying and resolving blocking portions of your application?
  • What does the internal architecture of Asphalt look like and how has that evolved from when you first started working on it?
  • What have been some of the most difficult aspects of building and evolving Asphalt?
  • What are some of the most interesting or unexpected uses of Asphalt that you have seen?
  • What are some of the new features or improvements that you have planned for the future of Asphalt?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Golem: End-To-End Test Automation Framework with Luciano Renzi - Episode 137

Summary

The importance of testing your software is widely talked about and well understood. What is not as often discussed is the different types of testing, and how end-to-end tests can benefit your team to ensure proper functioning of your application when it gets released to production. This week Luciano Renzi shares the work that he has done on Golem, a framework for building and executing an automation suite to exercise the entire system from the perspective of the user. He discusses his reasons for creating the project, how he things about testing, and where he plans on taking Golem in the future. Give it a listen and then take it for a test drive.

Preface

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • I would like to thank everyone who supports us on Patreon. Your contributions help to make the show sustainable.
  • When you’re ready to launch your next project you’ll need somewhere to deploy it. Check out Linode at podastinit.com/linode and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app. And now you can deliver your work to your users even faster with the newly upgraded 200 GBit network in all of their datacenters.
  • If you’re tired of cobbling together your deployment pipeline then it’s time to try out GoCD, the open source continuous delivery platform built by the people at ThoughtWorks who wrote the book about it. With GoCD you get complete visibility into the life-cycle of your software from one location. To download it now go to podcatinit.com/gocd. Professional support and enterprise plugins are available for added piece of mind.
  • Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email [email protected])
  • To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
  • Your host as usual is Tobias Macey and today I’m interviewing Luciano Renzi about Golem, a framework and automation tool for end-to-end testing in Python

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is golem and what motivated you to create it?
    • What was your inspiration for the name?
  • Why did you choose to use Python for Golem and if you were to start over today would you make the same choice?
  • For someone who is unfamiliar with the concept, can you describe what end-to-end testing is and the reasons for making it part of their development process?
  • What is the main goal of Golem
  • What does the internal architecture and implementation of Golem look like and how has that evolved from when you first started the project?
  • How does Golem compare to other Python libraries for automated browser testing and what was lacking in the existing solutions when you created it?
  • What are the differences between golem and robot framework?
  • What about projects written in other languages such as protractor?
  • One of the intriguing features of Golem is the web interface for constructing tests. What are the benefits of codeless automation & record-playback functionality?
  • What are some of the most challenging aspects of building and maintaining Golem?
  • It seems that every browser automation library is ultimately a wrapper around Selenium. Why is a wrapper necessary and why haven’t any strong alternatives been created?
  • What are the advantages of making Golem a framework for test automation, rather than a library?
  • What are some of the most interesting or unexpected uses for Golem that you have seen?
  • What do you have planned for the future of Golem?
  • What is the current state of end to end automation and how do you see it evolving in the future?
  • How do you think machine learning and AI will be used in test automation?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Yosai with Darin Gordon - Episode 120

Summary

For any program that is used by more than one person you need a way to control identity and permissions. There are myriad solutions to that problem, but most of them are tied to a specific framework. Yosai is a flexible, general purpose framework for managing role-based access to your applications that has been decoupled from the underlying platform. This week the author of Yosai, Darin Gordon, joins us to talk about why he started it, his experience porting it from Java, and where he hopes to take it in the future.

Preface

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • I would like to thank everyone who supports us on Patreon. Your contributions help to make the show sustainable.
  • When you’re ready to launch your next project you’ll need somewhere to deploy it. Check out Linode at www.podastinit.com/linode and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app.
  • Visit the site to subscribe to the show, sign up for the newsletter, read the show notes, and get in touch.
  • To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
  • Your host as usual is Tobias Macey and today I’m interviewing
    Darin Gordon about Yosai, a security framework for Python applications

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Yosai and what is the problem that you were trying to solve when you started it?
  • How does Yosai compare to existing libraries for web frameworks such as Flask-Security or Django Guardian and why might someone choose Yosai instead?
  • In the documentation it mentions that Yosai is a port of the Apache Shiro framework from Java to Python. What was most difficult about exposing a Pythonic interface while maintaining the core principles of the original?
  • Authentication and authorization are difficult problem domains and can cause significant issues if they are not implemented in a secure fashion. How do you ensure an appropriate level of quality in Yosai to be confident having people use it?
  • To start can you describe how the framework is architected and what is involved in integrating it with a project?
  • Outside of the context of web applications, what are some situations where someone should consider integrating authentication and authorization into their project?
  • What have been some of the most challenging aspects of building the Yosai project?
  • Tell us about the Rust extension you wrote earlier this year
  • What do you have planned for the future of Yosai?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Morepath with Martijn Faassen - Episode 91

Summary

Python has a wide and growing variety of web frameworks to choose from, but if you want one with super powers then you need Morepath. This week Martijn Faassen shares the story of how Morepath was created, how it differentiates itself from the other available options, and how you can use it to power your next project.

Brief Introduction

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable.
  • When you’re ready to launch your next project you’ll need somewhere to deploy it. Check out Linode at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app.
  • You’ll want to make sure that your users don’t have to put up with bugs, so you should use Rollbar for tracking and aggregating your application errors to find and fix the bugs in your application before your users notice they exist. Use the link rollbar.com/podcastinit to get 90 days and 300,000 errors for free on their bootstrap plan.
  • Visit our site to subscribe to our show, sign up for our newsletter, read the show notes, and get in touch.
  • To help other people find the show you can leave a review on iTunes, or Google Play Music, and tell your friends and co-workers
  • Join our community! Visit discourse.pythonpodcast.com for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.
  • Your host as usual is Tobias Macey and today I’m interviewing Martijn Faassen about the Morepath web framework.

Interview with Martijn Faassen

  • Introductions
  • How did you get introduced to Python?
  • What is Morepath and what problem were you trying to solve when you created it?
  • The tag line for the Morepath project is that it’s a web microframework with superpowers. What is special or different about it that sets it apart from the other options in the Python ecosystem?
  • It can be difficult to convince someone to migrate to a new framework, particularly if there is a lack of supporting ecosystem. What are some of the motivating factors for a developer to switch to Morepath if they already have experience with one of the more widely used frameworks?
  • What does the internal architecture for Morepath look like and what are some of the challenges that you have faced while building it?
  • One of the features is the automatic link generation for ensuring that you don’t end up with dead links. Is there any support for permalinks or redirects so that if you refactor your site people won’t end up at a path that no longer exists?
  • In the documentation you make a number of references to the fact that Morepath is a routing based framework. Can you explain what you mean by that and how it differs from a traversal based framework?
  • Part of the core elements of Morepath are your libraries Reg and Dectate. Can you describe each of them and explain some of how they came to be created?
  • Morepath has a different conception of models than most frameworks that I’ve dealt with in that they aren’t necessarily associated with any form of database. Can you explain why that is and some of the patterns that it allows for?
  • The method for extending and reusing applications built in Morepath is through subclassing the objects and overriding specific methods. What is it about this approach that you found to be more flexible than the alternatives exhibited by other frameworks?
  • What are some of the most interesting or unexpected uses of Morepath that you have seen?
  • What do you have planned for the future of Morepath?

Keep In Touch

Picks

Links

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA