
Everything you ever wanted to know about terminals (2018) - n3t
https://xn--rpa.cc/irl/term.html
======
floatingatoll
Previously:

[https://news.ycombinator.com/item?id=21601600](https://news.ycombinator.com/item?id=21601600)

[https://news.ycombinator.com/item?id=18125167](https://news.ycombinator.com/item?id=18125167)

------
ablekh
The lack of attention to (or, rather, the complete disregard of) proper
capitalization is ridiculous. This is the second post I'm seeing in two days
that feature this "style". Quite a disturbing trend, if you ask me.

~~~
brian_cloutier
What is ridiculous and disturbing about using lowercase letters at the
beginning of your sentences? In a world where this trend continues your eye
will become used to it and it will no longer be a distracting shock from what
your eye is used to.

~~~
ablekh
If this is your argument supporting this trend, then I'm speechless ...

~~~
boneitis
If the author otherwise (that is, first word capitalization issue aside)
writes grammatically better than >99% of other internet writers, I submit that
you can grant them this one shred of self-expressive style. Goes pretty well
with the terminal user theme, to boot.

It's pretty clear she pays mind to grammar and cares about its proper usage
more than most.

~~~
ablekh
I did not say anything about grammar or even punctuation (in general). I have
voiced a specific concern of a complete disregard of a proper capitalization.
If you call it a "self-expressive style", well, it is your opinion and, of
course, you are as entitled to one as everyone else. However, I highly doubt
that most people would agree with your characterization of this as a "style".
I welcome diversity of self-expression, but I would expect it to be in the
form of writing itself (content and/or writing style) and/or visual aids
(images), but not in ignoring expected traditional punctuation. BTW, the issue
here includes lack of capitalization not only for the first word in a
sentence, but also for the pronoun "I".

~~~
boneitis
Well, I find it to pretty obviously be a self-expressive style, given the rest
of its "form of writing itself (content and/or writing style) and/or visual
aids (images)."

I could be wrong. Oh, well.

You might not have brought them up, but I largely (if not only ever) make the
criticism regarding capitalization within contexts concerning
grammar/punctuation or conveyance. And, given everything else in the article,
I think it conveys pretty all right :)

~~~
ablekh
This issue is not about _conveyance_ , but rather about _readability_. As
simple as that. So, let's agree to disagree. :-)

~~~
boneitis
I'm of the opinion that there is much overlap between them. If I can have that
(the opinion that is, not the concession on your part), then I accept.

~~~
ablekh
I think that you and I are talking about different "readabilities". Yours
implies a capability to effectively convey conceptual meaning, whereas mine
(in this context) implies UX-focused - that is, purely visual - readability of
the text at hand. I hope that this clarifies the source of our presumably
different opinions.

~~~
boneitis
I had considered both, as I think they considerably overlap (e: in this case,
at least). In fact, if you want to want to completely isolate the two, I had
mainly considered the UX-focused and visual aspect.

Contending over the ultimate conveyance of meaning in and of itself would have
had me arguing for what we both already agree on.

Come onnnnn. It's not _that_ bad with the grammar/punctuation, capitalization
of acronyms and proper nouns, backtick highlights, and codeblocks.

~~~
ablekh
If you are OK with a text being not _that_ bad, hmm ... it is your choice.
Readability is an extremely important UX concept, not to mention the
accessibility in this case. For the current version of the text, people with
less than great eyesight have to rely only on the (tiny) trailing dot to
visually distinguish between sentences. Having proper capitalization within
the context would enormously improve the text's accessibility.

As for _" grammar/punctuation, capitalization of acronyms and proper nouns,
backtick highlights, and codeblocks"_, well ... if the text would lack that,
it would have been a completely unreadable wall of text.

~~~
boneitis
I'm speaking of the readability being not that bad.

Accessibility arguments you're pushing here and elsewhere should have been
brought up much earlier. I'm responding mainly to the "ridiculous!" outburst.
(e: OK, no exclamation, and a more charitable reading will have me withdraw
"outburst.")

> if the text would lack that, it would have been a completely unreadable wall
> of text.

Yet, in its form, it is more readable and coherent than most of what gets
pushed out these days, even with proper capitalization. If anything, _that_ is
ridiculous.

With this shifting, I would like to take my leave. Be well, and good night.

------
ximm
I recently rewrote my fork of cplay and got fed up with curses. Boy do I wish
I had found this article earlier because it describes everything I painfully
had to cobble together. This is great!

Just one nit: Doing stuff in a signal handler is usually a bad idea because it
can interrupt your code at any time. The usual work around is a trick called
"self-pipe". [https://ldpreload.com/blog/signalfd-is-
useless](https://ldpreload.com/blog/signalfd-is-useless)

For anyone interested, I created a library in the process:
[https://github.com/xi/boon](https://github.com/xi/boon) (It takes some
inspiration from react but bare with me, I think it actually makes sense.)

------
titzer
Oh man, they left out the part I was hoping to find out more about!

> it's good form to have a function called resize() or similar that you run on
> program start and later when the terminal window is resized. while there is
> a horrible way to do this with ANSI escapes, it's better to just bite the
> bullet and learn how to use ioctls and termios.

I wanted to know about the horrible ANSI escape sequences to send that can
query the window size. Afaict one has to read from the terminal to get the
answer--but these are control sequences that could be inserted into the normal
stream--when, where, how?

~~~
pherrephatta
You can look at the programmer's guide for the VT100[1], which does a good job
of explaining the different ANSI escape codes.

To put it simply, you can move the cursor down and to the right. For example,
you'd move the cursor 999 lines down, then 999 columns to the right, and then
query the cursor's position[2]. You can then read the output through STDOUT
and parse it.

I'd recommend anyone who's interested in playing around with ANSI and learning
how to write a pure terminal-based program to look into the Kilo text
editor[3]. That's where I learnt the above instructions.

[1]
[https://vt100.net/docs/vt100-ug/chapter3.html](https://vt100.net/docs/vt100-ug/chapter3.html)

[2]
[https://vt100.net/docs/vt100-ug/chapter3.html#CPR](https://vt100.net/docs/vt100-ug/chapter3.html#CPR)

[3]
[https://viewsourcecode.org/snaptoken/kilo/](https://viewsourcecode.org/snaptoken/kilo/)

------
miguelmota
Can barely read the content with that colorscheme.

------
laksdjfkasljdf
that site has great personal branding. recall seeing other articles from lexi
halle on the feediverse some time ago and immediately recognized it.

great content too.

------
Chris2048
What's this stuff about:

> also, i'm a) a nobody and b) a woman. nothing i wrote would ever gain any
> traction; any project designed to supplant ncurses needs to come from
> someone who's actually known to the FOSS community. and a maintainer who
> isn't a cripple.

Did ncurses gain popularity because of the identity of its maintainer(s)?! I
was of the impression that it's whoever gets there first.

------
theamk
That’s pretty nasty - this article is factually incorrect in probably the
worst way: the code will work on author’s computer, but not for other people
[0]

Not to mention that it is missing “good citizen” features like turning off
colors when stdout is not a tty.

[0]
[https://news.ycombinator.com/item?id=18125374](https://news.ycombinator.com/item?id=18125374)

~~~
inetknght
> _“good citizen” features like turning off colors when stdout is not a tty._

Better solution: do not detect whether your output is a tty or not.

Let the user decide they want colors or not by using `--color=always` or
`--color=never` or similar.

There's few things worse than writing a script and getting different output
just because you're no longer running the program interactively.

~~~
anitil
Gah i got bit by this with 'jq'!

> $ echo "{}" | jq > {} > $ echo "{}" | jq > out.json > jq - commandline JSON
> processor [version 1.5-1-a5b5cbe] ... etc ...

Turns out when stdout isn't a tty you _must_ specify a filter (in this case
'.')

~~~
inetknght
Yup! I had the same problem too. It was 'fixed' in jq 1.6, such that it now
assumes `.` is the filter if no program arguments are provided [0].

It happens all the time with anything systemd or networkmanager too

[0]:
[https://github.com/stedolan/jq/releases/tag/jq-1.6](https://github.com/stedolan/jq/releases/tag/jq-1.6)

------
msla
ncurses is a lot more readable than just dropping raw control codes into your
source code, and it _works_ , whereas raw control codes _might work_ and often
don't.

------
spicybright
Interesting, but I wish it was less emotionally charged.

But very cool using macros to make an easy styling "language"!

------
kohtatsu
I was just reading up an ANSI escape sequences a few days ago, this is gold.

I adore the format and writing style too.

