151 karma · joined March 28, 2009
This is a good example of why ACID and declarative constraints are a very good idea for data management.You can do a bad delete from query if you don't have the proper safeguards (though querying ability of SQL lets you more easily preview your changes), but the initial corruption of the data is an easily avoidable problem.
Without transactions, correctly writing the software would have been far more difficult, especially in situations where you need to rollback a transaction that is partially completed because of system errors.
“You can know the name of a bird in all the languages of the world, but when you’re finished, you’ll know absolutely nothing whatever about the bird… So let’s look at the bird and see what it’s doing — that’s what counts. I learned very early the difference between knowing the name of something and knowing something.”
R. Feynman - "The pleasure of finding things out" 1981
The key concepts are using sets to store data (making you think about your data in a way where duplication of tuples and orderings don't mean anything), and always using values instead of pointers to store your data and references.
I think that these concepts are very useful when it comes to managing data, but they seem to get lost in the all the talk about "relationships" and "sql" and "structured tables".
However I really do think that inserting an unexpected default value is worse than inserting NULL into a NON-NULL field. The NULLs will cause problems, but they are problems you can see and resolve.
The default values are silent errors that will corrupt your data and be very difficult to recover from in the future. You can only guess which data was wrongly inserted.
Usually when writing a program in F# I usually write out the types of the functions I need first, before worrying about how the functions work. Because the type system is so descriptive I can validate that a plan to solve a problem is going to work before I start writing code.
Because the type system is powerful, when I need to make a change, it is simple to determine where my assumptions are broken and make the correct fixes.
It is very possible that by using AI that looks mostly at numbers for trading is just destabilizing by relying too heavily on specific variables (the ones the algorithms can actually use as inputs) , and reduces efficient allocation of capital.
let double_then_sum a_list =
a_list
|> List.map ((*) 2)
|> List.fold (+) 0Unfortunately this data didn't make any sense to be plotted as a line-graph, a bar-graph, a histogram and a pie chart, as the comparisons didn't make sense for any but the bar-graph. It was if the students were actively being taught how to use graphs incorrectly. Creating pie charts when the entire pie doesn't mean the whole of anything I think was the worst culprit.
That data is used to make a decision, and it's important that developers seek to understand exactly what that decision needs. Your users will often walk their way into a bad solution to their real problem because they will use their (incomplete) understanding of what is available.
http://us.wii.com/iwata_asks/nsmb/vol1_page4.jsp
"But if you avoid the first Goomba and then jump and hit a block above you, a mushroom will spring out and you'll get a shock. But then you'll see that it's going to the right so you'll think: "I'm safe! Something strange appeared but I'm okay!" But of course when it goes against a pipe up ahead, the mushroom will come back! (laughs)" ... "At that point, even if you panic and try to jump out of the way, you'll hit the block above you. Then just at the instant where you accept that you're done for, Mario will suddenly shake and grow bigger!"
It turns out they panned it so you cannot avoid picking up that first mushroom that makes you big. They expected the first players to see it as an enemy, so they wanted to trap you into picking it up and then showing you that it made you more powerful.
Barely anyone notices that this was forced, but now everyone takes it for granted that the the mushrooms are good!
- In 2000 Fannie buys $600 million, and Freddie buys $18.6 billion, and guarantees 7.7 billion more. - 2002-2006 the GSE's buy 38-90 billion a year in subprime mortagages
As far back as 1999 you can find stories stating that Fannie was being pressured into subprime:
http://www.nytimes.com/1999/09/30/business/fannie-mae-eases-...
Their activity appears smaller than the market at large, but it's not non-existant. It doesn't seem on face value that they were not allowed to invest. Is there some rule I am missing?
When you go back to coding in other languages, you approach the same problems in different ways because you were forced to solve them in a strongly typed functional manner.
Are we meant to read the narrator's idea that they can even solve the problems of aging and diseases and voluntary ovulation through science and intelligence as naive or inevitable?
Just because we can imagine a virus or a team of super smart people solving these problems, doesn't mean in reality it actually is possible to do so given limitations of physics and human nature.
I guess it doesn't really matter if RMS meant this story to be a satire of a technocrat's fantasy or a example of how increased intelligence would solve some of our biggest problems but I think how people read the story will depend a lot on their ideas about what is ultimately achievable and what is not through intelligence.
Maybe his numbers are off and his technique is wrong, but this article isn't making a one-sized-fits-all mistake.
It may be possible to correct for this by only including links that are for content that was already "old" at the time of posting?
This gives you more power when your situation isn't ad-hoc attributes (by providing more guarantees) and lets you model the ad-hoc situation with a EAV model if you must. SQL maybe should provide some more sugar for accessing that EAV, but it's not a fundamental relational model issue.
A big part of why the modelling of data that you don't know the shape of in advance in a relational database is hard is because reasoning about data you don't know in advance is hard, and the model exposes that difficulty up front.
(Also, if like has its wildcard at the end of a string not the beginning, indexes can help you as they can look into the sorted trees.)
Ideally a RDBMS should have logical-physical seperation, and be able to support both row and column based stores (or any physical strategy at all) in the same DB. I think the author is just saying that the next stage on this path will have various competing RDBMS physical implementation strategies as they have such big performance impacts.
I don't think that these different storage method DBMS's are the end point, but a way point to RDBMS technology that can mix physical strategies while keeping the logical relational model intact.
So while height taxing a more blunt instrument than income taxing, it doesn't distort people's choices in the same ways and avoids some of the deadweight losses. Unfortunately it probably will end up distorting people's choices in new and creative ways that we'd probably only find out about later.
Web developers on these types of projects cannot either a: buy a "real" SQLDBMS, or b: charge their customers so their business model makes sense without a huge number of transactions. This means they are willing to suffer it out with solutions that don't provide flexibility or data correctness guarantees of a RDBMS.
This is just a guess, but it's quite likely that it is the rise of hyper-scale-intensive, speed-intensive, revenue-light business models that drives devs towards deciding SQL isn't worth it.
If your main concern is scalability, then Redis and the like can look very attractive, but we should be clear on what is being given up: data coherence and query flexibility. That may be fine on your app, or even many apps, but its important to point out what is missing.
This seems to come back to that original Scala-is-not-functional article, which seems to argue that it isn't features or purity that makes a language "functional" or not, it's how good the language is at working with that style.