Community

Modern Database Clients On The Command Line with Amjith Ramanujam - Episode 165

Summary

The command line is a powerful and resilient interface for getting work done, but the user experience is often lacking. This can be especially pronounced in database clients because of the amount of information being transferred and examined. To help improve the utility of these interfaces Amjith Ramanujam built PGCLI, quickly followed by MyCLI with the Prompt Toolkit library. In this episode he describes his motivation for building these projects, how their popularity led him to create even more clients, and how these tools can help you in your command line adventures.

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.
  • Your host as usual is Tobias Macey and today I’m interviewing Amjith Ramanujam about DBCLI, an umbrella project for command line database clients with autocompletion and syntax highlighting.

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is the DBCLI project?
    • Which of the clients was the first to be created and what was your motivation for starting it?
  • At what point did you decide to create the DBCLI umbrella for the different projects and what benefits does it provide?
  • How much functionality is shared between the different clients?
  • What additional functionality do the different clients provide over those that are distributed with their respective engines?
  • How do you optimize for cases where large volumes of data are returned from a query?
  • What are some of the most interesting or surprising things that you have learned about database engines in the process of building client interfaces for them?
  • What are the most challenging aspects of building the different database clients?
  • What are some unexpected hardships that you encountered through this open source project?
  • What are some unexpected pleasant surprises that you encountered through this project?
  • Why did you hand over the project leadership for pgcli and mycli to other devs? Was it a hard decision?
  • Why do you optimize on being nice over being right?
  • How did Microsoft get involved with dbcli? mssql-cli
  • What’s been the reception for the projects?
  • What are your plans for upcoming releases of the various clients?
  • Which database engines are you planning to target next?

Keep In Touch

Picks

Links

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

Pandas Extension Arrays with Tom Augspurger - Episode 164

Summary

Pandas is a swiss army knife for data processing in Python but it has long been difficult to customize. In the latest release there is now an extension interface for adding custom data types with namespaced APIs. This allows for building and combining domain specific use cases and alternative storage mechanisms. In this episode Tom Augspurger describes how the new ExtensionArray works, how it came to be, and how you can start building your own extensions today.

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.
  • Your host as usual is Tobias Macey and today I’m interviewing Tom Augspurger about the extension interface for Pandas data frames and the use cases that it enables

Interview

  • Introductions
  • How did you get introduced to Python?
  • Most people are familiar with Pandas, but can you describe at a high level the new extension interface?
    • What is the story behind the implementation of this functionality?
    • Prior to this interface what was the option for anyone who wanted to extend Pandas?
  • What are some of the new data types that are available as external packages?
    • What are some of the unique use cases that they enable?
  • How is the new interface implemented within Pandas?
  • What were the most challenging or difficult aspects of building this new functionality?
  • What are some of the more interesting possibilities that you are aware of for new extension types?
  • What are the limitations of the interface for libraries that add new array functionality?
  • What is the next major change or improvement that you would like to add in Pandas?

Keep In Touch

Picks

Links

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

Making A Difference Through Software With Eric Schles - Episode 163

Summary

Software development is a skill that can create value and reduce drudgery in a wide variety of contexts. Sometimes the causes that are most in need of software expertise are also the least able to pay for it. By volunteering our time and abilities to causes that we believe in, we can help make a tangible difference in the world. In this episode Eric Schles describes his experiences working on social justice initiatives and the types of work that proved to be the most helpful to the groups that he was working with.

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.
  • 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.
  • Your host as usual is Tobias Macey and today I’m interviewing Eric Schles about how to get involved with social justice causes as an engineer

Interview

  • Introductions
  • How did you get introduced to Python?
  • What are some ways that engineers can create real-world impact with their skills?
  • What are some of the common roadblocks to contribution that people should be aware of?
  • What are some of the types of projects or tools that can provide the most value compared to the amount of effort?
  • Do you have any advice for picking an organization or cause that will benefit the most from technical expertise?
  • Many of the tools and systems that get built for public or non-profit organizations require some amount of data for them to be useful. Do you have any advice on methods for identifying, locating, or collecting the necessary information for feeding into these projects?
  • What are some of the design factors that should be considered when building tools for these organizations to allow them to be maintainable and sustainable in the absense of an experienced engineer?

Keep In Touch

Picks

Links

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

Keeping The Beets with Adrian Sampson - Episode 152

Summary

Maintaining a consistent taxonomy for your music library is a challenging and time consuming endeavor. Eventually you end up with a mess of folders and files with inconsistent names and missing metadata. Beets is built to solve this problem by programmatically managing the tags and directory structure for all of your music files and providing a fast lookup when you are trying to find that perfect song to play. Adrian Sampson began the project because he was trying to clean up his own music collection and in this episode he discusses how the project was built, how streaming media is affecting our relationship to digital music, and how he envisions Beets position in the ecosystem 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 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 Adrian Sampson about Beets, the swiss army knife for managing your music library.

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Beets and what was your reason for creating it?
    • What was your reason for using Python and if you were to start over today would you make the same choice?
  • If I have a directory with inconsistent naming conventions, poor organization, and some random folders full of mixed MP3 files how can Beets help me and what does the workflow look like?
  • How is Beets architected to allow for interactively processing a large volume of media files and how has the design evolved over the time that you have been working on it?
  • What are your thoughts on the current trend toward streaming music services replacing local media files?
  • What have been some of the most challenging aspects of building Beets?
  • What are some of the most interesting uses for Beets that you have seen?
  • What are some of the other projects for managing a music library and how does Beets compare to them?
  • Are there any features that you have planned for the future of Beets, or any new functionality that you would like to see contributed?

Keep In Touch

Picks

Links

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

ZimboPy - Episode 148

Summary

Learning to code is one of the most effective ways to be successful in the modern economy. To that end, Marlene Mhangami and Ronald Maravanyika created the ZimboPy organization to teach women and girls in Zimbabwe how to program in Python. In this episode they are joined by Mike Place to discuss how ZimboPy got started, the projects that their students have worked on, and how the community can get involved.

Preface

mu- 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 Marlene Mhangami, Mike Place, and Ronald Maravanyika about ZimboPy, an organization that teaches women and girls in Zimbabwe how to program using Python

Interview

  • Introductions
  • How did you get introduced to Python?
  • Can you start by explaining what the mission of ZimboPy is and how it got started?
  • Which languages did you consider using for your lessons and what was your reason for choosing Python?
  • What subject matter do you cover in addition to pure programming concepts?
  • What are some of the types of projects that the students have completed as part of their work with ZimboPy?
  • What have been the most challenging aspects of running ZimboPy?
  • How is ZimboPy supported and what are your plans to ensure future sustainability?
  • Can you share some success stories for the women and girls that you have worked with?
  • For anyone who is interested in replicating your work for other communities what advice do you have?

Keep In Touch

Picks

Links

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

Kenneth Reitz - Episode 139

Summary

Kenneth Reitz has contributed many things to the Python community, including projects such as Requests, Pipenv, and Maya. He also started the community written Hitchhiker’s Guide to Python, and serves on the board of the Python Software Foundation. This week he talks about his career in the Python community and digs into some of his current work.

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 Kenneth Reitz about his career in Python

Interview

  • Introductions
  • How did you get introduced to Python?
  • An overarching theme of your open source projects is the idea of making them “For Humans”. Can you elaborate on how that came to be a focus for you and how that informs the way that you design and write your code?

  • What are the projects that you are most proud of and which do you think have had the biggest impact on the Python community?
    A: Requests, Hitchhiker’s Guide to Python, and Pipenv (yet to come to full fruition).

  • Which projects have you authored which are relatively unknown but you think people would benefit from using more often?
    A: Maya: Datetime for Humans, and Records: SQL for Humans.

  • Outside of the code that you write, what are some of your personal missions for the software industry in general and the Python community in particular?
    A: I consider myself a “spiritual alchemist”, which means “transformation of dark into light”. I seek to do “the great work”, in however in manifests, outside of the programming world, as well as within it.

  • What do you think is the biggest gap in the tool chest for Python developers?
    A: I seek to fill all the voids that I see, and I’ve done my best to do that to the best of my ability. I think we have a lot of work to do in the area of single-file executable builds (a-la Go).

  • What are your ambitions for future projects?
    A: At the moment, I have no current plans for future projects, but I’m sure something will come along at some point 🙂

  • If you weren’t working with Python what would you be doing instead?
    A: I’d have a lot less money and I’d be a lot less fufilled.

Keep In Touch

Picks

Links

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

Zulip Chat with Tim Abbott - Episode 118

Summary

In modern work environments the email is being edged out by group chat as the preferred method of communication. The majority of the platforms used are commercial and closed source, but there is one project that is working to change that. Zulip is a project that aims to redefine how effective teams communicate and it is already gaining ground. This week Tim Abbott shares the story of how Zulip got started, how it is built, and why you might want to start using it.

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 Tim Abbott about Zulip, a powerful open source group chat platform

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Zulip and what was the initial inspiration for creating it?
    • Where does the name come from?
  • My understanding is that the project was initally intended to be a commercial product. Can you share some of the history of the acquisition by Dropbox and the journey to open sourcing it?
  • How has your experience at Dropbox influenced the evolution and implementation of the Zulip project?
  • There are a large number of group chat platforms available, both commercial and open source. How does Zulip differentiate itself from other options such as Slack or Mattermost?
  • Typically real-time communication is difficult to achieve in a WSGI application. How is Zulip architected to allow for interactive communication?
  • What have been the most challenging aspects of building and maintaining the Zulip project?
  • What is involved in installing and running a Zulip server?
    • For a large installation, what are the options for scaling it out to handle greater load?
  • There is a large and healthy community that has built up around the Zulip project. What are some of the methods that you and others have used to foster that growth and engagement?
  • What has been the most unexpected aspect of working on Zulip, whether technically or in terms of the community around it?
  • What do you have planned for the future of Zulip?

Keep In Touch

Picks

Links

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

Oscar Ecommerce with David Winterbottom and Michael van Tellingen - Episode 104

Summary

If you have a product to sell, whether it is a physical good or a subscription service, then you need a way to manage your transactions. The Oscar ecommerce framework for Django is a flexible, extensible, and well built way for you to add that functionality to your website. This week David Winterbottom and Michael van Tellingen talk about how the project got started, how it works under the covers, and how you can start using it today.

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 you can leave a review on iTunes, or Google Play Music, and tell your friends and co-workers
  • Before we start the show I have a couple of announcements
    • I started a new Slack channel for guests and listeners of the show. Go to www.pythonpodcast.com/slack to join in the conversation!
    • If you are interested in how open source powers innovations in data then you should check out the Open Source Data Science conference. It is coming to Boston, Massachusetts on March 3rd through the 5th so don’t miss out on your chance to level up and meet some new friends!
  • Your host as usual is Tobias Macey and today I’m interviewing David Winterbottom and Michael van Tellingen about the Oscar framework for building ecommerce applications in Django.

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Oscar and what problem were you trying to solve when you created it?
  • At face value ecommerce seems like a fairly straightforward problem domain but there is a lot of incidental complexity involved. What are some of the most challenging aspects of building and managing a web store?
  • The documentation states in a number of places that Oscar takes a ‘domain driven’ approach to building ecommerce applications. Can you explain what you mean by that and how it manifests in the project?
  • What does the internal design of Oscar look like and how would someone get started with building a site with it?
  • There can be a benefit to having an opinionated approach when building a framework because it simplifies the implemenation for the user. What is the reasoning for choosing to expose and allow for complexity in Oscar?
  • What are some of the most interesting and unexpected projects that you have seen built with Oscar?
  • How has ecommerce changed in the time since Oscar was first created, and how has that impacted its evolution?
  • What is in store for the future of Oscar?

Contact

Picks

Links

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

Plone with Eric Steele - Episode 85

Summary

Plone is one of the first CMS projects to be built using Python and it is still being actively developed. This week Eric Steele, the release manager for Plone, tells us about how it got started, how it is architected, and how the community is one of its greatest strengths

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 Eric Steele about the Plone CMS.

Interview with Eric Steele

  • Introductions
  • How did you get introduced to Python?
  • Can you start by explaining a bit about what Plone is and how you got involved with it?
  • How did the Plone project get started and how has it evolved over the years?
  • What makes Plone unique among the myriad CMS tools that are available and which of them do you consider to be direct competitors?
  • Plone has managed to keep an impressive track record of security. What are some of the key features that enable that?
  • I know that for much of its history, the default data storage for plone was the ZODB (Zope Object DataBase). How would you describe its benefits and drawbacks for someone who is familiar with a relational database?
  • Plone is one of the most long-lived Python projects that I am aware of. What are some of the most difficult maintenance challenges that you have encountered over the years of its existence?
  • What does the internal architecture of Plone look like?
  • One of the major tenets of the project is the ability to install extensions. What are some of the most interesting plugins that you are aware of?
  • What kinds of projects are Plone best suited for?
  • What does the workflow look like for a user of Plone?
  • What are some of the most interesting uses of Plone that you have seen?
  • What are the biggest challenges facing the Plone project and community as development and deployment paradigms continue to change?

Keep In Touch

Picks

Links

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

.

Retrospective - Episode 84

Summary

In this episode Chris and I look back at the past 83 episodes of the show and talk about what we learned, what we’ve enjoyed, and some of the highlights.

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 hosts as usual are Tobias Macey and Chris Patti
  • Today we’re interviewing each other about the past year and a half of the show.

Interview with Tobias and Chris

  • Introductions
  • What have been some of the most unexpected or surprising aspects of the show for you during the past year and a half? – Tobias
  • What are your top three favorite shows so far and why? – Chris
  • If you could have a longer conversation with any of the past guests, who would you pick? – Tobias
  • What has doing the show meant to you? – Chris
  • What have you learned while doing the show that you wish you had known at the start? – Tobias
  • How has the production process evolved since the beginning of the show? – Chris

Chris Leaving the Show – Chris

  • Tobias and I started new jobs (At MIT Office of Digital Learning and Amazon Web Services, respectively)
  • We’re much, much busier these days, making coordination difficult
  • Tobias is ready to take the show solo and I (Chris) support him in this
  • Chris still plans to support the show as an avid fan 🙂

Keep In Touch

Picks

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