There's one thing I want to point out with nanoblogger. Yes, it's an evil fucking bash script. But here's the thing. The developer abandoned it in 2011. Nine years ago. Today, I pulled down the final release candidate, unpacked it on disk, and the fucker worked flawlessly out of the box.

It really is possible, folks, to write software that will still work at longer time frames than a month, to design for the future. It sometimes requires less-than-awesome tradeoffs but it is possible.


If you stick to the POSIX space you can write a lot of software that's durable and portable.

It might also be awful for other reasons, but it's likely to stay as awful as it ever was, rather than actively getting worse as your dependencies mutate and rot around you.


In practice, sticking to POSIX is really hard in the modern day. In particular, there's really no POSIX happy way to parse JSON (yes, you can do it in pure awk, but bleah). So mostly my portable environments depend on `jq`, which is used mostly to parse JSON and turn it into something I can munge with awk.

The other thing POSIX doesn't have is the latest in regular expressions, so I usually want the GNU egrep from binutils - that's generally easy to install.

@sungo @ed_packet But, if jq is written to conform with POSIX APIs, which I suspect it is, then it still qualifies that you're using a POSIX environment. Yes, you have introduced a dependency, but it's built to work in, feel like, and interoperate with other POSIX commands.

@ed_packet We're going to regret talking about this on main, aren't we?

@ed_packet @sungo Pedantic side note, since POSIX is being talked: GNU grep is its own package and not part of binutils, and POSIX 2008 mandates that ‘grep -E’ support EREs (but does not mandate supporting invocation as ‘egrep’, considering it “historical”). 📕

Of course if you want PCRE or something that's a different story!

@emv It also means you can't have a GUI, you have to write your own parsers for files, etc. What you really need to be is mindful of the dependencies you make. If a library changes an API consistently avoid that library. If the library has no update for a long time determine whether it is because it is complete and doesn't need changes or if it is simply unmaintained.
Sign in to participate in the conversation
Ann Arbor, Ypsilanti & Friends Community

👋 is a friendly social network for people living, working, studying around Ann Arbor — including Ypsilanti and elsewhere. And our friends.