Most people stop at stage 2, stage 3 hits when you decide to write a filesystem, stage 4 when you’ve finished your first filesystem. Stage 5 is when you start working on kernel internals. No one can tell you how to reach stage 6, you must discover it for yourself.
If you can recognize “nothing” then “nothing” must be something right? So if nothing is a file, because /dev/null says so, then nothing MUST be something to be a file. And therefore /dev/null can’t be nothing.
The word “nothing” is the English word describing the concept of nothing. And I have to use the word to describe the concept. So yes, you are correct the word is itself “something”. So that is probably one point for “nothing” to not exist.
I have now consumed 3 cups of tea. And my head now hurts from thinking about nothing. I should never have stepped into this post.
in fact that gets used in abstract mathematics to first introduce the natural numbers. the empty set (nothing) (which you define as 0) is not itself nothing, so you can define the set that contains just the empty set, which now is not empty itself, but contains one element, so you define that as 1 …
Unfortunately, no one can be told what a file is. You have to see it for yourself.
This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the file system goes.
I feel like it’s more of a “If I tried to tell you what this was, you wouldn’t believe me” than a “I am physically incapable of explaining the idea that you’re plugged into a computer”.
Okay, but what are blocks then? A file is really just a bunch of blocked stacked together with the inode metadata also sitting on another block, so is everything just blocks or because you can emulate a block device on a filesystem, are blocks themselves files? If that last part is true then files are infinitely recursive and my head is starting to spin.
You are almost ready to take the next step. But to do so, you must unlearn what you think you know. Write a filesystem that does not have blocks for a media without pages, and you will find the footprints of your next teacher.
Linux is closer than other *nixes (sysctl equivalents in some platforms are not files, but they are files in Linux).
However get very far into network and the file-like behaviors become more limited. From an application, at least you have a decent chance of having unseekable, but otherwise ‘file-like’ interaction with stream protocols. Then you need recvmsg/sendmsg. Then you want to deal with low level interaction with the network stack and dealing with NETLINK and such…
Stages of POSIX enlightenment:
Most people stop at stage 2, stage 3 hits when you decide to write a filesystem, stage 4 when you’ve finished your first filesystem. Stage 5 is when you start working on kernel internals. No one can tell you how to reach stage 6, you must discover it for yourself.
/dev/nullsez nothing is also a fileAsking for a friend.
If you can recognize “nothing” then “nothing” must be something right? So if nothing is a file, because /dev/null says so, then nothing MUST be something to be a file. And therefore /dev/null can’t be nothing.
Or do I just need more tea? Or maybe whisk(e)y?
The word “nothing” isn’t itself nothing. It is something used to describe nothing.
The word “nothing” is the English word describing the concept of nothing. And I have to use the word to describe the concept. So yes, you are correct the word is itself “something”. So that is probably one point for “nothing” to not exist.
I have now consumed 3 cups of tea. And my head now hurts from thinking about nothing. I should never have stepped into this post.
it’s just a sentinel value. You ve reached the end. gimme back the length
The length is a null value.
oh god oh no oh god oh no i am gonna crash
in fact that gets used in abstract mathematics to first introduce the natural numbers. the empty set (nothing) (which you define as 0) is not itself nothing, so you can define the set that contains just the empty set, which now is not empty itself, but contains one element, so you define that as 1 …
A file would be something. No, it was nothing.
Unfortunately, no one can be told what a file is. You have to see it for yourself.
This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the file system goes.
xkcd.com/566/
I feel like it’s more of a “If I tried to tell you what this was, you wouldn’t believe me” than a “I am physically incapable of explaining the idea that you’re plugged into a computer”.
That way lies madness!
You’ll know you’ve reached stage 6 when you seriously start considering running Plan 9 as a daily driver
true enlightenment: everything is a string over an IO socket
But are sockets not files?
files are named sockets 🕉️
“How can files be real if the filesystem isn’t real?” - Jaden Smith (probably)
Am I a file?
Can you read me?
Hope your name isn’t Peter
In the end, we are all files. We have our read()s and write()s, in in our time we play many offsets.
Okay, but what are blocks then? A file is really just a bunch of blocked stacked together with the inode metadata also sitting on another block, so is everything just blocks or because you can emulate a block device on a filesystem, are blocks themselves files? If that last part is true then files are infinitely recursive and my head is starting to spin.
You are almost ready to take the next step. But to do so, you must unlearn what you think you know. Write a filesystem that does not have blocks for a media without pages, and you will find the footprints of your next teacher.
The devnode that is used to reference the block is a file, so you come back to blocks just ‘being offsets into some file’.
Though system calls, ioctls and networking credibly get away from file semantics
Missing stage 7: Not everything is a file.
Linux is closer than other *nixes (sysctl equivalents in some platforms are not files, but they are files in Linux).
However get very far into network and the file-like behaviors become more limited. From an application, at least you have a decent chance of having unseekable, but otherwise ‘file-like’ interaction with stream protocols. Then you need recvmsg/sendmsg. Then you want to deal with low level interaction with the network stack and dealing with NETLINK and such…
That’s where plan9 comes in!
Yes, the “did I stutter?” If everything is a file philosophy.
And the hidden 0th level that you only get after being nearly killed by a falling server rack:
“Files Aren’t Things”
Which looks great on a tshirt, btw :p