The UNIX Programming Environment (1984)
archive.org
archive.org
I miss being on a system and typing "who" to see who is on, and starting a chat with them with "talk". Or sending mail to other users just on that system. Using "finger" to read updates in their .plan files.
Many of the "social" aspects of the internet today existed in that multiuser aspect of Unix, in a much more intimate way.
Macs and Linux machines are still multiuser systems, but "users" are pretty much just used to provide separate configuration and permissions scoping for different application services. It would be nice to have someone hop onto a terminal on my Mac once in awhile and say hello.
My primary use is for my relayed gmail, but it's indeed fun to be parked on a box all day with people just like you.
On my debian pc. Probably a firefox bug? Oh, wait.. The second time I tried sdf.org it showed up correctly, so I'm guessing it's a temporary DNS name resolution where it fails on the first attempt.. Doesn't make sense!
https://github.com/cwmccabe/pubnixhist/tree/master/systems
I'm not sure it is entirely that helpful, but it IS a list!
You've just described a BBS. Some are still around, accessible via telnet/SSH.
right, but that misses the point a bit; being connected to others on the system at the time was basically frictionless -- no need to connect somewhere, you were already on the same machine.
saying "hey bob, connect to X bbs" is a bit different; you're not already working there -- it requires user intervention to experience.
We give them cloud shell access and Web UI, that is all.
On the contrary, sysadmins who give root access to cloud VMs are smart, and know that having root access in safe, controlled environments does wonders for developer productivity. Imagine not having root access to your developer laptop! I have friends who’ve worked at such companies, and they all said it was hell.
There is absolutely zero risk or downside of granting root access to single user machines. Zero, zilch, nada.
I wonder if the Google Docs experience has an equivalent to the joy of discovering new systems and connecting to them and discovering new societies. I fondly remember some ephemeral connections made to the odd insomniac grad student or bored admin through those methods.
ls /proc | sed '{grep out usernames}' | sort -u
so it's pretty specific to whatever machine it runs on, as opposed to who's logged into the installation you've run it on.
On another note, on Tenth Edition Unix, when you logged in from a Blit, something would get pipefiled[1] over your tty and wrap writes from new opens in something that puts it to a window-manager window. Possible because of not having name spaces for files.
[1] 'Mounted stream' in http://man.cat-v.org/unix_10th/2/fmount
That chapter named "Program Development" is a masterpiece and a must read by every Software Engineer.
I read it before i knew what Compilers/Language Design involved and it was sort of a revelation in how much you can get done without knowing too much theory but with the intelligent use of appropriate tools, a framework and a guiding hand. Whenever people ask me for resources on Compilers/Language Design i always tell them to first read this chapter a couple of times and grasp it thoroughly and only then move onto other proper textbooks.
A good followup to this chapter is the book Introduction to Compiler Construction with Unix by Axel Schreiner and George Friedman - https://archive.org/details/introduction.to.compiler.constru...
(inodes just strike me as one of those weird little things like SQL, except for much smaller/easier to learn--just something critical, always there, and for some reason, not understood by a lot of sysad/devops types. I forgot the detail until rereading this book recently. I imagine you can expect the details to vary widely on modern filesystems, but ext4 (descending from and backwards compatible with ole ext2) probably has the concept, and BSD's ffs/ufs, and the idea probably gives you some hazy idea of this general area of the world for a lot of filesystems
I also find the treatment of some old topics kind of illuminating, like the stty command when I do obscure stuff like use serial terminals or try to use a text buffer as a tty--interesting that you can still tell the kernel "hey, do this dirty hack for my terminal when handling characters and things. Thanks.")
I've had the other case where `df` says the disk is full with plenty of inodes left, but then `ncdu` says there is plenty of space (supposedly).
Lo' and behold, you have some borked process still holding GBs of log files open that you thought you "deleted" -- really unlinked from a directory.
tl;dr: Don't forget `lsof +L1` to find pesky processes that are holding files open that you unlinked from a directory but have yet to be actually marked as deleted on the filesystem [1]. The space on disk won't be freed until the process closes the files or is terminated. (Technically, the open files are associated with a mount point, not the file system itself, which makes dealing with symbolic links across file systems somewhat confusing.)
[1]: For example, see https://unix.stackexchange.com/a/141639/332116)
To me if you don't know these things, you shouldn't be writing code.
Pity it isn't the same everywhere then.
Literally not possible in 3 years.
When Bologna came around and reduced them to 3, Portuguese universities got around it by offering degree + MSc, so basically business as usual.
Known in English as Licentiate Degree.
https://en.m.wikipedia.org/wiki/Licentiate_(degree)
So, nope not 3 years.
One of the reasons to Bologna was to try to harmonize the fact that countries like Portugal, someone with a degree would be downgraded when applying abroad.
So we are pretty much discussing bachelor degrees.
Few people actually do real "AI".
I am writing an object store that also can manage unstructured data just like a file system. It too has a table of object records that are all the same size. One of the secrets for managing large numbers of files (todays HDDs are big enough that you can create volumes with 100s of millions of files) is to keep this record as small as possible. The FRS in NTFS is 4096 bytes per file. Try storing that table in RAM when you have 200M files! My records are only 64 bytes in size. 16GB of RAM will easily cache the whole table and still give you memory to spare.
Writing a filesystem from scratch is something I would expect from a full 5 years degree entirely dedicated to operating systems, not a generic SWE curriculum
https://www.amazon.com/Unix-Programming-Environment-Prentice...
The edition being sold is 39 years old.
A more precise criterion would be whether a book is still on its publisher's backlist. As far as "The UNIX Programming Environment" is concerned, the answer is positive. Its publisher Prentice Hall was aquired by Simon & Schuster and later sold to Pearson.[1] On Pearson's Web-site the book is still available.[2]
[1] https://de.wikipedia.org/wiki/Prentice_Hall
[2] https://www.pearson.com/en-us/subject-catalog/p/unix-program...
Ohhhh that is why it is called echo!
Had it not been the case, we would probably be using something else instead.
I’ve read the book in one summer when I was in highschool and this sentence was the biggest light bulb moment for me. So simple and eloquent. This was the point where I _get_ what does programming and writing code really means.
I would love similar book but relevsnt for the current systems...
"Unix: A History and a Memoir"
also by Brian Kernighan