Ergonomica with Liam Schumm – Episode 123

Summary

As developers we spend a lot of our work day in a terminal window, using shells that were designed 30 years ago. This week Liam Schumm joins me to explain why he decided to write a new, more ergonomic shell environment to simplify his workflow.

linode-banner-sponsor-largeDo you want to try out some of the tools and applications that you heard about on Podcast.__init__? Do you have a side project that you want to share with the world? Check out Linode at linode.com/podcastinit or use the code podcastinit2017 and get a $20 credit to try out their fast and reliable Linux virtual servers. They’ve got lightning fast networking and SSD servers with plenty of power and storage to run whatever you want to experiment on.


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.
  • Need to learn more about how to scale your apps or learn new techniques for building them? Pluralsight has the training and mentoring you need to level up your skills. Go to www.podcastinit.com/pluralsight to start your free trial today.
  • 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.
  • If you work with data for your job or want to learn more about how open source is powering the latest innovations in data science then make your way to the Open Data Science Conference, happening in London in October and San Francisco in November. Follow the links in the show notes to register and help support the show in the process.
  • Your host as usual is Tobias Macey and today I’m interviewing Liam Schumm about Ergonomica

Interview

  • Introductions
  • How did you get introduced to Python?
  • What is Ergonomica and what was your reason for creating it?
  • What are some of the most difficult aspects of the project that you have experienced?
  • How is Ergonomica implemented?
  • What was your reason for using a dialect of Lisp as the interface for a terminal environment as opposed to iterating on the idioms in shells such as Bash?
  • How does Ergonomica’s implementation differ from traditional shells such as Bash, Csh, and Powershell?
  • How does Ergonomica’s implementation differ from other alternative shells such as Xonsh, ZSH, and Fish?
  • Why did you choose to implement Ergonomica in Python?
  • What’s your target group for Ergonomica?
  • What do you have planned for the future of Ergonomica?
  • Reading through your website you are fairly well accomplished. How does your age factor into the kinds of projects that you are engaged in?

Keep In Touch

Picks

Links

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

Notable Replies

  1. I'm mostly interested in making my scripts more readable/understandable to coworkers who are not programmers nor sysadmins. And bash indeed has a tendency to produce some unwieldy code no mater how much I tried to make it otherwise.
    (interesting note: non of coworkers struggled with if ... fi and for ... done :confused: )

    So far, xonsh looks most interesting as I could easily extract confusing part to a function. And by writing docstring with doctest lines I could somewhat amend damage done by choosing function name.
    (I beg you, please put docstrings in ALL of your functions - I like reading your code. :slight_smile: )

    Is there some real world examples of idiomatic Ergonomica scripts I could look at?

    BTW, how do people wrap their head around those emacs lisp never ending function definitions?

  2. In terms of "idiomatic" Ergonomica scripts, I've written up a few here, doing various system tasks in manipulating files and directories. In addition, I've also written pretty in-depth examples for each function. I'm continuously updating this list both as the language grows and in order to facilitate growth, due to the fact that many scripts have forced me to create some new functions. Unfortunately, the sheer volume of great Bash one-liners far exceeds those of Ergonomica :wink:, but as I grow the language those should also grow.

    With regards to Lisp, it's definitely a skill. Once you've gotten good at it, the structure of the code will be quite intuitive. I think that's one definite strength of xonsh versus Ergonomica–that more programmers will have some level of familiarity with Pythonic idioms than experience in Lisp. However, I think that functional programming, Lisp in specific, really lends itself to the same types of structures that you encounter in a typical shell environment (the POSIX standard of function arg1 arg2..., $() syntax, performing map and filter operations and applying functions to lists of output of functions, etc.), making these a logical choice. In my opinion, this makes these constructs fit in with the rest of the language better.

  3. amfwq says:

    Very interesting to hear about a reimagining of the shell paradigm. It seems like the project is still in the early stages -- I appreciate how Tobias finds content from a wide spectrum of topics and kinds of projects. I might try it out as a way to get more experience working with Lisp syntax.

    I have tried out zsh, fish, and xonsh. My issue with them was that, while I do use the shell a decent amount on my personal computer, I tend to use the shell in more varied ways on other computers (helping other people at work or fixing things on servers) -- on my computer I might just start a jupyter notebook and play around with some text files, but on a foreign computer I'd probably string together sed, awk, sort, etc. and try not to install any extra software. So I decided just to use bash to build up familiarity with all of its intricacies. I should revist alternative shells. I am very quick to jump from bash to Python with the subprocess module when writing shell scripts.

    Modernizing all of the Unix tools sounds like an ambitious goal. I'd be curious to see what improvements are possible. Regarding helping Windows users, my understanding is that the Ubuntu shell avialable for the Windows Subsystem for Linux is now generally available in Windows 10 and is pretty faithful to the standard Ubuntu installation. I haven't tried it myself though.

  4. amfwq says:

    Oh, also, there was a small audio issue with this episode. Perhaps you already caught it. The music starts playing early at the end. It feels like an awards show when someone's acceptance speech is going on too long and the music starts playing to cut them off.

Continue the discussion https://discourse.pythonpodcast.com

Participants