Concurrency

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

Dave Beazley - Episode 72

Summary

Dave Beazley has been using and teaching Python since the early days of the language. He has also been instrumental in spreading the gospel of asynchronous programming and the many ways that it can improve the performance of your programs. This week I had the pleasure of speaking with him about his history with the language and some of his favorite presentations and projects.

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. For details on how to support the show you can visit our site at pythonpodcast.com
  • Linode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project
  • We are also sponsored by Sentry this week. Stop hoping your users will report bugs. Sentry’s real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Check them out at getsentry.com and use the code podcastinit at signup to get a $50 credit!
  • Hired has also returned as a sponsor this week. If you’re looking for a job as a developer or designer then Hired will bring the opportunities to you. Sign up at hired.com/podcastinit to double your signing bonus.
  • 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 hosts as usual are Tobias Macey and Chris Patti
  • Today we’re interviewing Dave Beazley about his career with Python

Interview with Dave Beazley

  • Introductions
  • How did you get introduced to Python? – Tobias
  • How has Python and its community helped to shape your career? – Tobias
  • What are some of the major themes that you have focused on in your work? – Tobias
  • One of the things that you are known for is doing live-coding presentations, many of which are fairly advanced. What is it about that format that appeals to you? – Tobias
    • What are some of your favorite stories about a presentation that didn’t quite go as planned? – Tobias
  • You have given a large number of talks at various conferences. What are some of your favorites? – Tobias
  • What impact do you think that asynchronous programming will have on the future of the Python language and ecosystem? – Tobias
  • Are there any features that you see in other languages that you would like to have incorporated in Python? – Tobias
  • On the about page for your website you talk about some of the low-level code and hardware knowledge that you picked up by working with computers as a kid. Do you think that people who are getting started with programming now are missing out by not getting exposed to the kinds of hardware and software that was present before computing became mainstream?
  • You have had the opportunity to work on a large variety of projects, both on a hobby and professional level. What are some of your favorites? – Tobias
  • What is it about Python that has managed to hold your interest for so many years? – Tobias

Keep In Touch

Picks

Links

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

Efene with Mariano Guerra - Episode 47

Visit our site to listen to past episodes, support the show, join our community, and sign up for our mailing list.

Summary

Efene is a language that runs on the Erlang Virtual Machine (BEAM) and is inspired by the Zen of Python. It is intended as a bridge language that serves to ease the transition into the Erlang ecosystem for people who are coming from languages like Python. In this episode I spoke with Mariano Guerra, the creator of Efene, about how Python influenced his design choices, why you might want to use it, and when Python is the better tool.

Brief Introduction

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • Subscribe on iTunes, Stitcher, TuneIn or RSS
  • Follow us on Twitter or Google+
  • Give us feedback! Leave a review on iTunes, Tweet to us, send us an email or leave us a message on Google+
  • Join our community! Visit discourse.pythonpodcast.com for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.
  • I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at pythonpodcast.com
  • Linode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project
  • I would also like to thank Hired, a job marketplace for developers, for sponsoring this episode of Podcast.__init__. Use the link hired.com/podcastinit to double your signing bonus.
  • Your host today is Tobias Macey
  • Today we are interviewing Mariano Guerra about his work on the Efene language.

Interview with Mariano Guerra

  • Introductions
  • How did you get introduced to Python? – Chris
  • So Efene is a language that runs on the BEAM VM which you say was at least partially inspired by the Zen of Python. Can you explain in greater detail in what form that inspiration manifested and some of the process involved in the creation of Efene? – Tobias
  • What inspired you to create Efene and what problems does it solve? – Tobias
  • How does Efene compare to other BEAM based languages such as Elixir? – Tobias
  • When would a Python developer want to consider using Efene? – Tobias
  • What benefits does the BEAM provide that can’t be easily replicated in the Python ecosystem? – Tobias
  • Does the Efene language ease the transition to a more functional mindset for developers who are already familiar with Python paradigms? – Tobias
  • I understand that you are experimenting with another language implementation that runs on the BEAM. Can you describe that project and compare it to Efene? What were your inspirations? – Tobias

Keep In Touch

Picks

Links

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

RPython with Maciej Fijalkowski - Episode 41

Visit our site to listen to past episodes, support the show, join our community, and sign up for our mailing list.

Summary

RPython is a subset of Python that is used for writing high performance interpreters for dynamic languages. The most well-known product of this tooling is the PyPy interpreter. In this episode we had the pleasure of speaking with Maciej Fijalkowski about what RPython is, what it isn’t, what kinds of projects it has been used for, and what makes it so interesting.

Brief Introduction

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • Subscribe on iTunes, Stitcher, TuneIn or RSS
  • Follow us on Twitter or Google+
  • Give us feedback! Leave a review on iTunes, Tweet to us, send us an email or leave us a message on Google+
  • Join our community! Visit discourse.pythonpodcast.com for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.
  • I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at pythonpodcast.com
  • Linode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project
  • I would also like to thank Hired, a job marketplace for developers, for sponsoring this episode of Podcast.__init__. Use the link hired.com/podcastinit to double your signing bonus.
  • We are recording today on December 17th, 2015 and your hosts as usual are Tobias Macey and Chris Patti
  • Today we are interviewing Maciej Fijalkowski on RPython

Interview with Maciej Fijalkowski

  • Introductions
  • How did you get introduced to Python? – Chris
  • What is RPython and how does it differ from CPython? – Tobias
  • Can you share some of the history of RPython in terms of the major improvements and design choices? – Tobias
  • In the documentation it says that RPython is able to generate a Just In Time compiler for dynamic languages. Can you explain why that is significant and some of the ways that it does that? – Tobias
  • The most well-known use of RPython is the PyPy interpreter for Python. Can you share some of the other languages that have been ported to the RPython runtime and how their performance has been improved or altered in the process? – Tobias
  • Are there any languages that have been designed entirely for use with RPython, rather than translating an existing language to run on it? – Tobias
  • Do you know of any cases where an application has been written to run directly on RPython? – Tobias
  • What are the computer architecture and operating system platforms that RPython supports and do you have any plans to expand that support? – Tobias
  • Are there any minimum hardware specifications that are necessary to be able to effectively run a language written against the RPython platform? – Tobias
  • Is RPython similar in concept to other efforts like Parrot in the Perl world? – Chris
  • Are there any particular areas of the project that you need help with and how can people get involved with the project? – Tobias

Picks

Keep In Touch

Links

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

Ben Darnell on Tornado - Episode 40

Visit our site to listen to past episodes, support the show, join our Discourse community, and sign up for our mailing list.

Summary

If you are trying to build a web application in Python that can scale to a high number of concurrent users, or you want to leverage the power of websockets, then Tornado just may be the library you need. In this episode we interview Ben Darnell about his work as the maintainer of the Tornado project and how it can be used in a number of ways to power your next high traffic site.

Brief Introduction

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • Subscribe on iTunes, Stitcher, TuneIn or RSS
  • Follow us on Twitter or Google+
  • Give us feedback! Leave a review on iTunes, Tweet to us, send us an email or leave us a message on Google+
  • We are also running a listener survey to get feedback about the show. You can find it at bit.do/podcastinit-survey.
  • I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at pythonpodcast.com
  • Linode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project
  • I would also like to thank Hired, a job marketplace for developers and designers, for sponsoring this episode of Podcast.__init__. Use the link hired.com/podcastinit to double your signing bonus to $4,000.
  • Your hosts as usual are Tobias Macey and Chris Patti
  • We recently launched a new Discourse forum for the show which you can find at discourse.pythonpodcast.com. Join us to discuss the show, the episodes, and ideas for future interviews.
  • Today we are interviewing Ben Darnell about his work on Tornado

Interview with Ben Darnell

  • Introductions
  • How did you get introduced to Python? – Chris
  • What is Tornado and what sets it apart from other HTTP servers? – Chris
  • How did you get involved with Tornado? – Ben
  • What was the inspiration for the name? – Tobias
  • Tornado was created before the recent focus on asynchronous applications. What prompted that design choice and when might someone care about using async in their development? – Tobias
  • What is involved in creating an event loop and what are some of the specific design decisions that you made when implementing one for Tornado? – Tobias
  • How does Tornado’s event loop compare to other packages such as Twisted or the asyncio module in the standard library? – Tobias
  • The web module appears to provide a minimal framework for developing web apps. How scalable are those capabilities and is there a recommended architecture for people using Tornado to develop web applications? – Tobias
  • What are some use cases in which a developer might choose Tornado over other similar options? – Chris
  • Could you please give our listeners an overview of Tornado’s concurrency options including coroutines? – Chris
  • I see that Tornado supports interoperability with the WSGI protocol and one of the use cases mentioned is for running a Django application alongside a Tornado app. Is that a common way for providing websocket capabilities alongside an existing web app? – Tobias
  • I noticed that Tornado provides non-blocking versions of bare sockets and TCP connections. Are there any add-on packages available to simplify the use of various network protocols along the lines of what Twisted includes? – Tobias
  • Please tell us about the transition of Tornado to Python 3. What obstacles did you face and how did you overcome them? – Chris
  • Based on your issue tracker it looks like http2 support is definitely on the roadmap. Could you please detail your future plans in this area? – Chris
  • What are some of the common “gotcha’s” for people who are just starting to use Tornado? – Tobias

Picks

Keep In Touch

Links

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

Trent Nelson on PyParallel - Episode 27

Visit our site to listen to past episodes, support the show, and sign up for our mailing list.

Summary

Trent Nelson is a software engineer working with Continuum Analytics and a core contributor to CPython. He started experimenting with a way to sidestep the restrictions of the Global Interpreter Lock without discarding its benefits and that has become the PyParallel project. We had the privilege of discussing the details around this innovative experiment with Trent and learning more about the challenges he has experienced, what motivated him to start the project, and what it can offer to the community.

Brief Introduction

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • Subscribe on iTunes, Stitcher, TuneIn or RSS
  • Follow us on Twitter or Google+
  • Give us feedback! Leave a review on iTunes, Tweet to us, send us an email or leave us a message on Google+
  • I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at
  • I would also like to thank Hired, a job marketplace for developers, for sponsoring this episode of Podcast.__init__. Use the link hired.com/podcastinit to double your signing bonus.
  • We are recording today on September 7th, 2015 and your hosts as usual are Tobias Macey and Chris Patti
  • Today we are interviewing Trent Nelson about PyParallel
Hired LogoOn Hired software engineers & designers can get 5+ interview requests in a week and each offer has salary and equity upfront. With full time and contract opportunities available, users can view the offers and accept or reject them before talking to any company. Work with over 2,500 companies from startups to large public companies hailing from 12 major tech hubs in North America and Europe. Hired is totally free for users and If you get a job you’ll get a $2,000 “thank you” bonus. If you use our special link to signup, then that bonus will double to $4,000 when you accept a job. If you’re not looking for a job but know someone who is, you can refer them to Hired and get a $1,337 bonus when they accept a job.

Interview with Trent Nelson

  • Introductions
  • How did you get introduced to Python?
  • For our listeners who may not be aware, can you give us an overview of what Pyparallel is and what makes it different from other Python implementations?
  • How did PyParallel come about?
  • What are some of the biggest technical hurdles that you have been faced with during your work on PyParallel?
  • I understand that PyParallel currently only works on Windows. What was the motivation for that and what would be required for enabling PyParallel to run on a Linux or BSD style operating system?
  • How does Pyparallel get around the limitations of the global interpreter lock without removing it?
  • Is there any special syntax required to take advantage of the parallelism offered by PyParallel? How does it interact with the threading module in the standard library?
  • In the abstract for the Pyparallel paper, you cite a simple rule – “Don’t persist parallel objects” – how easy is this to do with currently available concurrency paradigms and APIs, and would it make sense to add such support?
    • For instance, how would one be sure to follow this rule when using Twisted or asyncio?
  • Are there any operations that are not supported in parallel threads?
  • What drove the decision to fork Python 3.3 as opposed to the 2.X series?
  • In the documentation you mention that the long term goal for PyParallel is to merge it back into Python mainline, possibly within 5 years. Has anything changed with that goal or timeline? What milestones do you need to hit before that becomes a realistic possibility?
  • Can you compare PyParallel to PyPy-STM and Go with Goroutines in terms of performance and user implementation?
  • What are some particular problem areas that you are looking for help with?
  • Assuming that it does get merged in as Python 4, how do you think that would affect the features and experiments that went into Python 5?
  • To be continued…

Picks

Keep In Touch