Our great sponsors
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
textual
The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.
-
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.
-
runSAS
This shell script tool allows you to run a SAS program or a batch of SAS programs via Bash environment with various interactive and non-interactive execution modes. This is ideal for a SAS environment which is restrictive by design and you need a batch execution script/tool especially when you have a batch of SAS Data Integration Studio (DI) jobs.
For building rich terminal UIs in Python, I recommend Rich the library
Nitpick about the website, but please don't use PGP short fingerprints like 0x46EBCD72F08E6717. They can be brute forced [0] very fast to get a different private key with the same fingerprint. You can also use them to generate keys with vanity fingerprints, which is pretty funny [1].
They use this package under the hood: https://github.com/jdxcode/smooth-progress
I use a similar approach in libmish [0], ie I "reserve" the bottom 2 rows, and output the scrolling text in the top parts. Pretty straightforward.
npm was about 6 years old and im pretty sure a lot of corporates have adopted node by then.
I don't think it has so much to do with quality but rather we like to re-invent shiny "new" wheels and then the new tooling must iron out all the corner cases.
I implemented something like this in pure bash. I called this status bar sort of implementation as "message bar" to show ongoing progress when script is running on the bottom of the screen using just bash...
This message bar would also become a prompt and take in user inputs on certain events apart from being a static status bar
Cursor positions, scrolling screens, event handling, progress bar, resolution changes, user inputs...everything had to be catered for in this - I remember thoroughly enjoying developing this.
To take things in a more constructive direction, that said, it is an area I've experimented with/tried to solve.
My big idea was radial progress indicators to try a different "best of both worlds" approach to progress spinners versus progress bars especially for "composite" progress indication where you have an unknown number of subtasks all running at their own speeds and can be discovered/initiated independently (such as downloading files). People are worse at estimating percentages of circles than lines, which I see as something of a benefit (because the exact progress percentage should be fuzzy).
It's still not great at giving an indication of overall speed/estimated time, but it's potentially very great at "the application hasn't crashed and is busy".
It was fun to experiment with/prototype, but I don't expect it to replace progress bars any time soon. (I think it should, but it's trade-off space where every option has drawbacks and while it fits closer to what I think is my personal "ideal", it probably won't make everyone happy either.)
Demo: http://worldmaker.net/compradprog/
Source: https://github.com/WorldMaker/compradprog/
Blog post on intentions/thought process: http://blog.worldmaker.net/2015/03/17/compradprog/
Related posts
- Tabled - An easy to use library for pretty print tables of Rust structs and enums.
- Rich is a Python library for rich text and beautiful formatting in the terminal
- Neat Parallel Output in Python
- The Gems of Moreutils
- colors.crumb - first Crumb usable. Extending Crumb with basic terminal styling and RGB, HEX, ANSI conversion functions.