1. Is X true?
2. If X is true, does that mean that Y is also true?
People sometimes, but not always, follow suit and number their replies.
34,207 karma · joined March 2, 2008
http://www.scott-a-s.com
1. Is X true?
2. If X is true, does that mean that Y is also true?
People sometimes, but not always, follow suit and number their replies.
> Otherwise please use the original title, unless it is misleading or linkbait; don't editorialize.
The short answer is consistent semantics. We have a large data warehouse, and several different engines that query that data warehouse. We want, as much as possible, consistent semantics across all of our engines for our users. That is, as much as possible, we want the same query to produce the same results on different surfaces. The value of that is so that users can draft a query on one surface, and use that same query elsewhere with confidence that they will get the same results. If we can consolidate on the same execution engine inside of our query engines, we can achieve that.
Minor quibble on terminology: "Velox knows how to retrieve data from your database". I would instead say that Velox knows how to retrieve data from your storage. Velox is deeply integrated into the query engine, and the combination of the query engine and the storage is "the database." In large data warehouses, we've already separated storage from compute to achieve scalability.
If this is all too abstract, think of this way: your query engine (such as Presto) is like a full computer system, while Velox is like the processor. Processors, by themselves, are not useful. They need to be attached to a motherboard which has RAM and connections to hard drives, GPUs and other external devices. Your query engine is like the computer system that contains that motherboard and all the components connected to it. There's enormous value in having multiple computer systems with different capabilities, but using the same kind of processor: you get consistent behavior when the capabilities are the same. Velox is that processor, ready to be plugged into different query engines.
My fiancee is a high school guidance counselor, and she essentially did a demo session with some current students during her interview.
I don't like the situation we are in, but I think your examples actually help illustrate why things are the way they are: we don't have a gating mechanism into our field. Most of your other examples do.
What caught my attention is not the physical stuff, but what starts on page 18 of the pdf: General Interference with Organizations and Production. It's recommendations for how to sabotage group work. I found the guidance sobering, as I have seen all behaviors at some point in my career. (I don't suspect sabotage, but rather incompetence.)
Slides from the conference talk: https://www.scott-a-s.com/files/vldb2019_fiba_slides.pdf
I tried the first whimsical, benign thing I could think of: "indiana jones eating spaghetti." The results are clearly recognizable as that. But they are also a kaleidoscope of body horror; a Indiana Jones monster melted into Cthulu forms inhaling plates that are slightly not spaghetti.
Basically, the point of no-unused-imports is to reduce compilation time at scale. In the C++ ecosystem, there are lots of redundant and unused #includes. This means that a lot of the bytes sent to the C++ compiler are just thrown away. If you can guarantee that the compiler will never need to look at a source file it does not need to, you can cut down on the compilation time. For small projects, this doesn't matter much. For large projects, it does. Go was designed for large projects.
Processes communicating on different systems had actual parallelism, because they each had their own network device. Processes communicating on the same system were essentially serialized, because they were competing with each other for the same pseudo-device. At the time, Linux kernel developers basically said "Yeah, don't do that" when people brought up the performance problem.