Folks are gonna need to stop with the "grandma on the computer" to mean uneducated users tropes soon.

I was writing and debugging code to a cassette tape drive before a lot of folks who say this nonsense were even born. I have built my own computers from the case up. My first computer class in college was COBOL. I hard coded websites before there were any tools to do it with.

I'm 52.

What I find is that most of the yunguns have no fucking idea how they work and couldn't find a command line if their life depended on it.

So, yanow, maybe stop.

@TheJen I wish id grown up in that era and done all that!! Modern coding doesn't interest me at all.. And its not worth learning old languages. Especially when anyone can ask a slop bot to spit out code for them. Kind of killed my want to learn any programming.
@bridgeenjoyer It was a whole new world. Incredibly exciting. So much fun. Now, not so much.
@TheJen yeahh bummer. The only exciting thing in tech now is emulation, maybe some vr.
@bridgeenjoyer I find tinkering with single-board computers or microcontrollers is still fun. You get to dabble with hardware a bit and do some low-level programming.
@dfs_comedy for sure, thats why ive always been into old consoles !! They are fun to mess with. And crts

@bridgeenjoyer @dfs_comedy Or build yourself an RC2014 and get the full 1980 experience. It's modular solder-it-yourself hardware (maybe not a beginner project but it's mostly thru-hole components) and runs CP/M on an actual Z80. I don't have a ton of nostalgia for CP/M (getting Linux in 1994 was a godsend - so many good tools) but it's a great exercise in working with small machines and learning the limitations (and benefits) of PCs in the pre-DOS era.

So the way CP/M seems like an operating system instead of a normal program is that it gets loaded in at the top of memory with the rest of memory filled with no-op instructions. On boot, the hardware sets the program counter at the bottom of memory, and all those no-ops are executed before CP/M runs. You put your program below CP/M in memory so when it terminates, the program counter runs through all the remaining no-ops until it hits CP/M - no need to keep track of CP/M's location in memory and know where to jump back to when your program terminates. It's a clever hack that makes the system feel more interactive than it really is. Learning this low-level stuff takes some of the mystery out of the machine without losing its magic.