Sit right back and I'll tell you a tale. Fortune is a parasite glommed over the original intents of the Architecture of what is now known as Fortune.
Originally as the high gods intended the whole mess was nothing but a Rolodex, a box of index cards, etc.
You see, the first line of the '%' delimited records would be a 'LAST FIRST PHONE' and the rest would be for instance 'SMITH, JOE 867-5309' on the rest would be 'wife Mary, 3 kids (Joseph, Adam, Beth), maybe address, etc.'.
The '.dat' portion created by the 'strfile' would take that file and alphabetize it and then keep the 'seek' offsets in the file for each record. This let you have a big (for the time) Rolodex with fast retrieval upon search. Binary tree and all that, plus fast read of whole record because ... binary search, read one line match or not then difference between match and next record would be bytes needed to read (minus 1 for the '%'.
Fortune 'fortune(6)' started life as an address book,The random and multiple files and all that jazz was just a bunch of repurposing that took over and became a life of it's own. Nobody uses the 'first line sort' bit of 'strfile' program. Mostly the original has vanished into the wind, I have no clue what the command line thing was to bring up the Rolodex/Index Card of somebody was.
The 'man' page doesn't do it justice, but nobody really cares, and I like many others have a '~/quotes' file that is automated and hot-key bound to selecting a bit of text and preassing a couple of keys. If you know the https://en.wikipedia.org/wiki/Reservoir_sampling thing, you dont' even need the '.dat' file for the random bit.
Freshman year of high school I took a class called "Business Computer Applications". It was 1983 and I was 13. We were using Apple II+ computers or their clones. I had an Apple II+ since they came out and knew lots of things by then. I "wowed" my teacher with 3 line programs and such. On our classroom floppy I had a file with a control character in it's name, it was a disk editor. Knowing the disk directory layout things (it was a linked list of blocks), I carved out a whole hidden set of directory entries. So each day of class I would load up the disk editor using the invisible control characters, patch back in my hidden blocks, play with my hidden files, then at the end of class I'd load the disk editor up again and hide my files. Teacher never saw what was really on that disk.
Back in middle school, like 1981-ish I had this hardback book with a title of something like "A Shocking Story". The inside was hollowed out to hold about the same but it was rigged to go off when you opened the book. It got confiscated.
Technically, yes for about seven years. We were introduced by a mutual friend because we were both staying on campus over the Christmas holiday. We hooked up on Christmas Eve and dropped some acid and had a fun few days. We were both the oddly precocious types who graduated high school at 16/17. We were both sorta slutty. We just became best of friends for the next few years (we both went our own separate ways romantically, we would eventually even go out and hook up with each others roommates...) We went out and got tattoos together on her 18th birthday. It was a couple of years later that we got married (I like to pontificate that we got married by the justice of the peace in the Blade Runner building. It was justice of the peace and somewhere in an old downtown LA building, no frills). She had her mothers or grandmothers ring or such, mine was a Peace symbol ring from a gumball machine with the Peace symbol torn off.... It turned my finger green unless coated with clear nail polish. About six months later I left university and moved halfway across the country. It was always interesting to eventually tell girlfriends and such that "by the way, technically I'm married". Around seven years later I ran into another mutual friend who told me that she had been looking for me to sign papers and such and couldn't find me. We did meet up again a few years later and nothing came up, she finally settled down and got really married. I assume she got a rubber stamp divorce for abandonment or even non-consummation (almost, but we were both so "too drunk to fuck" on Extacy that we gave up and just went back to the party). She's still a fond memory of a bestest friend for years, we could like read each other's minds, almost too dangerous to be serious.
I married my best friend of several years so she could get financial aid. Her financial aid counselor told her about the lengthy emancipation legal process or marriage. She came over one night with a "I have a huge favor to ask of you" and about a week later we were married.
Back in the late 1980s when I was a teenager I found plans and built this little circuit with a LED that would light up if someone else in the house was trying to listen in on my phone calls. More than one phone off the hook... LED lights up.
The first program I ever keyed in was the one dimensional lunar lander simulation on my dad's HP calculator. Must have been 6 or 7 years old (by 9 years old I was doing BASIC on an Apple ][ with floating point card and programming intersections of two pipes to make cutting templates). Even back then I got to the 'suicide burn' approach. Made playing the arcade game pretty easy years later.
This is why you fail. Thirty years ago I could make a wire wrapped 68000k board that did nothing but play music. CE/CS was different back then. I'd cut pins and solder in chips to twiddle the filters on audio output. You could know the entire process from power on to running of your computer and it was easy to change bits even down to the hardware level like adding a 'no place to put it unless you build it yourself' CPU/MPU/RAM upgrade and make it work. Adjust your NTSC video output, just cut that resistor in lieu of replacing it with something really high resistance, it'll be better. Let's build our own new high speed serial port for MIDI. How about a graphics co-processor that only does Mandlebrot calculations, let's build three of them. Only few of the younger generation comprehend the old ways. And the machines have changed to fewer chips and machines have turned into system on a chip. It's a bit of a shame.
Something like `read` gives a better example. Like `man 1 read` is "read — read from standard input into shell variables", "read [-r] var...", a shell function. And `man 2 read` is " read - read from a file descriptor", "ssize_t read(int fd, void buf, size_t count);". You can also get into `man 8 catman`, "catman - create or update the pre-formatted manual pages", "catman [-d?V] [-M path] [-C file] [section] ...". The `catman` is a mirror-like hierarchy of man pages (usually in troff format using the 'an' macro package) pre-formatted for the standard terminal or whatever to shave off a bit of time running roff on the source files all the time.
This is all ancient knowledge and well in place back in the mid 1980's long before Linux or any of that stuff. The `man` page sections used to be different 3-ring binders all printed out sitting on a table in the computer lab. The 'sections' were just different binders of documentation. Get off my lawn!!!
My pre-internet 16yr old ancient self (late bloomer) who had to read books in libraries and bookstores who lost first girlfriend by not kissing her and second girlfriend pinned me down and started sucking my face off while growing four extra hands... Kudos. There's an art to the kiss and so much more, a worthy field of study for a young gentleman. Next do the non-actual-sex parts of the Kama Sutra and the art of sensual massage. There are more appendages and nerves than one might think of....
I used to mess around with Anki many years ago while studying Japanese. The approach I took was to figure out the database structure, then write a bit of code to expand the information on cards. Just alter the database directly. Mostly for things like adding dictionary words to existing kanji decks. Looks like it would be a nice addition to genanki to be able to read/modify/save existing an existing apkg.
Same, I had my books from 1986 (when I was 16) bought from Caltech's bookstore while I was there at a summer program (YESS, Young Engineer Summer Scholars) that went on for months where I learned 2-3 semesters worth of undergrad physics/calculus. Such a wonderful summer nerd program for the day and age. Best summer camp ever! So many stories. Lost the books in a move in the late 1990's, still a bit sad about it. One of these days I'll add them back to my shelf.
Yeah, my org had a Kerberos setup for some DB/middleware/CLI tools. I inherited a bunch of random script tools that took the whole typing in passwords for everything. Screw that, first thing I did was write a Kerberos module and set up a Kerberos keystore. Presto, no more typing passwords for everything. Typically it ends up boiling down to whether or not the backend thing you're talking to supports Kerberos, many don't and only have the whole SSL thing. A well setup Kerberos was much nicer to work with than chained SSL certs.
I think about half the comments I've ever made here on HN are about my Amiga 1000 that I got in 1985. By 1989 it had a 14MHz 68020/68881 with 4MB Fast RAM, an 80 MB SCSI drive, and a MIDI interface that I built myself from diagrams from a Byte Magazine article. Such an awesome piece of kit. I worked in front of a Sun 3/50 (that's were I got the SCSI disk) and used the Sun compilers to write my Amiga code. Poor person's Sun workstation it was.
I'm talking about AmigaOS. Bits and pieces were based on https://en.wikipedia.org/wiki/TRIPOS and the kernel itself had a lot of UNIXy sort of features. In the late 1980s if your work job is sitting in front of a Sun workstation you bought an Amiga for home instead of a Mac or DOS machine. I would dial my Amiga into work before going to work and remote shell in (rlogin/rsh/rcp) and just shuffle things back an forth without effort. One could do CS homework both on the Amiga and on the SunOS systems just by linking to a different library. I never even had a C compiler on my AMIGA, didn't need one. I can't imagine writing some code on UNIX and that trivially making it run on a Mac or DOS machine. People even build stub UNIX libraries for AmigaOS that faked the user/group/permissions and other bits of the UNIX experience. It was just a pleasant experience for those late 80s compared to the alternatives.
AMIX is a whole different can of worms, they did that much later and I'd expect it was like porting between HP/UX, AIX, BSD etc. Probably pretty easy by then.
Forth is a really nice language for learning raw machine code then adding an assembler then moving up to a HLL in a few printed pages of code. The ultimate macro assembler. Back in 1986 teenage me found this library book that described Forth as "a ball of mud" which later made sense. A small core of machine specific bits form the core, you have to make that by hand. Then you accumulate and write an assembler on top of that. Then there's the I/O and logistics of the system. Then there's the whole interpreter/compiler all the same. It's the ultimate bootstrap. From laying down bytes in memory to a hybrid interpreter/compiler that you can say "take this word and make it a thing" and it can fart out this little polished turd.
Forth is bottom up insted of top down. The concepts teaching/learning wise start at the bottom and lead up to the top. You can't learn that starting with Python or Fortran or C or BASIC, or even Assembler. Bottom up.
Forth might not be the best Pascal/Basic/Python learning some stuff language, but Forth is the best bits in memory to HLL "full-stack" language.
I wish your brother had done it on raw hardware instead of in Java. It is a really nice language for learning.
The OS was close enough and wonderful under the hood. So many UNIX people bought one for home just because it was so easy to port UNIX code. I wrote Amiga apps on a Sun3/50 using Sun's compiler and just transferred the binary over to my machine. The Amiga Pascal software even had a special program included to transfer binaries over serial/parallel from a UNIX box (usually a Sun). You mostly just needed to link to a different crt.o / clib.
Originally as the high gods intended the whole mess was nothing but a Rolodex, a box of index cards, etc.
You see, the first line of the '%' delimited records would be a 'LAST FIRST PHONE' and the rest would be for instance 'SMITH, JOE 867-5309' on the rest would be 'wife Mary, 3 kids (Joseph, Adam, Beth), maybe address, etc.'.
The '.dat' portion created by the 'strfile' would take that file and alphabetize it and then keep the 'seek' offsets in the file for each record. This let you have a big (for the time) Rolodex with fast retrieval upon search. Binary tree and all that, plus fast read of whole record because ... binary search, read one line match or not then difference between match and next record would be bytes needed to read (minus 1 for the '%'.
Fortune 'fortune(6)' started life as an address book,The random and multiple files and all that jazz was just a bunch of repurposing that took over and became a life of it's own. Nobody uses the 'first line sort' bit of 'strfile' program. Mostly the original has vanished into the wind, I have no clue what the command line thing was to bring up the Rolodex/Index Card of somebody was.
The 'man' page doesn't do it justice, but nobody really cares, and I like many others have a '~/quotes' file that is automated and hot-key bound to selecting a bit of text and preassing a couple of keys. If you know the https://en.wikipedia.org/wiki/Reservoir_sampling thing, you dont' even need the '.dat' file for the random bit.