Live data from Hacker News

Programmers should never trust anyone, not even themselves

carbon-steel.github.io

31–40 of 163 posts

Re: Programmers should never trust anyone, not even themselves

#31

> In reality, the bank does not just store the money we deposit. It loans away/invests most of the money that people deposit. Our money does not sit idle in a large pile in a vault. Nope. In reality the money doesn't exist. Amazing how many people think that somewhere a cartload of money is physically moving every month when they get paid. When was the last time you deposited anything in a bank? The abstraction is ev…

This is going to sound weird but even if it was actual coins (say) would that make the whole thing any more "real"? Either way it's a symbolic system and it doesn't really matter if you execute it on an abacus, or in a digital computer, or by writing in a book and carting bags of coins around. I think the parts that are missing from most people's mental model are things like the role of the central bank, and the fact…

Yes, physical coins or grams of gold or whatever are more real. Primarily because they add inertia to changing the float, it takes time to find more gold or make more coins. You can't 10x the supply overnight. Things changing more slowly damps out oscillations.

Re: Programmers should never trust anyone, not even themselves

#32
post #11
post #9

> Failing tests indicate the presence of bugs, but passing tests do not promise their absence. If only :) Far too often I find myself working with tests that patch one too many implementation details, putting me in a refactoring pickle

Or even worse, tests that test implementation details that doesn't matter for the actual outcome.

Used to be (perhaps still is) a nasty habit of Rails apps to have vast test suites covering every Active Record query they ever used (with fixed seeds to boot), rarely straying from giving the bog-standard and already very thoroughly tested and battle-scarred AR predicate builder a wholly unneeded workout; but none of their own front-end code because writing for selenium was too hard.

But look! Thousands of tests and they all pass! Taste the quality!

Re: Programmers should never trust anyone, not even themselves

#33

> In reality, the bank does not just store the money we deposit. It loans away/invests most of the money that people deposit. Our money does not sit idle in a large pile in a vault. Nope. In reality the money doesn't exist. Amazing how many people think that somewhere a cartload of money is physically moving every month when they get paid. When was the last time you deposited anything in a bank? The abstraction is ev…

This is going to sound weird but even if it was actual coins (say) would that make the whole thing any more "real"? Either way it's a symbolic system and it doesn't really matter if you execute it on an abacus, or in a digital computer, or by writing in a book and carting bags of coins around. I think the parts that are missing from most people's mental model are things like the role of the central bank, and the fact…

> This is going to sound weird but even if it was actual coins (say) would that make the whole thing any more "real"?

Yes, because then there would be a physical limit on what banks can do. They would have to invent cloning machines or alchemy or whatever to do what they currently do. In other words, it would force bank to actually do the model most people (including the author) have in their heads, namely a bank stores cash and lends it out (called fractional reserve banking).

In reality, without any such physical constraints, the banks are essentially free to "create" money out of thin air by issuing loans. That's how the money supply became 99% "bank money" and only ~1% physical money.

Re: Programmers should never trust anyone, not even themselves

#34
post #24

Earlier quoted context omitted.

To the contrary, trust arises from being able to verify. Otherwise, you never know whether a failure is because of ill intentions or errors. That's why I very much dislike “trust, but verify”. I prefer “trust, and verify”.

What's the meaning of "I trust you that the amount of cash you've given me is correct" when you then proceed to count it? If you're verifying, why do you need to say "I trust you"? A trustworthy and an untrustworthy person will get equally verified.

Has nothing to do with trust.

I trust that you will give me the money. I also trust that you counted the right amount. But I still want to make sure you did not make a mistake.

Re: Programmers should never trust anyone, not even themselves

#36

What does it do to the psyche, to not be able to trust anyone?

Nothing if you don't take it personally. There's 'not trusting' in the sense of recognizing that most processes or people are unreliable, including yourself and there's 'not trusting' in the sense of thinking everyone's out to get ya or not living up to your expectations.

The second one largely has to do with ego and is the one that creates insecure people who usually hold others to different standards than themselves, the first is just a realistic view of the world and thus very useful

Re: Programmers should never trust anyone, not even themselves

#38

> In reality, the bank does not just store the money we deposit. It loans away/invests most of the money that people deposit. Our money does not sit idle in a large pile in a vault. Nope. In reality the money doesn't exist. Amazing how many people think that somewhere a cartload of money is physically moving every month when they get paid. When was the last time you deposited anything in a bank? The abstraction is ev…

I don't think the author was under the impression that banks physically store money. They meant the digital currency does not sit idle on the bank's asset list. They're just using normal human language.

The deposits aren't assets to the bank, they are liabilities. The loans are their assets (your liability is their asset). They don't need to "do anything" with your deposit because it doesn't exist. If I increment the number 2 to the number 4, have I brought something into existence, in particular 2 "things"? What is that? Why can't I just bring 3 things into existence without incrementing the initial number?

If this sounds silly it's because it is. I thoroughly recommend anyone who is confused to a) do their own accounts and b) invent a silly currency inside your accounts and start a bank for your imaginary friends. Just add trust and government support to your bank and you'll be like any other bank.

Re: Programmers should never trust anyone, not even themselves

#40

> verifying code correctness is impossible Somehow, taking into account the state of our industry, yes. But this is not an absolute truth. I mean, we do have the theoretical frameworks and even tools to come with solutions that allow to proof that code is correct. It’s just that mapping this "know how" with the "how to deal with the expected flow rate feature" is very uncommon.

> tools to come with solutions that allow to proof that code is correct

I may be misunderstanding, but isn't part of the problem that these tools are themselves written in code and therefore subject to bugs?

Post reply on HN