Modern Database Clients On The Command Line with Amjith Ramanujam

The Python Podcast.__init__

Episode | Podcast

Date: Sun, 10 Jun 2018 22:00:00 -0400

<h3>Summary</h3> <p>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.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.&#95;&#95;init&#95;&#95;, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app you&#8217;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&#8217;ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">podcastinit.com/linode</a> to get a $20 credit and launch a new server in under a minute.</li> <li>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&#8217;s even easier to deploy and scale your build agents. Go to <a href="https://www.pythonpodcast.com/gocd?utm_source=rss&amp;utm_medium=rss">podcastinit.com/gocd</a> to learn more about their professional support services and enterprise add-ons.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> 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 <a href="https://twtiter.com/podcastinit?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@Podcast&#95;&#95;init&#95;&#95;</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, or <a href="https://play.google.com/music/m/I7ogju4xv6adasgqz6545jndgsy?t=Podcastinit_-_Python_and_the_people_who_make_it_great&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Google Play Music</a>, tell your friends and co-workers, and share it on social media.</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Amjith Ramanujam about DBCLI, an umbrella project for command line database clients with autocompletion and syntax highlighting.</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>What is the DBCLI project? <ul> <li>Which of the clients was the first to be created and what was your motivation for starting it?</li> </ul> </li> <li>At what point did you decide to create the DBCLI umbrella for the different projects and what benefits does it provide?</li> <li>How much functionality is shared between the different clients?</li> <li>What additional functionality do the different clients provide over those that are distributed with their respective engines?</li> <li>How do you optimize for cases where large volumes of data are returned from a query?</li> <li>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?</li> <li>What are the most challenging aspects of building the different database clients?</li> <li>What are some unexpected hardships that you encountered through this open source project?</li> <li>What are some unexpected pleasant surprises that you encountered through this project? </li> <li>Why did you hand over the project leadership for pgcli and mycli to other devs? Was it a hard decision? </li> <li>Why do you optimize on being <a href="http://www.dbcli.com/about/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">nice over being right</a>?</li> <li>How did Microsoft get involved with dbcli? <a href="https://github.com/dbcli/mssql-cli?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">mssql-cli</a></li> <li>What&#8217;s been the reception for the projects? </li> <li>What are your plans for upcoming releases of the various clients?</li> <li>Which database engines are you planning to target next?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://github.com/amjith?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">amjith</a> on GitHub</li> <li><a href="https://twitter.com/amjithr?lang=en&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@amjithr</a> on Twitter</li> <li><a href="http://blog.amjith.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Blog</a></li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://www.imdb.com/title/tt1389072/reference?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Downsizing</a></li> </ul> </li> <li>Amjith <ul> <li><a href="https://en.wikipedia.org/wiki/Dosa?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dosas</a></li> <li><a href="https://en.wikipedia.org/wiki/Pablo_de_Sarasate?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Sarasate</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="http://www.dbcli.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">DBCLI</a></li> <li><a href="https://www.haskell.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Haskell</a></li> <li><a href="http://learnyouahaskell.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Learn you as haskell</a></li> <li><a href="http://learnyouahaskell.com/starting-out#im-a-list-comprehension?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">List Comprehension</a></li> <li><a href="https://www.pgcli.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PGCLI</a></li> <li><a href="http://www.mycli.net/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MyCLI</a></li> <li><a href="http://github.com/dbcli/mssql-cli/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MSSQL-CLI</a></li> <li><a href="https://github.com/jonathanslenders/python-prompt-toolkit?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Prompt Toolkit</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-6-jonathan-slenders-talks-about-prompt-toolkit/?utm_source=rss&amp;utm_medium=rss">Podcast.&#95;&#95;init&#95;&#95; Interview</a></li> </ul> </li> <li><a href="https://bpython-interpreter.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">BPython</a></li> <li><a href="https://djangocon.eu/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">DjangoCon EU</a></li> <li><a href="https://github.com/dbcli/cli_helpers?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CLI Helpers</a></li> <li><a href="https://wiki.python.org/moin/Generators?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Python Generators</a></li> <li><a href="https://github.com/dbcli/pgspecial?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PGSpecial</a></li> <li><a href="https://en.wikipedia.org/wiki/Longboarding?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Longboarding</a></li> <li><a href="https://twitter.com/irinatruong?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Irina Truong</a></li> <li><a href="https://github.com/tsroten?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Thomas Roten(sp)</a></li> <li><a href="https://www.postgresql.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">PostGreSQL</a></li> <li><a href="https://dev.mysql.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MySQL</a></li> <li><a href="https://www.microsoft.com/en-us/sql-server/sql-server-2016?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Microsoft SQL Server</a></li> <li><a href="http://sqlite.com/index.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">SQLite</a></li> <li><a href="https://www.oracle.com/database/technologies/index.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Oracle DB</a></li> <li><a href="http://cassandra.apache.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Cassandra DB</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fdbcli-with-amjith-ramanujam-episode-165%2F&amp;action_name=Modern+Database+Clients+On+The+Command+Line+with+Amjith+Ramanujam+-+Episode+165&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>