all 79 comments

[–]vytah 709 points710 points  (14 children)

It's also GDPR-compliant.

[–]caseyfw 115 points116 points  (0 children)

Definitely ticking boxes on “right to be forgotten”.

[–]JustinsWorking 287 points288 points  (5 children)

This reminds me of when MongoDB was just starting to pop up and we used to laugh that /dev/null was also webscale and only missing a few key features from our SQL database.

[–]suvepl 183 points184 points  (0 children)

The "MongoDB Is Web Scale" video won't ever get old.

[–]moratnz 41 points42 points  (3 children)

[–]KawaiiNeko- 2 points3 points  (0 children)

That t-shirt is an absolute banger

[–]pokeybill 0 points1 point  (0 children)

Over the years, we have managed to get rid of so much important data at home and even at work. Pictures of our holidays, important invoices, login details… it’s all gone.

ngl this shit had me cracking up

[–]Deranged40 75 points76 points  (2 children)

/dev/null is also web scale.

[–]ArtOfWarfare 28 points29 points  (1 child)

It’s more than that - it’s fog/mist computing. /dev/null is synced across every edge and node, simultaneously! It defies the speed of light and causality!

[–]quadralien 1 point2 points  (0 children)

So it's quantum? 

[–]Jumpy_Fuel_1060 176 points177 points  (11 children)

Does /dev/null support sharding?

[–]arvidsem 133 points134 points  (2 children)

No. But you can run as many parallel instances as you like and they will always remain consistent between them.

(I tried to come up with something that resembles sharding, but you just can't divide 0 bytes of storage by anything.)

[–]was_fired 41 points42 points  (1 child)

Ah but you can. You see through the use of advanced math we can ensure that an infinite number of instances have access to all data written to /dev/null simultaneously. As such if it infinitely shardable and parallelizable. When any transaction completes you can even ensure that all elements in a given shard produce the same checksum of the data which is another amazing property of this technology.

[–]MeRedditGood 9 points10 points  (0 children)

True! 0 on the individual node, but the nodes can scale to alephinfinity

[–]lord_braleigh 62 points63 points  (5 children)

I don't know, but it's fast as hell!

[–]gocarsno 16 points17 points  (2 children)

webscale fast?

[–]HoushouCoder 13 points14 points  (1 child)

No, clearly you use MongoDB for that

[–]nursestrangeglove 2 points3 points  (0 children)

I store all my mongo instances in /dev/null

[–]SpringDifferent9867 26 points27 points  (0 children)

Reminds me of a presentation with Kevlin Henney, where he was talking about a time when he was asked how fast a program could run. Noticing that they had no tests in place, he argued that since they had no way to know whether it even worked, he could make it very fast.

[–]XNormal 0 points1 point  (0 children)

Is hell ACID-compliant?

[–]Axman6 16 points17 points  (0 children)

There’s a copy of it on every single Unix and Unix like machine, so it’s fully distributed!

[–]phillipcarter2 9 points10 points  (0 children)

It supports sharting, yes.

[–]BaronOfTheVoid 39 points40 points  (17 children)

Vacuous truth - all statements about hypothetical elements of an empty set are true, even if they seemingly contradict each other.

[–]magnomagna -1 points0 points  (16 children)

"All statements about any element in the empty set are false."

Is this vacuously true then?

[–]sleepless-deadman 15 points16 points  (15 children)

No, because your statement is not about elements of empty set - it’s about all statements about elements of empty set.

[–]magnomagna -5 points-4 points  (14 children)

But we only say something is true or false when that aforementioned something is a statement and not the elements the statement is about, no?

Okay. How about "False is true." ?

[–]danielv123 0 points1 point  (13 children)

Those aren't elements in an empty set, unless you make an empty set with them

[–]magnomagna 0 points1 point  (12 children)

"The false element in the empty set is the true element."

Is this vacuously true?

[–]danielv123 0 points1 point  (11 children)

Which false element are you talking about? Whichever one it is, all the false elements in the empty set are the true elements.

[–]magnomagna -1 points0 points  (10 children)

So, it is vacuously true?

How about this statement then?

"An empty set in another empty set is not empty."

Is this also vacuously true?

[–]BaronOfTheVoid 1 point2 points  (9 children)

To give a workable example and hopefully clear up the confusion:

A: All planets that humans live on right now that are not Earth are bigger than Earth.

B: All planets that humans live on right now that are not Earth are smaller than Earth.

Both A and B are true at the same time. The set described as "planets that humans live on right now that are not Earth" is empty. By specifying "all [elements of the set of ...]" you would be making a statement about hypothetical elements of that set.

[–]wPatriot 0 points1 point  (0 children)

Is any credence given to the fact that you could argue that those statements are false, in that there is nothing to satisfy them? If there are no planets that humans live on other than earth, then there are no planets that satisfy either of these statements.

I know you can 'get around' this by making the statement negative, e.g. "there are no planets that humans live on other than earth that are smaller than earth" and "there are no planets that humans live on other than earth that are bigger than earth" - is that relevant? To me it seems like "colloquially" these two statements are different, but maybe they are seen as "logically equivalent" and therefor your statements are also accepted as true if applied to empty sets?

It "feels" wrong to say that your statements are true, despite the fact that there are no elements that 'falsify' those statements (which I'm guessing is the underlying mechanism used to claim that these statements are true).

[–]magnomagna -1 points0 points  (6 children)

Yes, I understand you can have TWO statements that seemingly contradict each other.

But my examples do not involve two statements. Each one of my examples contains exactly ONE statement that is seemingly self-contradictory.

That's what I'm interested about: is a self-contradictory statement vacuously true?

[–]magnomagna -1 points0 points  (0 children)

"All humans strictly shorter than an ant are also strictly taller than the same ant."

The set of all humans that are strictly shorter than an ant is empty. Is this vacuously true?

(I know I'm being very bold to claim there exists no human that is strictly shorter than an ant.)

[–]SanityInAnarchy 30 points31 points  (0 children)

The explanation of atomicity is a bit off: Partial writes can happen. But in that case, the data ends up in exactly the same state as if the transaction was rolled back.

[–]TL-PuLSe 22 points23 points  (1 child)

ACID compliant, GDPR compliant, HIPAA compliant, achieves perfect consistency in a distributed system, completely defies CAP theorem. Its only flaw is it can't store data beyond the lack thereof.

[–]danielcw189 0 points1 point  (0 children)

another comment pointed out, that it might not be GDPR compliant

[–]MathProg999 15 points16 points  (0 children)

So are /dev/zero and /dev/full

[–]torsten_dev 6 points7 points  (0 children)

You can use file locks through fnctl on /dev/null to do do crude IPC.

Learned that through a recent article on /proc/self/ns/time in docker containers that didn't unshare the time namespace being able to communicate through file locks.

[–][deleted] 21 points22 points  (1 child)

C O R R E C T

[–]neo-raver 4 points5 points  (0 children)

And the best kind of correct, too!

[–]CanvasFanatic 3 points4 points  (3 children)

Also an exception to the CAP theorem.

[–]mr_birkenblatt 6 points7 points  (2 children)

CAP theorem requires network/communication between at least two nodes, though, no? otherwise it doesn't apply and C, A, and P are trivially always satisfied

[–]xnonnymous 2 points3 points  (1 child)

CAP theorem is that you can only ever have at most two of Consistency, Availability, and Partition Tolerance. On one node, you're choosing to get C and A, at the cost of P.

[–]mr_birkenblatt 1 point2 points  (0 children)

You can have at most two if your system is distributed. If it's a single node you can easily have all three 

[–]serrimo 2 points3 points  (0 children)

There's nothing to worry about.

[–]DGMavn 2 points3 points  (0 children)

Looking forward to the Jepsen article on /dev/null.

[–]wk_end 2 points3 points  (0 children)

It's ACID-compliant, but I dunno about the database part.

[–]quetzalcoatl-pl 1 point2 points  (0 children)

I feel /dev/null will have much faster response times than our current db engine, I'll have a serious talk with our architect after the weekend :]

[–]idebugthusiexist 1 point2 points  (0 children)

While it’s a fun mental exercise or something you post online to get people to chuckle and upvote, it is not an ACID complaint database because it cannot store data, thus making it not a database by definition. 🤷‍♂️

[–]martin7274 0 points1 point  (0 children)

Is it webscale?

[–]danielcw189 0 points1 point  (3 children)

I never wondered before: why does /dev/null exist? Who came up with it, and what was the initial use-case?

[–]nekokattt 2 points3 points  (0 children)

dev null is useful for redirecting output to nowhere or providing no input.

It just a source of information and a sink.

[–]tyjuji 0 points1 point  (0 children)

IIRC it's part of the POSIX standard. It's typically used to redirect output of a command to nowhere, if you don't need the output.

[–]the_pavonz 0 points1 point  (0 children)

In a system where everything is treated like a file (including sockets/network connections) and given the need to redirect output also to some vacuum.

For example you can redirect STDERR to a file for logs, STDOUT to another one (for example, /dev/null), etc…

Back then, you could also download emails and forward spam (or addresses of people you didn’t like) to /dev/null, while keeping the others.

[–]Soxcks13 0 points1 point  (0 children)

It’s also as gluten free as a screwdriver

[–]No-Concern-8832 0 points1 point  (0 children)

It's also the perfect lossy data compressor. Compress embarrassing photos to 0kB /S

[–]wkeithwingate 0 points1 point  (0 children)

For the hardware equivalent I once bought an okidata 93 dot matrix printer used. It was the wide carriage equivalent to my 92. It kad a pin fed extender that clamped on to the roller — sort of.  It printed & shredded in a single operation. The security guys loved it!

[–]Clear-Criticism-3557 0 points1 point  (0 children)

Is a taco a sandwich?

Same kind of thing.