Bringing the Unix Philosophy to the 21st Century

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • nushell

    A new type of shell

  • I was literally just thinking about this a few days ago. I'm super excited by https://www.nushell.sh/ . I think they are hitting on an order of magnitude improvement paradigm of shells that fit very nicely with the theme of this article.

  • jc

    CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.

  • Article from 2019 basically advertises https://github.com/kellyjonbrazil/jc which converts output of many unix cli commands into json, depends on Python

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • Gooey

    Turn (almost) any Python command line program into a full GUI application with one line

  • Related, I am wondering if somebody is aware of a project to wrap cli utilies in a minimal 'TUI', along the lines of this: https://github.com/chriskiehl/Gooey , but staying in the terminal. You'd pass the name of the program to run as the first argument. Haven't thought this through fully.

  • live-awk-mode

    Build awk commands interactively with live result sets.

  • Live editing an awk program is pretty trivial to do in Emacs. I use this occasionally with awk-mode which is ~20 LoC:

    https://github.com/danlamanna/live-awk-mode

  • jello

    CLI tool to filter JSON and JSON Lines data with Python syntax. (Similar to jq)

  • Sure thing!

    https://github.com/kellyjonbrazil/jello

    Other languages are superior in their handling of maps/arrays, but Python is just so damned popular now I thought it was a good choice to democratize JSON handling.

    https://blog.kellybrazil.com/2020/03/25/jello-the-jq-alterna...

  • murex

    A smarter shell and scripting environment with advanced features designed for usability, safety and productivity (eg smarter DevOps tooling)

  • This is why I wrote murex shell (https://github.com/lmorg/murex), it's an alternative $SHELL, so you'd use it in place of Bash or Zsh, but it's optimised for modern DevOps tools. Which means JSON and YAML are first class citizens.

    It's syntax isn't 100% POSIX compatible so there is some new stuff to learn but it works with all the existing POSIX tools and is more readable than AWK and Perl but while also being terse enough to write one liners.

  • ijson

    Iterative JSON parser with Pythonic interfaces (by ICRAR)

  • > JSON’s design assumes the user can read the entire file into memory

    No? The design of most JSON libraries assumes that, but there are perfectly good incremental JSON parsers out there[1–3]. It’s just that people don’t seem to have figured out a good API for not-completely-incremental parsing (please prove me wrong here!), but this applies equally to any structured data format as soon as you want to pull out pieces of data that are nested more than one level down.

    The lack of length prefixes in JSON does indeed make a solid parser somewhat more difficult, but you get the ability to author and validate it manually instead. All in all a draw and not because of the incremental parsing thing.

    (Tabular or otherwise homogeneous data is indeed reprsented wastefully, but unless the individual records are huge json+gzip is a perfectly serviceable “worse-is-better” solution.)

    [1] https://github.com/ICRAR/ijson

    [2] https://github.com/AMDmi3/jsonslicer

    [3] https://github.com/danielyule/naya

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • jsonslicer

    Stream JSON parser for Python

  • > JSON’s design assumes the user can read the entire file into memory

    No? The design of most JSON libraries assumes that, but there are perfectly good incremental JSON parsers out there[1–3]. It’s just that people don’t seem to have figured out a good API for not-completely-incremental parsing (please prove me wrong here!), but this applies equally to any structured data format as soon as you want to pull out pieces of data that are nested more than one level down.

    The lack of length prefixes in JSON does indeed make a solid parser somewhat more difficult, but you get the ability to author and validate it manually instead. All in all a draw and not because of the incremental parsing thing.

    (Tabular or otherwise homogeneous data is indeed reprsented wastefully, but unless the individual records are huge json+gzip is a perfectly serviceable “worse-is-better” solution.)

    [1] https://github.com/ICRAR/ijson

    [2] https://github.com/AMDmi3/jsonslicer

    [3] https://github.com/danielyule/naya

  • jellex

    TUI to filter JSON and JSON Lines data with Python syntax

  • I wrote something similar to this to query JSON and JSON lines with python instead of awk for text. It’s called Jellex (Jello Explorer) which is a TUI front-end to Jello. Jello is a python analog to JQ.

    https://github.com/kellyjonbrazil/jellex

  • ngs

    Next Generation Shell (NGS)

  • This is how you "integrate" `jc` with Next Generation Shell ( https://github.com/ngs-lang/ngs ):

        data = ``jc PROGRAM ARGS ...``

  • Octo Pack

    Discontinued Creates Octopus-compatible NuGet packages

  • Typically informational messages/log message. Ideally it should go do stderr but some applications that intercept the file descriptors consider anything to stderr as error and it is not always possible to change the handling for those applications (e.g. Octopus Deploy[0] does this).

    [0]: https://octopus.com/

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts