Linus Åkesson writes about programming, Unix internals, music and retro hardware, including The TTY Demystified and Kernighan's Lever.
Commenters recommend The TTY Demystified as a long but necessary read, and call Kernighan's Lever the best breakdown of that quote.
> One Dark Pro Darker
Oh, nice. Will be testing out this one.
> [...] I just randomly pick on ones in a while
Oh, interesting. Do you find that it takes a period of time after switching before your eyes become accustomed to the change (from a quick-code-readability perspective)?
> Some themes work better with one language than the other.
Yeah, this is the most annoying part for me.
---
I remember reading a post a long time ago praising the benefits of not using syntax highlighting while coding (I'm not sure, but it may have been this one: https://www.linusakesson.net/programming/syntaxhighlighting/). Not sure if I could ever get used to not having syntax highlighting, but so much of what I like/dislike about themes revolves around syntax highlighting... perhaps it's worth testing for a period of time with syntax highlighting disabling (I assume this is even possible?).
For anybody wondering "why couldn't they just...", there is a lot of complexity in TTYs and PTYs. The kernel is even involved in line discipline and job control. Those Ctrl+Z or Ctrl+C keys you press? The kernel gets involved.
It may seem strange that there's a process signal for window-size changes, but that's what was needed back in 1985. There's a similar dance with the Amiga's console.device, but both Unix and Amiga TTYs are better than Windows' terminals where there was no such thing as a PTY until Windows 10, you had to make direct API calls, and even now it's still pretty slow: https://devblogs.microsoft.com/commandline/windows-command-line-introducing-the-windows-pseudo-console-conpty/
This page is a great overview pf the Unix TTY/PTY subsystem: https://www.linusakesson.net/programming/tty/
Another worthy mention in this space is Linus Åkesson's dialog language[1]. From its description:
Dialog is a domain-specific language for creating works of interactive fiction. It is heavily inspired by Inform 7 (Graham Nelson et al. 2006) and Prolog (Alain Colmerauer et al. 1972). An optimizing compiler, dialogc, translates high-level Dialog code into Z-code, a platform-independent runtime format originally created by Infocom in 1979. Development seems dormant at the moment, but it feels more like Inform 7 'done right' to me. If my brain was a little bigger and calmer I'd be all over it. It has excellent documentation too. Very portable -- I compiled it locally under Termux on my phone with nothing but Clang.
[1] https://www.linusakesson.net/dialog/index.php
You might be interested in lft's talk[1] - "Poems For Bugs" - about why people are still writing very impressive demos for the C64 and other highly limited platforms. Instead of thinking about programming as functions and objects that divide the problem into simple mostly-independent modules. It's more like trying to write a highly-constrained poem of asm instructions that fit together in incredibly clever ways[2].
[1] https://www.linusakesson.net/programming/poems-for-bugs/index.php
[2] e.g. https://www.linusakesson.net/scene/a-mind-is-born/index.php
edit:
I love the Zachtronics games "Shenzhen I/O" (easier) and "TIS-100" (MUCH harder/esoteric). They are a great (and fun) way to try asm/microcontroller programming.
There's an amazing demo called 'A Mind Is Born':
https://www.youtube.com/watch?v=sWblpsLZ-O8
Amazing principally because the whole thing is 256 bytes:
https://linusakesson.net/scene/a-mind-is-born/
I never meet anyone who has even heard of the demoscene, let alone come seen this particular work.
I was at a film festival watching a programme of short films, one of which was the well-made AI-box escape romp 'Watch Room':
https://www.youtube.com/watch?v=th5uJNB7VU8
And similarly found my interface with my seat disrupted by the closing credits using the music from 'A Mind Is Born'. This being a festival, the director was there, so i could tell him how much i appreciated the reference!
This is great! I’ve been remotely logging into systems for all of my adult life and last week I went on a bit of a bender because I realized didn’t really grasp how these things actually work.
I am not sure I do now (specifically how SSH ties in to this).
But at least I now know more about terminals, shells, rawmode and ptms/ptx and more.
This link right here fits right in with the following ones:
[0] https://biriukov.dev/docs/fd-pipe-session-terminal/4-terminals-and-pseudoterminals/
[1] https://www.sobyte.net/post/2022-05/tty/
[2] http://www.linusakesson.net/programming/tty/index.php