241 karma · joined February 7, 2014
This is a security threat, especially with SETUID programs. If you could change the library, you could install new code and gain privileged access.
This was why /usr/sbin was created - all of the programs there were compiled with static libraries.
I worked at an R&D center where we had hundreds of UNIX systems orf all types(i.e. Sun, Ultrix, HP, Symbolics, etc.) We also had Sun 2's , 3's and 4's - each with different CPU's/architectures and incompatible binaries. Some Suns had no disks at all. And with hundreds of systems, we literally had a hundred different servers across the entire site.
I would compile a program for a Sun 3, and needed a way to install the program once, for use on hundreds of computers. Also teams of people on dozens of different computers needed to share files with each other.
This was before SSH. We had to use NFS.
It was fairly seamless and .... interesting.
So if the meat is at the target temperature - slice it right away. If the temperature is below the target temp, and the meat is thick, wait until the target temperature is reached, then slice it.
The trick is knowing how thick the meat is, how much the temperature will continue to rise after removal, and therefore when to remove the meat.
SpinRite - last time I used it, was painfully slow - like days or even weeks to run. He's been working on a faster SpinRite 6.1 for at least 10 years now. FWIW, here's the current (2021) roadmap - https://www.grc.com/miscfiles/GRC-Development-Roadmap.pdf
So you had to slowly bootstrap yourself in technology. Once you were able to read and post news, you next needed to send email to people. And that meant you had to master UUCP mail. Unlike domains, it was a route. You had to specify each step in the relay. So you might need to specify 5 or 6 specific systems by name to reach the desired person. And hope they could find a route back to you.
Most of all - the great part of the early days was respect, and the ration of information to noise. Inaccurate information didn't remain unchallenged. If you asked a question, it was very likely the author of the technology or program would answer you. Often others would pipe in answering simple questions, so that the program creator wouldn't have to be distracted from important work.
It was a humbling experience, especially when you said something that was factually inaccurate, or technically naive. One learned to think and research before responding to anything.
Until the freshmen classes came to college in September......
Normally there was a very formal process to creating newsgroups, but the alt.* distribution was uncontrolled, and a system that had a well regulated and automated process for the creation of newsgroups evolved into newsgroup creation/deletion wars.
And then we had the first spam. And then we had trolls. And anti-spam filters cause anti-anti-spam generators to be created. And then the web was implemented.
Others would use tramp mode, and open multiple remote sessions within a single emacs. This makes it easy to cut and paste between systems.
At this time, the best "full screen" editor we could find was actually a very expensive CRT terminal that did all of the editing in the terminal's memory. It required an operating system and a disk. The program read 1K of data into terminal memory, and using keys built into the terminal, you could move the cursor around and cut and paste. When done, it write the memory into a file, and read the next 1K of data.
The computer it was attached to had an editor like TECO (DEC), NSPEED (Data General), or EX (AT&T Unix). These were editors designed to be used on dumb terminals or even hard copy terminals (Like a TeleType ASR33, Silent 700, or DECWriter).
A full screen editor would need an operating system with support for files (Floppy or the outrageously expensive hard disk), and enough memory to support a program on top of the operating system, on top of the program you are editing.
You could type "stty 9600 /dev/tty4"; cat file >/dev/tty4" and it wouldn't work because when stty exited, the system would reset the terminal baud rate.
The proper way to do this (assuming you weren't the sysadmin and couldn't modify the default per-terminal baud rate), was to type the following
(stty 9600; cat file)>/dev/tty4
https://en.wikipedia.org/wiki/Fallacies_of_distributed_compu...
I also run a mailing list server.
So my email is usually sent from a gmail.com address, and I usually receive email on my own domain.
Some lessons - sending email from your own domain is difficult as you have to not only make it accepting to spammer-averse sites. You also have to protect it from sites that would LOVE to relay email through your server.
As for receiving and reading email on your own domain - you have to provide your own spam filters - and this is VERY DIFFICULT. 320 billion spam emails are sent every day, and 94% of malware is delivered in those emails. That's one reason I use gmail as the way I read email.
It has two buttons built-in and support for LiPo batteries. It might be possible to make this a teeny-tiny handheld device.
"I'd like to write software for you, but I have to wait 20 years before there's a suitable language to be invented first."
Agreed. C is an old language, but at the time it was a very good language. One can argue the choice nowadays, but comparing it to PL/1?
A quick search on Linkedin:
* 117 Jobs for PL/1 programmers * 300,000+ jobs for C programmers
If you worked at a company and wanted a team of people to develop on a multi-user system, and port it to a single-user stand-alone system, you were out of luck. Our company sold test equipment based on the Data General minicomputers, and while DG had multi-user systems and single-user systems, they had no common programing language besides FORTRAN. It was so frustrating.
And then Digital came to us and wanted to buy a lot of systems, but it had to be running on a PDP-11. Trouble is, our test system was written in Data General assembly language. We had to re-write the system in a portable high-level language that could run on RSX-11 OS. But how?
We searched for a suitable programming language we could buy support for, and ended up using PASCAL - which was a P-code interpreter. The P-Code was portable across operating systems. So I "ported" an assembly-based system to Pascal, and was able to have equivalent runtime performance, because the DEC system had RAM-based overlays and the DG had disk-based overlays. Otherwise, performance of Pascal over ASM would have made it unfeasible.
A few years later, C was commercially available. Oh I wish it was a choice that was available then. The rule of thumb was that C would run with 90% of the performance of assembly language. And that was before they made incredible strides in compiler technology. PL/1 would have been a disaster, assuming it could run at all on a 16-bit machine.
Alas - this was extra work on the developer, and at the time there were a zillion variations, which a developer had to deal with.