#M d smart tool plus#
Plus it is larger, more complex and generally slower. I am still not a fzf convert because generally it does not do anything essential I cannot already do myself. I have written several shell scripts over the years that have a subset of the functionality of fzf (or a superset of urlview's, which came much earlier), namely finding and selecting items from lists. (I am probably mistaken but I believe the one I wrote may be able to operate at the same speed regardless of the size of the JSON data. Hence I wrote a stupid program for myself that extracts JSON, prints the keys and values left-justified, making it easy for me to read with less(1) and to process with traditional UNIX text-processing utilities. makes it easy to process further with other programs. print it in a customised, human-readable, left-justified format that 3. Despite so many options for libraries and programs to process JSON, I still cannot find one that does something very simple: 1. There are some JSON utilities listed on this blog page. These projects are generally not popular but they are generally high quality, IMHO.
![m d smart tool m d smart tool](https://m.media-amazon.com/images/I/71eoLbZpR7L._CR2,0,1276,720_SR342,193__BG0,0,0__QL65_.png)
The author of tinysshd has some useful ones as well.
![m d smart tool m d smart tool](https://i.ytimg.com/vi/Wj9kEFmhq2Y/mqdefault.jpg)
For example, the authors of runit or s6 have some interesting utilities. Some of the best "new" UNIX utilities I have seen have come from from people who use djb's C functions and/or copy his programming style, including the preference for small program size and few-to-no options. FWIW, seems like that was true of most of djb's utilties, too. I try to keep program size reasonably small so I use C not Go or Rust. I write quick and dirty single-purpose utilities for myself because I want relatively simple programs.
![m d smart tool m d smart tool](https://www.mdteam.com/craftassets/mdconsumer-06.png)
Comparing these new programs to original UNIX utilities, many (most) of the UNIX ones seem comparatively simpler. It often seems as if the authors are trying to show off their programming skills with some new language they are trying to learn, e.g., Go or Rust. However I am beginning to think another reason is that these "new" utilities are consitently too complicated, e.g., too many options. When trying new programs I am looking for whether a program can do something essential that I cannot do myself, e.g., with shell scripts. When I try the "new" ones I cannot get interested in them either.
#M d smart tool code#
And it does it without changing a line of code or command line invocation, which is a big deal in polyglot environments with various build constraints (not passing -DFLAG=thing is enormous in a big C/C++ code base, for example).Įven just being able to point whether a service is looking at a dev/production/local service/database is a big deal if you've invested in IaC and don't want to mess with any config files to do your work (as. It makes it a breeze to pull in a commit and set up a development harness that pokes at whatever thing I need to poke at in my local environment. envrc at the root of our monorepo with a handful of env vars that configure stuff like PATH (to point to the various scripts, tools, and executables that are used in the dev environment), override the sane default config files with an environment variable (extremely useful when chasing down specific bugs) and to redirect or control logging and debug info when running tools and systems. I've only used Nix for managing my personal installed package on OS X so far, but I believe direnv works really well in tandem with Nix - use a Nix file to define your project's dependencies and use direnv to automatically activate all those dependencies whenever you're in the project's directory.
#M d smart tool how to#
It really did revolutionize the way I work, by making it trivial to make projects much more self-contained, the way I'd always wanted them to be but hadn't been quite sure how to achieve. Projects I'm on also tend to wind up with an etc/ directory that configures things like PATH and tab completions for a good baseline experience - think of it as standardizing and isolating the snippets many projects tell you to put in your ~/.bashrc to work on the project.ĭirenv makes it easy to automatically load those, too. Ditto for, say, putting a Python project's virtualenv/bin folder on PATH or a NodeJS project's node_modules/.bin. With direnv that dir can automatically be first in your PATH when you're in the project, but not on it at all when you're elsewhere. Projects I work on wind up with a bin/ directory containing any number of little helper scripts and tools. This example was just a quick one-liner, it's very simple: You just write it for your current needs. That's the point, you don't need to remember anything, it would come naturally after a day of tinkering with PS/pwsh.