HackerTrans
TopNewTrendsCommentsPastAskShowJobs

cytzol

no profile record

comments

cytzol
·vor 5 Jahren·discuss
> Are there any linux distros for any platform that aren't shipping terminfo?

Ah, I was referring to higher-level languages such as Ruby here (I have a lot of scripts where I use it a shell script replacement) rather than C, where you can just download a compiled version and use it without any fuss. Ruby moved its curses interface out of the standard library a long time ago, so now you have to add it to your gems list.

> If you're pretty printing text for a human to read then I don't think the couple extra ms it will take to spawn a handful of tput processes is going to be an actual performance concern.

For scripts, I agree — I used to use tput, and only stopped because I'd eventually seen the ANSI escape codes enough time to just memorise them. But I find that if your program needs to use enough colours (my software has been called "overly colourful" before), the time it takes to run a tput once for every bold and normal variant of all eight colours quickly makes it seem like your program is running on the JVM, even if I cache the output. I appreciate that not all software needs every terminal style available to it, but it seems to me that the best interface should be able to scale to many styles, not just a few.

> I was going to refute the any language comment with libraries based on terminfo, but all the ones I ran across in 30 seconds just hard code the ANSI escape sequences.

This doesn't surprise me! I used to be concerned with the growing number of comments and guides on the internet that say things like "this is how you do bold in a terminal" as though it applies to all terminals, so I asked a question on Stack Exchange a while ago:

https://unix.stackexchange.com/questions/548158/in-2019-is-i...

I was hoping to find an answer from someone like yourself, who regularly works with non-ANSI terminals and was becoming increasingly annoyed at the proliferation of standards-shirking shell scripts... but I only got comments saying I was doing it wrong, as though I was the only one who didn't get the memo. You're the only obscure terminal user I've ever talked to in the wild, congratulations.

Anyway, I agree that we're stuck in this situation, and even though I am taking the easy way out, I still find that a shame.
cytzol
·vor 5 Jahren·discuss
> And it's not like it's difficult to avoid hard coding

There are upsides to hard-coding the escape sequences that you aren't mentioning. Using terminfo or ncurses requires an extra dependency with a clunky interface. Using tput requires spawning a process, which gets slow if you have to do it repeatedly. But simply hard-coding the escape sequences is dependency-free, as fast as printing, can be done in any language, and is going to work for at least 99.9% of the users out there.

I'm usually a big fan of "use a standard interface rather than one particular implementation", but I haven't found a solution, other than hard-coding the ANSI escape code set, that I'm happy with.
cytzol
·vor 6 Jahren·discuss
> Sometimes I think it's fascinating the rabbit holes we'll go down, when ultimately, the user just doesn't care.

All those things you mention don't affect the user's first experience on your site, you're right: you can use plain JS, ignore clean code practices, have no unit tests, and use the frameworks you're most familiar with even though they don't quite fit, and still start a successful service.

However, they all come into play when you start to evolve your website or service. TypeScript makes it easier to refactor your code when it gets complicated. async/await lets you serve more users. Clean code practices lets you onboard more developers easier. Unit tests and end-to-end tests mean you can iterate more quickly without worrying about breaking existing functionality — something users definitely do care about — which makes it something you should care about too, if you want to keep them around.
cytzol
·vor 12 Jahren·discuss
GNU's stance on man pages is entirely correct! For real documentation, read the info page, but you rarely want real documentation, you just want a quick example or the command-line invocation syntax, or what a particular argument does. And 99% of the time, that will be in a man page.

The problem lies when you want to find something 1% of the time, and it's here that man pages become sprawling unindexed messes. For example, take a look at the man pages for perl or zsh: you'll have no chance finding anything, as those programs are so large that they need a wealth of documentation to go into them. At the same time, the info page for ls contains the things you rarely need to see such as exactly how things are sorted or the minute details of timestamp formatting. If this were all in the man page, you'd complain that you couldn't find anything in it.